Ver código fonte

1.资产业务意见书出入库开发(已完成)
2.AssetsNodeHandler下一节点判断修改
3.新增节点ASSET_REPORT_TAKE_NO,行对固定节点进行修改

GouGengquan 1 ano atrás
pai
commit
5b14a664e8

+ 3 - 2
biz-base/src/main/java/com/dayou/controller/AssetsProductionController.java

@@ -165,8 +165,9 @@ public class AssetsProductionController extends BaseController {
      * @param taskRecordDTO 节点完成DTO
      * @return RestResponse<Boolean>
      */
-    @PostMapping("/assetsProRepertory")
-    public RestResponse<Boolean> assetsProRepertoryIn(@RequestBody @Valid TaskRecordDTO<AssetsProWareHouseDTO> taskRecordDTO) {
+    @FinishTask
+    @PutMapping("/assetsProRepertory")
+    public RestResponse<Boolean> assetsProRepertory(@RequestBody @Valid TaskRecordDTO<AssetsProWareHouseDTO> taskRecordDTO) {
         return RestResponse.data(assetsProductionService.assetsProRepertory(taskRecordDTO.getTaskData()));
     }
 

+ 22 - 1
dao/src/main/resources/mapper/AssetsProductionMapper.xml

@@ -103,7 +103,28 @@
 
     <!--根据业务id与产品号查询产品信息-->
     <select id="getProductionList" resultType="com.dayou.entity.AssetsProduction">
-        SELECT id, business_id, production_no, production_type, signatory, client_name, client_tel, valuation_basis_date, evaluate_acreage, evaluate_amount, evaluate_price, owner, print_count, create_production_date, comment, repertory_state, repertory_in_time, repertory_out_time, file_path, save_file_date, delivery, qr_code
+        SELECT id,
+               business_id,
+               production_no,
+               production_type,
+               signatory,
+               client_name,
+               client_tel,
+               valuation_basis_date,
+               evaluate_acreage,
+               evaluate_amount,
+               evaluate_price,
+               owner,
+               print_count,
+               create_production_date,
+               comment,
+               repertory_state,
+               repertory_in_time,
+               repertory_out_time,
+               file_path,
+               save_file_date,
+               delivery,
+               qr_code
         FROM assets_production
         WHERE business_id = #{businessId}
         <if test="productionNo != null and productionNo != '' ">

+ 3 - 1
domain/src/main/java/com/dayou/common/FixedWorkNode.java

@@ -28,7 +28,9 @@ public class FixedWorkNode {
             {CHECK_ARCHIVING,SPOT_RECONNAISSANCE,DETERMINE_PRICE,QUOTATION_FEEDBACK,COMMIT_FILE,CHECK_ARCHIVING,BUSINESS_ARCHIVING});
 
     public static final List<WorkflowNodeEnum> ASSET_FIXED_NODES = Arrays.asList(new WorkflowNodeEnum[]
-            {DEPARTMENT_ALLOCATION,SPOT_RECONNAISSANCE_DETERMINE_PRICE,QUOTATION_FEEDBACK,PRODUCT_CHOICE,GENERATE_STATEMENT,CHECK_ARCHIVING, RECHECK_ARCHIVING, BUSINESS_ARCHIVING});
+            {DEPARTMENT_ALLOCATION,SPOT_RECONNAISSANCE_DETERMINE_PRICE,QUOTATION_FEEDBACK,PRODUCT_CHOICE,ASSET_REPORT_TAKE_NO,
+                    WRITE_REPORT,CHECK_REPORT,RECHECK_REPORT,REPORT_BOOKBINDING_STAMP,
+                    REPORT_IN,REPORT_OUT,CHECK_ARCHIVING, RECHECK_ARCHIVING, BUSINESS_ARCHIVING});
 
     public static  List<WorkflowNodeEnum> getFixedNodesByBusinessType(String businessType){
         if (MainBusinessEnum.MAJOR_BUSINESS.name().equals(businessType)){

+ 11 - 1
domain/src/main/java/com/dayou/enums/workflow/CallbackEnum.java

@@ -50,7 +50,17 @@ public enum CallbackEnum {
     /**
      * 资产出具产品类型校验
      */
-    CHECK_ASSET_PRODUCTION_TYPE("CHECK_ASSET_PRODUCTION_TYPE");
+    CHECK_ASSET_PRODUCTION_TYPE("CHECK_ASSET_PRODUCTION_TYPE"),
+
+    /**
+     * 资产订单实收款校验
+     */
+    CHECK_ASSET_ORDER_FUND("CHECK_ASSET_ORDER_FUND"),
+
+    /**
+     * 资产报告四审校验
+     */
+    CHECK_ASSET_FOURTH_CHECK_REPORT("CHECK_ASSET_FOURTH_CHECK_REPORT")
     ;
 
     private String code;

+ 2 - 1
domain/src/main/java/com/dayou/enums/workflow/WorkflowNodeEnum.java

@@ -64,7 +64,8 @@ public enum WorkflowNodeEnum implements CodeMsgEnumInterface<String,String>{
         REEXAMINE_STATEMENT("复审意见书","REEXAMINE_STATEMENT"),
         COMMIT_FILE("提交归档资料","COMMIT_FILE"),
         PRODUCT_CHOICE("产品选择","PRODUCT_CHOICE"),
-        SPOT_RECONNAISSANCE_DETERMINE_PRICE("勘察定价","SPOT_RECONNAISSANCE_DETERMINE_PRICE")
+        SPOT_RECONNAISSANCE_DETERMINE_PRICE("勘察定价","SPOT_RECONNAISSANCE_DETERMINE_PRICE"),
+        ASSET_REPORT_TAKE_NO("资产报告取号","ASSET_REPORT_TAKE_NO")
         ;
 
 

+ 56 - 29
service/src/main/java/com/dayou/service/impl/AssetsProductionServiceImpl.java

@@ -10,6 +10,7 @@ import com.dayou.service.IAssetsProductionService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.dayou.service.IBusinessProductionService;
 import com.dayou.service.IOrderFundService;
+import com.dayou.service.IProductionOutWarehouseService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -27,6 +28,7 @@ import org.apache.poi.ss.usermodel.Sheet;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.springframework.web.multipart.MultipartFile;
 
+import java.util.Date;
 import java.util.List;
 import java.util.ArrayList;
 
@@ -56,6 +58,9 @@ public class AssetsProductionServiceImpl extends ServiceImpl<AssetsProductionMap
     @Autowired
     private IOrderFundService orderFundService;
 
+    @Autowired
+    private IProductionOutWarehouseService productionOutWarehouseService;
+
     /**
      * 根据资产业务id查询资产业务产品
      *
@@ -126,7 +131,7 @@ public class AssetsProductionServiceImpl extends ServiceImpl<AssetsProductionMap
     public Boolean writeAssetsProduction(AssetsProduction assetsProduction) {
         int count = this.count(new LambdaQueryWrapper<AssetsProduction>().select(AssetsProduction::getCreateProductionDate).eq(AssetsProduction::getProductionNo, assetsProduction.getProductionNo())
                 .eq(AssetsProduction::getId, assetsProduction.getId()));
-        if (count > 0){
+        if (count > 0) {
             return null;
         }
         // 生成产品二维码
@@ -136,6 +141,7 @@ public class AssetsProductionServiceImpl extends ServiceImpl<AssetsProductionMap
 
     /**
      * 根据业务id与产品号获取资产产品详细信息
+     *
      * @param dto 查询dto
      * @return AssetsProduction
      */
@@ -146,6 +152,7 @@ public class AssetsProductionServiceImpl extends ServiceImpl<AssetsProductionMap
 
     /**
      * 根据业务id与产品号查询产品信息
+     *
      * @param aProListSelectDTO 查询dto
      * @return List<AssetsProduction>
      */
@@ -156,6 +163,7 @@ public class AssetsProductionServiceImpl extends ServiceImpl<AssetsProductionMap
 
     /**
      * 根据业务id与产品号查询该产品是否已有提交的流程实例信息
+     *
      * @param aProListSelectDTO 查询dto
      * @return Integer
      */
@@ -166,49 +174,68 @@ public class AssetsProductionServiceImpl extends ServiceImpl<AssetsProductionMap
 
     /**
      * 产品出入库
+     *
      * @param wareHouseDTO 出入库信息dto
      * @return Boolean
      */
     @Override
     public Boolean assetsProRepertory(AssetsProWareHouseDTO wareHouseDTO) {
         AssetsProduction assetsProduction = this.getOne(new LambdaQueryWrapper<AssetsProduction>()
-                .select(BaseEntity::getId,AssetsProduction::getRepertoryState,
+                .select(BaseEntity::getId, AssetsProduction::getRepertoryState,
                         AssetsProduction::getProductionNo,
                         AssetsProduction::getBusinessId,
                         AssetsProduction::getProductionType)
-                .eq(BaseEntity::getId,wareHouseDTO.getProductionId())
+                .eq(BaseEntity::getId, wareHouseDTO.getProductionId())
                 .eq(BaseEntity::getDeleted, Boolean.FALSE));
-        if (ObjectUtil.isNull(assetsProduction)){
+        if (ObjectUtil.isNull(assetsProduction)) {
             ErrorCode.throwBusinessException(ErrorCode.CUSTOM_ERROR, "产品不存在,操作失败。");
         } else if (!assetsProduction.getProductionNo().equals(wareHouseDTO.getProductionNo())) {
-            ErrorCode.throwBusinessException(ErrorCode.CUSTOM_ERROR, "出库的产品报告号与当前操作的产品报告号不一致,请检查。");
+            ErrorCode.throwBusinessException(ErrorCode.CUSTOM_ERROR, "操作的产品报告号与当前操作的产品报告号不一致,请检查。");
         } else if (!assetsProduction.getProductionType().equals(wareHouseDTO.getProductionType())) {
-            ErrorCode.throwBusinessException(ErrorCode.CUSTOM_ERROR, "出库的产品类型与当前操作的产品类型不符,请检查。");
-        }
-
-        // true出库,false入库
-        if (wareHouseDTO.getRepertoryState()){ // 出库
-            if (ObjectUtil.isNull(assetsProduction.getRepertoryState())){
-                ErrorCode.throwBusinessException(ErrorCode.CUSTOM_ERROR, "产品还未入库,无法出库。");
-            } else if (assetsProduction.getRepertoryState()) {
-                ErrorCode.throwBusinessException(ErrorCode.CUSTOM_ERROR, "产品还已出库,无需出库。");
-            }
-            OrderFund orderFund = orderFundService.getOne(new LambdaQueryWrapper<OrderFund>()
-                    .select(BaseEntity::getId,OrderFund::getRealAmount)
-                    .eq(OrderFund::getBusinessId,wareHouseDTO.getBusinessId())
-                    .eq(OrderFund::getBusinessType,ASSET_BUSINESS.getCode()));
-            // 非意见书,且实收款未认领(订单实收款为NULL)
-            if (!assetsProduction.getProductionType().equals(STATEMENT.name()) && ObjectUtil.isNull(orderFund)){
-                // 判断出库审核是否通过
-                if (true){ // 不通过提示
-                    ErrorCode.throwBusinessException(ErrorCode.CUSTOM_ERROR, "不满足出库条件,该产品需客户经理申请产品出库通过后方可出库。");
-                }else { // 通过则出库
-
+            ErrorCode.throwBusinessException(ErrorCode.CUSTOM_ERROR, "操作的产品类型与当前操作的产品类型不符,请检查。");
+        } else {
+            // true出库,false入库
+            if (wareHouseDTO.getRepertoryState()) { // 出库
+                if (ObjectUtil.isNull(assetsProduction.getRepertoryState())) {
+                    ErrorCode.throwBusinessException(ErrorCode.CUSTOM_ERROR, "产品还未入库,无法出库。");
+                } else if (assetsProduction.getRepertoryState()) {
+                    ErrorCode.throwBusinessException(ErrorCode.CUSTOM_ERROR, "产品还已出库,无需出库。");
                 }
-            }else { // 意见书可以直接出库
-
+                OrderFund orderFund = orderFundService.getOne(new LambdaQueryWrapper<OrderFund>()
+                        .select(BaseEntity::getId, OrderFund::getRealAmount)
+                        .eq(OrderFund::getBusinessId, wareHouseDTO.getBusinessId())
+                        .eq(OrderFund::getBusinessType, ASSET_BUSINESS.getCode()));
+                // 非意见书,且实收款未认领(订单实收款为NULL)
+                if (!assetsProduction.getProductionType().equals(STATEMENT.name()) && ObjectUtil.isNull(orderFund)) {
+                    ProductionOutWarehouse productionOutWarehouse = productionOutWarehouseService.getOne(new LambdaQueryWrapper<ProductionOutWarehouse>()
+                            .select(BaseEntity::getId, ProductionOutWarehouse::getDepartmentCheckState)
+                            .eq(ProductionOutWarehouse::getProductionId, wareHouseDTO.getProductionId())
+                            .eq(ProductionOutWarehouse::getReportNo, wareHouseDTO.getProductionNo()));
+                    // 判断出库审核是否通过
+                    if (ObjectUtil.isNull(productionOutWarehouse) && !productionOutWarehouse.getDepartmentCheckState().equals("审核通过")) { // 不通过提示
+                        ErrorCode.throwBusinessException(ErrorCode.CUSTOM_ERROR, "不满足出库条件,该产品需客户经理申请产品出库通过后方可出库。");
+                    } else { // 通过则出库
+                        return this.update(new LambdaUpdateWrapper<AssetsProduction>()
+                                .set(AssetsProduction::getRepertoryState, 1)
+                                .set(AssetsProduction::getRepertoryOutTime, new Date())
+                                .eq(BaseEntity::getId, wareHouseDTO.getProductionId())
+                                .eq(AssetsProduction::getProductionNo, wareHouseDTO.getProductionNo()));
+                    }
+                } else { // 意见书可以直接出库
+                    return this.update(new LambdaUpdateWrapper<AssetsProduction>()
+                            .set(AssetsProduction::getRepertoryState, 1)
+                            .set(AssetsProduction::getRepertoryInTime, new Date())
+                            .eq(BaseEntity::getId, wareHouseDTO.getProductionId())
+                            .eq(AssetsProduction::getProductionNo, wareHouseDTO.getProductionNo()));
+                }
+            } else { // 入库
+                return this.update(new LambdaUpdateWrapper<AssetsProduction>()
+                        .set(AssetsProduction::getRepertoryState, 0)
+                        .set(AssetsProduction::getRepertoryInTime, new Date())
+                        .eq(BaseEntity::getId, wareHouseDTO.getProductionId())
+                        .eq(AssetsProduction::getProductionNo, wareHouseDTO.getProductionNo()));
             }
         }
-        return null;
+        return Boolean.FALSE;
     }
 }

+ 1 - 12
service/src/main/java/com/dayou/workflow/handler/AssetsNodeHandler.java

@@ -84,7 +84,6 @@ public class AssetsNodeHandler extends WorkNodeProcessable {
                 }
             }
             if (CollectionUtil.isNotEmpty(workNodeCommit.getReportNos())){
-
                 //主流程分支
                 String code = workNodeService.getOne(new LambdaQueryWrapper<WorkNode>()
                         .select(WorkNode::getCode)
@@ -93,20 +92,10 @@ public class AssetsNodeHandler extends WorkNodeProcessable {
 
                 if (workflowNodeEnum.equals(WorkflowNodeEnum.GENERATE_STATEMENT)){
                     for (String businessSubId :workNodeCommit.getReportNos()){
-//                        AssetsProduction assetsProduction = assetsProductionService.getOne(new LambdaQueryWrapper<AssetsProduction>().select(AssetsProduction::getCreateProductionDate).eq(AssetsProduction::getProductionNo, businessSubId).eq(BaseEntity::getDeleted, Boolean.FALSE));
                         addNextInstanceNode(currentInstanceNode,nextWorkNode, workNodeCommit.getNextHandlerId(),businessSubId,null);
-                        // 产品出具日期是否为null,为null说明还没撰写产品的信息
-//                        if (ObjectUtil.isNotNull(assetsProduction)){
-//                            addNextInstanceNode(currentInstanceNode,nextWorkNode, workNodeCommit.getNextHandlerId(),businessSubId,null);
-//                        }else {
-//                            workFlowNodeInstanceService.save(currentInstanceNode);
-//                            WorkTaskRecord workTaskRecord = workTaskRecordService.getOne(new LambdaQueryWrapper<WorkTaskRecord>().select(WorkTaskRecord::getHandlerId,WorkTaskRecord::getTaskId).eq(WorkTaskRecord::getInstanceId,workNodeCommit.getInstanceNodeId()));
-//                            workTaskRecord.setInstanceId(currentInstanceNode.getId());
-//                            workTaskRecordService.save(workTaskRecord);
-//                        }
                     }
                 }
-                else if(workflowNodeEnum.equals(WorkflowNodeEnum.WRITE_REPORT) || workflowNodeEnum.equals(WorkflowNodeEnum.WRITE_LETTER)){
+                else if(workflowNodeEnum.equals(WorkflowNodeEnum.WRITE_REPORT)){
                     for (String businessMinId :workNodeCommit.getReportNos()){
                         addNextInstanceNode(currentInstanceNode,nextWorkNode, workNodeCommit.getNextHandlerId(),workNodeCommit.getBusinessSubId(),businessMinId);
                     }