| | |
| | | import com.zy.common.service.CommonService; |
| | | import com.zy.common.web.param.CanningLineInLocParam; |
| | | import com.zy.common.web.param.SearchLocParam; |
| | | import com.zy.system.entity.Config; |
| | | import com.zy.system.service.ConfigService; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.util.ArrayList; |
| | | import java.util.Arrays; |
| | | import java.util.Date; |
| | | import java.util.Map; |
| | | import java.util.*; |
| | | |
| | | /** |
| | | * Created by vincent on 2020/10/30 |
| | |
| | | if (param.getIoType() == 1) { |
| | | // 先创建入库通知档 |
| | | waitPakin = comb(param.getBarcode(),param.getBucketType(),param.getBucketCount()); |
| | | // if (Cools.isEmpty(param.getBarcode())) { |
| | | // return R.error("条码不能为空"); |
| | | // } |
| | | // waitPakins = waitPakinService.selectList(new EntityWrapper<WaitPakin>().eq("zpallet", param.getBarcode())); |
| | | // if (Cools.isEmpty(waitPakins)) { |
| | | // WrkMast wrkMast = wrkMastService.selectByBarcode(param.getBarcode()); |
| | | // if (wrkMast != null && wrkMast.getIoType() == 103) { |
| | | // return R.parse(CodeRes.PICK_600); |
| | | // } |
| | | // return R.parse(CodeRes.NO_COMB_700); |
| | | // } |
| | | // int countLoc = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("zpallet",param.getBarcode())); |
| | | // int countWrk = wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("zpallet",param.getBarcode())); |
| | | // if (countLoc > 0 || countWrk > 0) { |
| | | // return R.error(CodeRes.EXIST_500); |
| | | // } |
| | | } |
| | | if (Cools.isEmpty(param.getLocType1())){ |
| | | return R.error("高低检测信号不能为空"); |
| | |
| | | StartupDto dto = null; |
| | | |
| | | if(param.getIoType() == 1) { |
| | | Map<Integer, String> wantBucketFlag = param.getWantBucketFlag(); |
| | | if(!wantBucketFlag.isEmpty()) { |
| | | if(waitPakin == null) { |
| | | return R.error("入库通知档为空"); |
| | | } else { |
| | | dto = startupFullPutStore(param,waitPakin); // 直供罐装线任务 |
| | | if (dto != null) { |
| | | log.info("WCS入库直供罐装线接口返参:{},托盘码:{}", dto, param.getBarcode()); |
| | | return R.ok().add(dto); |
| | | List<SearchLocParam.WantBucket> wantBucketFlag = param.getWantBucketFlag(); |
| | | for(SearchLocParam.WantBucket wantBucket: wantBucketFlag) { |
| | | if(wantBucket.getBucketType() != 0 && wantBucket.getBucketType() == param.getBucketType()) { // 罐装线有要桶信号并且当前桶是罐装线要的桶 |
| | | if(waitPakin == null) { |
| | | return R.error("入库通知档为空"); |
| | | } else { |
| | | int count = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("wrk_sts", 2).eq("sta_no", wantBucket.getSite())); |
| | | if(wantBucket.getSite() == 1071 && count < 12 || wantBucket.getSite() == 1064 && count < 10 || wantBucket.getSite() == 1078 && count < 12) { |
| | | dto = startupFullPutStore(param,waitPakin,wantBucket); // 直供罐装线任务 |
| | | if (dto != null) { |
| | | log.info("WCS入库直供罐装线接口返参:{},托盘码:{}", dto, param.getBarcode()); |
| | | return R.ok().add(dto); |
| | | } |
| | | } else { |
| | | log.warn("直供灌装线任务已满,入成品库,入库目标站点{},任务数:{}",wantBucket.getSite(),count); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | // 1.母托盘,2子托盘 |
| | | int flag = 0; |
| | | if(param.getIoType() == 10) { |
| | | flag = param.getBucketType() == 21 ? 1 : 2 ; |
| | | } |
| | | |
| | | switch (param.getIoType()) { |
| | | case 1://满托盘入库 |
| | | assert waitPakin != null; |
| | | dto = startupFullPutStore(param.getSourceStaNo(), param.getBarcode(), locTypeDto, waitPakin, param.getLocArea(),param.isTailSupportFlag()); |
| | | dto = startupFullPutStore(param.getSourceStaNo(), param.getBarcode(), locTypeDto, waitPakin, param.isTailSupportFlag()); |
| | | break; |
| | | case 10://空托盘入库 |
| | | dto = emptyPlateIn(param.getSourceStaNo(), locTypeDto, param.getBarcode(), 1); |
| | | dto = emptyPlateIn(param.getSourceStaNo(), locTypeDto, param.getBarcode(), 1, flag); |
| | | break; |
| | | default: |
| | | break; |
| | |
| | | @PostMapping("/pakin/CanningLine/loc/v1") |
| | | @ResponseBody |
| | | @Transactional |
| | | public synchronized R getLocNo(@RequestBody CanningLineInLocParam param) { |
| | | public synchronized R inCanningLine(@RequestBody CanningLineInLocParam param) { |
| | | log.info("收到WCS罐装入库接口请求====>>入参:{}", param); |
| | | if (Cools.isEmpty(param.getWrkNo())) { |
| | | return R.error("工作号不能为空"); |
| | |
| | | WrkMast wrkMast1 = wrkMastService.selectById(param.getWrkNo()); |
| | | // 根据任务号查询任务明细 |
| | | WrkDetl wrkDetl1 = wrkDetlService.selectOne(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast1.getWrkNo())); |
| | | // 分配库位 |
| | | StartupDto dto = commonService.getLocNoNew(1, param.getSourceStaNo(), null, 1); |
| | | |
| | | // 创建新任务 |
| | | int workNo = dto.getWorkNo(); |
| | | Mat mat = matService.selectByMatnr(param.getMatnr()); |
| | | if (mat == null) { |
| | | log.error("罐装完成入库,反馈给wcs成品标识不存在:{}",param.getMatnr()); |
| | | return R.error("罐装完成入库,反馈给wcs成品标识不存在:" + param.getMatnr()); |
| | | } |
| | | |
| | | // 获取系统配置,看成品罐装完成是否直接出到发货口 |
| | | Config config = configService.selectConfigByCode("gzwcfh"); |
| | | boolean fhFlag = false; |
| | | if (config != null && config.getStatus() == 1 && !Cools.isEmpty(config.getValue())) { |
| | | String[] split = config.getValue().split("="); |
| | | for(String item : split) { |
| | | if(param.getMatnr().equals(item)) { |
| | | fhFlag = true; |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | |
| | | Date now = new Date(); |
| | | // 生成工作档 |
| | | WrkMast wrkMast = new WrkMast(); |
| | | wrkMast.setWrkNo(workNo); |
| | | wrkMast.setIoTime(now); |
| | | wrkMast.setWrkSts(2L); // 工作状态:生成入库ID |
| | | wrkMast.setIoType(1); // 入出库状态:1.入库 |
| | | wrkMast.setIoPri(13D); // 优先级 |
| | | wrkMast.setCrnNo(dto.getCrnNo()); |
| | | wrkMast.setSourceStaNo(dto.getSourceStaNo()); |
| | | wrkMast.setStaNo(dto.getStaNo()); |
| | | wrkMast.setLocNo(dto.getLocNo()); |
| | | wrkMast.setBarcode(wrkMast1.getBarcode()); // 托盘码 |
| | | wrkMast.setFullPlt("Y"); // 满板:Y |
| | | wrkMast.setPicking("N"); // 拣料 |
| | | wrkMast.setExitMk("N"); // 退出 |
| | | wrkMast.setEmptyMk("N"); // 空板 |
| | | wrkMast.setLinkMis("Y"); |
| | | wrkMast.setCtnType(wrkMast1.getCtnType()); // 尾托标识 |
| | | wrkMast.setPdcType(wrkMast1.getPdcType()); // 空桶类型 |
| | | wrkMast.setAppeTime(now); |
| | | boolean res = wrkMastService.insert(wrkMast); |
| | | if (!res) { |
| | | throw new CoolException("保存工作档失败"); |
| | | } |
| | | StartupDto dto; |
| | | |
| | | // 生成工作档明细 |
| | | // todo 入成品桶库的物料 这里先根据空桶类型指定成品桶物料 |
| | | String matnr; |
| | | if(wrkMast1.getPdcType().equals("208L")) { |
| | | matnr = "YJ2025011814414206"; |
| | | } else { |
| | | matnr = "YJ2025011814412359"; |
| | | } |
| | | Mat mat = matService.selectByMatnr(matnr); |
| | | WrkDetl wrkDetl = new WrkDetl(); |
| | | wrkDetl.sync(mat); |
| | | wrkDetl.setWrkNo(workNo); |
| | | wrkDetl.setAnfme(wrkDetl1.getAnfme()); |
| | | wrkDetl.setZpallet(wrkMast1.getBarcode()); |
| | | wrkDetl.setIoTime(now); |
| | | wrkDetl.setAppeTime(now); |
| | | if (!wrkDetlService.insert(wrkDetl)) { |
| | | throw new CoolException("保存工作明细失败"); |
| | | } |
| | | // 判断贴标异常,复检重量异常的,不分配库位,去往异常口1090 |
| | | // if ( !param.isTbFlag() || param.getGrossWeight() < param.getWeight()) { |
| | | // |
| | | // // 生成工作档 ------------------------------------------------------ |
| | | // WrkMast wrkMast = new WrkMast(); |
| | | // wrkMast.setWrkNo(commonService.getWorkNo(0)); |
| | | // wrkMast.setIoTime(now); |
| | | // wrkMast.setIoType(3); // 入出库类型3.站到站 |
| | | // wrkMast.setWrkSts(2L); |
| | | // wrkMast.setIoPri(13D); // 优先级 |
| | | //// wrkMast.setCrnNo(dto.getCrnNo()); |
| | | // wrkMast.setSourceStaNo(param.getSourceStaNo()); |
| | | // wrkMast.setStaNo(1090); |
| | | //// wrkMast.setLocNo(dto.getLocNo()); |
| | | // wrkMast.setBarcode(wrkMast1.getBarcode()); // 托盘码 |
| | | // wrkMast.setFullPlt("Y"); // 满板:Y |
| | | //// wrkMast.setPicking("N"); // 拣料 |
| | | //// wrkMast.setExitMk("N"); // 退出 |
| | | //// wrkMast.setEmptyMk("N"); // 空板 |
| | | //// wrkMast.setLinkMis("Y"); |
| | | //// wrkMast.setCtnType(wrkMast1.getCtnType()); // 尾托标识 |
| | | // wrkMast.setPdcType(wrkMast1.getPdcType()); // 空桶类型 |
| | | // wrkMast.setAppeTime(now); |
| | | // wrkMastService.insert(wrkMast); |
| | | // |
| | | // // 生成工作档明细---------------------------------------------------- |
| | | // WrkDetl wrkDetl = new WrkDetl(); |
| | | // wrkDetl.sync(mat); |
| | | // wrkDetl.setWrkNo(wrkMast.getWrkNo()); |
| | | // wrkDetl.setAnfme(wrkDetl1.getAnfme()); |
| | | // wrkDetl.setZpallet(wrkMast1.getBarcode()); |
| | | // wrkDetl.setBatch(param.getBatch()); |
| | | // wrkDetl.setManuDate(param.getManuDate()); |
| | | // wrkDetl.setWeight(param.getWeight()); |
| | | // wrkDetl.setManLength(param.getGrossWeight()); |
| | | // wrkDetl.setInspect(1); // 贴标成功 |
| | | // wrkDetl.setIoTime(now); |
| | | // wrkDetl.setAppeTime(now); |
| | | // wrkDetlService.insert(wrkDetl); |
| | | // |
| | | // dto = new StartupDto(); |
| | | // dto.setWorkNo(wrkMast.getWrkNo()); |
| | | // dto.setSourceStaNo(wrkMast.getSourceStaNo()); |
| | | // dto.setStaNo(wrkMast.getStaNo()); |
| | | // } else |
| | | if(fhFlag) { // 直接发货 |
| | | // 生成工作档 ------------------------------------------------------ |
| | | WrkMast wrkMast = new WrkMast(); |
| | | wrkMast.setWrkNo(commonService.getWorkNo(0)); |
| | | wrkMast.setIoTime(now); |
| | | wrkMast.setIoType(3); // 入出库类型3.站到站 |
| | | wrkMast.setWrkSts(2L); |
| | | wrkMast.setIoPri(13D); // 优先级 |
| | | // wrkMast.setCrnNo(dto.getCrnNo()); |
| | | wrkMast.setSourceStaNo(param.getSourceStaNo()); |
| | | wrkMast.setStaNo(1016); |
| | | // wrkMast.setLocNo(dto.getLocNo()); |
| | | wrkMast.setBarcode(wrkMast1.getBarcode()); // 托盘码 |
| | | wrkMast.setFullPlt("Y"); // 满板:Y |
| | | // wrkMast.setPicking("N"); // 拣料 |
| | | // wrkMast.setExitMk("N"); // 退出 |
| | | // wrkMast.setEmptyMk("N"); // 空板 |
| | | // wrkMast.setLinkMis("Y"); |
| | | // wrkMast.setCtnType(wrkMast1.getCtnType()); // 尾托标识 |
| | | wrkMast.setPdcType(wrkMast1.getPdcType()); // 空桶类型 |
| | | wrkMast.setAppeTime(now); |
| | | wrkMastService.insert(wrkMast); |
| | | |
| | | // 完成旧任务(直供罐装线任务手动完成,出库任务任务号消失会自动完成) |
| | | if (wrkMast1.getIoType() == 2) { |
| | | wrkMast1.setWrkSts(4L); |
| | | // 生成工作档明细---------------------------------------------------- |
| | | WrkDetl wrkDetl = new WrkDetl(); |
| | | wrkDetl.sync(mat); |
| | | wrkDetl.setWrkNo(wrkMast.getWrkNo()); |
| | | wrkDetl.setAnfme(wrkDetl1.getAnfme()); |
| | | wrkDetl.setZpallet(wrkMast1.getBarcode()); |
| | | wrkDetl.setBatch(param.getBatch()); |
| | | wrkDetl.setManuDate(param.getManuDate()); |
| | | wrkDetl.setWeight(param.getWeight()); |
| | | wrkDetl.setManLength(param.getGrossWeight()); |
| | | wrkDetl.setInspect(1); |
| | | wrkDetl.setIoTime(now); |
| | | wrkDetl.setAppeTime(now); |
| | | wrkDetlService.insert(wrkDetl); |
| | | |
| | | dto = new StartupDto(); |
| | | dto.setWorkNo(wrkMast.getWrkNo()); |
| | | dto.setSourceStaNo(wrkMast.getSourceStaNo()); |
| | | dto.setStaNo(wrkMast.getStaNo()); |
| | | } else { // 检测成功,入成品库 |
| | | // 检索库位条件 |
| | | FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo(); |
| | | findLocNoAttributeVo.setMatnr(wrkDetl1.getMatnr()); |
| | | findLocNoAttributeVo.setModel(wrkDetl1.getModel()); |
| | | |
| | | // 分配库位 |
| | | dto = commonService.getLocNoNew(1, param.getSourceStaNo(), findLocNoAttributeVo, 1); |
| | | |
| | | // 创建新任务 |
| | | int workNo = dto.getWorkNo(); |
| | | // 生成工作档 |
| | | WrkMast wrkMast = new WrkMast(); |
| | | wrkMast.setWrkNo(workNo); |
| | | wrkMast.setIoTime(now); |
| | | wrkMast.setWrkSts(2L); // 工作状态:生成入库ID |
| | | wrkMast.setIoType(1); // 入出库状态:1.入库 |
| | | wrkMast.setIoPri(13D); // 优先级 |
| | | wrkMast.setCrnNo(dto.getCrnNo()); |
| | | wrkMast.setSourceStaNo(dto.getSourceStaNo()); |
| | | wrkMast.setStaNo(dto.getStaNo()); |
| | | wrkMast.setLocNo(dto.getLocNo()); |
| | | wrkMast.setBarcode(wrkMast1.getBarcode()); // 托盘码 |
| | | wrkMast.setFullPlt("Y"); // 满板:Y |
| | | wrkMast.setPicking("N"); // 拣料 |
| | | wrkMast.setExitMk("N"); // 退出 |
| | | wrkMast.setEmptyMk("N"); // 空板 |
| | | wrkMast.setLinkMis("Y"); |
| | | // wrkMast.setCtnType(wrkMast1.getCtnType()); // 尾托标识 |
| | | wrkMast.setPdcType(wrkMast1.getPdcType()); // 空桶类型 |
| | | wrkMast.setAppeTime(now); |
| | | wrkMastService.insert(wrkMast); |
| | | |
| | | // 生成工作档明细 |
| | | WrkDetl wrkDetl = new WrkDetl(); |
| | | wrkDetl.sync(mat); |
| | | wrkDetl.setWrkNo(workNo); |
| | | wrkDetl.setAnfme(wrkDetl1.getAnfme()); |
| | | wrkDetl.setZpallet(wrkMast1.getBarcode()); |
| | | wrkDetl.setBatch(param.getBatch()); |
| | | wrkDetl.setManuDate(param.getManuDate()); |
| | | wrkDetl.setWeight(param.getWeight()); |
| | | wrkDetl.setManLength(param.getGrossWeight()); |
| | | wrkDetl.setInspect(1); // 贴标成功 |
| | | wrkDetl.setIoTime(now); |
| | | wrkDetl.setAppeTime(now); |
| | | wrkDetlService.insert(wrkDetl); |
| | | |
| | | // 更新目标库位状态 |
| | | LocMast locMast = locMastService.selectById(dto.getLocNo()); |
| | | if (locMast.getLocSts().equals("O")) { |
| | | locMast.setLocSts("S"); // S.入库预约 |
| | | locMast.setModiTime(now); |
| | | if (!locMastService.updateById(locMast)) { |
| | | throw new CoolException("改变库位状态失败"); |
| | | } |
| | | } else { |
| | | log.error(dto.getLocNo() + "目标库位已被占用"); |
| | | throw new CoolException(dto.getLocNo() + "目标库位已被占用"); |
| | | } |
| | | } |
| | | |
| | | // 完成旧任务(直供罐装线任务手动完成) |
| | | if (wrkMast1.getIoType() == 3 && wrkMast1.getWrkSts() == 2) { |
| | | wrkMast1.setWrkSts(5L); |
| | | wrkMast1.setModiTime(now); |
| | | wrkMastService.updateById(wrkMast1); |
| | | } else if(wrkMast1.getIoType() == 101 && wrkMast1.getWrkSts() == 2) { |
| | | wrkMast1.setWrkSts(15L); |
| | | wrkMast1.setModiTime(now); |
| | | wrkMastService.updateById(wrkMast1); |
| | | } else { |
| | | log.error("罐装完成,完成旧任务失败:{}",wrkMast1.getWrkNo()); |
| | | return R.parse("罐装完成,完成旧任务失败:"+wrkMast1.getWrkNo()); |
| | | } |
| | | |
| | | // 更新源站点信息 |
| | | BasDevp basDevp = basDevpService.selectById(param.getSourceStaNo()); |
| | | basDevp.setWrkNo(workNo); |
| | | basDevp.setWrkNo(dto.getWorkNo()); |
| | | basDevp.setModiTime(now); |
| | | if (!basDevpService.updateById(basDevp)) { |
| | | throw new CoolException("更新源站失败"); |
| | | } |
| | | |
| | | log.info("WCS罐装入库接口返参:{},托盘码:{}", dto, wrkMast1.getBarcode()); |
| | | return R.ok(dto); |
| | | } |
| | | |
| | | // 异常口入库,获取库位 |
| | | @PostMapping("/pakin/abnormalMouthWarehousing/loc/v1") |
| | | @ResponseBody |
| | | @Transactional |
| | | public synchronized R abnormalMouthWarehousing(@RequestBody CanningLineInLocParam param) { |
| | | log.info("收到WCS异常口入库接口请求====>>入参:{}", param); |
| | | int wrkNo = param.getWrkNo(); |
| | | Integer sourceStaNo = param.getSourceStaNo(); |
| | | if (Cools.isEmpty(wrkNo)) { |
| | | return R.error("工作号不能为空"); |
| | | } |
| | | if (Cools.isEmpty(sourceStaNo)) { |
| | | return R.error("源站编号不能为空"); |
| | | } |
| | | |
| | | Date now = new Date(); |
| | | StartupDto dto; |
| | | |
| | | WrkMast wrkMast = wrkMastService.selectById(wrkNo); |
| | | if (wrkMast == null) { |
| | | throw new CoolException("异常口入库任务号无任务:" + wrkNo); |
| | | } else if (wrkMast.getLocNo() != null) { |
| | | throw new CoolException("异常口入库库位已分配:" + wrkMast.getLocNo()); |
| | | } |
| | | |
| | | if(!param.isTbFlag()) { //下线出库 |
| | | wrkMast.setSourceStaNo(1090); |
| | | wrkMast.setStaNo(1016); // 异常下线默认入库站点为1016 |
| | | wrkMastService.updateById(wrkMast); |
| | | return R.ok(); |
| | | } |
| | | |
| | | |
| | | WrkDetl wrkDetl = wrkDetlService.selectOne(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkNo)); |
| | | |
| | | // 检索库位条件 |
| | | FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo(); |
| | | findLocNoAttributeVo.setMatnr(wrkDetl.getMatnr()); |
| | | findLocNoAttributeVo.setModel(wrkDetl.getModel()); |
| | | |
| | | // 分配库位 |
| | | dto = commonService.getLocNoNew(1, param.getSourceStaNo(), findLocNoAttributeVo, 1); |
| | | |
| | | dto.setWorkNo(wrkMast.getWrkNo()); // 使用原工作号 |
| | | wrkMast.setIoType(1); // 入出库类型 1.入库 |
| | | wrkMast.setCrnNo(dto.getCrnNo()); |
| | | wrkMast.setLocNo(dto.getLocNo()); |
| | | wrkMast.setSourceStaNo(dto.getSourceStaNo()); |
| | | wrkMast.setStaNo(dto.getStaNo()); |
| | | wrkMastService.updateById(wrkMast); |
| | | |
| | | // 更新目标库位状态 |
| | | LocMast locMast = locMastService.selectById(dto.getLocNo()); |
| | |
| | | throw new CoolException(dto.getLocNo() + "目标库位已被占用"); |
| | | } |
| | | |
| | | log.info("WCS罐装入库接口返参:{},托盘码:{}", dto, wrkMast1.getBarcode()); |
| | | // 更新源站点信息 |
| | | BasDevp basDevp = basDevpService.selectById(sourceStaNo); |
| | | basDevp.setWrkNo(dto.getWorkNo()); |
| | | basDevp.setModiTime(now); |
| | | if (!basDevpService.updateById(basDevp)) { |
| | | throw new CoolException("更新源站失败"); |
| | | } |
| | | |
| | | log.info("WCS异常口入库接口返参:{},托盘码:{}", dto, wrkMast.getBarcode()); |
| | | return R.ok(dto); |
| | | } |
| | | |
| | | @Transactional(propagation = Propagation.REQUIRED) |
| | | public WaitPakin comb(String barcode, String matnr,int bucketCount) { |
| | | public WaitPakin comb(String barcode, int matnr,int bucketCount) { |
| | | if (Cools.isEmpty(barcode, matnr,bucketCount)) { |
| | | throw new CoolException(BaseRes.PARAM); |
| | | } |
| | |
| | | |
| | | |
| | | // for (DetlDto detlDto : detlDtos) { |
| | | Mat mat = matService.selectByMatnr(matnr); |
| | | Mat mat = matService.selectByMatnr(String.valueOf(matnr)); |
| | | if (Cools.isEmpty(mat)) { |
| | | throw new CoolException(matnr + "商品档案不存在"); |
| | | } |
| | |
| | | * 全板入库 |
| | | */ |
| | | @Transactional(propagation = Propagation.REQUIRED) |
| | | public StartupDto startupFullPutStore(Integer devpNo, String barcode, LocTypeDto locTypeDto, WaitPakin waitPakins, int locArea,boolean tailSupportFlag) { |
| | | public StartupDto startupFullPutStore(Integer devpNo, String barcode, LocTypeDto locTypeDto, WaitPakin waitPakins,boolean tailSupportFlag) { |
| | | // 源站点状态检测 |
| | | BasDevp sourceStaNo = basDevpService.checkSiteStatus(devpNo, true); |
| | | // 检索库位 |
| | | // List<String> matnrs = waitPakins.stream().map(WaitPakin::getMatnr).distinct().collect(Collectors.toList()); |
| | | // List<String> batchs = waitPakins.stream().map(WaitPakin::getBatch).distinct().collect(Collectors.toList()); |
| | | // FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo(matnrs.get(0), batchs.get(0)); |
| | | FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo(waitPakins); |
| | | StartupDto dto = commonService.getLocNoNew( 1, devpNo,findLocNoAttributeVo, locArea); |
| | | StartupDto dto = commonService.getLocNoNew( 1, devpNo,findLocNoAttributeVo,waitPakins.getModel().equals("空托盘") ? 1 : 2); |
| | | int workNo = dto.getWorkNo(); |
| | | Date now = new Date(); |
| | | // 生成工作档 |
| | |
| | | wrkMast.setEmptyMk("N"); // 空板 |
| | | wrkMast.setLinkMis("Y"); |
| | | wrkMast.setCtnType(tailSupportFlag ? 1 : 0); // 尾托标识 |
| | | wrkMast.setPdcType(waitPakins.getModel()); // 空桶类型 |
| | | wrkMast.setPdcType(waitPakins.getMatnr()); // 空桶类型 |
| | | // 操作人员数据 |
| | | wrkMast.setAppeTime(now); |
| | | wrkMast.setModiTime(now); |
| | |
| | | * 直供罐装线 |
| | | */ |
| | | @Transactional(propagation = Propagation.REQUIRED) |
| | | public StartupDto startupFullPutStore(SearchLocParam param,WaitPakin waitPakin) { |
| | | public StartupDto startupFullPutStore(SearchLocParam param,WaitPakin waitPakin,SearchLocParam.WantBucket wantBucket) { |
| | | |
| | | // 源站点状态检测 |
| | | BasDevp sourceStaNo = basDevpService.checkSiteStatus(param.getSourceStaNo(), true); |
| | | |
| | | String model = waitPakin.getModel(); |
| | | // // 判断空桶库有多少这种桶型 |
| | | // int count = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("matnr", param.getBucketType()).where("CAST(SUBSTRING(loc_no, 1, 2) as int) >= 9")); |
| | | // |
| | | // // 小于10个则直供罐装线,避免入空桶库后在出库 |
| | | // if (count > 10) { |
| | | // return null; |
| | | // } |
| | | |
| | | Integer wantBucketFlag = 0; // 罐装线号 |
| | | String wantBucketType; // 桶类型 |
| | | boolean flag = true; |
| | | for(Map.Entry<Integer,String> entry :param.getWantBucketFlag().entrySet()) { |
| | | wantBucketFlag = entry.getKey(); |
| | | wantBucketType = entry.getValue(); |
| | | if(model.equals(wantBucketType)) { // 当前桶类型是罐装线要的类型 |
| | | // 空桶库无该类型桶 |
| | | int count = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("model", model).where("CAST(SUBSTRING(loc_no, 1, 2) as int) >= 9")); |
| | | if (count == 0) { |
| | | flag = false; |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | if (flag) { // 不满足直供罐装线条件 |
| | | return null; |
| | | } |
| | | |
| | | StartupDto dto = commonService.getLocNo(param,wantBucketFlag); |
| | | StartupDto dto = commonService.getLocNo(param,wantBucket.getSite()); |
| | | int workNo = dto.getWorkNo(); |
| | | Date now = new Date(); |
| | | // 生成工作档 |
| | | WrkMast wrkMast = new WrkMast(); |
| | | wrkMast.setWrkNo(workNo); |
| | | wrkMast.setIoTime(now); |
| | | wrkMast.setWrkSts(2L); // 工作状态:生成入库ID |
| | | wrkMast.setIoType(2); // 入出库状态:2.直供罐装线 |
| | | wrkMast.setWrkSts(2L); |
| | | wrkMast.setIoType(3); // 入出库状态:3.站到站 |
| | | wrkMast.setIoPri(13D); // 优先级 |
| | | wrkMast.setCrnNo(dto.getCrnNo()); |
| | | // wrkMast.setCrnNo(dto.getCrnNo()); |
| | | wrkMast.setSourceStaNo(dto.getSourceStaNo()); |
| | | wrkMast.setStaNo(dto.getStaNo()); |
| | | // wrkMast.setLocNo(dto.getLocNo()); |
| | |
| | | wrkMast.setEmptyMk("N"); // 空板 |
| | | wrkMast.setLinkMis("Y"); |
| | | wrkMast.setCtnType(param.isTailSupportFlag() ? 1 : 0); // 尾托标识 |
| | | wrkMast.setPdcType(model); // 空桶类型 |
| | | wrkMast.setPdcType(waitPakin.getMatnr()); // 空桶类型 |
| | | // 操作人员数据 |
| | | wrkMast.setAppeTime(now); |
| | | wrkMast.setModiTime(now); |
| | |
| | | } |
| | | |
| | | @Transactional |
| | | public StartupDto emptyPlateIn(Integer devpNo, LocTypeDto locTypeDto, String barcode, int locArea) { |
| | | public StartupDto emptyPlateIn(Integer devpNo, LocTypeDto locTypeDto, String barcode, int locArea, int flag) { |
| | | // 源站点状态检测 |
| | | BasDevp sourceStaNo = basDevpService.checkSiteStatus(devpNo, true); |
| | | // 检索库位 |
| | |
| | | wrkMast.setExitMk("N"); // 退出 |
| | | wrkMast.setEmptyMk("Y"); // 空板 |
| | | wrkMast.setLinkMis("Y"); |
| | | wrkMast.setBarcode(barcode); |
| | | wrkMast.setCtnType(sourceStaNo.getCtnType()); // 容器类型 |
| | | wrkMast.setPltType(flag); // 空拖类型 |
| | | // wrkMast.setBarcode(barcode); |
| | | // wrkMast.setCtnType(sourceStaNo.getCtnType()); // 容器类型 |
| | | // 操作人员数据 |
| | | wrkMast.setAppeTime(new Date()); |
| | | wrkMast.setModiTime(new Date()); |