From fb65ffe3606482e15bcdf1fd5adfb1acb1b8e846 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期三, 16 八月 2023 11:24:49 +0800
Subject: [PATCH] Merge branch 'master' of http://139.186.142.91:10010/r/productDev/dmMes

---
 server/src/main/java/doumeemes/service/ext/impl/PlansExtServiceImpl.java |  109 ++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 104 insertions(+), 5 deletions(-)

diff --git a/server/src/main/java/doumeemes/service/ext/impl/PlansExtServiceImpl.java b/server/src/main/java/doumeemes/service/ext/impl/PlansExtServiceImpl.java
index 0c69384..4bb8e2c 100644
--- a/server/src/main/java/doumeemes/service/ext/impl/PlansExtServiceImpl.java
+++ b/server/src/main/java/doumeemes/service/ext/impl/PlansExtServiceImpl.java
@@ -16,11 +16,14 @@
 import doumeemes.core.utils.excel.EasyExcelUtil;
 import doumeemes.core.utils.redis.RedisUtil;
 import doumeemes.dao.business.PlansMapper;
+import doumeemes.dao.business.WorkorderMapper;
+import doumeemes.dao.business.dto.*;
 import doumeemes.dao.business.model.*;
 import doumeemes.dao.ext.*;
 import doumeemes.dao.ext.dto.*;
 import doumeemes.dao.ext.vo.*;
 import doumeemes.service.ext.*;
+import io.swagger.annotations.ApiModelProperty;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.shiro.SecurityUtils;
 import org.springframework.beans.BeanUtils;
@@ -32,9 +35,11 @@
 import org.springframework.web.multipart.MultipartFile;
 
 import java.math.BigDecimal;
+import java.time.LocalDate;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
+import java.util.Objects;
 
 /**
  * 鐢熶骇璁″垝Service瀹炵幇
@@ -61,7 +66,8 @@
     private WorkorderHistoryExtMapper workorderHistoryExtMapper;
     @Autowired
     private WorkorderRecordExtMapper workorderRecordExtMapper;
-
+    @Autowired
+    private WorkorderMapper workorderMapper;
     @Autowired
     private RouteProcedureExtMapper routeProcedureExtMapper;
     @Autowired
@@ -84,6 +90,8 @@
     private MaterialDistributeExtMapper materialDistributeExtMapper;
     @Autowired
     private WStockExtService  wStockExtService;
+    @Autowired
+    private WorkorderRecordStandardService workorderRecordStandardService;
 
     @Override
     public  PlansExtListVO findById(Integer id){
@@ -134,6 +142,19 @@
 //        //缁熻宸插畬宸ユ暟閲�
 //        param.setStatus(Constants.WORKORDER_STATUS.done);
 //        plan.setDoneNum(workorderExtMapper.sumOrderNum(param));
+        QueryBomExtDTO bb = new QueryBomExtDTO();
+        bb.setDepartId(plan.getDepartId());
+        bb.setDeleted(Constants.ZERO);
+        bb.setRootDepartId(user.getRootDepartment().getId());
+        bb.setMaterialId(plan.getMaterialId());
+        bb.setProcedureId(plan.getProcedureId());
+        BomExtListVO versionBom = bomExtMapper.selectByModel( bb);
+        if(versionBom == null || StringUtils.isBlank(versionBom.getVersion()) || versionBom.getBomVersionId() == null){
+            plan.setHasBom(Constants.ZERO);
+        }else {
+            plan.setBomType(Constants.formatIntegerNum(versionBom.getType()));
+            plan.setHasBom(Constants.ONE);
+        }
         return plan;
     }
 
@@ -192,6 +213,14 @@
 //                p.setDistributNum(tp.getDistributNum());
 //                p.setDoneNum(tp.getDoneNum());
                 p.setIsStock(wStockExtService.isStockForPlan(p));
+                p.setHasExpire(false);
+                p.setStatus(Constants.formatIntegerNum(p.getStatus()));
+                if ( !p.getStatus().equals(Constants.PLAN_STATUS.done) &&
+                        !p.getStatus().equals(Constants.PLAN_STATUS.close)){
+                    if (Objects.nonNull(p.getPlanDate())){
+                        p.setHasExpire(DateUtil.toDateLocalDateTime(p.getWorkPlanPlanDate()).toLocalDate().isBefore(LocalDate.now()));
+                    }
+                }
             }
         }
         return PageData.from(new PageInfo<>(result));
@@ -565,7 +594,7 @@
         distributeDone(user, param,param.getPlanNum());
     }
 
-    private void distributeDone(LoginUserInfo user,  Workorder param,int thisPlanNum) {
+    private Workorder distributeDone(LoginUserInfo user,  Workorder param,int thisPlanNum) {
         if(param.getPlanId()== null
                 ||param.getPlanDate() == null
                 || param.getProGroupId()==null
@@ -587,7 +616,7 @@
         if(Constants.equalsInteger(mp.getPaused(),Constants.ONE)){
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "瀵逛笉璧凤紝璁″垝宸叉殏鍋滐紒");
         }
-        if(Constants.formatIntegerNum(mp.getDistributNum())+thisPlanNum > Constants.formatIntegerNum(mp.getNum())){
+        if(Constants.formatIntegerNum(mp.getWorkorderDistributNum())+thisPlanNum > Constants.formatIntegerNum(mp.getNum())){
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "瀵逛笉璧凤紝绱鍒嗛厤鏁伴噺澶т簬璁″垝鏁伴噺锛�");
         }
         if(!Constants.equalsInteger(mp.getStatus(),Constants.PLAN_STATUS.publish)&&!Constants.equalsInteger(mp.getStatus(),Constants.PLAN_STATUS.distribute)){
@@ -648,7 +677,7 @@
             //鐢熶骇浜哄憳璁板綍
             workorderUserExtMapper.insert(wu);
         }
-
+        return order;
     }
 
     private void checkUserAndGroup(Workorder param, PlansExtListVO  model,LoginUserInfo user) throws BusinessException{
@@ -1502,7 +1531,7 @@
     }
     /**
      * 鎭㈠璁″垝
-     * @param p
+     * @param
      */
     @Transactional(rollbackFor = {BusinessException.class,Exception.class})
     @Override
@@ -1545,4 +1574,74 @@
 
     }
 
+
+    /**
+     * 涓�閿姤宸�
+     * @param user
+     */
+    @Transactional(rollbackFor = {BusinessException.class,Exception.class})
+    @Override
+    public void autoWorkReport(LoginUserInfo user, AutoWorkReportDTO autoWorkReportDTO){
+        //鏌ヨ宸ュ伐搴忚鍒掔姸鎬�
+        Plans plans = plansExtMapper.selectById(autoWorkReportDTO.getPlansId());
+        if(Objects.isNull(plans)){
+            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈠埌宸ュ簭璁″垝鏁版嵁");
+        }
+        if(!(plans.getStatus().equals(Constants.PLAN_STATUS.create)||plans.getStatus().equals(Constants.PLAN_STATUS.distribute))){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"宸ュ簭璁″垝宸叉祦杞紝鏃犳硶鎿嶄綔");
+        }
+        if(plans.getPaused().equals(Constants.ONE)){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"宸ュ簭璁″垝宸叉殏鍋滐紝鏃犳硶鎿嶄綔");
+        }
+        if(Objects.isNull(autoWorkReportDTO.getCreateWorkorderRecordDTO())){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鍙傛暟閿欒锛氫骇鍑烘暟鎹�");
+        }
+        //鏌ヨ宸ュ簭璁″垝宸插垎閰嶆暟閲�
+        List<Workorder> workorderList = workorderMapper.selectList(new QueryWrapper<Workorder>().eq("PLAN_ID",plans.getId())
+                .notIn("STATUS",7,8));
+        //鏈浜у嚭鏁伴噺
+        BigDecimal num = autoWorkReportDTO.getCreateWorkorderRecordDTO().getQualifiedNum().add(autoWorkReportDTO.getCreateWorkorderRecordDTO().getUnQualifiedNum());
+        if(num.compareTo(BigDecimal.ZERO)<=Constants.ZERO){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鍙傛暟閿欒锛氫骇鍑烘暟鎹�");
+        }
+        //宸ュ崟宸插垎閰嶆暟閲�
+        Integer produceNum = workorderList.stream().map(s -> s.getPlanNum()).reduce(Constants.ZERO, Integer::sum);
+        Integer surplusNum = plans.getNum() - produceNum;
+        if(num.compareTo(BigDecimal.valueOf(surplusNum))>0){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鍙傛暟閿欒锛氳秴鍑哄伐鍗曞墿浣欏彲鍒嗛厤鏁伴噺");
+        }
+        Workorder param = new Workorder();
+        param.setPlanId(autoWorkReportDTO.getPlansId());
+        param.setPlanDate(new Date());
+        param.setProGroupId(autoWorkReportDTO.getProGroupId());
+        param.setProUserList(autoWorkReportDTO.getProUserList());
+        param.setPlanNum(plans.getNum());
+        //鐢熸垚宸ュ崟淇℃伅
+        Workorder workorder = this.distributeDone(user,param,plans.getNum());
+        //宸ュ崟鎶曟枡璁板綍
+        CreateMaterialDTO createMaterialDTO = new CreateMaterialDTO();
+        if(!Objects.isNull(autoWorkReportDTO.getRecordList())&&autoWorkReportDTO.getRecordList().size()>Constants.ZERO){
+            createMaterialDTO.setId(workorder.getId());
+            createMaterialDTO.setRecordList(autoWorkReportDTO.getRecordList());
+            workorderRecordStandardService.createMaterialStandard(createMaterialDTO);
+        }
+        //宸ュ崟浜у嚭璁板綍
+        autoWorkReportDTO.getCreateWorkorderRecordDTO().setWorkorderId(workorder.getId());
+        workorderRecordStandardService.createWorkorderRecord(autoWorkReportDTO.getCreateWorkorderRecordDTO(),user);
+        //宸ュ崟鎶ュ伐
+        workorderRecordStandardService.comfirmDone(workorder);
+        //鏇存柊宸ュ崟鐘舵��
+        if(num.compareTo(BigDecimal.valueOf(surplusNum))==Constants.ZERO){
+            plans.setStatus(Constants.PLAN_STATUS.done);
+        }else{
+            if(plans.getStatus().equals(Constants.PLAN_STATUS.create)){
+                plans.setStatus(Constants.PLAN_STATUS.distribute);
+            }
+        }
+        plansExtMapper.updateById(plans);
+
+
+    }
+
+
 }

--
Gitblit v1.9.3