package doumeemes.service.ext.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import doumeemes.core.constants.ResponseStatus; import doumeemes.core.exception.BusinessException; import doumeemes.core.model.LoginUserInfo; import doumeemes.core.model.PageData; import doumeemes.core.model.PageWrap; import doumeemes.core.utils.Constants; import doumeemes.core.utils.DateUtil; import doumeemes.core.utils.redis.RedisUtil; import doumeemes.dao.business.AppliancesMapper; import doumeemes.dao.business.EndcheckDetailMapper; import doumeemes.dao.business.WorkorderMapper; import doumeemes.dao.business.WorkorderRecordMapper; import doumeemes.dao.business.model.*; import doumeemes.dao.ext.AppliancesExtMapper; import doumeemes.dao.ext.EndcheckDetailExtMapper; import doumeemes.dao.ext.EndcheckExtMapper; import doumeemes.dao.ext.WorkorderHistoryExtMapper; import doumeemes.dao.ext.bean.EndCheckBean; import doumeemes.dao.ext.bean.EndCheckDetailBean; import doumeemes.dao.ext.bean.EndCheckUnQualifiedBean; import doumeemes.dao.ext.dto.QueryEndcheckExtDTO; import doumeemes.dao.ext.vo.EndcheckExtListVO; import doumeemes.dao.system.SystemDictDataMapper; import doumeemes.dao.system.model.SystemDictData; import doumeemes.service.business.impl.AppliancesServiceImpl; import doumeemes.service.ext.EndcheckExtService; import doumeemes.service.system.impl.SystemDictDataServiceImpl; import io.swagger.models.auth.In; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.SecurityUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; import java.util.*; import java.util.stream.Collectors; /** * 工单类-终检检验信息表ExtService实现 * @author 江蹄蹄 * @since 2022/07/07 16:15 */ @Service public class EndcheckExtServiceImpl implements EndcheckExtService { @Autowired private RedisTemplate redisTemplate; @Autowired private EndcheckExtMapper endcheckExtMapper; @Autowired private WorkorderMapper workorderMapper; @Autowired private EndcheckDetailExtMapper endcheckDetailExtMapper; @Autowired private SystemDictDataMapper systemDictDataMapper; @Autowired private AppliancesMapper appliancesMapper; @Autowired private WorkorderHistoryExtMapper workorderHistoryExtMapper; @Autowired private EndcheckDetailMapper endcheckDetailMapper; @Autowired private WorkorderRecordMapper workorderRecordMapper; @Autowired private SystemDictDataServiceImpl systemDictDataServiceimpl; @Autowired private AppliancesExtMapper appliancesExtMapper; @Override public PageData findPage(PageWrap pageWrap) { LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); if(!Constants.equalsInteger(user.getType(),Constants.USERTYPE.COM)){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "对不起,您无权限进行该操作!"); } //只能查看当前根组织的数据 pageWrap.getModel().setRootDepartId(user.getRootDepartment().getId()); pageWrap.getModel().setDepartId(user.getCurComDepartment().getId()); //数据权限 List procedureIds=user.getProcedureIds();//权限范围内工序 if(procedureIds!=null){ if(procedureIds.size()>0){ pageWrap.getModel().setProcedureIds(procedureIds); } } List dataPermission = user.getDepartPermissionList(); if(dataPermission!=null){ pageWrap.getModel().setDepartIds(dataPermission); pageWrap.getModel().setCreateUser(user.getId()); /* if(dataPermission.size() > 0){ //否则走数据权限 pageWrap.getModel().setDepartIds(dataPermission); }*/ } PageHelper.startPage(pageWrap.getPage(), pageWrap.getCapacity()); List result = endcheckExtMapper.selectList(pageWrap.getModel()); return PageData.from(new PageInfo<>(result)); } @Override public EndcheckExtListVO selectOneById(Integer id) { EndcheckExtListVO endCheckExtListVO = endcheckExtMapper.selectOneById(id); List endCheckDetailList = endcheckDetailMapper.selectList(new QueryWrapper() .select(" * , ( select a.code from appliances a where a.id = endcheck_detail.APPLIANCES_ID ) as appliancesCode " + ", ( select a.code from appliances a where a.id = endcheck_detail.QUALIFIED_APPLIANCE_ID ) as unAppliancesCode ") .eq("ENDCHECK_ID",id) ); endCheckExtListVO.setEndCheckDetailList(endCheckDetailList); return endCheckExtListVO; } @Transactional(rollbackFor = Exception.class) @Override public void uploadEndCheck(EndCheckBean endCheckBean, LoginUserInfo userInfo){ //检验工单是否做过外观检 // if(endcheckExtMapper.selectCount(new QueryWrapper() // .eq("OBJ_ID",endCheckBean.getWorkOrderId()) // .eq("CHECK_TYPE", Constants.ONE) // )>0){ // throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "此工单已做外观终检,无法再进行操作"); // }; // if(endcheckExtMapper.selectCount(new QueryWrapper() // .eq("OBJ_ID",endCheckBean.getWorkOrderId()) // .eq("CHECK_TYPE", Constants.ZERO) // .eq("DONE_TYPE", Constants.ONE) // )>0){ // throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "此工单已检具检不合格,无法再进行操作"); // }; //获取工单信息 Workorder workorder = workorderMapper.selectById(endCheckBean.getWorkOrderId()); if(Objects.isNull(workorder)){ throw new BusinessException(ResponseStatus.OBJECT_EMP.getCode(), ResponseStatus.OBJECT_EMP.getMessage()+"【工单】"); } if(workorder.getStatus() > 3){ throw new BusinessException(ResponseStatus.ERR_STATUS.getCode(), ResponseStatus.ERR_STATUS.getMessage()+"【工单状态错误】"); } List endCheckDetailBeanList = endCheckBean.getEndCheckDetailBeanList(); //整合获取所有扫描的工装数据 List e = new ArrayList<>(); for (EndCheckDetailBean endCheckDetailBean:endCheckDetailBeanList) { if(Objects.equals(endCheckDetailBean.getAppliancesId(),endCheckDetailBean.getQualifiedAppliancesId())){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), ResponseStatus.NOT_ALLOWED.getMessage()+"【扫描篮筐与不良品篮筐不可以使用相同篮筐】"); } if(workorder.getType()==1||workorder.getType()==2){ Appliances appliances= appliancesExtMapper.selectById(endCheckDetailBean.getQualifiedAppliancesId()); SystemDictData systemDictData=systemDictDataServiceimpl.findById(appliances.getType()); if(endCheckDetailBean.getUnQualifiedNum().compareTo(BigDecimal.ZERO)==1&&!StringUtils.equals(Constants.APPLIANCES_TYPE_LABLE.scrap,systemDictData.getLabel()) ){ throw new BusinessException(ResponseStatus.OBJECT_EMP.getCode(), "当前工单为返工返修--只能选择报废工装"); } } if(Objects.isNull(e)){ e.add(endCheckDetailBean); }else{ if(e.indexOf(endCheckDetailBean) < Constants.ZERO){ e.add(endCheckDetailBean); } } } //2022年8月17日14:44:05 处理 必须上传当前工单内所有报工篮筐数据 // List iList = endCheckDetailBeanList.stream().map(EndCheckDetailBean::getAppliancesId).collect(Collectors.toList()); // if(workorderRecordMapper.selectCount(new QueryWrapper() // .eq("TYPE",1) // .eq("WORKORDER_ID",workorder.getId()) // .eq("DELETED",0) // .notIn("APPLIANCES_ID",iList) // )>0){ // throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), ResponseStatus.NOT_ALLOWED.getMessage()+"【请扫描此工单全部产出篮筐】"); // }; //整合获取所有扫描的工装数据验证 工装内数量是否超出 for (EndCheckDetailBean parent:e) { BigDecimal childSumNum = new BigDecimal(0) ; for (EndCheckDetailBean child : endCheckDetailBeanList) { if(parent.getAppliancesId() == child.getAppliancesId()){ childSumNum = childSumNum.add( child.getNum() ); } } if(childSumNum.compareTo(parent.getNum())==1 ){ throw new BusinessException(ResponseStatus.EXCEED_PLAN_NUM.getCode(), ResponseStatus.EXCEED_APPLIANCES_NUM.getMessage()); } } //保存数据 Endcheck endcheck = endCheckBean.toEndCheck(workorder,userInfo); endcheck.setCode(this.getNextCode(userInfo.getCompany().getId())); endcheck.setRemark(endCheckBean.getRemark()); endcheckExtMapper.insert(endcheck); //保存明细数据 for (EndCheckDetailBean endCheckDetailBean:endCheckDetailBeanList) { EndcheckDetail endcheckDetail = endCheckDetailBean.toEndCheckDetail(userInfo); endcheckDetail.setRootDepartId(workorder.getRootDepartId()); endcheckDetail.setDepartId(workorder.getDepartId()); endcheckDetail.setEndcheckId(endcheck.getId()); endcheckDetail.setMaterialId(workorder.getMaterialId()); endcheckDetail.setUnitId(workorder.getUnitId()); endcheckDetail.setMaterialBatch(workorder.getBatch()); endcheckDetailExtMapper.insert(endcheckDetail); //更新产出记录数据 WorkorderRecord unWorkOrderRecord = workorderRecordMapper.selectOne(new QueryWrapper() .eq("WORKORDER_ID",endCheckBean.getWorkOrderId()) .eq("APPLIANCES_ID",endCheckDetailBean.getAppliancesId()).last(" limit 1")); if(Objects.isNull(unWorkOrderRecord)){ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "对不起,对应工单产出记录不存在!"); } if(( endCheckBean.getCheckType()==Constants.ONE || endCheckBean.getDownType() == Constants.ONE )){// && !Objects.isNull(endCheckDetailBean.getQualifiedAppliancesId()) ){ WorkorderRecord workorderRecord = new WorkorderRecord(); workorderRecord.setDoneType(endCheckBean.getDownType()); workorderRecord.setMaterialDonetype(endCheckBean.getDownType()); workorderRecord.setNum(endCheckDetailBean.getQualifiedNum()); if(!Objects.isNull(endCheckDetailBean.getQualifiedAppliancesId())){ workorderRecord.setQualifiedApplianceId(endCheckDetailBean.getQualifiedAppliancesId().toString()); } workorderRecordMapper.update(workorderRecord,new QueryWrapper() .eq("WORKORDER_ID",endCheckBean.getWorkOrderId()) .eq("APPLIANCES_ID",endCheckDetailBean.getAppliancesId()) ); } } if(( endCheckBean.getCheckType()==Constants.ONE || endCheckBean.getDownType() == Constants.ONE )){ this.dealUnEndCheckRecord(endCheckBean,userInfo); } //添加工单操作记录 List whList = new ArrayList<>(); workorder.setUpdateTime(DateUtil.getCurrentDate()); workorder.setUpdateUser(userInfo.getId()); //已完工 workorder.setStatus(Constants.WORKORDER_STATUS.done); //工单历史数据 whList.add(WorkorderExtServiceImpl.initHistoryByModel(workorder,userInfo.getId(),Constants.WORKORDER_HISTORY_STATUS.done)); workorderMapper.updateById(workorder); if(whList.size()>0){ workorderHistoryExtMapper.insertBatch(whList); } } public void dealUnEndCheckRecord(EndCheckBean endCheckBean,LoginUserInfo userInfo){ Map> endCheckDetailBeanMap = endCheckBean.getEndCheckDetailBeanList().stream().filter(x -> !Objects.isNull(x.getQualifiedAppliancesId())) .collect(Collectors.groupingBy(item -> item.getQualifiedAppliancesId())); Iterator iter = endCheckDetailBeanMap.keySet().iterator(); while(iter.hasNext()) { Integer key = iter.next(); //判断当前不良篮筐是否存在于本工单产出记录中 if(workorderRecordMapper.selectCount(new QueryWrapper() .eq("WORKORDER_ID",endCheckBean.getWorkOrderId()) .eq("APPLIANCES_ID",key))>0){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "对不起,不良篮筐数据已存在!"); }; List endCheckDetailBeans = endCheckDetailBeanMap.get(key); EndCheckDetailBean p = endCheckDetailBeans.get(0); WorkorderRecord unWorkOrderRecord = workorderRecordMapper.selectOne(new QueryWrapper() .eq("WORKORDER_ID",endCheckBean.getWorkOrderId()) .eq("APPLIANCES_ID",p.getAppliancesId()).last(" limit 1")); p.setUnQualifiedNum(endCheckDetailBeans.stream().map(s -> s.getUnQualifiedNum()).reduce(BigDecimal.ZERO, BigDecimal::add)); unWorkOrderRecord.setId(null); unWorkOrderRecord.setCreateUser(userInfo.getId()); unWorkOrderRecord.setCreateTime(new Date()); unWorkOrderRecord.setDoneType(Constants.ONE); unWorkOrderRecord.setMaterialDonetype(Constants.ONE); unWorkOrderRecord.setAppliancesId(key); unWorkOrderRecord.setNum(p.getUnQualifiedNum()); workorderRecordMapper.insert(unWorkOrderRecord); } } @Override public synchronized String getNextCode(Integer comId ){ String prefix = "JY-" + DateUtil.getDate(new Date(),"yyyyMMdd") +"-"; Integer countNum = RedisUtil.getObject(redisTemplate,Constants.RedisKeys.COM_ENDCHECK_KEY+comId,Integer.class); countNum = Constants.formatIntegerNum(countNum)+1; //更新缓存 RedisUtil.addObject(redisTemplate,Constants.RedisKeys.COM_ENDCHECK_KEY+comId,countNum); String nextIndex =Integer.toString( countNum); return prefix + StringUtils.leftPad(nextIndex,4,"0"); } @Transactional(rollbackFor = Exception.class) @Override public void uploadEndCheckNew(EndCheckBean endCheckBean, LoginUserInfo userInfo){ //检验工单是否做过外观检 // if(endcheckExtMapper.selectCount(new QueryWrapper() // .eq("OBJ_ID",endCheckBean.getWorkOrderId()) // .eq("CHECK_TYPE", Constants.ONE) // )>0){ // throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "此工单已做外观终检,无法再进行操作"); // }; // if(endcheckExtMapper.selectCount(new QueryWrapper() // .eq("OBJ_ID",endCheckBean.getWorkOrderId()) // .eq("CHECK_TYPE", Constants.ZERO) // .eq("DONE_TYPE", Constants.ONE) // )>0){ // throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "此工单已检具检不合格,无法再进行操作"); // }; //获取工单信息 Workorder workorder = workorderMapper.selectById(endCheckBean.getWorkOrderId()); if(Objects.isNull(workorder)){ throw new BusinessException(ResponseStatus.OBJECT_EMP.getCode(), ResponseStatus.OBJECT_EMP.getMessage()+"【工单】"); } if(workorder.getStatus() > 3){ throw new BusinessException(ResponseStatus.ERR_STATUS.getCode(), ResponseStatus.ERR_STATUS.getMessage()+"【工单状态错误】"); } List endCheckDetailBeanList = endCheckBean.getEndCheckDetailBeanList(); //整合获取所有扫描的工装数据 List e = new ArrayList<>(); for (EndCheckDetailBean endCheckDetailBean:endCheckDetailBeanList) { List endCheckUnQualifiedBeanList = endCheckDetailBean.getEndCheckUnQualifiedBeanList(); for (EndCheckUnQualifiedBean endCheckUnQualifiedBean:endCheckUnQualifiedBeanList ) { if(Objects.equals(endCheckDetailBean.getAppliancesId(),endCheckUnQualifiedBean.getQualifiedAppliancesId())){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), ResponseStatus.NOT_ALLOWED.getMessage()+"【扫描篮筐与不良品篮筐不可以使用相同篮筐】"); } Appliances appliances= appliancesExtMapper.selectById(endCheckUnQualifiedBean.getQualifiedAppliancesId()); if(workorder.getType()==1||workorder.getType()==2){ SystemDictData systemDictData=systemDictDataServiceimpl.findById(appliances.getType()); if(endCheckDetailBean.getUnQualifiedNum().compareTo(BigDecimal.ZERO)==1&&!StringUtils.equals(Constants.APPLIANCES_TYPE_LABLE.scrap,systemDictData.getLabel()) ){ throw new BusinessException(ResponseStatus.OBJECT_EMP.getCode(), "当前工单为返工返修--只能选择报废工装"); } } //查询不良篮筐是否处于生产工单中 if(appliancesExtMapper.selectCount(new QueryWrapper() .eq("id",endCheckUnQualifiedBean.getQualifiedAppliancesId()) .apply(" id in ( select b.APPLIANCES_ID from workorder a inner join workorder_record b on a.id = b.WORKORDER_ID and a.status in ( 0,1,2,3 ) and b.DELETED = 0 and a.id != '"+endCheckBean.getWorkOrderId()+"' ) ") )>Constants.ZERO){ throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "【" +appliances.getCode() + "】该工装处于生产中"); }; } if(Objects.isNull(e)){ e.add(endCheckDetailBean); }else{ if(e.indexOf(endCheckDetailBean) < Constants.ZERO){ e.add(endCheckDetailBean); } } } //2022年8月17日14:44:05 处理 必须上传当前工单内所有报工篮筐数据 // List iList = endCheckDetailBeanList.stream().map(EndCheckDetailBean::getAppliancesId).collect(Collectors.toList()); // if(workorderRecordMapper.selectCount(new QueryWrapper() // .eq("TYPE",1) // .eq("WORKORDER_ID",workorder.getId()) // .eq("DELETED",0) // .notIn("APPLIANCES_ID",iList) // )>0){ // throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), ResponseStatus.NOT_ALLOWED.getMessage()+"【请扫描此工单全部产出篮筐】"); // }; //整合获取所有扫描的工装数据验证 工装内数量是否超出 for (EndCheckDetailBean parent:e) { BigDecimal childSumNum = new BigDecimal(0) ; for (EndCheckDetailBean child : endCheckDetailBeanList) { if(parent.getAppliancesId() == child.getAppliancesId()){ childSumNum = childSumNum.add( child.getNum() ); } } if(childSumNum.compareTo(parent.getNum())==1 ){ throw new BusinessException(ResponseStatus.EXCEED_PLAN_NUM.getCode(), ResponseStatus.EXCEED_APPLIANCES_NUM.getMessage()); } } //保存数据 Endcheck endcheck = endCheckBean.toEndCheck(workorder,userInfo); endcheck.setCode(this.getNextCode(userInfo.getCompany().getId())); endcheck.setRemark(endCheckBean.getRemark()); endcheckExtMapper.insert(endcheck); //保存明细数据 for (EndCheckDetailBean endCheckDetailBean:endCheckDetailBeanList) { //更新产出记录数据 WorkorderRecord unWorkOrderRecord = workorderRecordMapper.selectOne(new QueryWrapper() .eq("WORKORDER_ID",endCheckBean.getWorkOrderId()) .eq("APPLIANCES_ID",endCheckDetailBean.getAppliancesId()).last(" limit 1")); if(Objects.isNull(unWorkOrderRecord)){ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "对不起,对应工单产出记录不存在!"); } List endCheckUnQualifiedBeanList = endCheckDetailBean.getEndCheckUnQualifiedBeanList(); EndcheckDetail endcheckDetail = endCheckDetailBean.toEndCheckDetail(userInfo); endcheckDetail.setRootDepartId(workorder.getRootDepartId()); endcheckDetail.setDepartId(workorder.getDepartId()); endcheckDetail.setEndcheckId(endcheck.getId()); endcheckDetail.setMaterialId(workorder.getMaterialId()); endcheckDetail.setUnitId(workorder.getUnitId()); endcheckDetail.setMaterialBatch(workorder.getBatch()); if(!Objects.isNull(endCheckUnQualifiedBeanList)&&endCheckUnQualifiedBeanList.size()>Constants.ZERO){ //最大不合格数量 BigDecimal maxUnQualifiedNum = unWorkOrderRecord.getNum().subtract(endCheckDetailBean.getQualifiedNum()); BigDecimal maxQNum = endCheckUnQualifiedBeanList.stream().map(s -> s.getUnQualifiedNum()).reduce(BigDecimal.ZERO, BigDecimal::add); if(maxQNum.compareTo(maxUnQualifiedNum)>0){ Appliances appliances = appliancesMapper.selectById(endCheckDetailBean.getAppliancesId()); throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "对不起,工装【"+appliances.getCode()+"】检验数量超出"); } for (EndCheckUnQualifiedBean endCheckUnQualifiedBean:endCheckUnQualifiedBeanList) { endcheckDetail.setUnqualifiedNum(endCheckUnQualifiedBean.getUnQualifiedNum()); endcheckDetail.setQualifiedApplianceId(endCheckUnQualifiedBean.getQualifiedAppliancesId()); endcheckDetail.setCheckInfo(endCheckUnQualifiedBean.getCheckInfo()); endcheckDetailExtMapper.insert(endcheckDetail); } }else{ endcheckDetailExtMapper.insert(endcheckDetail); } // if(( endCheckBean.getCheckType()==Constants.ONE || endCheckBean.getDownType() == Constants.ONE )){ WorkorderRecord workorderRecord = new WorkorderRecord(); if(( endCheckBean.getCheckType()==Constants.ONE || endCheckBean.getDownType() == Constants.ONE )){ workorderRecord.setDoneType(endCheckBean.getDownType()); } workorderRecord.setMaterialDonetype(endCheckBean.getDownType()); workorderRecord.setNum(endCheckDetailBean.getQualifiedNum()); if(!Objects.isNull(endCheckDetailBean.getQualifiedAppliancesId())){ workorderRecord.setQualifiedApplianceId(endCheckDetailBean.getQualifiedAppliancesId().toString()); } workorderRecordMapper.update(workorderRecord,new QueryWrapper() .eq("WORKORDER_ID",endCheckBean.getWorkOrderId()) .eq("APPLIANCES_ID",endCheckDetailBean.getAppliancesId()) ); // } } // if(( endCheckBean.getCheckType()==Constants.ONE || endCheckBean.getDownType() == Constants.ONE )){ this.dealUnEndCheckRecordNew(endCheckBean,userInfo); // } //添加工单操作记录 List whList = new ArrayList<>(); workorder.setUpdateTime(DateUtil.getCurrentDate()); workorder.setUpdateUser(userInfo.getId()); //已完工 workorder.setStatus(Constants.WORKORDER_STATUS.done); //工单历史数据 whList.add(WorkorderExtServiceImpl.initHistoryByModel(workorder,userInfo.getId(),Constants.WORKORDER_HISTORY_STATUS.done)); workorderMapper.updateById(workorder); if(whList.size()>0){ workorderHistoryExtMapper.insertBatch(whList); } } public void dealUnEndCheckRecordNew(EndCheckBean endCheckBean,LoginUserInfo userInfo){ List endCheckDetailBeanList = endCheckBean.getEndCheckDetailBeanList(); for (EndCheckDetailBean endCheckDetailBean:endCheckDetailBeanList) { List endCheckUnQualifiedBeanList = endCheckDetailBean.getEndCheckUnQualifiedBeanList(); Map> endCheckDetailBeanMap = endCheckUnQualifiedBeanList.stream().filter(x -> !Objects.isNull(x.getQualifiedAppliancesId())) .collect(Collectors.groupingBy(item -> item.getQualifiedAppliancesId())); Iterator iter = endCheckDetailBeanMap.keySet().iterator(); while(iter.hasNext()) { Integer key = iter.next(); //判断当前不良篮筐是否存在于本工单产出记录中 if(workorderRecordMapper.selectCount(new QueryWrapper() .eq("WORKORDER_ID",endCheckBean.getWorkOrderId()) .eq("APPLIANCES_ID",key))>0){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "对不起,不良篮筐数据已存在!"); }; List checkUnQualifiedBeans = endCheckDetailBeanMap.get(key); EndCheckUnQualifiedBean p = checkUnQualifiedBeans.get(0); WorkorderRecord unWorkOrderRecord = workorderRecordMapper.selectOne(new QueryWrapper() .eq("WORKORDER_ID",endCheckBean.getWorkOrderId()) .eq("APPLIANCES_ID",endCheckDetailBean.getAppliancesId()).last(" limit 1")); p.setUnQualifiedNum(checkUnQualifiedBeans.stream().map(s -> s.getUnQualifiedNum()).reduce(BigDecimal.ZERO, BigDecimal::add)); unWorkOrderRecord.setId(null); unWorkOrderRecord.setCreateUser(userInfo.getId()); unWorkOrderRecord.setCreateTime(new Date()); unWorkOrderRecord.setDoneType(Constants.ONE); unWorkOrderRecord.setMaterialDonetype(Constants.ONE); unWorkOrderRecord.setAppliancesId(key); unWorkOrderRecord.setNum(p.getUnQualifiedNum()); workorderRecordMapper.insert(unWorkOrderRecord); } // if(!Objects.isNull(endCheckUnQualifiedBeanList)&&endCheckUnQualifiedBeanList.size()>Constants.ZERO){ // for (EndCheckUnQualifiedBean endCheckUnQualifiedBean:endCheckUnQualifiedBeanList) { // WorkorderRecord unWorkOrderRecord = workorderRecordMapper.selectOne(new QueryWrapper() // .eq("WORKORDER_ID",endCheckBean.getWorkOrderId()) // .eq("APPLIANCES_ID",endCheckDetailBean.getAppliancesId()) // .last(" limit 1")); // unWorkOrderRecord.setId(null); // unWorkOrderRecord.setCreateUser(userInfo.getId()); // unWorkOrderRecord.setCreateTime(new Date()); // unWorkOrderRecord.setDoneType(Constants.ONE); // unWorkOrderRecord.setMaterialDonetype(Constants.ONE); // unWorkOrderRecord.setAppliancesId(endCheckUnQualifiedBean.getQualifiedAppliancesId()); //// unWorkOrderRecord.setQualifiedApplianceId(endCheckUnQualifiedBean.getQualifiedAppliancesId().toString()); // unWorkOrderRecord.setNum(endCheckUnQualifiedBean.getUnQualifiedNum()); // workorderRecordMapper.insert(unWorkOrderRecord); // } // } } } }