From 2837bdd57f72e386bbf9a725e7b3a13e5eb9e930 Mon Sep 17 00:00:00 2001 From: jiangping <jp@doumee.com> Date: 星期一, 21 八月 2023 09:19:57 +0800 Subject: [PATCH] 修复bug --- server/src/main/java/doumeemes/service/ext/impl/WorkorderRecordStandardServiceImpl.java | 535 +++++++++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 426 insertions(+), 109 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..feedfbe 100644 --- a/server/src/main/java/doumeemes/service/ext/impl/WorkorderRecordStandardServiceImpl.java +++ b/server/src/main/java/doumeemes/service/ext/impl/WorkorderRecordStandardServiceImpl.java @@ -17,10 +17,8 @@ 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.UnqualifiedRecordMapper; +import doumeemes.dao.business.dto.*; import doumeemes.dao.business.model.*; import doumeemes.dao.ext.*; import doumeemes.dao.ext.bean.EndCheckApBean; @@ -87,6 +85,10 @@ private PlansExtMapper plansExtMapper; @Autowired private DeviceExtMapper deviceExtMapper; + @Autowired + private UnqualifiedRecordMapper unqualifiedRecordMapper; + @Autowired + private CompanyUserExtMapper companyUserExtMapper; @Transactional(rollbackFor = {BusinessException.class,Exception.class}) @Override @@ -185,6 +187,7 @@ } if(!Constants.equalsInteger(mp.getStatus(),Constants.WORKORDER_STATUS.create) && !Constants.equalsInteger(mp.getStatus(),Constants.WORKORDER_STATUS.material) + && !Constants.equalsInteger(mp.getStatus(),Constants.WORKORDER_STATUS.producing) && !Constants.equalsInteger(mp.getStatus(),Constants.WORKORDER_STATUS.check) && !Constants.equalsInteger(mp.getStatus(),Constants.WORKORDER_STATUS.done)){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "瀵逛笉璧凤紝璇ュ伐鍗曠姸鎬佸凡娴佽浆锛屼笉鑳借繘琛岃鎿嶄綔锛�"); @@ -295,12 +298,12 @@ wrModel.setMaterialId(wStock.getMaterialId()); wrModel.setDepartId(mp.getDepartId()); wrModel.setCreateTime(DateUtil.getCurrentDate()); - wrModel.setCreateUser(user.getId()); + wrModel.setCreateUser(mp.getCreateUser()); wrModel.setMaterialBatch(mp.getBatch()); wrModel.setType(Constants.WORKORDER_RECORD_TYPE.materail); wrModel.setFactoryId(mp.getFactoryId()); - wrModel.setProcedureId(mp.getProcedureId()); - wrModel.setBatch(mp.getBatch()); + wrModel.setProcedureId(wStock.getProcedureId()); + wrModel.setBatch(wStock.getBatch()); wrModel.setUnitId(mp.getUnitId()); wrModel.setPlanId(mp.getPlanId()); //TODO 鐩墠浣跨敤宸ヨ涓婚敭瀛樺偍璐т綅涓婚敭 @@ -360,7 +363,7 @@ @Transactional(rollbackFor = {BusinessException.class,Exception.class}) @Override - public Integer comfirmDone(Workorder param){ + public Integer comfirmDone(Workorder param,Boolean needCheck){ LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); if(!Constants.equalsInteger(user.getType(),Constants.USERTYPE.COM)){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "瀵逛笉璧凤紝鎮ㄦ棤鏉冮檺杩涜璇ユ搷浣滐紒"); @@ -388,7 +391,7 @@ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "瀵逛笉璧凤紝宸ュ崟宸叉殏鍋滐紒"); } //濡傛灉闇�瑕佸畬宸ユ鎵嶈兘妫�楠� - if(Constants.equalsInteger(mp.getNeedcheck(),Constants.ZERO)){ + if(Constants.equalsInteger(mp.getNeedcheck(),Constants.ZERO)&&needCheck){ //鍙湁宸插畬宸ョ姸鎬佹墠鑳界‘璁ゆ姤宸� if(!Constants.equalsInteger(mp.getStatus(),Constants.WORKORDER_STATUS.done)){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "瀵逛笉璧凤紝璇ュ伐鍗曠姸鎬佸凡娴佽浆锛屼笉鑳借繘琛岃鎿嶄綔锛�"); @@ -494,6 +497,186 @@ return param.getId(); } + + @Transactional(rollbackFor = {BusinessException.class,Exception.class}) + @Override + public Workorder comfirmDoneNew(AutoWorkReportDTO autoWorkReportDTO, Boolean needCheck){ + LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); + if(!Constants.equalsInteger(user.getType(),Constants.USERTYPE.COM)){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "瀵逛笉璧凤紝鎮ㄦ棤鏉冮檺杩涜璇ユ搷浣滐紒"); + } + if(Objects.isNull(autoWorkReportDTO) + || Objects.isNull(autoWorkReportDTO.getCreateWorkorderRecordDTO()) + || Objects.isNull(autoWorkReportDTO.getCreateWorkorderRecordDTO().getUnQualifiedNum())|| autoWorkReportDTO.getCreateWorkorderRecordDTO().getUnQualifiedNum().compareTo(BigDecimal.ZERO) < Constants.ZERO + || Objects.isNull(autoWorkReportDTO.getCreateWorkorderRecordDTO().getQualifiedNum())|| autoWorkReportDTO.getCreateWorkorderRecordDTO().getQualifiedNum().compareTo(BigDecimal.ZERO) < Constants.ZERO){ + throw new BusinessException(ResponseStatus.BAD_REQUEST); + } + if(autoWorkReportDTO.getCreateWorkorderRecordDTO().getWorkorderId()== null ){ + throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝璇锋寜瑕佹眰濉啓鍜岄�夋嫨鎻愪氦鏁版嵁锛�"); + } + Workorder mp = new Workorder(); + mp.setDeleted(Constants.ZERO); + mp.setId(autoWorkReportDTO.getCreateWorkorderRecordDTO().getWorkorderId()); + mp.setRootDepartId(user.getRootDepartment().getId()); + mp = workorderExtMapper.selectOne(mp); + if(mp== null){ + throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "瀵逛笉璧凤紝璇ヨ褰曚笉瀛樺湪锛�"); + } + Plans plans = plansExtMapper.selectById(mp.getPlanId()); + if(Objects.isNull(plans)){ + throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "瀵逛笉璧凤紝宸ュ簭璁″垝璁板綍涓嶅瓨鍦紒"); + } + //鏌ヨ宸ュ簭璁″垝涓� 鎵�鏈夊伐鍗曞凡鎶ュ伐鏁伴噺 + QueryWorkorderExtDTO dto = new QueryWorkorderExtDTO(); + dto.setPlanId(mp.getPlanId()); + dto.setDeleted(Constants.ZERO); + dto.setStatus(Constants.WORKORDER_STATUS.baogong); + List<WorkorderExtListVO> workorderList = workorderExtMapper.selectList(dto); + Integer plansQualifiedNum = 0 , plansUnQualifiedNum = 0; + plansQualifiedNum = workorderList.stream().map( workorderExtListVO -> workorderExtListVO.getQualifiedNum()).reduce(Constants.ZERO, Integer::sum); + plansUnQualifiedNum = workorderList.stream().map( workorderExtListVO -> workorderExtListVO.getUnqualifiedNum()).reduce(Constants.ZERO, Integer::sum); + if((BigDecimal.valueOf(plansQualifiedNum).add(BigDecimal.valueOf(plansUnQualifiedNum).add(autoWorkReportDTO.getCreateWorkorderRecordDTO().getUnQualifiedNum()) + .add(autoWorkReportDTO.getCreateWorkorderRecordDTO().getQualifiedNum()))).compareTo(BigDecimal.valueOf(plans.getNum()))>Constants.ZERO){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "瀵逛笉璧凤紝鎶ュ伐鏁伴噺瓒呭嚭宸ュ簭璁″垝鎬绘暟锛�"); + } + Workorder param = new Workorder(); + + param.setPlanId(mp.getPlanId()); + param.setId(autoWorkReportDTO.getCreateWorkorderRecordDTO().getWorkorderId()); + if(Constants.equalsInteger(mp.getPaused(),Constants.ONE)){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "瀵逛笉璧凤紝宸ュ崟宸叉殏鍋滐紒"); + } + //濡傛灉闇�瑕佸畬宸ユ鎵嶈兘妫�楠� + if(Constants.equalsInteger(mp.getNeedcheck(),Constants.ZERO)&&needCheck){ + //鍙湁宸插畬宸ョ姸鎬佹墠鑳界‘璁ゆ姤宸� + if(!Constants.equalsInteger(mp.getStatus(),Constants.WORKORDER_STATUS.done)){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "瀵逛笉璧凤紝璇ュ伐鍗曠姸鎬佸凡娴佽浆锛屼笉鑳借繘琛岃鎿嶄綔锛�"); + } + } + //鍑哄叆搴撴槑缁嗚褰曢泦鍚� + List<WOutboundDetail> outboundDetailList = new ArrayList<>(); + //寰呮洿鏂板伐瑁呴泦鍚堟姇鏂� + List<Appliances> updateApplianceList = new ArrayList<>(); + //寰呮洿鏂板伐瑁呴泦鍚堜骇鍑� + List<Appliances> updateApplianceProList = new ArrayList<>(); + //寰呮洿鏂板簱瀛橀泦鍚� + List<WStock> stockList = new ArrayList<>(); + //澶勭悊浜у嚭鏁版嵁 + WorkorderRecord workorderRecord = this.createWorkorderRecord(autoWorkReportDTO.getCreateWorkorderRecordDTO(),user,null); + //鏌ヨ鎶曟枡鍜屾姤宸ヨ褰曞垪琛� + List<WorkorderRecordExtListVO> allRecordList = workorderRecordExtMapper.selectAllList(getQueryRecordParam(param)); + if(Objects.isNull(allRecordList)||allRecordList.size()==Constants.ZERO){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鏈煡璇㈡姇鏂欏拰鎶ュ伐璁板綍!"); + } + //妫�鏌ユ暟鎹俊鎭� +// caculateCheckRecord(user, mp,allRecordList); + QueryBomDetailExtDTO bdparam = initBomParam(user,mp); + if(mp.getBomModel()!=null&&Constants.equalsInteger(mp.getBomModel().getType(),Constants.BOM_TYPE.pull)){ + //濡傛灉鏄媺寮忔姇鏂欙紝绯荤粺鏍规嵁BOM鑷姩鎵e噺搴撳瓨 + dealApplianceMateialPull(mp,user,bdparam,updateApplianceList, stockList); + } + if(allRecordList!=null && allRecordList.size()>0){ + if(mp.getBomModel()==null||Constants.equalsInteger(mp.getBomModel().getType(),Constants.BOM_TYPE.push)){ + //濡傛灉鏄帹寮忔姇鏂欙紝璧版甯哥敓浜ф墜鍔ㄦ姇鏂� + dealApplianceMateial(mp,user,bdparam,allRecordList,updateApplianceList, outboundDetailList,stockList); + } + //澶勭悊浜у嚭鏁版嵁 + dealAppliancePro(mp,user,allRecordList,updateApplianceList,updateApplianceProList, outboundDetailList,stockList); + } + + //濡傛灉鏈夋病bom閰嶇疆,妫�鏌ヤ骇鍑猴紙鍖呭惈妫�楠岀殑涓嶈壇鍜屾姤搴熷搧锛夊拰鎶曟枡鏁伴噺鏄惁鐩哥瓑鍖归厤锛屼笉涓�鑷存彁绀洪敊璇� + if(bdparam==null){ + //鎶曟枡鏁伴噺 鍜� 浜у嚭鏁伴噺涓嶇浉绛� + if(Constants.formatBigdecimal(mp.getHasMaterialNum()).intValue() != Constants.formatIntegerNum(mp.getHasProduceNum())){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "瀵逛笉璧凤紝璇ュ伐鍗曟姇鏂欏拰浜у嚭鏁伴噺涓嶄竴鑷达紝璇风‘璁ゅ悗閲嶈瘯锛�"); + } + } + //鏇存柊宸ュ崟鐘舵�佷负宸叉姤宸� + mp.setUnqualifiedNum(autoWorkReportDTO.getCreateWorkorderRecordDTO().getUnQualifiedNum().intValue()); + mp.setQualifiedNum(autoWorkReportDTO.getCreateWorkorderRecordDTO().getQualifiedNum().intValue()); + updateOrderInfo(user,mp,Constants.WORKORDER_HISTORY_STATUS.baogong); + + //鎵归噺鎻掑叆鍑哄叆搴撴槑缁嗚褰� + if(outboundDetailList!=null && outboundDetailList.size()>0){ + wOutboundDetailExtMapper.insertBatch(outboundDetailList); + } + if(stockList != null && stockList.size()>0){ + for(WStock s : stockList){ + WStock s1 = new WStock(); + s1.setLocationId(s.getLocationId()); + s1.setWarehouseId(s.getWarehouseId()); + s1.setDeleted(Constants.ZERO); + s1.setMaterialId(s.getMaterialId()); + s1.setQualityType(s.getQualityType()); + s1.setProcedureId(s.getProcedureId()); + if(StringUtils.isBlank(s.getBatch() )){ + s1 = wStockExtMapper.selectOne(new QueryWrapper<>(s1).isNull("batch").last(" limit 1")); + }else{ + s1.setBatch(s.getBatch()); + s1 = wStockExtMapper.selectOne(new QueryWrapper<>(s1).last(" limit 1")); + } + if(s1 ==null){ + //濡傛灉搴撳瓨璁板綍涓嶅瓨鍦紝鎻掑叆鏁版嵁 + s.setDeleted(Constants.ZERO); + s.setCreateTime(DateUtil.getCurrentDate()); + s.setCreateUser(user.getId()); + s.setRootDepartId(mp.getRootDepartId()); + if(Constants.formatBigdecimal(s.getNum()).compareTo(new BigDecimal(0)) == -1){ + //濡傛灉搴撳瓨涓嶈冻 + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "瀵逛笉璧凤紝浠撳簱浣欐枡涓嶈冻锛岃鑱旂郴浠撳簱绠$悊鍛橈紒"); + } + wStockExtMapper.insert(s); + }else{ + //濡傛灉搴撳瓨璁板綍瀛樺湪锛屽垯鏇存柊搴撳瓨閲� + s.setId(s1.getId()); + s.setUpdateTime(DateUtil.getCurrentDate()); + s.setUpdateUser(user.getId()); + s.setNum(Constants.formatBigdecimal(s1.getNum()).add(Constants.formatBigdecimal(s.getNum()))); + if(Constants.formatBigdecimal(s.getNum()).compareTo(new BigDecimal(0)) == -1){ + //濡傛灉搴撳瓨涓嶈冻 + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "瀵逛笉璧凤紝浠撳簱浣欐枡涓嶈冻锛岃鑱旂郴浠撳簱绠$悊鍛�!锛�"); + } + wStockExtMapper.updateById(s); + } + + } + } + + //瀛樺偍鎶ュ伐涓嶈壇椤规暟鎹� + if(autoWorkReportDTO.getCreateWorkorderRecordDTO().getUnQualifiedNum().compareTo(BigDecimal.ZERO)<=Constants.ZERO){ + if(!Objects.isNull(autoWorkReportDTO.getCreateUnqualifiedDTOList())&&autoWorkReportDTO.getCreateUnqualifiedDTOList().size()>Constants.ZERO){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"涓嶈壇椤归敊璇細璇锋鏌ヤ笉鑹」鏁版嵁"); + } + }else{ + List<CreateUnqualifiedDTO> createUnqualifiedDTOList = autoWorkReportDTO.getCreateUnqualifiedDTOList(); + BigDecimal unqualified = createUnqualifiedDTOList.stream().map(s -> s.getUnQualifiedNum()).reduce(BigDecimal.ZERO, BigDecimal::add); + if(unqualified.compareTo(autoWorkReportDTO.getCreateWorkorderRecordDTO().getUnQualifiedNum())!=Constants.ZERO){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"涓嶈壇椤归敊璇細璇锋鏌ヤ笉鑹」鏁版嵁"); + } + for (CreateUnqualifiedDTO createUnqualifiedDTO:createUnqualifiedDTOList) { + if(createUnqualifiedDTO.getUnQualifiedNum().compareTo(BigDecimal.ZERO)==Constants.ZERO + ||Objects.isNull(createUnqualifiedDTO.getCategoryId())){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"涓嶈壇椤归敊璇細璇锋鏌ヤ笉鑹」鏁版嵁"); + } + UnqualifiedRecord unqualifiedRecord = new UnqualifiedRecord(); + unqualifiedRecord.setDeleted(Constants.ZERO); + unqualifiedRecord.setCreateUser(user.getId()); + unqualifiedRecord.setCreateTime(new Date()); + unqualifiedRecord.setRootDepartId(mp.getRootDepartId()); + unqualifiedRecord.setDepartId(mp.getDepartId()); + unqualifiedRecord.setWorkorderId(mp.getId()); + unqualifiedRecord.setRecordId(workorderRecord.getId()); + unqualifiedRecord.setCategoryId(createUnqualifiedDTO.getCategoryId()); + unqualifiedRecord.setUnqualifiedNum(createUnqualifiedDTO.getUnQualifiedNum()); + unqualifiedRecordMapper.insert(unqualifiedRecord); + } + } + + return param; + } + + + private QueryWorkorderRecordExtDTO getQueryRecordParam(Workorder param) { QueryWorkorderRecordExtDTO mParam = new QueryWorkorderRecordExtDTO(); mParam.setWorkorderId(param.getId()); @@ -544,8 +727,12 @@ List<WOutbound> outboundList = new ArrayList<>(); //濡傛灉闇�瑕佹姇鏂欑殑鐗╂枡闆嗗悎锛屽湪搴撳瓨涓鎵炬姇鏂欐潵婧� for(WStock model : materialList){ + List<WStock> useList = allList.stream().filter(wStock -> Constants.equalsInteger(model.getMaterialId(),wStock.getMaterialId())).collect(Collectors.toList()); + BigDecimal wStockNum = useList.stream().map(s -> s.getNum()).reduce(BigDecimal.ZERO, BigDecimal::add); + if(wStockNum.compareTo(Constants.formatBigdecimal(model.getNum()))<Constants.ZERO){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "瀵逛笉璧凤紝鐢熶骇鐗╂枡涓嶈冻锛屾棤娉曡繘琛岃鎿嶄綔锛�"); + } for(WStock ts : allList){ - if(Constants.equalsInteger(model.getMaterialId(),ts.getMaterialId())){ //杩橀渶瑕佹姇鏂欐暟閲� BigDecimal actNum = Constants.formatBigdecimal(model.getNum()).subtract(Constants.formatBigdecimal(model.getTNum())); @@ -669,13 +856,14 @@ 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("WORKORDER_ID",mp.getId()) + .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(); @@ -794,6 +982,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 +1141,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 +1162,71 @@ 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())); + if(detail.getNum().compareTo(BigDecimal.ZERO)==Constants.ZERO){ + return; + } + 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(detail.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(),doneType,stockList); + if(stock!=null){ + //濡傛灉搴撳瓨瀵硅薄宸插瓨鍦紝鐩存帴澧炲姞瀵瑰簲鐨勫簱瀛橀噺 + stock.setNum(Constants.formatBigdecimal(stock.getNum()).add(Constants.formatBigdecimal(detail.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(detail.getNum())); + stock.setProcedureId(tModel.getProcedureId()); + stock.setQualityType(doneType); + //寰呮洿鏂板簱瀛樹俊鎭� + stockList.add(stock); + } + } + private WStock initMaterialNum(Integer materialId, BigDecimal num) { WStock s = new WStock(); @@ -1192,7 +1497,7 @@ @Override @Transactional(rollbackFor = {BusinessException.class,Exception.class}) - public WorkorderRecord createWorkorderRecord(CreateWorkorderRecordDTO createWorkorderRecordDTO, LoginUserInfo loginUserInfo){ + public WorkorderRecord createWorkorderRecord(CreateWorkorderRecordDTO createWorkorderRecordDTO, LoginUserInfo loginUserInfo ,Integer userId){ Workorder workorder = workorderExtMapper.selectById(createWorkorderRecordDTO.getWorkorderId()); if(Objects.isNull(workorder)){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝鏈煡璇㈠埌璇ュ伐鍗曚俊鎭紒"); @@ -1221,11 +1526,24 @@ //鏁版嵁瀛樺偍 workorderRecord = new WorkorderRecord(); workorderRecord.setDeleted(Constants.ZERO); - workorderRecord.setCreateUser(loginUserInfo.getId()); + if(!Objects.isNull(userId)){ + CompanyUser companyUser = new CompanyUser(); + companyUser.setUserId(userId); + companyUser.setRootDepartId(loginUserInfo.getRootDepartment().getId()); + companyUser = companyUserExtMapper.selectOne(new QueryWrapper<>(companyUser).last("limit 1")); + if(Objects.isNull(companyUser)){ + throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝鏈煡璇㈠埌鐢熶骇浜哄憳瀵瑰簲浼佷笟鐢ㄦ埛淇℃伅锛�"); + } + workorderRecord.setCreateUser(userId); + workorderRecord.setRootDepartId(loginUserInfo.getRootDepartment().getId()); + workorderRecord.setDepartId(loginUserInfo.getCurComDepartment().getId()); + }else{ + workorderRecord.setCreateUser(loginUserInfo.getId()); + workorderRecord.setRootDepartId(loginUserInfo.getRootDepartment().getId()); + workorderRecord.setDepartId(loginUserInfo.getCurComDepartment().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()); @@ -1240,23 +1558,22 @@ 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(),"鏈厤缃伐璧勭哗鏁堥厤缃紒"); + .eq("DEPART_ID",workorderRecord.getFactoryId()).eq("PROCEDURE_ID",workorderRecord.getProcedureId()).eq("TYPE",createWorkorderRecordDTO.getType()).last(" limit 1 ")); + if(!Objects.isNull(salaryParam)){ + 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{ + if(!Objects.isNull(createWorkorderRecordDTO.getDuration())&&Constants.formatIntegerNum(createWorkorderRecordDTO.getDuration())>Constants.ZERO){ + workorderRecord.setDuration(createWorkorderRecordDTO.getDuration()); + workorderRecord.setSalary(BigDecimal.valueOf(createWorkorderRecordDTO.getDuration()).multiply(salaryParam.getSalary()).divide(new BigDecimal(3600),BigDecimal.ROUND_HALF_UP)); + } + } } - 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())); - }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