| | |
| | | import com.zy.asrs.enums.LocStsType; |
| | | import com.zy.asrs.mapper.LocMastMapper; |
| | | import com.zy.asrs.entity.result.FindLocNoAttributeVo; |
| | | import com.zy.asrs.mapper.WrkMastMapper; |
| | | import com.zy.asrs.service.*; |
| | | import com.zy.asrs.utils.OrderInAndOutUtil; |
| | | import com.zy.asrs.utils.Utils; |
| | |
| | | import com.zy.common.properties.SlaveProperties; |
| | | import com.zy.common.service.CommonService; |
| | | import com.zy.common.web.WcsController; |
| | | import io.swagger.models.auth.In; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.commons.codec.binary.StringUtils; |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | |
| | | private OrderPakoutService orderPakOutService; |
| | | @Autowired |
| | | private BasDeviceServiceImpl basDeviceService; |
| | | @Autowired |
| | | private WrkMastMapper wrkMastMapper; |
| | | |
| | | @Override |
| | | @Transactional |
| | |
| | | String wrkCode = null; |
| | | if (!Objects.isNull(deviceNo)) { |
| | | wrkCode = workNo + "-1"; |
| | | ioType = 101; |
| | | // ioType = 101; |
| | | generateOutStock(taskDto, userId, workNo, wrkCode, now, ioType, locMast, staDesc, deviceNo); |
| | | } else { |
| | | generateOutStock(taskDto, userId, workNo, wrkCode, now, ioType, locMast, staDesc, null); |
| | |
| | | wrkDetl.setZpallet(wrkMast.getBarcode()); |
| | | wrkDetl.setIoTime(now); |
| | | wrkDetl.setWrkNo(workNo); |
| | | wrkDetl.setBrand(orderDetl.getBrand()); |
| | | wrkDetl.setModel(orderDetl.getModel()); |
| | | wrkDetl.setUnit(orderDetl.getUnit()); |
| | | wrkDetl.setStandby1(locDto.getStandby1()); |
| | | wrkDetl.setBatch(locDto.getBatch()); |
| | | wrkDetl.setOrderNo(locDto.getOrderNo()); |
| | | wrkDetl.setAnfme(locDto.getAnfme()); // 数量 |
| | | // LocDetl locDel = locDetlService.selectOne(new EntityWrapper<LocDetl>() |
| | | // .eq("loc_no", locDto.getLocNo()) |
| | | // .eq("batch", locDto.getBatch()) |
| | | // .eq(!Objects.isNull(locDto.getBarcode()), "barcode", locDto.getBarcode()) |
| | | // .eq("matnr", locDto.getMatnr())); |
| | | // if (Objects.isNull(locDel)) { |
| | | // throw new CoolException("数据错误,库存明细不存在!!"); |
| | | // } |
| | | wrkDetl.setStandby1(locDto.getStandby1()); |
| | | LocDetl locDel = locDetlService.selectOne(new EntityWrapper<LocDetl>() |
| | | .eq("loc_no", locDto.getLocNo()) |
| | | .eq("batch", locDto.getBatch()) |
| | | .eq(!Objects.isNull(locDto.getBarcode()), "barcode", locDto.getBarcode()) |
| | | .eq("matnr", locDto.getMatnr())); |
| | | if (Objects.isNull(locDel)) { |
| | | throw new CoolException("数据错误,库存明细不存在!!"); |
| | | } |
| | | wrkDetl.setBrand(locDel.getBrand()); |
| | | wrkDetl.setModel(locDel.getModel()); |
| | | wrkDetl.setUnit(locDel.getUnit()); |
| | | wrkDetl.setSpecs(locDel.getSpecs()); |
| | | wrkDetl.setBatch(locDel.getBatch()); |
| | | // wrkDetl.setAnfme(locDel.getAnfme()); |
| | | wrkDetl.setAppeTime(now); |
| | | wrkDetl.setAppeUser(userId); |
| | |
| | | locMast.setLocSts("F"); |
| | | } |
| | | } |
| | | locMast.setModiUser(userId); |
| | | locMast.setModiTime(now); |
| | | if (!locMastService.updateById(locMast)) { |
| | | throw new CoolException("更新库位状态失败"); |
| | | } |
| | | // locMast.setModiUser(userId); |
| | | // locMast.setModiTime(now); |
| | | // if (!locMastService.updateById(locMast)) { |
| | | // throw new CoolException("更新库位状态失败"); |
| | | // } |
| | | } |
| | | |
| | | |
| | |
| | | locMast.setModiTime(now); |
| | | locMast.setModiUser(userId); |
| | | locMastService.updateById(locMast); |
| | | } |
| | | |
| | | if (!Objects.isNull(wrkMast.getWrkCode())) { |
| | | LocAroundBind aroundBind = locAroundBindService.selectOne(new EntityWrapper<LocAroundBind>().eq("b_loc_no", wrkMast.getSourceLocNo())); |
| | | if (!Objects.isNull(aroundBind)) { |
| | | aroundBind.setLocType(LocStsType.LOC_STS_TYPE_O.type); |
| | | if (!locAroundBindService.updateById(aroundBind)) { |
| | | throw new CoolException("工位状态修改失败!!"); |
| | | } |
| | | } |
| | | } |
| | | // 出库取消(修改源库位) |
| | | } else if (wrkMast.getWrkSts() > 10 && wrkMast.getWrkSts() != 14) { |
| | |
| | | Integer ioType = wrkMast.getIoType() - 50; |
| | | Integer wokNo; |
| | | // 入出库类型判断 |
| | | if (wrkMast.getIoType() == 103) { |
| | | ioType = 1; |
| | | } else if (wrkMast.getIoType() == 101) { |
| | | // if (wrkMast.getIoType() == 103) { |
| | | // ioType = 1; |
| | | // } else if (wrkMast.getIoType() == 101) { |
| | | // ioType = 10; |
| | | // } |
| | | if (Objects.isNull(wrkMast.getIsSuplus())) { |
| | | throw new CoolException("回库类型不能为空!!"); |
| | | } |
| | | |
| | | if (wrkMast.getIsSuplus() == 0) { |
| | | ioType = 10; |
| | | } else { |
| | | ioType = 1; |
| | | } |
| | | wokNo = commonService.getWorkNo(0); |
| | | |
| | | // 获取目标站 |
| | | Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>() |
| | | .eq("type_no", ioType) |
| | |
| | | if (Cools.isEmpty(staDesc)) { |
| | | throw new CoolException("入库路径不存在"); |
| | | } |
| | | |
| | | int count = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("barcode", wrkMast.getBarcode())); |
| | | if (count >= 2) { |
| | | throw new CoolException("任务档已生成,不可以重复生成相同的子任务!!"); |
| | | } |
| | | |
| | | WrkDetl detl = wrkDetlService.selectOne(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo())); |
| | | LocDetl locDetl = new LocDetl(); |
| | | BeanUtils.copyProperties(detl, locDetl); |
| | | FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo(locDetl); |
| | | |
| | | // 源站点状态检测 |
| | | BasDevp sourceStaNo = basDevpService.checkSiteStatus(Integer.parseInt(wrkMast.getStaNo()), false); |
| | | sourceStaNo.setLocType1((short) 1); |
| | | LocTypeDto locTypeDto = new LocTypeDto(sourceStaNo); |
| | | StartupDto locNo = commonService.getLocNo(1, Integer.parseInt(wrkMast.getStaNo()), findLocNoAttributeVo, locTypeDto); |
| | | |
| | | Date now = new Date(); |
| | | // 堆垛机站点(目标站) |
| | | Integer staNo = staDesc.getCrnStn(); |
| | |
| | | mast.setWrkSts(2L); // 工作状态: 2.设备上走 |
| | | mast.setSourceStaNo(wrkMast.getStaNo()); // 源站 |
| | | mast.setStaNo(staNo + ""); // 目标站 |
| | | //判断是否为领料出库 |
| | | if (Objects.isNull(mast.getWrkCode())) { |
| | | mast.setLocNo(mast.getSourceLocNo()); // 目标库位 = 出库时的源库位 |
| | | } |
| | | // mast.setSourceLocNo(""); // 源库位清空 |
| | | mast.setSourceLocNo(wrkMast.getLocNo()); |
| | | mast.setLocNo(locNo.getLocNo()); // 目标库位 = 出库时的源库位 |
| | | mast.setModiTime(now); |
| | | mast.setModiUser(userId); |
| | | if (!wrkMastService.insert(mast)) { |
| | |
| | | if (Cools.isEmpty(wrkDetls)) { |
| | | throw new CoolException("数据错误,任务档明细不存在 !!"); |
| | | } |
| | | wrkDetls.forEach(wrkDetl -> { |
| | | WrkDetl wrkDetl1 = new WrkDetl(); |
| | | BeanUtils.copyProperties(wrkDetl, wrkDetl1); |
| | | wrkDetl1.setWrkNo(wokNo); |
| | | if (!wrkDetlService.insert(wrkDetl1)) { |
| | | throw new CoolException("任务档明细保存失败!!"); |
| | | |
| | | // 修改库位状态 Q.拣料/盘点/并板再入库 |
| | | LocMast inLoc = locMastService.selectById(mast.getLocNo()); |
| | | inLoc.setLocSts(LocStsType.LOC_STS_TYPE_S.type); |
| | | inLoc.setModiTime(now); |
| | | inLoc.setModiUser(userId); |
| | | if (!locMastService.updateById(inLoc)) { |
| | | throw new CoolException("修改库位状态失败"); |
| | | } |
| | | |
| | | LocAroundBind aroundBind = locAroundBindService.selectOne(new EntityWrapper<LocAroundBind>().eq("b_loc_no", mast.getSourceLocNo())); |
| | | if (!Objects.isNull(aroundBind)) { |
| | | aroundBind.setLocType(LocStsType.LOC_STS_TYPE_R.type); |
| | | if (!locAroundBindService.updateById(aroundBind)) { |
| | | throw new CoolException("工位状态修改失败!!"); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | //工作类型为1时,才添加明细 |
| | | if (ioType == 1) { |
| | | wrkDetls.forEach(wrkDetl -> { |
| | | WrkDetl wrkDetl1 = new WrkDetl(); |
| | | BeanUtils.copyProperties(wrkDetl, wrkDetl1); |
| | | wrkDetl1.setWrkNo(wokNo); |
| | | if (!wrkDetlService.insert(wrkDetl1)) { |
| | | throw new CoolException("任务档明细保存失败!!"); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | // 修改库位状态 Q.拣料/盘点/并板再入库 |
| | | LocMast locMast = locMastService.selectById(wrkMast.getLocNo()); |
| | | locMast.setLocSts("Q"); |
| | | locMast.setLocSts("R"); |
| | | locMast.setModiTime(now); |
| | | locMast.setModiUser(userId); |
| | | if (!locMastService.updateById(locMast)) { |
| | | throw new CoolException("修改库位状态失败"); |
| | | } |
| | | wrkMast.setWrkCode(null); |
| | | |
| | | if (!wrkMastService.updateById(wrkMast)) { |
| | | throw new CoolException("任务档更新失败!!"); |
| | | } |
| | | |
| | | // wrkMast.setWrkCode(null); |
| | | // |
| | | // if (!wrkMastService.updateById(wrkMast)) { |
| | | // throw new CoolException("任务档更新失败!!"); |
| | | // } |
| | | } |
| | | |
| | | |
| | |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 修改任务档余料回库状态 |
| | | * |
| | | * @param workNo |
| | | * @param userId |
| | | * @param type |
| | | * @author Ryan |
| | | * @date 2026/1/14 15:06 |
| | | */ |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void updateWrkIsSuplus(String workNo, Long userId, Integer type) { |
| | | WrkMast mast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", workNo)); |
| | | if (Objects.isNull(mast)) { |
| | | throw new CoolException("任务档不存在!!"); |
| | | } |
| | | if (mast.getWrkSts() != 15) { |
| | | throw new CoolException("当前任务状态,无法执行此操作!"); |
| | | } |
| | | if (type == 4) { |
| | | mast.setIsSuplus(0); |
| | | } else if (type == 5) { |
| | | mast.setIsSuplus(1); |
| | | } |
| | | if (!wrkMastService.updateById(mast)) { |
| | | throw new CoolException("任务档修改失败!!"); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 生成出库匹配的工作站入库任务 |
| | | * |