From abd93f604df5251bf993ac483978e8fb084071db Mon Sep 17 00:00:00 2001 From: jiaosong <jiaosong6760@dingtalk.com> Date: 星期四, 17 八月 2023 09:45:27 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- server/src/main/java/doumeemes/service/ext/impl/WorkorderRecordStandardServiceImpl.java | 454 +++++++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 367 insertions(+), 87 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 8ae95e2..596283d 100644 --- a/server/src/main/java/doumeemes/service/ext/impl/WorkorderRecordStandardServiceImpl.java +++ b/server/src/main/java/doumeemes/service/ext/impl/WorkorderRecordStandardServiceImpl.java @@ -16,7 +16,9 @@ import doumeemes.core.utils.redis.RedisUtil; import doumeemes.dao.business.BackOrderDetailMapper; import doumeemes.dao.business.BackorderMapper; +import doumeemes.dao.business.SalaryParamMapper; import doumeemes.dao.business.dto.CreateMaterialDTO; +import doumeemes.dao.business.dto.CreateWorkorderRecordDTO; import doumeemes.dao.business.dto.DealWorkorderRecordDTO; import doumeemes.dao.business.dto.MaterialListDTO; import doumeemes.dao.business.model.*; @@ -79,6 +81,12 @@ private WOutboundRecordExtMapper wOutboundRecordExtMapper; @Autowired private MaterialExtMapper materialExtMapper; + @Autowired + private SalaryParamMapper salaryParamMapper; + @Autowired + private PlansExtMapper plansExtMapper; + @Autowired + private DeviceExtMapper deviceExtMapper; @Transactional(rollbackFor = {BusinessException.class,Exception.class}) @Override @@ -142,9 +150,10 @@ recordList.add(getWorkrecordModel(user,wStock,mp,materialListDTO.getNum())); } } + //鎵归噺鎻掑叆鎶曟枡璁板綍 workorderRecordExtMapper.insertBatch(recordList); - //鍗曟坊鍔犲巻鍙茶褰曪紙涓嶆洿鏂扮姸鎬侊級 + //鍗曟坊鍔犲巻鍙茶褰曪紙鍒ゆ柇鏇存柊涓虹敓浜т腑锛� updateOrderInfo(user,mp,Constants.WORKORDER_HISTORY_STATUS.material); return param.getId(); } @@ -183,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(); @@ -202,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; } @@ -276,7 +314,6 @@ } private void updateOrderInfo(LoginUserInfo user, Workorder mp,int status) { - List<WorkorderHistory> whList = new ArrayList<>(); //宸ュ崟鍘嗗彶鏁版嵁 Workorder order = new Workorder(); @@ -294,6 +331,13 @@ order.setStatus(Constants.WORKORDER_STATUS.material); }else if(status ==Constants.WORKORDER_HISTORY_STATUS.done){ order.setStatus(Constants.WORKORDER_STATUS.done); + }else if(status ==Constants.WORKORDER_HISTORY_STATUS.material ||status ==Constants.WORKORDER_HISTORY_STATUS.produce){ + //鎶曟枡鎿嶄綔 + if(Constants.equalsInteger(mp.getStatus(),Constants.WORKORDER_STATUS.create) + ||Constants.equalsInteger(mp.getStatus(),Constants.WORKORDER_STATUS.material)){ + //濡傛灉鏄凡鍒涘缓鎴栬�呭凡澶囨枡鐘舵�佺殑宸ュ崟锛屼慨鏀瑰叾鐘舵�佷负銆愮敓浜т腑銆� + order.setStatus(Constants.WORKORDER_STATUS.producing); + } } workorderExtMapper.updateById(order); workorderHistoryExtMapper.insertBatch(whList); @@ -381,9 +425,6 @@ dealAppliancePro(mp,user,allRecordList,updateApplianceList,updateApplianceProList, outboundDetailList,stockList); } - if(1==1){ - throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"123"); - } //濡傛灉鏈夋病bom閰嶇疆,妫�鏌ヤ骇鍑猴紙鍖呭惈妫�楠岀殑涓嶈壇鍜屾姤搴熷搧锛夊拰鎶曟枡鏁伴噺鏄惁鐩哥瓑鍖归厤锛屼笉涓�鑷存彁绀洪敊璇� if(bdparam==null){ @@ -504,6 +545,7 @@ //濡傛灉闇�瑕佹姇鏂欑殑鐗╂枡闆嗗悎锛屽湪搴撳瓨涓鎵炬姇鏂欐潵婧� for(WStock model : materialList){ for(WStock ts : allList){ + if(Constants.equalsInteger(model.getMaterialId(),ts.getMaterialId())){ //杩橀渶瑕佹姇鏂欐暟閲� BigDecimal actNum = Constants.formatBigdecimal(model.getNum()).subtract(Constants.formatBigdecimal(model.getTNum())); @@ -519,6 +561,10 @@ //濡傛灉宸茬粡婊¤冻鍓╀綑闇�姹傞噺 isfull =true; } + + //娣诲姞鎶曟枡璁板綍 + workorderRecordExtMapper.insert(getWorkrecordModel(user,ts,mp,actNum)); + //鏇存柊宸茬粡鎶曟枡鏁伴噺 model.setTNum(Constants.formatBigdecimal(model.getTNum()).add(actNum)); WOutbound outbound = getFromOutboundList(ts.getWarehouseId(),outboundList); @@ -623,13 +669,13 @@ if (bomDetailList == null || bomDetailList.size() == 0) { throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "瀵逛笉璧凤紝璇ョ敓浜х墿鏂欑殑bom閰嶇疆鏈夎锛岃鑱旂郴绠$悊鍛橈紒"); } - for (BomDetailExtListVO i :bomDetailList) { - //鏌ヨ鏄惁鎶曟枡 - if(workorderRecordExtMapper.selectCount(new QueryWrapper<WorkorderRecord>() - .eq("DELETED",Constants.ZERO).eq("MATERIAL_ID",i.getMaterialId()).eq("TYPE",Constants.ZERO))<=0){ - throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀛樺湪鏈姇鏂橞OM鐗╂枡锛屾棤娉曡繘琛屾姤宸�"); - } - } +// for (BomDetailExtListVO i :bomDetailList) { +// //鏌ヨ鏄惁鎶曟枡 +// if(workorderRecordExtMapper.selectCount(new QueryWrapper<WorkorderRecord>() +// .eq("DELETED",Constants.ZERO).eq("MATERIAL_ID",i.getMaterialId()).eq("TYPE",Constants.ZERO))<=0){ +// throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀛樺湪鏈姇鏂橞OM鐗╂枡锛屾棤娉曡繘琛屾姤宸�"); +// } +// } } WOutbound outbound = new WOutbound(); @@ -748,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 @@ -787,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){ @@ -876,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(); @@ -971,15 +1131,15 @@ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝璇ュ伐鍗曚俊鎭紒"); } if(Objects.isNull(dealWorkorderRecordDTO.getDownType()) - ||Objects.isNull(dealWorkorderRecordDTO.getWorkorderId()) - ||Objects.isNull(dealWorkorderRecordDTO.getNum()) + ||Objects.isNull(dealWorkorderRecordDTO.getWorkorderId()) + ||Objects.isNull(dealWorkorderRecordDTO.getNum()) ){ throw new BusinessException(ResponseStatus.BAD_REQUEST); } WorkorderRecord workorderRecord = new WorkorderRecord(); if(Objects.isNull(dealWorkorderRecordDTO.getRecordId())){ //鏌ヨ宸ュ崟涓嬫槸鍚﹀瓨鍦ㄥ搴旇褰� - workorderRecord = workorderRecordExtMapper.selectOne(new QueryWrapper<WorkorderRecord>() + workorderRecord = workorderRecordExtMapper.selectOne(new QueryWrapper<WorkorderRecord>() .eq("WORKORDER_ID",dealWorkorderRecordDTO.getWorkorderId()) .eq("DONE_TYPE",dealWorkorderRecordDTO.getDownType()) .eq("TYPE",Constants.ONE) @@ -1097,5 +1257,125 @@ 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}) + public WorkorderRecord createWorkorderRecord(CreateWorkorderRecordDTO createWorkorderRecordDTO, LoginUserInfo loginUserInfo){ + Workorder workorder = workorderExtMapper.selectById(createWorkorderRecordDTO.getWorkorderId()); + if(Objects.isNull(workorder)){ + throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝鏈煡璇㈠埌璇ュ伐鍗曚俊鎭紒"); + } + if(Objects.isNull(createWorkorderRecordDTO.getUnQualifiedNum()) + ||Objects.isNull(createWorkorderRecordDTO.getUnQualifiedNum()) + ||Objects.isNull(createWorkorderRecordDTO.getWorkorderId()) + ){ + throw new BusinessException(ResponseStatus.BAD_REQUEST); + } + BigDecimal num = createWorkorderRecordDTO.getQualifiedNum().add(createWorkorderRecordDTO.getUnQualifiedNum()); + WorkorderRecord workorderRecord = new WorkorderRecord(); + //鏌ヨ宸ュ崟涓嬫槸鍚﹀瓨鍦ㄥ搴旇褰� + workorderRecord = workorderRecordExtMapper.selectOne(new QueryWrapper<WorkorderRecord>() + .eq("WORKORDER_ID",createWorkorderRecordDTO.getWorkorderId()) + .eq("TYPE",Constants.ONE) + .eq("DELETED",Constants.ZERO) + .last(" limit 1 ") + ); + if(!Objects.isNull(workorderRecord)){ + throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝璇ュ伐鍗曠殑璇ョ被浜у嚭璁板綍宸插瓨鍦紒"); + } + if(num.compareTo(BigDecimal.valueOf(workorder.getPlanNum()))>Constants.ZERO){ + throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝璇ュ伐鍗曠殑浜у嚭鏁伴噺涓嶈兘澶т簬宸ュ崟璁″垝鏁伴噺锛�"); + } + //鏁版嵁瀛樺偍 + workorderRecord = new WorkorderRecord(); + workorderRecord.setDeleted(Constants.ZERO); + workorderRecord.setCreateUser(loginUserInfo.getId()); + workorderRecord.setCreateTime(new Date()); + workorderRecord.setNum(num); + workorderRecord.setRootDepartId(loginUserInfo.getRootDepartment().getId()); + workorderRecord.setDepartId(loginUserInfo.getCurComDepartment().getId()); + workorderRecord.setPlanId(workorder.getPlanId()); + workorderRecord.setWorkorderId(createWorkorderRecordDTO.getWorkorderId()); + workorderRecord.setBatch(workorder.getBatch()); + workorderRecord.setFactoryId(workorder.getFactoryId()); + workorderRecord.setProcedureId(workorder.getProcedureId()); + workorderRecord.setProDate(new Date()); + workorderRecord.setType(Constants.ONE); + workorderRecord.setMaterialId(workorder.getMaterialId()); + workorderRecord.setUnitId(workorder.getUnitId()); + workorderRecord.setMaterialBatch(workorder.getBatch()); + workorderRecord.setUnqualifiedNum(createWorkorderRecordDTO.getUnQualifiedNum()); + workorderRecord.setQualifiedNum(createWorkorderRecordDTO.getQualifiedNum()); + //璁$畻宸ヨ祫淇℃伅 + SalaryParam salaryParam = salaryParamMapper.selectOne(new QueryWrapper<SalaryParam>().eq("DELETED",Constants.ZERO).eq("MATERIAL_ID",workorderRecord.getMaterialId()) + .eq("DEPART_ID",workorderRecord.getFactoryId()).eq("PROCEDURE_ID",workorderRecord.getProcedureId()).last(" limit 1 ")); + if(Objects.isNull(salaryParam)){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鏈厤缃伐璧勭哗鏁堥厤缃紒"); + } + 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.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); + return workorderRecord; + } + + + } -- Gitblit v1.9.3