diff --git a/src/main/java/com/order/erp/domain/vo/order/OrderCompletionReportFieldVO.java b/src/main/java/com/order/erp/domain/vo/order/OrderCompletionReportFieldVO.java
index 93f280d..dd59ce7 100644
--- a/src/main/java/com/order/erp/domain/vo/order/OrderCompletionReportFieldVO.java
+++ b/src/main/java/com/order/erp/domain/vo/order/OrderCompletionReportFieldVO.java
@@ -19,6 +19,11 @@ import java.io.Serializable;
 public class OrderCompletionReportFieldVO implements Serializable {
 
     /**
+     * 订单id
+     */
+    private Long orderId;
+
+    /**
      * 想法来源
      */
     private String ideaSource;
diff --git a/src/main/java/com/order/erp/domain/vo/order/OrderProfitAnalysisFieldVO.java b/src/main/java/com/order/erp/domain/vo/order/OrderProfitAnalysisFieldVO.java
index bf86d91..29e29af 100644
--- a/src/main/java/com/order/erp/domain/vo/order/OrderProfitAnalysisFieldVO.java
+++ b/src/main/java/com/order/erp/domain/vo/order/OrderProfitAnalysisFieldVO.java
@@ -17,6 +17,11 @@ import java.io.Serializable;
 @EqualsAndHashCode(callSuper = false)
 @SuperBuilder
 public class OrderProfitAnalysisFieldVO implements Serializable {
+
+    /**
+     * 订单id
+     */
+    private Long orderId;
     /**
      * 客户单价$
      */
diff --git a/src/main/java/com/order/erp/service/order/impl/OrderBaseInfoServiceImpl.java b/src/main/java/com/order/erp/service/order/impl/OrderBaseInfoServiceImpl.java
index 9422f36..00a0f53 100644
--- a/src/main/java/com/order/erp/service/order/impl/OrderBaseInfoServiceImpl.java
+++ b/src/main/java/com/order/erp/service/order/impl/OrderBaseInfoServiceImpl.java
@@ -27,8 +27,6 @@ import com.order.erp.domain.OrderStatusEnum;
 import com.order.erp.domain.dto.BaseDO;
 import com.order.erp.domain.dto.order.*;
 import com.order.erp.domain.excel.OrderExcelVO;
-import com.order.erp.domain.vo.IndexDataVO;
-import com.order.erp.domain.vo.OrderCountVO;
 import com.order.erp.domain.vo.order.*;
 import com.order.erp.mapper.order.OrderBaseInfoMapper;
 import com.order.erp.service.order.*;
@@ -42,7 +40,10 @@ import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
 import java.io.File;
 import java.io.IOException;
-import java.util.*;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Set;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 
@@ -241,6 +242,23 @@ public class OrderBaseInfoServiceImpl extends ServiceImpl<OrderBaseInfoMapper, O
     }
 
     /**
+     * @param orderId
+     * @param userId
+     */
+    private void checkApply(Long orderId, Long userId) {
+        List<OrderFieldLockApplyDO> applyDOS = orderFieldLockApplyService.list(new LambdaQueryWrapper<OrderFieldLockApplyDO>()
+                .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN)
+                .eq(OrderFieldLockApplyDO::getOrderId, orderId)
+                .eq(OrderFieldLockApplyDO::getApplyUserId, userId)
+                .eq(OrderFieldLockApplyDO::getType, ApplyTypeEnum.FIELD_EDIT_APPLY.getType())
+                .eq(OrderFieldLockApplyDO::getStatus, ApplyStatusEnum.WAIT_AUDIT.getStatus()));
+        if (CollectionUtils.isNotEmpty(applyDOS)) {
+            throw new BusinessException(ServerResultCode.APPLY_UNLOCK_FIELD_EXIST);
+        }
+    }
+
+
+    /**
      * @param fieldVO
      * @param userId
      * @return
@@ -259,6 +277,84 @@ public class OrderBaseInfoServiceImpl extends ServiceImpl<OrderBaseInfoMapper, O
                 .build();
     }
 
+
+    /**
+     * @param reportVO
+     * @param userId
+     * @return
+     */
+    private OrderFieldLockApplyDO buildReportFieldLockApplyDO(OrderCompletionReportVO reportVO, Long userId) {
+        OrderCompletionReportFieldVO reportFieldVO = report2reportField(reportVO);
+        return OrderFieldLockApplyDO.builder()
+                .applyUserId(userId)
+                .auditUserId(null)
+                .fields(JSONObject.toJSONString(reportFieldVO))
+                .orderId(reportFieldVO.getOrderId())
+                .type(ApplyTypeEnum.ORDER_REPORT_APPLY.getType())
+                .remark(ApplyTypeEnum.ORDER_REPORT_APPLY.getDesc())
+                .status(ApplyStatusEnum.WAIT_AUDIT.getStatus())
+                .build();
+    }
+
+    /**
+     * @param reportVO
+     * @return
+     */
+    private OrderCompletionReportFieldVO report2reportField(OrderCompletionReportVO reportVO) {
+        return OrderCompletionReportFieldVO.builder()
+                .orderId(reportVO.getOrderId())
+                .ideaManualRate(Objects.nonNull(reportVO.getIdeaManualRate()) ? reportVO.getIdeaManualRate().toString() : null)
+                .ideaSource(StringUtils.isNotBlank(reportVO.getIdeaSource()) ? reportVO.getIdeaSource() : null)
+                .manualPreform(StringUtils.isNotBlank(reportVO.getManualPreform()) ? reportVO.getManualPreform() : null).build();
+    }
+
+
+    /**
+     * @param profitAnalysisVO
+     * @param userId
+     * @return
+     */
+    private OrderFieldLockApplyDO buildProfitFieldLockApplyDO(OrderProfitAnalysisVO profitAnalysisVO, Long userId) {
+        OrderProfitAnalysisFieldVO profitAnalysisFieldVO = profitAnalysis2profitAnalysisField(profitAnalysisVO);
+        return OrderFieldLockApplyDO.builder()
+                .applyUserId(userId)
+                .auditUserId(null)
+                .fields(JSONObject.toJSONString(profitAnalysisFieldVO))
+                .orderId(profitAnalysisFieldVO.getOrderId())
+                .type(ApplyTypeEnum.ORDER_PROFIT_APPLY.getType())
+                .remark(ApplyTypeEnum.ORDER_PROFIT_APPLY.getDesc())
+                .status(ApplyStatusEnum.WAIT_AUDIT.getStatus())
+                .build();
+    }
+
+    /**
+     * @param profitAnalysisVO
+     * @return
+     */
+    private OrderProfitAnalysisFieldVO profitAnalysis2profitAnalysisField(OrderProfitAnalysisVO profitAnalysisVO) {
+        Double profitRate = null;
+        if (Objects.nonNull(profitAnalysisVO.getCustomerTotalPrice())
+                && Objects.nonNull(profitAnalysisVO.getExchangeRate())
+                && Objects.nonNull(profitAnalysisVO.getPacketTotalPrice())
+                && Objects.nonNull(profitAnalysisVO.getProductionDepartmentTotalPrice())) {
+            profitRate = ProfitUtils.calculateProfitRate(ProfitCalculateVO.builder()
+                    .customerTotalPrice(profitAnalysisVO.getCustomerTotalPrice())
+                    .exchangeRate(profitAnalysisVO.getExchangeRate())
+                    .packetTotalPrice(profitAnalysisVO.getPacketTotalPrice())
+                    .productionDepartmentTotalPrice(profitAnalysisVO.getProductionDepartmentTotalPrice()).build());
+        }
+        return OrderProfitAnalysisFieldVO.builder()
+                .orderId(profitAnalysisVO.getOrderId())
+                .customerPrice(Objects.nonNull(profitAnalysisVO.getCustomerPrice()) ? profitAnalysisVO.getCustomerPrice().toString() : null)
+                .customerTotalPrice(Objects.nonNull(profitAnalysisVO.getCustomerTotalPrice()) ? profitAnalysisVO.getCustomerTotalPrice().toString() : null)
+                .packetPrice(Objects.nonNull(profitAnalysisVO.getPacketPrice()) ? profitAnalysisVO.getPacketPrice().toString() : null)
+                .packetTotalPrice(Objects.nonNull(profitAnalysisVO.getPacketTotalPrice()) ? profitAnalysisVO.getPacketTotalPrice().toString() : null)
+                .productionDepartmentPrice(Objects.nonNull(profitAnalysisVO.getProductionDepartmentPrice()) ? profitAnalysisVO.getProductionDepartmentPrice().toString() : null)
+                .productionDepartmentTotalPrice(Objects.nonNull(profitAnalysisVO.getProductionDepartmentTotalPrice()) ? profitAnalysisVO.getProductionDepartmentTotalPrice().toString() : null)
+                .exchangeRate(Objects.nonNull(profitAnalysisVO.getExchangeRate()) ? profitAnalysisVO.getExchangeRate().toString() : null)
+                .profitRate(Objects.nonNull(profitRate) ? profitRate.toString() : null).build();
+    }
+
     /**
      * @param orderInfoResultVOList
      */
@@ -434,6 +530,7 @@ public class OrderBaseInfoServiceImpl extends ServiceImpl<OrderBaseInfoMapper, O
      * @return 实例对象
      */
     @Override
+    @Transactional
     public ServerResult add(OrderAddVO orderAddVO) {
         OrderBaseInfoVO baseInfoVO = orderAddVO.getBaseInfo();
         if (Objects.isNull(baseInfoVO)) {
@@ -495,43 +592,38 @@ public class OrderBaseInfoServiceImpl extends ServiceImpl<OrderBaseInfoMapper, O
      * @return 实例对象
      */
     @Override
+    @Transactional
     public ServerResult edit(OrderUpdateVO updateVO) {
         //todo 校验
         if (Objects.isNull(updateVO.getOrderId())) {
             return ServerResult.fail("id 不能为空");
         }
+        Long userId = dataScope.getLoginUserId();
+        OrderBaseInfoDO orderBaseInfoDo = getById(updateVO.getOrderId());
+        if (Objects.isNull(orderBaseInfoDo)) {
+            throw new BusinessException(ServerResultCode.ORDER_BASE_INFO_EMPTY);
+        }
         if (Objects.nonNull(updateVO.getBaseInfo())) {
-            OrderBaseInfoDO orderBaseInfoDo = BeanUtil.copyProperties(updateVO.getBaseInfo(), OrderBaseInfoDO.class);
+            orderBaseInfoDo = BeanUtil.copyProperties(updateVO.getBaseInfo(), OrderBaseInfoDO.class);
             orderBaseInfoDo.setId(updateVO.getOrderId());
-            updateById(orderBaseInfoDo);
+
         }
         if (Objects.nonNull(updateVO.getProfitAnalysisInfo())) {
-            OrderProfitAnalysisDO profitAnalysisDO = profitAnalysisService.getOne(new LambdaQueryWrapper<OrderProfitAnalysisDO>()
-                    .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN)
-                    .eq(OrderProfitAnalysisDO::getOrderId, updateVO.getOrderId()));
-            if (Objects.nonNull(profitAnalysisDO)) {
-                BeanUtils.copyProperties(updateVO.getProfitAnalysisInfo(), profitAnalysisDO);
-                profitAnalysisDO.setOrderId(updateVO.getOrderId());
-                profitAnalysisDO.setOrderStatus(OrderStatusEnum.PROFIT_WAIT_AUDIT.getStatus());
-                profitAnalysisDO.setProfitRate(ProfitUtils.calculateProfitRate(ProfitCalculateVO.builder()
-                        .customerTotalPrice(profitAnalysisDO.getCustomerTotalPrice())
-                        .exchangeRate(profitAnalysisDO.getExchangeRate())
-                        .packetTotalPrice(profitAnalysisDO.getPacketTotalPrice())
-                        .productionDepartmentTotalPrice(profitAnalysisDO.getProductionDepartmentTotalPrice()).build()));
-                profitAnalysisService.updateById(profitAnalysisDO);
-            }
+            checkApply(updateVO.getOrderId(), userId);
+            OrderFieldLockApplyDO orderFieldLockApplyDO = buildProfitFieldLockApplyDO(updateVO.getProfitAnalysisInfo(), userId);
+            orderFieldLockApplyService.save(orderFieldLockApplyDO);
+
+            orderBaseInfoDo.setOrderStatus(OrderStatusEnum.PROFIT_WAIT_AUDIT.getStatus());
+            updateById(orderBaseInfoDo);
         }
 
         if (Objects.nonNull(updateVO.getReportInfo())) {
-            OrderCompletionReportDO reportDO = reportService.getOne(new LambdaQueryWrapper<OrderCompletionReportDO>()
-                    .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN)
-                    .eq(OrderCompletionReportDO::getOrderId, updateVO.getOrderId()));
-            if (Objects.nonNull(reportDO)) {
-                BeanUtils.copyProperties(updateVO.getReportInfo(), reportDO);
-                reportDO.setOrderId(updateVO.getOrderId());
-                reportDO.setOrderStatus(OrderStatusEnum.REPORT_WAIT_AUDIT.getStatus());
-                reportService.updateById(reportDO);
-            }
+            checkApply(updateVO.getOrderId(), userId);
+            OrderFieldLockApplyDO orderFieldLockApplyDO = buildReportFieldLockApplyDO(updateVO.getReportInfo(), userId);
+            orderFieldLockApplyService.save(orderFieldLockApplyDO);
+
+            orderBaseInfoDo.setOrderStatus(OrderStatusEnum.REPORT_WAIT_AUDIT.getStatus());
+            updateById(orderBaseInfoDo);
         }
 
         if (Objects.nonNull(updateVO.getTrackStageInfo())) {
@@ -543,8 +635,14 @@ public class OrderBaseInfoServiceImpl extends ServiceImpl<OrderBaseInfoMapper, O
                 trackStageDO.setOrderId(updateVO.getOrderId());
                 trackStageDO.setOrderStatus(OrderStatusEnum.TRACK_ING.getStatus());
                 trackStageService.updateById(trackStageDO);
+            } else {
+                BeanUtils.copyProperties(updateVO.getTrackStageInfo(), trackStageDO);
+                trackStageDO.setOrderId(updateVO.getOrderId());
+                trackStageDO.setOrderStatus(OrderStatusEnum.TRACK_ING.getStatus());
+                trackStageService.save(trackStageDO);
             }
-
+            orderBaseInfoDo.setOrderStatus(OrderStatusEnum.TRACK_ING.getStatus());
+            updateById(orderBaseInfoDo);
         }
 
         if (Objects.nonNull(updateVO.getInspectionStageInfo())) {
@@ -556,8 +654,14 @@ public class OrderBaseInfoServiceImpl extends ServiceImpl<OrderBaseInfoMapper, O
                 inspectionStageDO.setOrderId(updateVO.getOrderId());
                 inspectionStageDO.setOrderStatus(OrderStatusEnum.INSPECT_ING.getStatus());
                 inspectionStageService.updateById(inspectionStageDO);
+            } else {
+                BeanUtils.copyProperties(updateVO.getInspectionStageInfo(), inspectionStageDO);
+                inspectionStageDO.setOrderId(updateVO.getOrderId());
+                inspectionStageDO.setOrderStatus(OrderStatusEnum.INSPECT_ING.getStatus());
+                inspectionStageService.save(inspectionStageDO);
             }
-
+            orderBaseInfoDo.setOrderStatus(OrderStatusEnum.INSPECT_ING.getStatus());
+            updateById(orderBaseInfoDo);
         }
 
         return ServerResult.success();
@@ -619,13 +723,14 @@ public class OrderBaseInfoServiceImpl extends ServiceImpl<OrderBaseInfoMapper, O
 
     /**
      * 根据订单状态统计订单数量
+     *
      * @param orderStatus
      * @return
      */
     @Override
     public long countByOrderStatus(Integer orderStatus) {
-        return this.count(new LambdaQueryWrapper<OrderBaseInfoDO>().eq(OrderBaseInfoDO::getOrderStatus,orderStatus)
-                .eq(OrderBaseInfoDO::getEnableFlag,Constant.ENABLE_TEN));
+        return this.count(new LambdaQueryWrapper<OrderBaseInfoDO>().eq(OrderBaseInfoDO::getOrderStatus, orderStatus)
+                .eq(OrderBaseInfoDO::getEnableFlag, Constant.ENABLE_TEN));
     }
 
     @Override
@@ -640,7 +745,7 @@ public class OrderBaseInfoServiceImpl extends ServiceImpl<OrderBaseInfoMapper, O
 
     @Override
     public long countAll() {
-        return this.count(new LambdaQueryWrapper<OrderBaseInfoDO>().eq(OrderBaseInfoDO::getEnableFlag,Constant.ENABLE_TEN));
+        return this.count(new LambdaQueryWrapper<OrderBaseInfoDO>().eq(OrderBaseInfoDO::getEnableFlag, Constant.ENABLE_TEN));
     }
 
     @Override
diff --git a/src/main/java/com/order/erp/service/order/impl/OrderFieldLockApplyServiceImpl.java b/src/main/java/com/order/erp/service/order/impl/OrderFieldLockApplyServiceImpl.java
index ab97d39..4be4ea4 100644
--- a/src/main/java/com/order/erp/service/order/impl/OrderFieldLockApplyServiceImpl.java
+++ b/src/main/java/com/order/erp/service/order/impl/OrderFieldLockApplyServiceImpl.java
@@ -17,15 +17,12 @@ import com.order.erp.common.exception.BusinessException;
 import com.order.erp.config.DataScope;
 import com.order.erp.domain.ApplyStatusEnum;
 import com.order.erp.domain.ApplyTypeEnum;
+import com.order.erp.domain.OrderStatusEnum;
 import com.order.erp.domain.dto.BaseDO;
-import com.order.erp.domain.dto.order.OrderAuditLogDO;
-import com.order.erp.domain.dto.order.OrderFieldLockApplyDO;
-import com.order.erp.domain.dto.order.OrderFieldLockRecordDO;
+import com.order.erp.domain.dto.order.*;
 import com.order.erp.domain.vo.order.*;
 import com.order.erp.mapper.order.OrderFieldLockApplyMapper;
-import com.order.erp.service.order.OrderAuditLogService;
-import com.order.erp.service.order.OrderFieldLockApplyService;
-import com.order.erp.service.order.OrderFieldLockRecordService;
+import com.order.erp.service.order.*;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
@@ -58,6 +55,15 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp
     @Resource
     private OrderAuditLogService auditLogService;
 
+    @Resource
+    private OrderBaseInfoService orderBaseInfoService;
+
+    @Resource
+    private OrderCompletionReportService reportService;
+
+    @Resource
+    private OrderProfitAnalysisService profitAnalysisService;
+
     /**
      * 通过ID查询单条数据
      * <p>
@@ -166,7 +172,18 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp
     public void doRefuse(OrderFieldLockApplyDO applyDO, Long auditUserId) {
         applyDO.setAuditUserId(auditUserId);
         applyDO.setStatus(ApplyStatusEnum.AUDIT_REFUSE.getStatus());
+        OrderBaseInfoDO orderBaseInfoDO = orderBaseInfoService.getById(applyDO.getOrderId());
+        if (Objects.isNull(orderBaseInfoDO)) {
+            throw new BusinessException(ServerResultCode.ORDER_BASE_INFO_EMPTY);
+        }
+        if (ApplyTypeEnum.ORDER_REPORT_APPLY.getType().equals(applyDO.getType())) {
 
+            orderBaseInfoDO.setOrderStatus(OrderStatusEnum.REPORT_AUDIT_REFUSE.getStatus());
+            orderBaseInfoService.updateById(orderBaseInfoDO);
+        } else if (ApplyTypeEnum.ORDER_PROFIT_APPLY.getType().equals(applyDO.getType())) {
+            orderBaseInfoDO.setOrderStatus(OrderStatusEnum.PROFIT_AUDIT_REFUSE.getStatus());
+            orderBaseInfoService.updateById(orderBaseInfoDO);
+        }
         OrderAuditLogDO auditLogDO = OrderAuditLogDO.builder().applyId(applyDO.getId()).orderId(applyDO.getOrderId()).optType(ApplyStatusEnum.AUDIT_REFUSE.getDesc()).build();
 
         applyService.updateById(applyDO);
@@ -179,12 +196,12 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp
      */
     @Transactional(rollbackFor = Exception.class)
     public void doPass(OrderFieldLockApplyDO applyDO, Long auditUserId) {
-        OrderFieldLockRecordDO recordDO = null;
+
         if (ApplyTypeEnum.FIELD_EDIT_APPLY.getType().equals(applyDO.getType())) {
             applyDO.setAuditUserId(auditUserId);
             applyDO.setStatus(ApplyStatusEnum.AUDIT_PASS.getStatus());
 
-            recordDO = fieldLockRecordService.getOne(new LambdaQueryWrapper<OrderFieldLockRecordDO>()
+            OrderFieldLockRecordDO recordDO = fieldLockRecordService.getOne(new LambdaQueryWrapper<OrderFieldLockRecordDO>()
                     .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN)
                     .eq(OrderFieldLockRecordDO::getOrderId, applyDO.getOrderId())
                     .eq(OrderFieldLockRecordDO::getUserId, applyDO.getApplyUserId()));
@@ -195,22 +212,112 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp
                         .fields(applyDO.getFields()).build();
             }
             recordDO.setFields(applyDO.getFields());
+
+            if (Objects.isNull(recordDO.getId())) {
+                fieldLockRecordService.save(recordDO);
+            } else {
+                fieldLockRecordService.updateById(recordDO);
+            }
+        } else if (ApplyTypeEnum.ORDER_REPORT_APPLY.getType().equals(applyDO.getType())) {
+            applyDO.setAuditUserId(auditUserId);
+            applyDO.setStatus(ApplyStatusEnum.AUDIT_PASS.getStatus());
+
+            OrderCompletionReportFieldVO reportFieldVO = JSONObject.parseObject(applyDO.getFields(), OrderCompletionReportFieldVO.class);
+
+            OrderBaseInfoDO orderBaseInfoDO = orderBaseInfoService.getById(applyDO.getOrderId());
+            if (Objects.isNull(orderBaseInfoDO)) {
+                throw new BusinessException(ServerResultCode.ORDER_BASE_INFO_EMPTY);
+            }
+
+            OrderCompletionReportDO reportDO = reportService.getOne(new LambdaQueryWrapper<OrderCompletionReportDO>()
+                    .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN)
+                    .eq(OrderCompletionReportDO::getOrderId, applyDO.getOrderId()));
+            if (Objects.isNull(reportDO)) {
+                reportDO = reportField2reportDo(reportFieldVO);
+                reportDO.setOrderStatus(OrderStatusEnum.REPORT_AUDIT_PASS.getStatus());
+                reportService.save(reportDO);
+            } else {
+                reportDO.setOrderStatus(OrderStatusEnum.REPORT_AUDIT_PASS.getStatus());
+                reportDO.setIdeaManualRate(Objects.nonNull(reportFieldVO.getIdeaManualRate()) ? Double.valueOf(reportFieldVO.getIdeaManualRate()) : null);
+                reportDO.setIdeaSource(reportFieldVO.getIdeaSource());
+                reportDO.setManualPreform(reportFieldVO.getManualPreform());
+                reportService.updateById(reportDO);
+            }
+            orderBaseInfoDO.setOrderStatus(OrderStatusEnum.REPORT_AUDIT_PASS.getStatus());
+            orderBaseInfoService.updateById(orderBaseInfoDO);
+        } else if (ApplyTypeEnum.ORDER_PROFIT_APPLY.getType().equals(applyDO.getType())) {
+            applyDO.setAuditUserId(auditUserId);
+            applyDO.setStatus(ApplyStatusEnum.AUDIT_PASS.getStatus());
+
+            OrderProfitAnalysisFieldVO profitAnalysisFieldVO = JSONObject.parseObject(applyDO.getFields(), OrderProfitAnalysisFieldVO.class);
+
+            OrderBaseInfoDO orderBaseInfoDO = orderBaseInfoService.getById(applyDO.getOrderId());
+            if (Objects.isNull(orderBaseInfoDO)) {
+                throw new BusinessException(ServerResultCode.ORDER_BASE_INFO_EMPTY);
+            }
+
+            OrderProfitAnalysisDO profitAnalysisDO = profitAnalysisService.getOne(new LambdaQueryWrapper<OrderProfitAnalysisDO>()
+                    .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN)
+                    .eq(OrderProfitAnalysisDO::getOrderId, applyDO.getOrderId()));
+            if (Objects.isNull(profitAnalysisDO)) {
+                profitAnalysisDO = profitField2profitDo(profitAnalysisFieldVO);
+                profitAnalysisDO.setOrderStatus(OrderStatusEnum.PROFIT_AUDIT_PASS.getStatus());
+                profitAnalysisService.save(profitAnalysisDO);
+            } else {
+                profitAnalysisDO.setOrderStatus(OrderStatusEnum.PROFIT_AUDIT_PASS.getStatus());
+                profitAnalysisDO.setCustomerPrice(Objects.nonNull(profitAnalysisFieldVO.getCustomerPrice()) ? Double.valueOf(profitAnalysisFieldVO.getCustomerPrice()) : null);
+                profitAnalysisDO.setCustomerTotalPrice(Objects.nonNull(profitAnalysisFieldVO.getCustomerTotalPrice()) ? Double.valueOf(profitAnalysisFieldVO.getCustomerTotalPrice()) : null);
+                profitAnalysisDO.setExchangeRate(Objects.nonNull(profitAnalysisFieldVO.getExchangeRate()) ? Double.valueOf(profitAnalysisFieldVO.getExchangeRate()) : null);
+                profitAnalysisDO.setPacketPrice(Objects.nonNull(profitAnalysisFieldVO.getPacketPrice()) ? Double.valueOf(profitAnalysisFieldVO.getPacketPrice()) : null);
+                profitAnalysisDO.setPacketTotalPrice(Objects.nonNull(profitAnalysisFieldVO.getPacketTotalPrice()) ? Double.valueOf(profitAnalysisFieldVO.getPacketTotalPrice()) : null);
+                profitAnalysisDO.setProductionDepartmentPrice(Objects.nonNull(profitAnalysisFieldVO.getProductionDepartmentPrice()) ? Double.valueOf(profitAnalysisFieldVO.getProductionDepartmentPrice()) : null);
+                profitAnalysisDO.setProductionDepartmentTotalPrice(Objects.nonNull(profitAnalysisFieldVO.getProductionDepartmentTotalPrice()) ? Double.valueOf(profitAnalysisFieldVO.getProductionDepartmentTotalPrice()) : null);
+                profitAnalysisDO.setProfitRate(Objects.nonNull(profitAnalysisFieldVO.getProfitRate()) ? Double.valueOf(profitAnalysisFieldVO.getProfitRate()) : null);
+                profitAnalysisService.updateById(profitAnalysisDO);
+            }
+            orderBaseInfoDO.setOrderStatus(OrderStatusEnum.PROFIT_AUDIT_PASS.getStatus());
+            orderBaseInfoService.updateById(orderBaseInfoDO);
         }
 
         OrderAuditLogDO auditLogDO = OrderAuditLogDO.builder().applyId(applyDO.getId()).orderId(applyDO.getOrderId()).optType(ApplyStatusEnum.AUDIT_PASS.getDesc()).build();
 
         applyService.updateById(applyDO);
 
-        if (Objects.isNull(recordDO.getId())) {
-            fieldLockRecordService.save(recordDO);
-        } else {
-            fieldLockRecordService.updateById(recordDO);
-        }
-
         auditLogService.save(auditLogDO);
     }
 
     /**
+     * @param reportFieldVO
+     * @return
+     */
+    private OrderCompletionReportDO reportField2reportDo(OrderCompletionReportFieldVO reportFieldVO) {
+        return OrderCompletionReportDO.builder()
+                .ideaManualRate(StringUtils.isNotBlank(reportFieldVO.getIdeaManualRate()) ? Double.valueOf(reportFieldVO.getIdeaManualRate()) : null)
+                .ideaSource(reportFieldVO.getIdeaSource())
+                .manualPreform(reportFieldVO.getManualPreform())
+                .orderId(reportFieldVO.getOrderId())
+                .build();
+    }
+
+    /**
+     * @param profitAnalysisFieldVO
+     * @return
+     */
+    private OrderProfitAnalysisDO profitField2profitDo(OrderProfitAnalysisFieldVO profitAnalysisFieldVO) {
+        return OrderProfitAnalysisDO.builder()
+                .orderId(profitAnalysisFieldVO.getOrderId())
+                .customerPrice(Objects.nonNull(profitAnalysisFieldVO.getCustomerPrice()) ? Double.valueOf(profitAnalysisFieldVO.getCustomerPrice()) : null)
+                .customerTotalPrice(Objects.nonNull(profitAnalysisFieldVO.getCustomerTotalPrice()) ? Double.valueOf(profitAnalysisFieldVO.getCustomerTotalPrice()) : null)
+                .exchangeRate(Objects.nonNull(profitAnalysisFieldVO.getExchangeRate()) ? Double.valueOf(profitAnalysisFieldVO.getExchangeRate()) : null)
+                .packetPrice(Objects.nonNull(profitAnalysisFieldVO.getPacketPrice()) ? Double.valueOf(profitAnalysisFieldVO.getPacketPrice()) : null)
+                .packetTotalPrice(Objects.nonNull(profitAnalysisFieldVO.getPacketTotalPrice()) ? Double.valueOf(profitAnalysisFieldVO.getPacketTotalPrice()) : null)
+                .productionDepartmentPrice(Objects.nonNull(profitAnalysisFieldVO.getProductionDepartmentPrice()) ? Double.valueOf(profitAnalysisFieldVO.getProductionDepartmentPrice()) : null)
+                .productionDepartmentTotalPrice(Objects.nonNull(profitAnalysisFieldVO.getProductionDepartmentTotalPrice()) ? Double.valueOf(profitAnalysisFieldVO.getProductionDepartmentTotalPrice()) : null)
+                .profitRate(Objects.nonNull(profitAnalysisFieldVO.getProfitRate()) ? Double.valueOf(profitAnalysisFieldVO.getProfitRate()) : null)
+                .build();
+    }
+
+    /**
      * 修改数据
      *
      * @param orderFieldLockApplyVO 实例对象
@@ -255,6 +362,7 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp
 
     /**
      * 通过订单id逻辑删除
+     *
      * @param orderId
      * @return
      */