| | |
| | | package com.zy.common.web; |
| | | |
| | | import com.baomidou.mybatisplus.mapper.EntityWrapper; |
| | | import com.core.common.Cools; |
| | | import com.core.common.R; |
| | | import com.core.exception.CoolException; |
| | |
| | | import com.zy.common.model.LocTypeDto; |
| | | import com.zy.common.model.StartupDto; |
| | | import com.zy.common.service.CommonService; |
| | | import com.zy.common.service.erp.ErpService; |
| | | import com.zy.common.web.param.SearchLocParam; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import java.util.Collections; |
| | | import java.util.ArrayList; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.stream.Collectors; |
| | |
| | | private LocDetlService locDetlService; |
| | | @Autowired |
| | | private MatService matService; |
| | | @Autowired |
| | | private ErpService erpService; |
| | | |
| | | @PostMapping("/pakin/loc/v1") |
| | | @ResponseBody |
| | |
| | | if (Cools.isEmpty(param.getSourceStaNo())) { |
| | | return R.error("源站编号不能为空"); |
| | | } |
| | | // List<WaitPakin> waitPakins = null; |
| | | Mat mat = null; |
| | | List<WaitPakin> waitPakins = null; |
| | | ArrayList<Mat> mats = new ArrayList<>(); |
| | | if (param.getIoType() == 1) { |
| | | if (Cools.isEmpty(param.getBarcode())) { |
| | | return R.error("条码不能为空"); |
| | | } |
| | | mat = matService.selectByMatnr(param.getBarcode()); |
| | | if (Cools.isEmpty(mat)) { |
| | | return R.error(param.getBarcode() + "条码商品资料不存在,请先添加!"); |
| | | // Goods goods = erpService.selectGoodsOne(param.getBarcode()); |
| | | // if (Cools.isEmpty(goods)) { |
| | | // return R.error(param.getBarcode() + "条码不存在,请检查ERP数据!"); |
| | | // } else { |
| | | // erpService.updateStateForGoods(param.getBarcode(), 2); |
| | | // } |
| | | // mat = matService.selectByMatnr(goods.getMaterialNO()); |
| | | // if (Cools.isEmpty(mat)) { |
| | | // return R.error(goods.getMaterialNO() + "条码商品资料不存在,请先添加!"); |
| | | // } |
| | | 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 || wrkMast.getIoType() == 104 || wrkMast.getIoType() == 107)) { |
| | | return R.parse(CodeRes.PICK_600); |
| | | } |
| | | return R.parse(CodeRes.NO_COMB_700); |
| | | } |
| | | // 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 || wrkMast.getIoType() == 104 || wrkMast.getIoType() == 107)) { |
| | | // 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("工作档/库存条码数据已存在"); |
| | | // } |
| | | |
| | | for (WaitPakin waitPakin : waitPakins) { |
| | | Mat mat = matService.selectByMatnr(waitPakin.getMatnr()); |
| | | mat.setWeight(waitPakin.getAnfme()); |
| | | mats.add(mat); |
| | | } |
| | | |
| | | 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("工作档/库存条码数据已存在"); |
| | | } |
| | | } |
| | | // if (Cools.isEmpty(param.getLocType1())){ |
| | | // return R.error("高低检测信号不能为空"); |
| | |
| | | // 源站点状态检测 |
| | | BasDevp sourceStaNo = basDevpService.checkSiteStatus(param.getSourceStaNo(), true); |
| | | LocTypeDto locTypeDto = new LocTypeDto(sourceStaNo); |
| | | locTypeDto.setLocType1(param.getLocType1()); |
| | | |
| | | StartupDto dto = null; |
| | | switch (param.getIoType()) { |
| | | case 1://满托盘入库 |
| | | assert mat != null; |
| | | dto = startupFullPutStore(param.getSourceStaNo(), null, locTypeDto, mat); |
| | | dto = startupFullPutStore(param.getSourceStaNo(), param.getBarcode(), locTypeDto, mats, waitPakins); |
| | | break; |
| | | case 10://空托盘入库 |
| | | dto = emptyPlateIn(param.getSourceStaNo(), locTypeDto, null); |
| | | dto = emptyPlateIn(param.getSourceStaNo(), locTypeDto, param.getBarcode()); |
| | | break; |
| | | case 103:// 拣料入库 |
| | | case 104:// 并板入库 |
| | |
| | | * 全板入库 |
| | | */ |
| | | @Transactional |
| | | public StartupDto startupFullPutStore(Integer devpNo, String barcode, LocTypeDto locTypeDto, Mat mat) { |
| | | public StartupDto startupFullPutStore(Integer devpNo, String barcode, LocTypeDto locTypeDto, List<Mat> mats, List<WaitPakin> waitPakins) { |
| | | // 源站点状态检测 |
| | | BasDevp sourceStaNo = basDevpService.checkSiteStatus(devpNo, true); |
| | | // 检索库位 |
| | | List<Mat> mats = Collections.singletonList(mat); |
| | | List<String> matnrList = mats.stream().map(Mat::getMaktx).distinct().collect(Collectors.toList()); |
| | | List<String> matnrList = mats.stream().map(Mat::getMatnr).distinct().collect(Collectors.toList()); |
| | | StartupDto dto = commonService.getLocNo(1, 1, devpNo, matnrList, locTypeDto,0); |
| | | int workNo = dto.getWorkNo(); |
| | | Date now = new Date(); |
| | |
| | | if (!res) { |
| | | throw new CoolException("保存工作档失败"); |
| | | } |
| | | // 生成工作档明细 |
| | | WrkDetl wrkDetl = new WrkDetl(); |
| | | wrkDetl.sync(mat); |
| | | wrkDetl.setAnfme(1.0D); |
| | | wrkDetl.setWrkNo(wrkMast.getWrkNo()); |
| | | wrkDetl.setIoTime(wrkMast.getIoTime()); |
| | | wrkDetl.setAppeTime(now); |
| | | wrkDetl.setModiTime(now); |
| | | if (!wrkDetlService.insert(wrkDetl)) { |
| | | throw new CoolException("保存工作明细失败"); |
| | | } |
| | | waitPakins.forEach(waitPakin -> { |
| | | Mat mat = matService.selectByMatnr(waitPakin.getMatnr()); |
| | | if(Cools.isEmpty(mat)){ |
| | | throw new CoolException(waitPakin.getMatnr() + "该物料号无法查询,请查看物料信息是否存在"); |
| | | } |
| | | WrkDetl wrkDetl = new WrkDetl(); |
| | | BeanUtils.copyProperties(waitPakin,wrkDetl); |
| | | wrkDetl.setZpallet(barcode); |
| | | wrkDetl.setWrkNo(wrkMast.getWrkNo()); |
| | | wrkDetl.setIoTime(wrkMast.getIoTime()); |
| | | wrkDetl.setAppeTime(now); |
| | | wrkDetl.setModiTime(now); |
| | | if (!wrkDetlService.insert(wrkDetl)) { |
| | | throw new CoolException("保存工作明细失败"); |
| | | } |
| | | }); |
| | | // for (Mat mat : mats) { |
| | | // // 生成工作档明细 |
| | | // WrkDetl wrkDetl = new WrkDetl(); |
| | | // wrkDetl.sync(mat); |
| | | // wrkDetl.setAnfme(mat.getWeight()); |
| | | // wrkDetl.setZpallet(barcode); |
| | | // wrkDetl.setWrkNo(wrkMast.getWrkNo()); |
| | | // wrkDetl.setIoTime(wrkMast.getIoTime()); |
| | | // wrkDetl.setAppeTime(now); |
| | | // wrkDetl.setModiTime(now); |
| | | // if (!wrkDetlService.insert(wrkDetl)) { |
| | | // throw new CoolException("保存工作明细失败"); |
| | | // } |
| | | // } |
| | | |
| | | // // 更新入库通知档 ioStatus ===>> Y |
| | | // Wrapper<WaitPakin> wrapper = new EntityWrapper<WaitPakin>() |
| | | // .eq("zpallet", barcode); |