Pārlūkot izejas kodu

合同+选择样品单

yzc 11 mēneši atpakaļ
vecāks
revīzija
746b522d18

+ 1 - 1
hx-sale/src/main/java/com/fjhx/sale/controller/contract/ContractController.java

@@ -99,7 +99,7 @@ public class ContractController {
      */
     @PostMapping("/cancellation")
     public void cancellation(@RequestBody ContractDto contractDto) {
-        contractService.cancellation(contractDto);
+        contractService.cancellation(contractDto.getId());
     }
 
     /**

+ 6 - 1
hx-sale/src/main/java/com/fjhx/sale/entity/contract/dto/ContractSelectDto.java

@@ -133,5 +133,10 @@ public class ContractSelectDto extends BaseSelectDto {
     /**
      * 是否特殊出库
      */
-    private Long isSpecialOutbound;
+    private Integer isSpecialOutbound;
+
+    /**
+     * 过滤未关联合同的样品单
+     */
+    private Integer notLinkSample;
 }

+ 9 - 0
hx-sale/src/main/java/com/fjhx/sale/entity/contract/po/Contract.java

@@ -549,6 +549,15 @@ public class Contract extends BasePo {
      * 下单类型
      */
     private String placeOrderType;
+
+    /**
+     * 关联样品单id
+     */
+    private Long sampleId;
+    /**
+     * 样品单关联合同id
+     */
+    private Integer linkContractId;
     //========================================================================
     /**
      * 交接单附件列表

+ 7 - 9
hx-sale/src/main/java/com/fjhx/sale/flow/ContractFlow.java

@@ -181,21 +181,19 @@ public class ContractFlow extends FlowDelegate {
                 .set(BasePo::getUpdateUser, SecurityUtils.getUserId())
         );
 
+        //修改关联样品单状态
+        Contract contract = contractService.getById(businessId);
+        if (ObjectUtil.isNotEmpty(contract.getSampleId())) {
+            contractService.update(q -> q.eq(Contract::getId, contract.getSalesmanId()).set(Contract::getLinkContractId, null));
+        }
+
     }
 
     @Override
     public void cancellation(Long flowId, Long businessId, FlowStatusEnum flowStatus) {
         super.cancellation(flowId, businessId, flowStatus);
 
-
-        contractService.update(q -> q
-                .eq(Contract::getId, businessId)
-                .set(Contract::getStatus, FlowStatusEnum1.CANCELLATION.getKey())
-                .set(BasePo::getUpdateTime, new Date())
-                .set(BasePo::getUpdateUser, SecurityUtils.getUserId())
-        );
-
-
+        contractService.cancellation(businessId);
     }
 
 }

+ 5 - 0
hx-sale/src/main/java/com/fjhx/sale/flow/ContractUpdateFlow.java

@@ -127,6 +127,11 @@ public class ContractUpdateFlow extends FlowDelegate {
         //清空收费项目id
         contractProjectList.forEach(item -> item.setId(null));
 
+        //变更处理关联样品单
+        if (ObjectUtil.isNotEmpty(oldContract.getSalesmanId())) {
+            contractService.update(q -> q.eq(Contract::getId, oldContract.getSalesmanId()).set(Contract::getLinkContractId, null));
+        }
+
 
         //调用合同发起通用代码
         Long start = contractFlow.start(contract);

+ 1 - 1
hx-sale/src/main/java/com/fjhx/sale/service/contract/ContractService.java

@@ -87,7 +87,7 @@ public interface ContractService extends BaseService<Contract> {
     /**
      * 外销合同作废
      */
-    void cancellation(ContractDto contractDto);
+    void cancellation(Long id);
 
     /**
      * 修改合同代理费

+ 31 - 2
hx-sale/src/main/java/com/fjhx/sale/service/contract/impl/ContractServiceImpl.java

@@ -441,11 +441,23 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
         //合同类型过滤
         wrapper.eq("t1", Contract::getContractType, dto.getContractType());
 
+        //关联合同
+
         //订单归属过滤(1归属工厂、2归属业务)
         wrapper.eq("t1", Contract::getBelongType, dto.getBelongType());
 
         //是否特批过滤
         wrapper.eq("t1.isSpecialOutbound", dto.getIsSpecialOutbound());
+
+        //过滤未关联合同的样品单
+        wrapper.eq("t1.isSpecialOutbound", dto.getIsSpecialOutbound());
+
+        //过滤未关联合同的样品单
+        if (ObjectUtil.isNotEmpty(dto.getNotLinkSample())) {
+            wrapper.eq("t1", Contract::getContractType, 3);
+            wrapper.eq("t1", Contract::getStatus, 30);
+            wrapper.isNull("t1.link_contract_id");
+        }
     }
 
     /**
@@ -1402,6 +1414,14 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
 
     @Override
     public void saveOrEdit(ContractDto contract) {
+        //退回发起人处理关联样品单
+        if (ObjectUtil.isNotEmpty(contract.getId())) {
+            Contract oldCo = this.getById(contract.getId());
+            if (ObjectUtil.isNotEmpty(oldCo) && ObjectUtil.isNotEmpty(oldCo.getSalesmanId())) {
+                this.update(q -> q.eq(Contract::getId, oldCo.getSalesmanId()).set(Contract::getLinkContractId, null));
+            }
+        }
+
         if (ObjectUtil.isEmpty(contract.getCode())) {
             contract.setCode(codingRuleService.createCode(CodingRuleEnum.CONTRACT.getKey(), contract.getBuyCorporationId()));
         }
@@ -1460,12 +1480,16 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
             c.setContractId(contract.getId());
         }
         contractProjectService.editLinked(contractProjectList, ContractProject::getContractId, contract.getId());
+
+        //修改关联样品单状态
+        if (ObjectUtil.isNotEmpty(contract.getSampleId())) {
+            contractService.update(q -> q.eq(Contract::getId, contract.getSalesmanId()).set(Contract::getLinkContractId, contract.getId()));
+        }
     }
 
     @DSTransactional
     @Override
-    public void cancellation(ContractDto contractDto) {
-        Long id = contractDto.getId();
+    public void cancellation(Long id) {
         Contract contract = getById(id);
         Assert.notEmpty(contract, "查询不到合同信息");
 
@@ -1510,6 +1534,11 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
 
 
         contractCancelEditAvailableQuantity(contract);
+
+        //修改关联样品单状态
+        if (ObjectUtil.isNotEmpty(contract.getSampleId())) {
+            contractService.update(q -> q.eq(Contract::getId, contract.getSalesmanId()).set(Contract::getLinkContractId, null));
+        }
     }
 
     /**