From 1f4e7d0f73a73e7350cf5a1df279d5f30904c5d5 Mon Sep 17 00:00:00 2001 From: jiangping <jp@doumee.com> Date: 星期三, 06 十二月 2023 08:41:32 +0800 Subject: [PATCH] bug --- server/src/main/java/doumeemes/service/ext/impl/WorkorderRecordStandardServiceImpl.java | 673 ++++++++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 583 insertions(+), 90 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 a6082f3..3b866da 100644 --- a/server/src/main/java/doumeemes/service/ext/impl/WorkorderRecordStandardServiceImpl.java +++ b/server/src/main/java/doumeemes/service/ext/impl/WorkorderRecordStandardServiceImpl.java @@ -16,9 +16,9 @@ import doumeemes.core.utils.redis.RedisUtil; import doumeemes.dao.business.BackOrderDetailMapper; import doumeemes.dao.business.BackorderMapper; -import doumeemes.dao.business.dto.CreateMaterialDTO; -import doumeemes.dao.business.dto.DealWorkorderRecordDTO; -import doumeemes.dao.business.dto.MaterialListDTO; +import doumeemes.dao.business.SalaryParamMapper; +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; @@ -26,6 +26,7 @@ import doumeemes.dao.ext.dto.*; import doumeemes.dao.ext.vo.*; import doumeemes.dao.system.model.SystemDictData; +import doumeemes.service.business.UnqualifiedRecordService; import doumeemes.service.business.WOutboundService; import doumeemes.service.ext.*; import doumeemes.service.system.SystemDictDataService; @@ -79,6 +80,19 @@ private WOutboundRecordExtMapper wOutboundRecordExtMapper; @Autowired private MaterialExtMapper materialExtMapper; + @Autowired + private SalaryParamMapper salaryParamMapper; + @Autowired + private PlansExtMapper plansExtMapper; + @Autowired + private DeviceExtMapper deviceExtMapper; + @Autowired + private UnqualifiedRecordMapper unqualifiedRecordMapper; + @Autowired + private CompanyUserExtMapper companyUserExtMapper; + + @Autowired + private UnqualifiedRecordService unqualifiedRecordService; @Transactional(rollbackFor = {BusinessException.class,Exception.class}) @Override @@ -177,6 +191,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(), "瀵逛笉璧凤紝璇ュ伐鍗曠姸鎬佸凡娴佽浆锛屼笉鑳借繘琛岃鎿嶄綔锛�"); @@ -184,6 +199,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(); @@ -203,6 +226,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; } @@ -258,15 +302,15 @@ 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.setUnitId(mp.getUnitId()); + wrModel.setProcedureId(wStock.getProcedureId()); + wrModel.setBatch(wStock.getBatch()); + wrModel.setUnitId(wStock.getUnitId()); wrModel.setPlanId(mp.getPlanId()); - //TODO 鐩墠浣跨敤宸ヨ涓婚敭瀛樺偍璐т綅涓婚敭 + //鐩墠浣跨敤宸ヨ涓婚敭瀛樺偍璐т綅涓婚敭 wrModel.setAppliancesId(wStock.getId()); wrModel.setMaterialDonetype(wStock.getQualityType()); wrModel.setMaterialProcedureId(wStock.getProcedureId()); @@ -277,7 +321,6 @@ } private void updateOrderInfo(LoginUserInfo user, Workorder mp,int status) { - List<WorkorderHistory> whList = new ArrayList<>(); //宸ュ崟鍘嗗彶鏁版嵁 Workorder order = new Workorder(); @@ -295,7 +338,7 @@ 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){ + }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)){ @@ -324,7 +367,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(), "瀵逛笉璧凤紝鎮ㄦ棤鏉冮檺杩涜璇ユ搷浣滐紒"); @@ -352,7 +395,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(), "瀵逛笉璧凤紝璇ュ伐鍗曠姸鎬佸凡娴佽浆锛屼笉鑳借繘琛岃鎿嶄綔锛�"); @@ -389,9 +432,6 @@ dealAppliancePro(mp,user,allRecordList,updateApplianceList,updateApplianceProList, outboundDetailList,stockList); } - if(1==1){ - throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"123"); - } //濡傛灉鏈夋病bom閰嶇疆,妫�鏌ヤ骇鍑猴紙鍖呭惈妫�楠岀殑涓嶈壇鍜屾姤搴熷搧锛夊拰鎶曟枡鏁伴噺鏄惁鐩哥瓑鍖归厤锛屼笉涓�鑷存彁绀洪敊璇� if(bdparam==null){ @@ -461,6 +501,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()); @@ -511,6 +731,11 @@ 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())){ //杩橀渶瑕佹姇鏂欐暟閲� @@ -527,6 +752,10 @@ //濡傛灉宸茬粡婊¤冻鍓╀綑闇�姹傞噺 isfull =true; } + + //娣诲姞鎶曟枡璁板綍 + workorderRecordExtMapper.insert(getWorkrecordModel(user,ts,mp,actNum)); + //鏇存柊宸茬粡鎶曟枡鏁伴噺 model.setTNum(Constants.formatBigdecimal(model.getTNum()).add(actNum)); WOutbound outbound = getFromOutboundList(ts.getWarehouseId(),outboundList); @@ -634,6 +863,7 @@ 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鐗╂枡锛屾棤娉曡繘琛屾姤宸�"); } @@ -756,6 +986,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 @@ -795,78 +1145,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){ @@ -884,6 +1166,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(); @@ -979,15 +1326,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) @@ -1058,6 +1405,15 @@ public List<WorkorderRecord> getWorkorderRecordList(Integer workorderId) { List<WorkorderRecord> workorderRecordList = workorderRecordExtMapper.selectList( new QueryWrapper<WorkorderRecord>().eq("WORKORDER_ID",workorderId).eq("TYPE",Constants.ONE).eq("DELETED",Constants.ZERO).orderByAsc(" DONE_TYPE ")); + if(!Objects.isNull(workorderRecordList)&workorderRecordList.size()>Constants.ZERO){ + for (WorkorderRecord workorderRecord:workorderRecordList) { + //鏌ヨ涓嶈壇浜у嚭璁板綍璇︽儏 浜у嚭 涓� 涓嶈壇 鎵嶅瓨鍦ㄨ鏁版嵁 + if(workorderRecord.getType().equals(Constants.ONE)&&workorderRecord.getUnqualifiedNum().compareTo(BigDecimal.ZERO)>Constants.ZERO){ + List<UnqualifiedRecord> unqualifiedRecordList = unqualifiedRecordService.findJoinList(workorderRecord.getId()); + workorderRecord.setUnqualifiedRecordList(unqualifiedRecordList); + } + } + } return workorderRecordList; } @@ -1105,5 +1461,142 @@ 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 ,Integer userId){ + 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); + 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.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()).eq("TYPE",createWorkorderRecordDTO.getType()).last(" limit 1 ")); + if(!Objects.isNull(salaryParam)){ + workorderRecord.setSalaryPrice(salaryParam.getSalary()); + workorderRecord.setSalaryType(salaryParam.getType()); + workorderRecord.setSalaryUnqualified(salaryParam.getUnqualified()); + workorderRecord.setSalaryTimes(salaryParam.getTimes()); + //璁′欢宸ヨ祫 + if(salaryParam.getType().equals(Constants.ZERO)){ + workorderRecord.setSalaryNum(salaryParam.getNum()); + workorderRecord.setDuration(createWorkorderRecordDTO.getDuration()); + 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.setSalaryNum(salaryParam.getNum()); + workorderRecord.setDuration(createWorkorderRecordDTO.getDuration()); + workorderRecord.setSalary(BigDecimal.valueOf(createWorkorderRecordDTO.getDuration()).multiply(salaryParam.getSalary()).divide(new BigDecimal(3600),BigDecimal.ROUND_HALF_UP)); + } + } + } + //鎻掑叆宸ュ崟鎿嶄綔璁板綍锛屽苟涓斿垽鏂槸鍚︽洿鏀逛负宸ュ崟鐨勭姸鎬併�愮敓浜т腑銆� + updateOrderInfo(loginUserInfo,workorder,Constants.WORKORDER_HISTORY_STATUS.produce); + workorderRecordExtMapper.insert(workorderRecord); + return workorderRecord; + } + + + } -- Gitblit v1.9.3