From f41e23e6db7436fd9e1b811314d2f497d8bc63f2 Mon Sep 17 00:00:00 2001
From: k94314517 <8417338+k94314517@user.noreply.gitee.com>
Date: 星期二, 15 八月 2023 17:43:11 +0800
Subject: [PATCH] 111

---
 server/src/main/java/doumeemes/api/ext/WorkorderRecordExtController.java                |    6 +
 server/src/main/java/doumeemes/dao/ext/dto/QueryBomExtDTO.java                          |    3 +
 server/src/main/java/doumeemes/service/ext/WorkorderRecordStandardService.java          |    2 
 server/src/main/java/doumeemes/api/ext/PlansExtController.java                          |    1 
 server/src/main/java/doumeemes/dao/business/model/Plans.java                            |    4 +
 server/src/main/java/doumeemes/service/ext/impl/WorkorderRecordStandardServiceImpl.java |   83 +++++++++++++++++++++++++++
 server/src/main/java/doumeemes/dao/ext/dto/QueryBomDetailExtDTO.java                    |    2 
 server/src/main/java/doumeemes/api/ext/SalaryParamExtController.java                    |    8 ++
 server/src/main/java/doumeemes/dao/ext/beanDto/QueryWStockDto.java                      |    2 
 server/src/main/java/doumeemes/dao/ext/vo/PlansExtListVO.java                           |   13 ++++
 server/src/main/java/doumeemes/service/ext/impl/PlansExtServiceImpl.java                |   16 ++++
 server/src/main/resources/mappers/PlansExtMapper.xml                                    |    4 +
 12 files changed, 139 insertions(+), 5 deletions(-)

diff --git a/server/src/main/java/doumeemes/api/ext/PlansExtController.java b/server/src/main/java/doumeemes/api/ext/PlansExtController.java
index 61cd646..7741d95 100644
--- a/server/src/main/java/doumeemes/api/ext/PlansExtController.java
+++ b/server/src/main/java/doumeemes/api/ext/PlansExtController.java
@@ -188,6 +188,7 @@
         plansExtService.backByIdInBatch(idList);
         return ApiResponse.success(null);
     }
+
     @ApiOperation("鍒嗛〉鏌ヨ")
     @PostMapping("/page")
     @RequiresPermissions("ext:plansext:query")
diff --git a/server/src/main/java/doumeemes/api/ext/SalaryParamExtController.java b/server/src/main/java/doumeemes/api/ext/SalaryParamExtController.java
index 3bbb7ee..8d38ddf 100644
--- a/server/src/main/java/doumeemes/api/ext/SalaryParamExtController.java
+++ b/server/src/main/java/doumeemes/api/ext/SalaryParamExtController.java
@@ -76,6 +76,14 @@
         return ApiResponse.success(null);
     }
 
+    @ApiOperation("鏍规嵁瀵硅薄淇℃伅鏌ヨ")
+    @PostMapping("/queryOne")
+    @RequiresPermissions("business:salaryparam:query")
+    public ApiResponse queryOne(@RequestBody SalaryParam salaryParam) {
+        SalaryParam data = salaryParamService.findOne(salaryParam);
+        return ApiResponse.success(data);
+    }
+
     @ApiOperation("鍒嗛〉鏌ヨ")
     @PostMapping("/page")
     @RequiresPermissions("business:salaryparam:query")
diff --git a/server/src/main/java/doumeemes/api/ext/WorkorderRecordExtController.java b/server/src/main/java/doumeemes/api/ext/WorkorderRecordExtController.java
index 1c7d59d..2bd7950 100644
--- a/server/src/main/java/doumeemes/api/ext/WorkorderRecordExtController.java
+++ b/server/src/main/java/doumeemes/api/ext/WorkorderRecordExtController.java
@@ -224,6 +224,10 @@
         return ApiResponse.success(workorderRecordStandardService.choiceStockPageForWorkorder(pageWrap,getLoginUser()));
     }
 
-
+    @ApiOperation("鏍规嵁渚涢渶璁″垝鏌ヨ鍙敤搴撳瓨")
+    @PostMapping("/getStockByPlansForStandard")
+    public ApiResponse<PageData<WStockExtListVO>> getStockByPlansForStandard (@RequestBody PageWrap<QueryWStockDto> pageWrap) {
+        return ApiResponse.success(workorderRecordStandardService.choiceStockPageForPlans(pageWrap,getLoginUser()));
+    }
 
 }
diff --git a/server/src/main/java/doumeemes/dao/business/model/Plans.java b/server/src/main/java/doumeemes/dao/business/model/Plans.java
index a3ddc57..05b1fc1 100644
--- a/server/src/main/java/doumeemes/dao/business/model/Plans.java
+++ b/server/src/main/java/doumeemes/dao/business/model/Plans.java
@@ -3,6 +3,7 @@
 import cn.afterturn.easypoi.excel.annotation.Excel;
 import com.baomidou.mybatisplus.annotation.TableField;
 import doumeemes.core.annotation.excel.ExcelColumn;
+import doumeemes.dao.ext.vo.BomExtListVO;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import com.baomidou.mybatisplus.annotation.IdType;
@@ -160,4 +161,7 @@
     @ApiModelProperty(value = "鎴愬搧璁″垝涓婚敭锛堝叧鑱攚ork_plans琛級", example = "1")
     private Integer workPlansId;
 
+    @ApiModelProperty(value = "鍏宠仈BOM瀵硅薄",hidden = true)
+    @TableField(exist = false)
+    private BomExtListVO bomModel;
 }
diff --git a/server/src/main/java/doumeemes/dao/ext/beanDto/QueryWStockDto.java b/server/src/main/java/doumeemes/dao/ext/beanDto/QueryWStockDto.java
index 4dbcd75..d1b5074 100644
--- a/server/src/main/java/doumeemes/dao/ext/beanDto/QueryWStockDto.java
+++ b/server/src/main/java/doumeemes/dao/ext/beanDto/QueryWStockDto.java
@@ -80,5 +80,7 @@
     @ApiModelProperty(value = "宸ュ崟涓婚敭")
     private Integer workorderId;
 
+    @ApiModelProperty(value = "宸ュ簭璁″垝涓婚敭")
+    private Integer plansId;
 
 }
diff --git a/server/src/main/java/doumeemes/dao/ext/dto/QueryBomDetailExtDTO.java b/server/src/main/java/doumeemes/dao/ext/dto/QueryBomDetailExtDTO.java
index d5e345e..c02597a 100644
--- a/server/src/main/java/doumeemes/dao/ext/dto/QueryBomDetailExtDTO.java
+++ b/server/src/main/java/doumeemes/dao/ext/dto/QueryBomDetailExtDTO.java
@@ -256,6 +256,8 @@
     @ApiModelProperty(value = "宸ュ崟缂栫爜", example = "1",hidden = true)
     private Integer workorderId;
 
+    @ApiModelProperty(value = "宸ュ簭璁″垝涓婚敭", example = "1",hidden = true)
+    private Integer plansId;
     @ApiModelProperty(value = "鐗╂枡娓呭崟淇℃伅琛ㄦ渶鍚庡惎鐢ㄦ椂闂�")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date bmodelValidTime;
diff --git a/server/src/main/java/doumeemes/dao/ext/dto/QueryBomExtDTO.java b/server/src/main/java/doumeemes/dao/ext/dto/QueryBomExtDTO.java
index 3800a9a..b3a00a3 100644
--- a/server/src/main/java/doumeemes/dao/ext/dto/QueryBomExtDTO.java
+++ b/server/src/main/java/doumeemes/dao/ext/dto/QueryBomExtDTO.java
@@ -1,5 +1,7 @@
 package doumeemes.dao.ext.dto;
 
+import com.baomidou.mybatisplus.annotation.TableField;
+import doumeemes.dao.ext.vo.BomExtListVO;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -286,4 +288,5 @@
     @ApiModelProperty(value = "鐗╂枡娓呭崟淇℃伅琛ㄤ富閿�", example = "1")
     private Integer bmodelId;
 
+
 }
diff --git a/server/src/main/java/doumeemes/dao/ext/vo/PlansExtListVO.java b/server/src/main/java/doumeemes/dao/ext/vo/PlansExtListVO.java
index e07774a..43c59ef 100644
--- a/server/src/main/java/doumeemes/dao/ext/vo/PlansExtListVO.java
+++ b/server/src/main/java/doumeemes/dao/ext/vo/PlansExtListVO.java
@@ -170,4 +170,17 @@
     @ExcelColumn(name="鎴愬搧璁″垝缂栫爜")
     private String workPlanCode;
 
+    @ExcelColumn(name="閿�鍞鍗�")
+    private String salesOrder;
+
+    @ApiModelProperty(value = "鎴愬搧璁″垝寮�濮嬫椂闂�")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date workPlanStartDate;
+
+    @ApiModelProperty(value = "鎴愬搧璁″垝缁撴潫鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date workPlanEndDate;
+
+    @ApiModelProperty(value = "宸茬敓浜ф暟閲�")
+    private Integer produceNum;
 }
diff --git a/server/src/main/java/doumeemes/service/ext/WorkorderRecordStandardService.java b/server/src/main/java/doumeemes/service/ext/WorkorderRecordStandardService.java
index f3ffd3a..8473bf7 100644
--- a/server/src/main/java/doumeemes/service/ext/WorkorderRecordStandardService.java
+++ b/server/src/main/java/doumeemes/service/ext/WorkorderRecordStandardService.java
@@ -36,4 +36,6 @@
     List<WorkorderRecord> getWorkorderRecordList(Integer workorderId);
 
     PageData<WStockExtListVO> choiceStockPageForWorkorder(PageWrap<QueryWStockDto> pageWrap, LoginUserInfo userInfo);
+
+    PageData<WStockExtListVO> choiceStockPageForPlans(PageWrap<QueryWStockDto> pageWrap,LoginUserInfo userInfo);
 }
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 1c5be18..271a637 100644
--- a/server/src/main/java/doumeemes/service/ext/impl/PlansExtServiceImpl.java
+++ b/server/src/main/java/doumeemes/service/ext/impl/PlansExtServiceImpl.java
@@ -1563,14 +1563,17 @@
         if(Objects.isNull(plans)){
             throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈠埌宸ュ簭璁″垝鏁版嵁");
         }
-        if(plans.getStatus().equals(Constants.PLAN_STATUS.create)){
+        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 = workorderExtMapper.selectList(new QueryWrapper<Workorder>().eq("PLAN_ID",plans.getId()));
+        List<Workorder> workorderList = workorderExtMapper.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){
@@ -1601,6 +1604,15 @@
         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);
 
 
     }
diff --git a/server/src/main/java/doumeemes/service/ext/impl/WorkorderRecordStandardServiceImpl.java b/server/src/main/java/doumeemes/service/ext/impl/WorkorderRecordStandardServiceImpl.java
index fff2bcd..ffb5760 100644
--- a/server/src/main/java/doumeemes/service/ext/impl/WorkorderRecordStandardServiceImpl.java
+++ b/server/src/main/java/doumeemes/service/ext/impl/WorkorderRecordStandardServiceImpl.java
@@ -83,6 +83,10 @@
     private MaterialExtMapper materialExtMapper;
     @Autowired
     private SalaryParamMapper salaryParamMapper;
+    @Autowired
+    private PlansExtMapper plansExtMapper;
+    @Autowired
+    private DeviceExtMapper deviceExtMapper;
 
     @Transactional(rollbackFor = {BusinessException.class,Exception.class})
     @Override
@@ -188,6 +192,14 @@
         return mp;
     }
 
+    private void getPlansAndValid(LoginUserInfo user, Plans mp)  throws  BusinessException{
+        if(mp== null){
+            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "瀵逛笉璧凤紝璇ヨ褰曚笉瀛樺湪锛�");
+        }
+        if(Constants.equalsInteger(mp.getPaused(),Constants.ONE)){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "瀵逛笉璧凤紝宸ュ崟宸叉殏鍋滐紒");
+        }
+    }
 
     private QueryBomDetailExtDTO initBomParam(LoginUserInfo user, Workorder mp)  throws BusinessException{
         QueryBomExtDTO bb = new QueryBomExtDTO();
@@ -207,6 +219,27 @@
         bom.setBomId(versionBom.getBomVersionId());
 //        bom.setProcedureId(mp.getProcedureId());
         bom.setWorkorderId(mp.getId());
+        return bom;
+    }
+
+    private QueryBomDetailExtDTO initBomParamForPlans(LoginUserInfo user, Plans plans)  throws BusinessException{
+        QueryBomExtDTO bb = new QueryBomExtDTO();
+        bb.setDepartId(plans.getDepartId());
+        bb.setDeleted(Constants.ZERO);
+        bb.setRootDepartId(user.getRootDepartment().getId());
+        bb.setMaterialId(plans.getMaterialId());
+        bb.setProcedureId(plans.getProcedureId());
+        BomExtListVO versionBom = bomExtMapper.selectByModel( bb);
+        if(versionBom == null || StringUtils.isBlank(versionBom.getVersion()) || versionBom.getBomVersionId() == null){
+            return  null;
+            // throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "瀵逛笉璧凤紝璇ュ伐鍗曠墿鏂橞OM淇℃伅閰嶇疆鏈夎锛岃鑱旂郴绠$悊鍛橈紒");
+        }
+        plans.setBomModel(versionBom);
+        QueryBomDetailExtDTO  bom = new QueryBomDetailExtDTO();
+        bom.setDeleted(Constants.ZERO);
+        bom.setBomId(versionBom.getBomVersionId());
+//        bom.setProcedureId(mp.getProcedureId());
+        bom.setPlansId(plans.getId());
         return bom;
     }
 
@@ -1110,7 +1143,52 @@
         return PageData.from(new PageInfo<>(result));
     }
 
-
+    @Override
+    public PageData<WStockExtListVO> choiceStockPageForPlans(PageWrap<QueryWStockDto> pageWrap,LoginUserInfo userInfo) {
+        Plans plans =plansExtMapper.selectById(pageWrap.getModel().getPlansId());
+        if(Objects.isNull(plans)){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝鏈煡璇㈠埌宸ュ簭璁″垝淇℃伅锛�");
+        }
+        Device device = deviceExtMapper.selectById(pageWrap.getModel().getDeviceId());
+        if(Objects.isNull(plans)){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝鏈煡璇㈠埌璁惧淇℃伅锛�");
+        }
+        //鏌ヨ骞堕獙璇佸伐鍗曚俊鎭�
+        this.getPlansAndValid(userInfo,plans);
+        //鏌ヨ鍏ㄩ儴bom缁勬垚鏁版嵁锛屽鏋滄湁BOM閰嶇疆锛屾寜鐓OM缁勬垚杩涜鎶曟枡锛屽鏋滄病鏈塀OM閰嶇疆锛屽垯鎶曟枡鐗╂枡涓哄緟鐢熶骇搴撲綅鐨勭墿鏂欐湰韬�
+        QueryBomDetailExtDTO bdparam = initBomParamForPlans(userInfo,plans);
+        List<BomDetailExtListVO> bomDetailList = null;
+        if(bdparam!=null){
+            bomDetailList = bomDetailExtMapper.selectList(bdparam);
+            List<Integer> materialDistributeId = bomDetailList.stream().map(BomDetailExtListVO::getMaterialId).collect(Collectors.toList());
+            pageWrap.getModel().setMaterialDistributeId(materialDistributeId);
+        }else{
+            //鏌ヨ鐗╂枡BOM淇℃伅
+            Bom bom = bomExtMapper.selectOne(new QueryWrapper<Bom>().eq("MATERIAL_ID",plans.getMaterialId()).eq("DELETED",Constants.ZERO).last(" limit 1 "));
+            if(Objects.isNull(bom)){
+                throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝鏈煡璇㈠埌BOM淇℃伅锛�");
+            }
+            RouteProcedure currentRouteProcedure   = routeProcedureExtMapper.selectOne(new QueryWrapper<RouteProcedure>()
+                    .eq("ROUTE_ID",bom.getRouteId())
+                    .eq("PROCEDURE_ID",plans.getProcedureId())
+                    .last(" limit 1 ")
+            );
+            if(currentRouteProcedure!=null){
+                RouteProcedure routeProcedure   = routeProcedureExtMapper.selectOne(new QueryWrapper<RouteProcedure>()
+                        .eq("ROUTE_ID",currentRouteProcedure.getRouteId()).apply(" SORTNUM <  " + currentRouteProcedure.getSortnum() ).eq("STATUS",Constants.ONE).orderByDesc(" SORTNUM ").last(" limit 1  ")
+                );
+                if(Objects.isNull(routeProcedure)){
+                    throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝鏈煡璇㈠埌鐢熶骇鐗╂枡涓婁竴姝ュ伐搴忎俊鎭紒");
+                }
+                pageWrap.getModel().setProcedureId(routeProcedure.getProcedureId());
+                pageWrap.getModel().setMaterialId(plans.getMaterialId());
+            }
+        }
+        pageWrap.getModel().setLocationId(device.getProduceWarehouseLocationId());
+        PageHelper.startPage(pageWrap.getPage(), pageWrap.getCapacity());
+        List<WStockExtListVO> result = wStockExtMapper.choiceStockList(pageWrap.getModel());
+        return PageData.from(new PageInfo<>(result));
+    }
 
     @Override
     @Transactional(rollbackFor = {BusinessException.class,Exception.class})
@@ -1184,5 +1262,8 @@
         workorderRecordExtMapper.insert(workorderRecord);
         return workorderRecord;
     }
+    
+    
+    
 
 }
diff --git a/server/src/main/resources/mappers/PlansExtMapper.xml b/server/src/main/resources/mappers/PlansExtMapper.xml
index 7e4878d..588478d 100644
--- a/server/src/main/resources/mappers/PlansExtMapper.xml
+++ b/server/src/main/resources/mappers/PlansExtMapper.xml
@@ -366,7 +366,9 @@
     ,(  SELECT sum( b.PLAN_NUM ) FROM  workorder b  WHERE b.deleted = 0 AND b.PLAN_ID = a.id  and b.status !=6) AS workorderDistributNum ,
     `mmodel`.name as materialName , `mmodel`.code as materialCode ,`fmodel`.name as factoryName , `pmodel`.name as produceName ,
       concat(`usermodel`.realname,' ',`usermodel`.mobile) as planUserName , `umodel`.name as unitName ,
-      w.PLAN_CODE as workPlanCode
+      w.PLAN_CODE as workPlanCode , w.SALESORDER as salesOrder ,
+      w.START_DATE as workPlanStartDate  , w.PLAN_DATE as workPlanEndDate,
+      ifnull((select  sum(worder.PLAN_NUM) from workorder worder where worder.PLAN_ID = a.id and worder.STATUS not in (7,8)  ),0) as produceNum
 
     FROM `plans` `a`
     LEFT JOIN `department` `dmodel` ON a.DEPART_ID=dmodel.ID

--
Gitblit v1.9.3