| | |
| | | import com.core.common.SnowflakeIdWorker; |
| | | import com.core.exception.CoolException; |
| | | import com.zy.asrs.entity.*; |
| | | import com.zy.asrs.entity.param.OpenOrderCompleteParam; |
| | | import com.zy.asrs.entity.param.OpenOrderPakinParam; |
| | | import com.zy.asrs.entity.param.OpenOrderPakoutParam; |
| | | import com.zy.asrs.entity.param.*; |
| | | import com.zy.asrs.entity.result.OpenOrderCompeteResult; |
| | | import com.zy.asrs.entity.result.StockVo; |
| | | import com.zy.asrs.mapper.TagMapper; |
| | | import com.zy.asrs.service.*; |
| | | import com.zy.asrs.utils.MatUtils; |
| | | import com.zy.common.model.DetlDto; |
| | | import com.zy.common.utils.NodeUtils; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | |
| | | private PackService packService; |
| | | @Autowired |
| | | private TagService tagService; |
| | | @Autowired |
| | | private TagMapper tagMapper; |
| | | @Autowired |
| | | private WrkMastService wrkMastService; |
| | | @Autowired |
| | | private BasDevpService basDevpService; |
| | | @Autowired |
| | | private WrkDetlService wrkDetlService; |
| | | |
| | | @Override |
| | | @Transactional |
| | |
| | | } |
| | | |
| | | @Override |
| | | @Transactional |
| | | public void pakoutOrderCreate(OpenOrderPakoutParam param) { |
| | | Order order = orderService.selectByNo(param.getOrderNo()); |
| | | // 如果单据不存在则添加;如果单据存在,作业中无法修改,反之则修改单据 |
| | | if (!Cools.isEmpty(order)) { |
| | | throw new CoolException(param.getOrderNo() + "单据已存在,请勿重复提交"); |
| | | if (order.getSettle() > 1L) { |
| | | throw new CoolException(param.getOrderNo() + "正在出库,无法修改单据"); |
| | | } |
| | | orderService.remove(order.getId()); |
| | | } |
| | | DocType docType = docTypeService.selectOrAdd(param.getOrderType(), Boolean.FALSE); |
| | | Date now = new Date(); |
| | |
| | | |
| | | @Override |
| | | @Transactional |
| | | public void packageUp(String barcode) { |
| | | Pack pack = packService.selectByBarcode(barcode); |
| | | public void packageUp(PackParam param) { |
| | | if (Cools.isEmpty(param.getBarcode())) { |
| | | throw new CoolException("barcode不能为空"); |
| | | } |
| | | Mat analyse = MatUtils.analyseMat(param.getBarcode()); |
| | | Pack pack = packService.selectByBarcode(param.getBarcode()); |
| | | if (null != pack) { |
| | | throw new CoolException(barcode + "重复提交"); |
| | | throw new CoolException(param.getBarcode() + "重复提交"); |
| | | } |
| | | Date now = new Date(); |
| | | pack = new Pack( |
| | | barcode, // 条码[非空] |
| | | null, // 商品编号 |
| | | null, // 批号 |
| | | param.getBarcode(), // 条码[非空] |
| | | analyse.getMatnr(), // 商品编号 |
| | | analyse.getBarcode(), // 序列码 |
| | | 1L, // 订单状态 |
| | | 1, // 状态 |
| | | now, // 添加时间 |
| | |
| | | throw new CoolException("服务器内部错误,请联系管理员"); |
| | | } |
| | | |
| | | Mat analyse = MatUtils.analyseMat(barcode); |
| | | Mat mat = matService.selectByMatnr(analyse.getMatnr()); |
| | | if (mat == null) { |
| | | mat = new Mat(); |
| | | // todo |
| | | mat.setTagId(tagService.getTop().getId()); |
| | | // 分类 |
| | | Long tagId; |
| | | // 一级分类 |
| | | if (!Cools.isEmpty(param.getGroupCode()) && !Cools.isEmpty(param.getGroupName())) { |
| | | Tag priTag = tagService.selectByName(param.getGroupCode(), 2); |
| | | if (priTag == null) { |
| | | Tag top = tagService.getTop(); |
| | | NodeUtils nodeUtils = new NodeUtils(); |
| | | nodeUtils.executePath(top.getId()); |
| | | priTag = new Tag( |
| | | null, // 编号 |
| | | param.getGroupCode(), // 名称 |
| | | top.getId(), // 父级 |
| | | top.getName(), // 父级名称 |
| | | nodeUtils.path.toString(), // 关联路径 |
| | | nodeUtils.pathName.toString(), // 关联路径名 |
| | | 0, // 类型 |
| | | null, // 负责人 |
| | | null, // 图片 |
| | | null, // 简要描述 |
| | | null, // 数量 |
| | | 2, // 等级 |
| | | null, // 排序 |
| | | 1, // 状态 |
| | | now, // 添加时间 |
| | | null, // 添加人员 |
| | | now, // 修改时间 |
| | | null, // 修改人员 |
| | | null // 备注 |
| | | ); |
| | | if (tagMapper.insert(priTag) == 0) { |
| | | throw new CoolException("服务器内部错误,请联系管理员"); |
| | | } |
| | | } |
| | | // 二级分类 |
| | | Tag secTag = tagService.selectByName(param.getGroupName(), 3); |
| | | if (secTag == null) { |
| | | NodeUtils nodeUtils = new NodeUtils(); |
| | | nodeUtils.executePath(priTag.getId()); |
| | | secTag = new Tag( |
| | | null, // 编号 |
| | | param.getGroupName(), // 名称 |
| | | priTag.getId(), // 父级 |
| | | priTag.getName(), // 父级名称 |
| | | nodeUtils.path.toString(), // 关联路径 |
| | | nodeUtils.pathName.toString(), // 关联路径名 |
| | | 0, // 类型 |
| | | null, // 负责人 |
| | | null, // 图片 |
| | | null, // 简要描述 |
| | | null, // 数量 |
| | | 3, // 等级 |
| | | null, // 排序 |
| | | 1, // 状态 |
| | | now, // 添加时间 |
| | | null, // 添加人员 |
| | | now, // 修改时间 |
| | | null, // 修改人员 |
| | | null // 备注 |
| | | ); |
| | | if (tagMapper.insert(secTag) == 0) { |
| | | throw new CoolException("服务器内部错误,请联系管理员"); |
| | | } |
| | | } |
| | | tagId = secTag.getId(); |
| | | } else { |
| | | tagId = tagService.getTop().getId(); |
| | | } |
| | | mat.setTagId(tagId); |
| | | mat.setMatnr(analyse.getMatnr()); |
| | | mat.setMaktx(barcode); |
| | | mat.setMaktx(param.getMaterialName()); |
| | | mat.setSpecs(param.getConfigureDesc()); |
| | | mat.setModel(analyse.getModel()); |
| | | mat.setStatus(1); |
| | | mat.setCreateTime(now); |
| | | mat.setUpdateTime(now); |
| | | mat.setMemo("打包上线"); |
| | | if (!matService.insert(mat)) { |
| | | throw new CoolException("服务器内部错误,请联系管理员"); |
| | | } else { |
| | | log.info("打包上线添加新物料[商品编号:{}]", mat.getMatnr()); |
| | | } |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | @Transactional |
| | | public void syncMat(MatSyncParam param) { |
| | | if (Cools.isEmpty(param.getMatDetails()) || param.getMatDetails().size() <=0 ) { |
| | | throw new CoolException("商品数据为空"); |
| | | } |
| | | |
| | | for(MatSyncParam.MatParam matParam : param.getMatDetails()){ |
| | | if(Cools.isEmpty(matParam.getMatnr())){ |
| | | throw new CoolException("商品编码不能为空"); |
| | | } |
| | | |
| | | Date now = new Date(); |
| | | Mat mat = matService.selectByMatnr(matParam.getMatnr()); |
| | | if (mat == null) { |
| | | mat = new Mat(); |
| | | // 分类 |
| | | Long tagId; |
| | | // 一级分类 |
| | | if (!Cools.isEmpty(matParam.getGroupCode()) && !Cools.isEmpty(matParam.getGroupName())) { |
| | | Tag priTag = tagService.selectByName(matParam.getGroupCode(), 2); |
| | | if (priTag == null) { |
| | | Tag top = tagService.getTop(); |
| | | NodeUtils nodeUtils = new NodeUtils(); |
| | | nodeUtils.executePath(top.getId()); |
| | | priTag = new Tag( |
| | | null, // 编号 |
| | | matParam.getGroupCode(), // 名称 |
| | | top.getId(), // 父级 |
| | | top.getName(), // 父级名称 |
| | | nodeUtils.path.toString(), // 关联路径 |
| | | nodeUtils.pathName.toString(), // 关联路径名 |
| | | 0, // 类型 |
| | | null, // 负责人 |
| | | null, // 图片 |
| | | null, // 简要描述 |
| | | null, // 数量 |
| | | 2, // 等级 |
| | | null, // 排序 |
| | | 1, // 状态 |
| | | now, // 添加时间 |
| | | null, // 添加人员 |
| | | now, // 修改时间 |
| | | null, // 修改人员 |
| | | null // 备注 |
| | | ); |
| | | if (tagMapper.insert(priTag) == 0) { |
| | | throw new CoolException("服务器内部错误,请联系管理员"); |
| | | } |
| | | } |
| | | // 二级分类 |
| | | Tag secTag = tagService.selectByName(matParam.getGroupName(), 3); |
| | | if (secTag == null) { |
| | | NodeUtils nodeUtils = new NodeUtils(); |
| | | nodeUtils.executePath(priTag.getId()); |
| | | secTag = new Tag( |
| | | null, // 编号 |
| | | matParam.getGroupName(), // 名称 |
| | | priTag.getId(), // 父级 |
| | | priTag.getName(), // 父级名称 |
| | | nodeUtils.path.toString(), // 关联路径 |
| | | nodeUtils.pathName.toString(), // 关联路径名 |
| | | 0, // 类型 |
| | | null, // 负责人 |
| | | null, // 图片 |
| | | null, // 简要描述 |
| | | null, // 数量 |
| | | 3, // 等级 |
| | | null, // 排序 |
| | | 1, // 状态 |
| | | now, // 添加时间 |
| | | null, // 添加人员 |
| | | now, // 修改时间 |
| | | null, // 修改人员 |
| | | null // 备注 |
| | | ); |
| | | if (tagMapper.insert(secTag) == 0) { |
| | | throw new CoolException("服务器内部错误,请联系管理员"); |
| | | } |
| | | } |
| | | tagId = secTag.getId(); |
| | | } else { |
| | | tagId = tagService.getTop().getId(); |
| | | } |
| | | mat.sync(param); |
| | | // mat.setMatnr(param.getMatnr()); |
| | | // mat.setMaktx(param.getMaktx()); |
| | | // mat.setSpecs(param.getSpecs()); |
| | | // mat.setModel(param.getModel()); |
| | | |
| | | mat.setTagId(tagId); |
| | | mat.setStatus(1); |
| | | mat.setCreateTime(now); |
| | | mat.setUpdateTime(now); |
| | | if (!matService.insert(mat)) { |
| | | throw new CoolException("服务器内部错误,请联系管理员"); |
| | | } else { |
| | | log.info("同步新物料[商品编号:{}]", mat.getMatnr()); |
| | | } |
| | | } else { |
| | | mat.sync(param); |
| | | if (!matService.update(mat, new EntityWrapper<Mat>().eq("matnr",matParam.getMatnr()))) { |
| | | throw new CoolException("更新已存在商品信息失败,请联系管理员"); |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | /*...........................徐工汉云..............以下.............上饶江铜...........................*/ |
| | | /*............................Created by Monkey D. Luffy on 2023.07.19.............................*/ |
| | | |
| | | /* |
| | | * 贴标机申请获取货物信息 |
| | | * */ |
| | | @Override |
| | | @Transactional |
| | | public LabellerMatParam labellerMat(LabellerMatParam param){ |
| | | if (Cools.isEmpty(param.getDevNo())){ |
| | | throw new CoolException("参数:站点号 devNo为空"); |
| | | }else if (Cools.isEmpty(param.getLabNo())){ |
| | | throw new CoolException("参数:贴标机号 labNo为空"); |
| | | } |
| | | BasDevp basDevp = basDevpService.selectById(param.getDevNo()); |
| | | if (Cools.isEmpty(basDevp)){ |
| | | throw new CoolException("参数:站点号 devNo不存在"); |
| | | }else if (Cools.isEmpty(basDevp.getWrkNo()) || basDevp.getWrkNo()==0){ |
| | | throw new CoolException("站点:"+param.getDevNo()+" 不存在工作中任务"); |
| | | } |
| | | |
| | | WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", basDevp.getWrkNo())); |
| | | if (Cools.isEmpty(wrkMast)){ |
| | | throw new CoolException("站点:"+param.getDevNo()+" 工作中任务不存在,任务号:"+basDevp.getWrkNo()); |
| | | }else if (!wrkMast.getWrkSts().equals(52L)){ |
| | | throw new CoolException("站点:"+param.getDevNo()+" 工作中任务状态已变更,请勿重复申请,任务号:"+basDevp.getWrkNo()+",任务状态:"+wrkMast.getWrkSts$()); |
| | | } |
| | | |
| | | List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", basDevp.getWrkNo())); |
| | | if (Cools.isEmpty(wrkDetls) || wrkDetls.size()==0){ |
| | | throw new CoolException("站点:"+param.getDevNo()+" 工作中任务不存在任务明细,任务号:"+basDevp.getWrkNo()); |
| | | } |
| | | |
| | | LabellerMatParam labellerMatParam = new LabellerMatParam(); |
| | | labellerMatParam.setDevNo(param.getDevNo()); |
| | | labellerMatParam.setLabNo(param.getLabNo()); |
| | | ArrayList<LabellerMatParam.CombMat> combMats = new ArrayList<>(); |
| | | String orderNo = ""; |
| | | |
| | | for (WrkDetl wrkDetl:wrkDetls){ |
| | | LabellerMatParam.CombMat combMat = new LabellerMatParam.CombMat(wrkDetl); |
| | | orderNo=wrkDetl.getOrderNo(); |
| | | combMat.setTemp1("1"); |
| | | combMats.add(combMat); |
| | | } |
| | | |
| | | labellerMatParam.setCombMats(combMats); |
| | | labellerMatParam.setLabellingTime(DateUtils.convert(new Date())); |
| | | labellerMatParam.setWrkNo(basDevp.getWrkNo().toString()); |
| | | labellerMatParam.setLabTemplate("1"); |
| | | labellerMatParam.setOrderNo(orderNo); |
| | | wrkMast.setWrkSts(53L); |
| | | if (!wrkMastService.updateById(wrkMast)){ |
| | | throw new CoolException("异常,请重新申请"); |
| | | } |
| | | return labellerMatParam; |
| | | } |
| | | |
| | | /* |
| | | * 贴标机贴标完成 |
| | | * */ |
| | | @Override |
| | | @Transactional |
| | | public void labellerComplete(LabellerCompleteParam param) { |
| | | if (Cools.isEmpty(param.getDevNo())){ |
| | | throw new CoolException("参数:站点号 devNo为空"); |
| | | }else if (Cools.isEmpty(param.getLabNo())){ |
| | | throw new CoolException("参数:贴标机号 labNo为空"); |
| | | }else if (Cools.isEmpty(param.getLabResult())){ |
| | | throw new CoolException("参数:贴标结果 labResult为空"); |
| | | }else if (Cools.isEmpty(param.getWrkNo())){ |
| | | throw new CoolException("参数:贴标任务号 wrkNo为空"); |
| | | } |
| | | BasDevp basDevp = basDevpService.selectById(param.getDevNo()); |
| | | if (Cools.isEmpty(basDevp)){ |
| | | throw new CoolException("参数:站点号 devNo不存在"); |
| | | }else if (Cools.isEmpty(basDevp.getWrkNo()) || basDevp.getWrkNo()==0 ){ |
| | | throw new CoolException("站点:"+param.getDevNo()+" 不存在工作中任务"); |
| | | }else if(!basDevp.getWrkNo().toString().equals(param.getWrkNo())){ |
| | | throw new CoolException("站点:"+param.getDevNo()+" 进行中任务号="+basDevp.getWrkNo()+" 与贴标结果返回任务号="+param.getWrkNo()+" 不一致"); |
| | | } |
| | | |
| | | WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", basDevp.getWrkNo())); |
| | | if (Cools.isEmpty(wrkMast)){ |
| | | throw new CoolException("站点:"+param.getDevNo()+" 工作中任务不存在,任务号:"+basDevp.getWrkNo()); |
| | | }else if (!wrkMast.getWrkSts().equals(53L)){ |
| | | throw new CoolException("站点:"+param.getDevNo()+" 工作中任务状态已变更,请勿重复申请,任务号:"+basDevp.getWrkNo()+",任务状态:"+wrkMast.getWrkSts$()); |
| | | } |
| | | |
| | | if (param.getLabResult().equals("OK")){ |
| | | wrkMast.setWrkSts(54L); |
| | | if (!wrkMastService.updateById(wrkMast)){ |
| | | throw new CoolException("异常,请重新申请"); |
| | | } |
| | | }else if (param.getLabResult().equals("NG")){ |
| | | wrkMast.setWrkSts(52L); |
| | | if (!wrkMastService.updateById(wrkMast)){ |
| | | throw new CoolException("异常,请重新申请"); |
| | | } |
| | | }else { |
| | | throw new CoolException("参数:贴标结果:labResult"+param.getLabResult()+";请按规则发送:成功:OK 、失败:NG"); |
| | | } |
| | | |
| | | } |
| | | |
| | | /* |
| | | * 中控:码垛完成下发入库信息 |
| | | * */ |
| | | @Override |
| | | @Transactional |
| | | public void palletizingComplete(PalletizingCompleteParam param) { |
| | | |
| | | } |
| | | |
| | | /* |
| | | * 桁架上位软件:单次拆垛完成通知 |
| | | * */ |
| | | @Override |
| | | @Transactional |
| | | public void singleUnstackingComplete(SingleUnstackingCompleteParam param) { |
| | | |
| | | } |
| | | |
| | | /* |
| | | * 桁架上位软件:单托拆垛完成通知 |
| | | * */ |
| | | @Override |
| | | @Transactional |
| | | public void singleMountUnstackingComplete(SingleMountUnstackingCompleteParam param) { |
| | | |
| | | } |
| | | |
| | | /*...........................上饶江铜..............以上.............徐工汉云...........................*/ |
| | | } |