ソースを参照

产品出入库通用接口开发2

wucl 11 ヶ月 前
コミット
0963b81c84

+ 4 - 4
biz-base/src/main/java/com/dayou/controller/BusinessProductionController.java

@@ -168,12 +168,12 @@ public class BusinessProductionController{
 
     /**
      * 大中型、资产、个贷产品通用出入库接口
-     * @param ProductionNo
+     * @param productionNo
      * @return
      */
-    @PostMapping("/inOut")
-    public RestResponse<Boolean> inOutWareHouse(String ProductionNo){
-        Boolean ret = businessProductionService.inOutWareHouse(ProductionNo);
+    @PostMapping("/wareHouse")
+    public RestResponse<Boolean> inOutWareHouse(@RequestParam("productionNo") String productionNo){
+        Boolean ret = businessProductionService.inOutWareHouse(productionNo);
         return RestResponse.data(ret);
     }
 }

+ 2 - 2
dao/src/main/resources/mapper/WorkFlowNodeInstanceMapper.xml

@@ -215,7 +215,7 @@
                 LEFT JOIN work_node_task wnt ON wnt.id = wtr.task_id
                 inner JOIN (
                 SELECT
-                    wn.CODE,
+                    wn.code,
                     wfni.id as instanceId,
                     wfni.business_id as businessId,
                     wfni.business_sub_id as businessSubId,
@@ -233,6 +233,6 @@
         WHERE
             wnt.deleted = 0
           AND wtr.deleted = 0 and wfni.code in ('STATEMENT_IN','STATEMENT_OUT','REPORT_IN','REPORT_OUT','LETTER_IN','LETTER_OUT')
-        and (wfni.business_sub_id = #{productionNo} or wfni.business_min_id = #{productionNo})
+        and (wfni.businessSubId = #{productionNo} or wfni.businessMinId = #{productionNo})
     </select>
 </mapper>

+ 2 - 1
domain/src/main/java/com/dayou/dto/WareHouseDTO.java

@@ -3,6 +3,7 @@ package com.dayou.dto;
 import lombok.Builder;
 import lombok.Data;
 
+
 /**
  * 类说明:
  *
@@ -12,7 +13,7 @@ import lombok.Data;
  */
 @Builder
 @Data
-public class WareHouseDTO {
+public class WareHouseDTO  {
 
     private String reportNo;
 

+ 64 - 10
service/src/main/java/com/dayou/service/impl/BusinessProductionServiceImpl.java

@@ -1,17 +1,20 @@
 package com.dayou.service.impl;
 
+import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.dayou.common.BaseEntity;
 import com.dayou.configuration.DfsConfig;
+import com.dayou.dto.AssetsProWareHouseDTO;
 import com.dayou.dto.TaskRecordDTO;
 import com.dayou.dto.WareHouseDTO;
 import com.dayou.dto.WorkNodeCommit;
-import com.dayou.entity.MajorProduction;
-import com.dayou.entity.WorkTaskRecord;
+import com.dayou.entity.*;
 import com.dayou.enums.MainBusinessEnum;
+import com.dayou.enums.ProductionEnum;
 import com.dayou.enums.workflow.WorkflowNodeEnum;
+import com.dayou.exception.ErrorCode;
 import com.dayou.mapper.MajorProductionMapper;
 import com.dayou.mapper.PersonalTargetMapper;
 import com.dayou.mapper.WorkFlowNodeInstanceMapper;
@@ -39,7 +42,9 @@ import java.util.Map;
 import static com.dayou.common.Constants.PNG;
 import static com.dayou.common.Constants.PROD_VALIDATE_URI;
 import static com.dayou.enums.MainBusinessEnum.PERSONAL_BUSINESS;
+import static com.dayou.enums.ProductionEnum.*;
 import static com.dayou.enums.workflow.NodeLogEnum.PASS;
+import static com.dayou.enums.workflow.WorkflowNodeEnum.*;
 
 /**
  * 类说明:
@@ -156,13 +161,16 @@ public class BusinessProductionServiceImpl implements IBusinessProductionService
         if (StrUtil.isNotBlank(productionNo)){
 
             Map<String,Object> nodeMap = workFlowNodeInstanceMapper.getInOutInstanceNode(productionNo);
+            if (CollectionUtil.isEmpty(nodeMap)){
+                ErrorCode.throwBusinessException(ErrorCode.CUSTOM_ERROR,"该产品目前还不能进行出入库操作。");
+            }
             MainBusinessEnum businessType = MainBusinessEnum.valueOf((String) nodeMap.get("businessType"));
             Long businessId = (Long) nodeMap.get("businessId");
             Long recodeId = (Long) nodeMap.get("id");
             String code = (String) nodeMap.get("code");
 
             //完成出库业务操作
-            Boolean doRet = doInOutWareHouse(businessType, businessId, recodeId, productionNo);
+            Boolean doRet = doInOutWareHouse(businessType, businessId, recodeId, productionNo,code);
 
             if (doRet){
                 //提交工作流节点
@@ -180,15 +188,49 @@ public class BusinessProductionServiceImpl implements IBusinessProductionService
         return Boolean.FALSE;
     }
 
-    private Boolean doInOutWareHouse(MainBusinessEnum businessEnum,Long businessId,Long recordId,String productionNo) {
-        TaskRecordDTO<WareHouseDTO> taskRecordDTO = new TaskRecordDTO<>();
-        taskRecordDTO.setRecordId(recordId);
+    private Boolean doInOutWareHouse(MainBusinessEnum businessEnum,Long businessId,Long recordId,String productionNo,String code) {
+
         Boolean doWareHouseRet = Boolean.FALSE;
         switch (businessEnum){
             case PERSONAL_BUSINESS:
-
-                break;
+                TaskRecordDTO<PersonalProduction> taskRecord = new TaskRecordDTO<>();
+                taskRecord.setRecordId(recordId);
+                PersonalTarget personalTarget = personalTargetMapper.selectOne(new LambdaQueryWrapper<PersonalTarget>()
+                        .eq(PersonalTarget::getPersonalId, businessId)
+                        .select(BaseEntity::getId));
+                Long targetId = personalTarget.getId();
+                PersonalProduction production = new PersonalProduction();
+                production.setTargetId(targetId);
+                if (STATEMENT_IN.name().equals(code)){
+                    production.setProduction(STATEMENT.name());
+                    taskRecord.setTaskData(production);
+                    personalProductionService.repertoryIn(taskRecord);
+                }else if (STATEMENT_OUT.name().equals(code)){
+                    production.setProduction(STATEMENT.name());
+                    taskRecord.setTaskData(production);
+                    personalProductionService.repertoryOut(taskRecord);
+                }else if (REPORT_IN.name().equals(code)){
+                    production.setProduction(REPORT.name());
+                    taskRecord.setTaskData(production);
+                    personalProductionService.repertoryIn(taskRecord);
+                }else if (REPORT_OUT.name().equals(code)){
+                    production.setProduction(REPORT.name());
+                    taskRecord.setTaskData(production);
+                    personalProductionService.repertoryOut(taskRecord);
+                }else if (LETTER_IN.name().equals(code)){
+                    production.setProduction(LETTER.name());
+                    taskRecord.setTaskData(production);
+                    personalProductionService.repertoryIn(taskRecord);
+                }else if (LETTER_OUT.name().equals(code)){
+                    production.setProduction(LETTER.name());
+                    taskRecord.setTaskData(production);
+                    personalProductionService.repertoryOut(taskRecord);
+                }else{
+                    break;
+                }
             case MAJOR_BUSINESS:
+                TaskRecordDTO<WareHouseDTO> taskRecordDTO = new TaskRecordDTO<>();
+                taskRecordDTO.setRecordId(recordId);
                 MajorProduction mp = majorProductionService.getOne(new LambdaQueryWrapper<MajorProduction>()
                         .select(BaseEntity::getId,MajorProduction::getProduction,MajorProduction::getRepertoryState)
                         .eq(MajorProduction::getMajorId, businessId)
@@ -206,9 +248,21 @@ public class BusinessProductionServiceImpl implements IBusinessProductionService
                 doWareHouseRet = majorProductionService.warehouse(taskRecordDTO);
                 break;
             case ASSET_BUSINESS:
+                AssetsProduction ap = assetsProductionService.getOne(new LambdaQueryWrapper<AssetsProduction>()
+                        .select(BaseEntity::getId, AssetsProduction::getProductionType, AssetsProduction::getRepertoryState)
+                        .eq(AssetsProduction::getBusinessId, businessId)
+                        .eq(AssetsProduction::getProductionNo, productionNo));
+                Long id = ap.getId();
+                String pt = ap.getProductionType();
+                Boolean status = ap.getRepertoryState()==null?Boolean.FALSE:Boolean.TRUE;
+                AssetsProWareHouseDTO assetsProWareHouseDTO = new AssetsProWareHouseDTO();
+                assetsProWareHouseDTO.setBusinessId(businessId);
+                assetsProWareHouseDTO.setProductionId(id);
+                assetsProWareHouseDTO.setProductionType(pt);
+                assetsProWareHouseDTO.setRepertoryState(status);
+                assetsProWareHouseDTO.setProductionNo(productionNo);
+                doWareHouseRet = assetsProductionService.assetsProRepertory(assetsProWareHouseDTO);
                 break;
-
-
         }
         if (doWareHouseRet){
             //完成任务