From e1ee1084bb6db4f8a87894109be1b7a9d216cfec Mon Sep 17 00:00:00 2001
From: k94314517 <8417338+k94314517@user.noreply.gitee.com>
Date: 星期三, 16 八月 2023 18:29:35 +0800
Subject: [PATCH] 111

---
 server/src/main/java/doumeemes/service/ext/impl/WorkorderRecordStandardServiceImpl.java |  262 +++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 187 insertions(+), 75 deletions(-)

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 17b1c9d..596283d 100644
--- a/server/src/main/java/doumeemes/service/ext/impl/WorkorderRecordStandardServiceImpl.java
+++ b/server/src/main/java/doumeemes/service/ext/impl/WorkorderRecordStandardServiceImpl.java
@@ -794,6 +794,126 @@
 
 
 
+//    private void dealAppliancePro(Workorder mp
+//            , LoginUserInfo user
+//            , List<WorkorderRecordExtListVO> allRecordList
+//            , List<Appliances> updateApplianceList
+//            , List<Appliances> updateApplianceProList
+//            ,   List<WOutboundDetail> outboundDetailList
+//            ,   List<WStock> stockList) {
+//        WOutbound outbound = new WOutbound();
+//        outbound.setDeleted(Constants.ZERO);
+//        outbound.setCreateTime(DateUtil.getCurrentDate());
+//        outbound.setDealDate(outbound.getCreateTime());
+//        outbound.setValidDate(outbound.getCreateTime());
+//        outbound.setCreateUser(user.getId());
+//        outbound.setRootDepartId(mp.getRootDepartId());
+//        outbound.setDepartId(mp.getDepartId());
+//        outbound.setStatus(Constants.WOUTBOUND_STATUS.dealed);
+//        outbound.setType(Constants.WOUTBOUND_TYPE.in);
+//        //2022骞�7鏈�1鏃�14:42:41 鍔犲叆鍗曟嵁绫诲埆
+//        outbound.setBillType(Constants.WOUTBOUND_BILLTYPE.workerOrderIn);
+//        outbound.setCode(wOutboundService.getNextInCode(user.getCompany().getId()));
+//        outbound.setOrigin(Constants.ONE);
+//        outbound.setOriginType(Constants.WOUTBOUND_ORIGIN_TYPE.produce);
+//        outbound.setOriginCode(mp.getCode());
+//        outbound.setOriginId(mp.getId());
+//        outbound.setPlanDate(DateUtil.getCurrentDate());
+//        outbound.setProcedureId(mp.getProcedureId());
+//        outbound.setUserId(user.getId());
+//        outbound.setWarehouseId(mp.getFinishWarehouseId());
+//        wOutboundService.create(outbound);
+//
+//        List<WOutboundDetail> detailList = new ArrayList<>();
+//        List<WOutboundRecord> recordList = new ArrayList<>();
+//        for(WorkorderRecordExtListVO tModel :allRecordList){
+//            if(Constants.equalsInteger(tModel.getType(),Constants.WORKORDER_RECORD_TYPE.produce)){
+//                if(tModel.getNum().compareTo(BigDecimal.ZERO)<=Constants.ZERO){
+//                    continue;
+//                }
+//                //濡傛灉鏄骇鍑�
+//                mp.setHasProduceNum(Constants.formatBigdecimal(tModel.getNum()).intValue()+Constants.formatIntegerNum(mp.getHasProduceNum()));
+//
+//                //鐗╂枡+鎵规+宸ュ簭+璐ㄩ噺灞炴�у幓閲�
+//                WOutboundDetail detail =getWoutbondDetailByList(tModel,detailList);
+//                if(detail!=null){
+//                    detail.setNum(Constants.formatBigdecimal(detail.getNum()).add(tModel.getNum()));
+//                }else{
+//                    detail = new WOutboundDetail();
+//                    detail.setDeleted(Constants.ZERO);
+//                    detail.setCreateTime(DateUtil.getCurrentDate());
+//                    detail.setCreateUser(user.getId());
+//                    detail.setOutboundId(outbound.getId());
+//                    detail.setRootDepartId(outbound.getRootDepartId());
+//                    detail.setWarehouseId(outbound.getWarehouseId());
+//                    detail.setLocationId(mp.getFinishWarehouseLocationId());
+//                    detail.setNum(tModel.getNum());
+//                    detail.setStatus(Constants.ONE);
+//                    detail.setDoneNum(tModel.getNum());
+//                    detail.setDoneDate(new Date());
+//                    detail.setUnitId(tModel.getUnitId());
+//                    detail.setBatch(tModel.getMaterialBatch());
+//                    detail.setProcedureId(tModel.getProcedureId());
+//                    detail.setMaterialId(tModel.getMaterialId());
+//                    detail.setQualityType(tModel.getDoneType());
+//                    detail.setWOutboundRecordInList(new ArrayList<>());
+//                    detailList.add(detail);
+//                }
+//
+//                WOutboundRecord record = new WOutboundRecord();
+//                record.setDeleted(Constants.ZERO);
+//                record.setCreateTime(DateUtil.getCurrentDate());
+//                record.setCreateUser(user.getId());
+//                record.setAppliancesId(tModel.getAppliancesId());
+//                record.setBatch(detail.getBatch());
+//                record.setRootDepartId(mp.getRootDepartId());
+//                record.setNum(tModel.getNum());
+//                record.setOutboundId(detail.getOutboundId());
+//                record.setUnitId(detail.getUnitId());
+//                record.setWarehouseId(detail.getWarehouseId());
+//                record.setMaterialId(detail.getMaterialId());
+//                record.setProcedureId(detail.getProcedureId());
+//                record.setLocationId(detail.getLocationId());
+//                record.setQualityType(detail.getQualityType());
+//                detail.getWOutboundRecordInList().add(record);
+//
+//                WStock stock = getFromStockList(mp.getFinishWarehouseLocationId(),detail.getWarehouseId(),detail.getMaterialId(),detail.getBatch(),
+//                        tModel.getProcedureId(),tModel.getDoneType(),stockList);
+//                if(stock!=null){
+//                    //濡傛灉搴撳瓨瀵硅薄宸插瓨鍦紝鐩存帴澧炲姞瀵瑰簲鐨勫簱瀛橀噺
+//                    stock.setNum(Constants.formatBigdecimal(stock.getNum()).add(Constants.formatBigdecimal(tModel.getNum())));
+//                }else{
+//                    stock = new WStock();
+//                    stock.setMaterialId(detail.getMaterialId());
+//                    stock.setBatch(detail.getBatch());
+//                    stock.setWarehouseId(outbound.getWarehouseId());
+//                    stock.setLocationId(mp.getFinishWarehouseLocationId());
+//                    stock.setUnitId(detail.getUnitId());
+//                    stock.setNum(Constants.formatBigdecimal(tModel.getNum()));
+//                    stock.setProcedureId(tModel.getProcedureId());
+//                    stock.setQualityType(tModel.getDoneType());
+//                    //寰呮洿鏂板簱瀛樹俊鎭�
+//                    stockList.add(stock);
+//                }
+//            }
+//        }
+//        for(WOutboundDetail detail : detailList){
+//            wOutboundDetailExtMapper.insert(detail);
+//            //璁板綍搴撳瓨鍙樺姩璁板綍
+//            wStockRecordExtService.saveRecord(Constants.ONE,detail.getId(),user);
+//            if(detail.getWOutboundRecordInList()!=null){
+//                for(WOutboundRecord r : detail.getWOutboundRecordInList()){
+//                    r.setDetailId(detail.getId());
+//                    wOutboundRecordExtMapper.insert(r);
+//                }
+//            }
+//        }
+//        if(Constants.formatIntegerNum(mp.getHasProduceNum()) >Constants.formatIntegerNum(mp.getPlanNum())){
+//            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝璇ュ伐鍗曠殑浜у嚭鏁伴噺涓嶈兘澶т簬宸ュ崟璁″垝鏁伴噺锛�");
+//        }
+//    }
+
+
     private void dealAppliancePro(Workorder mp
             , LoginUserInfo user
             , List<WorkorderRecordExtListVO> allRecordList
@@ -833,78 +953,10 @@
                 }
                 //濡傛灉鏄骇鍑�
                 mp.setHasProduceNum(Constants.formatBigdecimal(tModel.getNum()).intValue()+Constants.formatIntegerNum(mp.getHasProduceNum()));
-//                if(tModel.getDoneType() == null){
-//                    throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "瀵逛笉璧凤紝宸ヨ鍣ㄥ叿銆�"+tModel.getAmodel().getCode()+"銆戜骇鍑鸿川閲忓睘鎬т负绌猴紝鏃犳硶鎶ュ伐锛�");
-//                }
-//                if(!Constants.equalsInteger(tModel.getDoneType(),Constants.ZERO)){
-//                    //濡傛灉涓嶈壇锛岀疮璁″伐鍗曠殑涓嶈壇浜у嚭
-//                    mp.setUnqualifiedNum(Constants.formatIntegerNum(mp.getUnqualifiedNum())+(Constants.formatBigdecimal(tModel.getNum()).intValue()));
-//                }else{
-//                    //濡傛灉鏄悎鏍硷紝绱宸ュ崟鐨勫悎鏍兼暟閲�
-//                    mp.setQualifiedNum(Constants.formatIntegerNum(mp.getQualifiedNum())+(Constants.formatBigdecimal(tModel.getNum()).intValue()));
-//                }
-
-                //鐗╂枡+鎵规+宸ュ簭+璐ㄩ噺灞炴�у幓閲�
-                WOutboundDetail detail =getWoutbondDetailByList(tModel,detailList);
-                if(detail!=null){
-                    detail.setNum(Constants.formatBigdecimal(detail.getNum()).add(tModel.getNum()));
-                }else{
-                    detail = new WOutboundDetail();
-                    detail.setDeleted(Constants.ZERO);
-                    detail.setCreateTime(DateUtil.getCurrentDate());
-                    detail.setCreateUser(user.getId());
-                    detail.setOutboundId(outbound.getId());
-                    detail.setRootDepartId(outbound.getRootDepartId());
-                    detail.setWarehouseId(outbound.getWarehouseId());
-                    detail.setLocationId(mp.getFinishWarehouseLocationId());
-                    detail.setNum(tModel.getNum());
-                    detail.setStatus(Constants.ONE);
-                    detail.setDoneNum(tModel.getNum());
-                    detail.setDoneDate(new Date());
-                    detail.setUnitId(tModel.getUnitId());
-                    detail.setBatch(tModel.getMaterialBatch());
-                    detail.setProcedureId(tModel.getProcedureId());
-                    detail.setMaterialId(tModel.getMaterialId());
-                    detail.setQualityType(tModel.getDoneType());
-                    detail.setWOutboundRecordInList(new ArrayList<>());
-                    detailList.add(detail);
-                }
-
-                WOutboundRecord record = new WOutboundRecord();
-                record.setDeleted(Constants.ZERO);
-                record.setCreateTime(DateUtil.getCurrentDate());
-                record.setCreateUser(user.getId());
-                record.setAppliancesId(tModel.getAppliancesId());
-                record.setBatch(detail.getBatch());
-                record.setRootDepartId(mp.getRootDepartId());
-                record.setNum(tModel.getNum());
-                record.setOutboundId(detail.getOutboundId());
-                record.setUnitId(detail.getUnitId());
-                record.setWarehouseId(detail.getWarehouseId());
-                record.setMaterialId(detail.getMaterialId());
-                record.setProcedureId(detail.getProcedureId());
-                record.setLocationId(detail.getLocationId());
-                record.setQualityType(detail.getQualityType());
-                detail.getWOutboundRecordInList().add(record);
-
-                WStock stock = getFromStockList(mp.getFinishWarehouseLocationId(),detail.getWarehouseId(),detail.getMaterialId(),detail.getBatch(),
-                        tModel.getProcedureId(),tModel.getDoneType(),stockList);
-                if(stock!=null){
-                    //濡傛灉搴撳瓨瀵硅薄宸插瓨鍦紝鐩存帴澧炲姞瀵瑰簲鐨勫簱瀛橀噺
-                    stock.setNum(Constants.formatBigdecimal(stock.getNum()).add(Constants.formatBigdecimal(tModel.getNum())));
-                }else{
-                    stock = new WStock();
-                    stock.setMaterialId(detail.getMaterialId());
-                    stock.setBatch(detail.getBatch());
-                    stock.setWarehouseId(outbound.getWarehouseId());
-                    stock.setLocationId(mp.getFinishWarehouseLocationId());
-                    stock.setUnitId(detail.getUnitId());
-                    stock.setNum(Constants.formatBigdecimal(tModel.getNum()));
-                    stock.setProcedureId(tModel.getProcedureId());
-                    stock.setQualityType(tModel.getDoneType());
-                    //寰呮洿鏂板簱瀛樹俊鎭�
-                    stockList.add(stock);
-                }
+                //浜у嚭鍚堟牸
+               this.createOutDetail(user,outbound,mp,tModel,Constants.ZERO,detailList,stockList);
+               //浜у嚭涓嶈壇
+                this.createOutDetail(user,outbound,mp,tModel,Constants.ONE,detailList,stockList);
             }
         }
         for(WOutboundDetail detail : detailList){
@@ -922,6 +974,68 @@
             throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝璇ュ伐鍗曠殑浜у嚭鏁伴噺涓嶈兘澶т簬宸ュ崟璁″垝鏁伴噺锛�");
         }
     }
+
+
+    public void createOutDetail(LoginUserInfo user,WOutbound outbound,Workorder mp,WorkorderRecordExtListVO tModel,Integer doneType
+            ,List<WOutboundDetail> detailList,List<WStock> stockList ){
+        //鐗╂枡+鎵规+宸ュ簭+璐ㄩ噺灞炴�у幓閲�
+        WOutboundDetail detail =  new WOutboundDetail();
+        detail.setDeleted(Constants.ZERO);
+        detail.setCreateTime(DateUtil.getCurrentDate());
+        detail.setCreateUser(user.getId());
+        detail.setOutboundId(outbound.getId());
+        detail.setRootDepartId(outbound.getRootDepartId());
+        detail.setWarehouseId(outbound.getWarehouseId());
+        detail.setLocationId(mp.getFinishWarehouseLocationId());
+        detail.setNum(BigDecimal.valueOf(doneType.equals(Constants.ZERO)?tModel.getQualifiedNum():tModel.getUnqualifiedNum()));
+        detail.setStatus(Constants.ONE);
+        detail.setDoneNum(detail.getNum());
+        detail.setDoneDate(new Date());
+        detail.setUnitId(tModel.getUnitId());
+        detail.setBatch(tModel.getMaterialBatch());
+        detail.setProcedureId(tModel.getProcedureId());
+        detail.setMaterialId(tModel.getMaterialId());
+        detail.setQualityType(doneType);
+        detail.setWOutboundRecordInList(new ArrayList<>());
+        detailList.add(detail);
+
+        WOutboundRecord record = new WOutboundRecord();
+        record.setDeleted(Constants.ZERO);
+        record.setCreateTime(DateUtil.getCurrentDate());
+        record.setCreateUser(user.getId());
+        record.setAppliancesId(tModel.getAppliancesId());
+        record.setBatch(detail.getBatch());
+        record.setRootDepartId(mp.getRootDepartId());
+        record.setNum(tModel.getNum());
+        record.setOutboundId(detail.getOutboundId());
+        record.setUnitId(detail.getUnitId());
+        record.setWarehouseId(detail.getWarehouseId());
+        record.setMaterialId(detail.getMaterialId());
+        record.setProcedureId(detail.getProcedureId());
+        record.setLocationId(detail.getLocationId());
+        record.setQualityType(detail.getQualityType());
+        detail.getWOutboundRecordInList().add(record);
+
+        WStock stock = getFromStockList(mp.getFinishWarehouseLocationId(),detail.getWarehouseId(),detail.getMaterialId(),detail.getBatch(),
+                tModel.getProcedureId(),tModel.getDoneType(),stockList);
+        if(stock!=null){
+            //濡傛灉搴撳瓨瀵硅薄宸插瓨鍦紝鐩存帴澧炲姞瀵瑰簲鐨勫簱瀛橀噺
+            stock.setNum(Constants.formatBigdecimal(stock.getNum()).add(Constants.formatBigdecimal(tModel.getNum())));
+        }else{
+            stock = new WStock();
+            stock.setMaterialId(detail.getMaterialId());
+            stock.setBatch(detail.getBatch());
+            stock.setWarehouseId(outbound.getWarehouseId());
+            stock.setLocationId(mp.getFinishWarehouseLocationId());
+            stock.setUnitId(detail.getUnitId());
+            stock.setNum(Constants.formatBigdecimal(tModel.getNum()));
+            stock.setProcedureId(tModel.getProcedureId());
+            stock.setQualityType(tModel.getDoneType());
+            //寰呮洿鏂板簱瀛樹俊鎭�
+            stockList.add(stock);
+        }
+    }
+
 
     private WStock initMaterialNum(Integer materialId, BigDecimal num) {
         WStock s = new WStock();
@@ -1247,16 +1361,14 @@
         workorderRecord.setSalaryPrice(salaryParam.getSalary());
         workorderRecord.setSalaryType(salaryParam.getType());
         workorderRecord.setSalaryUnqualified(salaryParam.getUnqualified());
-
         //璁′欢宸ヨ祫
         if(salaryParam.getType().equals(Constants.ZERO)){
             workorderRecord.setSalaryNum(salaryParam.getNum());
-            workorderRecord.setSalary(salaryParam.getSalary().multiply(salaryParam.getUnqualified()==Constants.ZERO?num:createWorkorderRecordDTO.getUnQualifiedNum()));
+            workorderRecord.setSalary(salaryParam.getSalary().multiply(salaryParam.getUnqualified()==Constants.ONE?num:createWorkorderRecordDTO.getQualifiedNum()));
         }else{
             workorderRecord.setDuration(createWorkorderRecordDTO.getDuration());
             workorderRecord.setSalary(BigDecimal.valueOf(createWorkorderRecordDTO.getDuration()).multiply(salaryParam.getSalary()).divide(new BigDecimal(3600)));
         }
-
         //鎻掑叆宸ュ崟鎿嶄綔璁板綍锛屽苟涓斿垽鏂槸鍚︽洿鏀逛负宸ュ崟鐨勭姸鎬併�愮敓浜т腑銆�
         updateOrderInfo(loginUserInfo,workorder,Constants.WORKORDER_HISTORY_STATUS.produce);
         workorderRecordExtMapper.insert(workorderRecord);

--
Gitblit v1.9.3