package com.zy.asrs.service.impl; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.common.Cools; import com.core.common.DateUtils; import com.core.common.R; import com.core.common.SnowflakeIdWorker; import com.core.exception.CoolException; import com.zy.asrs.entity.*; 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.model.enums.WorkNoType; import com.zy.common.service.CommonService; import com.zy.common.utils.NodeUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.Date; import java.util.List; /** * Created by vincent on 2022/4/9 */ @Slf4j @Service public class OpenServiceImpl implements OpenService { @Autowired private OrderService orderService; @Autowired private OrderDetlService orderDetlService; @Autowired private SnowflakeIdWorker snowflakeIdWorker; @Autowired private DocTypeService docTypeService; @Autowired private MatService matService; @Autowired private LocDetlService locDetlService; @Autowired private PackService packService; @Autowired private TagService tagService; @Autowired private TagMapper tagMapper; @Autowired private WrkMastService wrkMastService; @Autowired private BasDevpService basDevpService; @Autowired private WrkDetlService wrkDetlService; @Autowired private WaitPakinService waitPakinService; @Autowired private CommonService commonService; @Autowired private LocDetlRullUpDetailService locDetlRullUpDetailService; @Autowired private WrkDetlSingleService wrkDetlSingleService; @Autowired private WrkMastStaService wrkMastStaService; @Autowired private WrkMastStaLogService wrkMastStaLogService; @Override @Transactional public void pakinOrderCreate(OpenOrderPakinParam param) { Order order = orderService.selectByNo(param.getOrderNo()); if (!Cools.isEmpty(order)) { throw new CoolException(param.getOrderNo() + "单据已存在,请勿重复提交"); } DocType docType = docTypeService.selectOrAdd(param.getOrderType(), Boolean.TRUE); Date now = new Date(); // 单据主档 order = new Order( String.valueOf(snowflakeIdWorker.nextId()), // 编号[非空] param.getOrderNo(), // 订单编号 DateUtils.convert(now), // 单据日期 docType.getDocId(), // 单据类型 null, // 项目编号 null, // null, // 调拨项目编号 null, // 初始票据号 null, // 票据号 null, // 客户编号 null, // 客户 null, // 联系方式 null, // 操作人员 null, // 合计金额 null, // 优惠率 null, // 优惠金额 null, // 销售或采购费用合计 null, // 实付金额 null, // 付款类型 null, // 业务员 null, // 结算天数 null, // 邮费支付类型 null, // 邮费 null, // 付款时间 null, // 发货时间 null, // 物流名称 null, // 物流单号 1L, // 订单状态 1, // 状态 9527L, // 添加人员 now, // 添加时间 9527L, // 修改人员 now, // 修改时间 null // 备注 ); if (!orderService.insert(order)) { throw new CoolException("生成单据主档失败,请联系管理员"); } // 单据明细档 List list = new ArrayList<>(); List orderDetails = param.getOrderDetails(); for (DetlDto detail : orderDetails) { DetlDto dto = new DetlDto(detail.getMatnr(), detail.getBatch(), detail.getAnfme()); if (DetlDto.has(list, dto)) { DetlDto detlDto = DetlDto.find(list, dto.getMatnr(), dto.getBatch()); assert detlDto != null; detlDto.setAnfme(detlDto.getAnfme() + detail.getAnfme()); } else { list.add(dto); } } for (DetlDto detlDto : list) { Mat mat = matService.selectByMatnr(detlDto.getMatnr()); if (Cools.isEmpty(mat)) { throw new CoolException(detlDto.getMatnr() + "编号商品检索失败,请先添加商品"); } OrderDetl orderDetl = new OrderDetl(); orderDetl.sync(mat); orderDetl.setBatch(detlDto.getBatch()); orderDetl.setAnfme(detlDto.getAnfme()); orderDetl.setOrderId(order.getId()); orderDetl.setOrderNo(order.getOrderNo()); orderDetl.setCreateBy(9527L); orderDetl.setCreateTime(now); orderDetl.setUpdateBy(9527L); orderDetl.setUpdateTime(now); orderDetl.setStatus(1); orderDetl.setQty(0.0D); if (!orderDetlService.insert(orderDetl)) { throw new CoolException("生成单据明细失败,请联系管理员"); } } } @Override @Transactional public List pakinOrderComplete(OpenOrderCompleteParam param) { List results = new ArrayList<>(); if (!Cools.isEmpty(param) && !Cools.isEmpty(param.getOrderNo())) { // 指定订单 Order order = orderService.selectByNo(param.getOrderNo()); if (null != order) { OpenOrderCompeteResult result = new OpenOrderCompeteResult(); results.add(result); result.setOrderNo(order.getOrderNo()); result.setOrderTime(order.getOrderTime()); result.setOrderType(order.getDocType$()); List orderDetls = orderDetlService.selectByOrderId(order.getId()); for (OrderDetl orderDetl : orderDetls) { result.getOrderDetails().add(new DetlDto(orderDetl.getOrderNo(), orderDetl.getMatnr(), orderDetl.getBatch(), orderDetl.getQty())); } if (order.getSettle() == 4L) { // 修改订单状态 4.完成 ===>> 6.已上报 if (!orderService.updateSettle(order.getId(), 6L, null)) { throw new CoolException("服务器内部错误,请联系管理员"); } } } } else { // 所有订单 List orders = orderService.selectList(new EntityWrapper().eq("settle", 4L)); for (Order order : orders) { OpenOrderCompeteResult result = new OpenOrderCompeteResult(); results.add(result); result.setOrderNo(order.getOrderNo()); result.setOrderTime(order.getOrderTime()); result.setOrderType(order.getDocType$()); List orderDetls = orderDetlService.selectByOrderId(order.getId()); for (OrderDetl orderDetl : orderDetls) { result.getOrderDetails().add(new DetlDto(orderDetl.getOrderNo(), orderDetl.getMatnr(), orderDetl.getBatch(), orderDetl.getQty())); } // 修改订单状态 4.完成 ===>> 6.已上报 if (!orderService.updateSettle(order.getId(), 6L, null)) { throw new CoolException("服务器内部错误,请联系管理员"); } } } return results; } @Override @Transactional public void pakoutOrderCreate(OpenOrderPakoutParam param) { Order order = orderService.selectByNo(param.getOrderNo()); // 如果单据不存在则添加;如果单据存在,作业中无法修改,反之则修改单据 if (!Cools.isEmpty(order)) { 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(); // 单据主档 order = new Order( String.valueOf(snowflakeIdWorker.nextId()), // 编号[非空] param.getOrderNo(), // 订单编号 DateUtils.convert(now), // 单据日期 docType.getDocId(), // 单据类型 null, // 项目编号 null, // null, // 调拨项目编号 null, // 初始票据号 null, // 票据号 null, // 客户编号 null, // 客户 null, // 联系方式 null, // 操作人员 null, // 合计金额 null, // 优惠率 null, // 优惠金额 null, // 销售或采购费用合计 null, // 实付金额 null, // 付款类型 null, // 业务员 null, // 结算天数 null, // 邮费支付类型 null, // 邮费 null, // 付款时间 null, // 发货时间 null, // 物流名称 null, // 物流单号 1L, // 订单状态 1, // 状态 9527L, // 添加人员 now, // 添加时间 9527L, // 修改人员 now, // 修改时间 null // 备注 ); if (!orderService.insert(order)) { throw new CoolException("生成单据主档失败,请联系管理员"); } // 单据明细档 List list = new ArrayList<>(); List orderDetails = param.getOrderDetails(); for (DetlDto detail : orderDetails) { DetlDto dto = new DetlDto(detail.getMatnr(), detail.getBatch(), detail.getAnfme()); if (DetlDto.has(list, dto)) { DetlDto detlDto = DetlDto.find(list, dto.getMatnr(), dto.getBatch()); assert detlDto != null; detlDto.setAnfme(detlDto.getAnfme() + detail.getAnfme()); } else { list.add(dto); } } for (DetlDto detlDto : list) { Mat mat = matService.selectByMatnr(detlDto.getMatnr()); if (Cools.isEmpty(mat)) { throw new CoolException(detlDto.getMatnr() + "编号商品检索失败,请先添加商品"); } OrderDetl orderDetl = new OrderDetl(); orderDetl.sync(mat); orderDetl.setBatch(detlDto.getBatch()); orderDetl.setAnfme(detlDto.getAnfme()); orderDetl.setOrderId(order.getId()); orderDetl.setOrderNo(order.getOrderNo()); orderDetl.setCreateBy(9527L); orderDetl.setCreateTime(now); orderDetl.setUpdateBy(9527L); orderDetl.setUpdateTime(now); orderDetl.setStatus(1); orderDetl.setQty(0.0D); if (!orderDetlService.insert(orderDetl)) { throw new CoolException("生成单据明细失败,请联系管理员"); } } } @Override public List pakoutOrderComplete(OpenOrderCompleteParam param) { List results = new ArrayList<>(); if (!Cools.isEmpty(param) && !Cools.isEmpty(param.getOrderNo())) { // 指定订单 Order order = orderService.selectByNo(param.getOrderNo()); if (null != order) { OpenOrderCompeteResult result = new OpenOrderCompeteResult(); results.add(result); result.setOrderNo(order.getOrderNo()); result.setOrderTime(order.getOrderTime()); result.setOrderType(order.getDocType$()); List orderDetls = orderDetlService.selectByOrderId(order.getId()); for (OrderDetl orderDetl : orderDetls) { result.getOrderDetails().add(new DetlDto(orderDetl.getOrderNo(), orderDetl.getMatnr(), orderDetl.getBatch(), orderDetl.getQty())); } if (order.getSettle() == 4L) { // 修改订单状态 4.完成 ===>> 6.已上报 if (!orderService.updateSettle(order.getId(), 6L, null)) { throw new CoolException("服务器内部错误,请联系管理员"); } } } } else { // 所有订单 List orders = orderService.selectList(new EntityWrapper().eq("settle", 4L)); for (Order order : orders) { OpenOrderCompeteResult result = new OpenOrderCompeteResult(); results.add(result); result.setOrderNo(order.getOrderNo()); result.setOrderTime(order.getOrderTime()); result.setOrderType(order.getDocType$()); List orderDetls = orderDetlService.selectByOrderId(order.getId()); for (OrderDetl orderDetl : orderDetls) { result.getOrderDetails().add(new DetlDto(orderDetl.getOrderNo(), orderDetl.getMatnr(), orderDetl.getBatch(), orderDetl.getQty())); } // 修改订单状态 4.完成 ===>> 6.已上报 if (!orderService.updateSettle(order.getId(), 6L, null)) { throw new CoolException("服务器内部错误,请联系管理员"); } } } return results; } @Override @Transactional public List queryStock() { return locDetlService.queryStockTotal(); } @Override @Transactional 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(param.getBarcode() + "重复提交"); } Date now = new Date(); pack = new Pack( param.getBarcode(), // 条码[非空] analyse.getMatnr(), // 商品编号 analyse.getBarcode(), // 序列码 1L, // 订单状态 1, // 状态 now, // 添加时间 null, // 添加人员 now, // 修改时间 null, // 修改人员 null // 备注 ); if (!packService.insert(pack)) { throw new CoolException("服务器内部错误,请联系管理员"); } Mat mat = matService.selectByMatnr(analyse.getMatnr()); if (mat == null) { mat = new Mat(); // 分类 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(param.getMaterialName()); mat.setSpecs(param.getConfigureDesc()); mat.setModel(analyse.getModel()); mat.setStatus(1); mat.setCreateTime(now); mat.setUpdateTime(now); 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().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().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 wrkDetls = wrkDetlService.selectList(new EntityWrapper().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()); labellerMatParam.setWrkNo(basDevp.getWrkNo().toString()); // ArrayList combMats = new ArrayList<>(); ArrayList boxNos = new ArrayList<>(); // String orderNo = ""; for (WrkDetl wrkDetl:wrkDetls){ LabellerMatParam.BoxNo boxNo = new LabellerMatParam.BoxNo(); boxNo.setBoxNo(wrkDetl.getBatch()); boxNos.add(boxNo); } labellerMatParam.setBoxNos(boxNos); // 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.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="+param.getDevNo()+"不存在"); }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().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); wrkMast.setStaNo(144); 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) { Long userId = 7777L;//中控 //判断param参数 if (Cools.isEmpty(param.getBarcode())){ throw new CoolException("参数:托盘码 barcode为空"); }else if (Cools.isEmpty(param.getPalletizingNo())){ throw new CoolException("参数:码垛位编号 palletizingNo为空"); }else if (Cools.isEmpty(param.getBoxType())){ throw new CoolException("参数:木箱类型 boxType为空"); }else if (Cools.isEmpty(param.getMatLists()) || param.getMatLists().size()==0){ throw new CoolException("参数:物料明细 matLists为空"); } ArrayList positions = new ArrayList<>(); //木箱位置查重 (orgin) ArrayList boxNos = new ArrayList<>(); //木箱唯一编码查重 (batch) //判断matLists参数 for (PalletizingCompleteParam.MatList matList:param.getMatLists()){ if (Cools.isEmpty(matList.getMatnr())){ throw new CoolException("参数:物料编码 matnr为空"); }else if (Cools.isEmpty(matList.getPosition())){ throw new CoolException("物料编码:"+matList.getMatnr()+"、参数:码垛位置 position为空"); }else if (Cools.isEmpty(matList.getBoxNo())){ throw new CoolException("物料编码:"+matList.getMatnr()+"、参数:木箱编号 boxNo为空"); }else if (Cools.isEmpty(matList.getAnfme()) || matList.getAnfme().equals(0)){ throw new CoolException("物料编码:"+matList.getMatnr()+"、参数:木箱中铜箔数量 anfme为空"); }else if (Cools.isEmpty(matList.getWeight()) || matList.getWeight().equals(0D)){ throw new CoolException("物料编码:"+matList.getMatnr()+"、参数:重量 weight为空"); } if (!positions.contains(matList.getPosition())){ positions.add(matList.getPosition()); }else { throw new CoolException("参数:木箱编号 boxNo:"+matList.getBoxNo()+",木箱位置存在重复:"+matList.getPosition()); } if (!boxNos.contains(matList.getBoxNo())){ boxNos.add(matList.getBoxNo()); }else { throw new CoolException("参数:木箱编号 boxNo:"+matList.getBoxNo()+",木箱编码存在重复"); } } // BasDevp basDevp = basDevpService.selectById(Integer.parseInt(param.getDevNo$())); // if (Cools.isEmpty(basDevp)){ // throw new CoolException("参数:码垛位编号 palletizingNo="+param.getPalletizingNo()+"不存在"); // } // if (Cools.isEmpty(basDevp.getAutoing()) || !basDevp.getAutoing().equals("Y")){ // throw new CoolException("码垛位编号 palletizingNo="+param.getPalletizingNo()+" 所处站点不是自动状态"); // } // if (Cools.isEmpty(basDevp.getLoading()) || !basDevp.getLoading().equals("Y")){ // throw new CoolException("码垛位编号 palletizingNo="+param.getPalletizingNo()+" 所处站点不是有物状态"); // } // if (Cools.isEmpty(basDevp.getCanining()) || !basDevp.getCanining().equals("Y")){ // throw new CoolException("码垛位编号 palletizingNo="+param.getPalletizingNo()+" 所处站点不是能入状态"); // } if (locDetlService.selectCount(new EntityWrapper().eq("zpallet", param.getBarcode()))!=0 || wrkDetlService.selectCount(new EntityWrapper().eq("zpallet", param.getBarcode()))!=0 || waitPakinService.selectCount(new EntityWrapper().eq("zpallet", param.getBarcode()))!=0){ throw new CoolException("托盘条码:"+param.getBarcode()+"已存在,请勿重复组托"); } Date now = new Date(); for (PalletizingCompleteParam.MatList matList:param.getMatLists()){ long rollUp = new Date().getTime(); Mat mat = matService.selectByMatnr(matList.getMatnr()); if (Cools.isEmpty(mat)) { throw new CoolException(matList.getMatnr() + "商品档案不存在"); } WaitPakin waitPakin = new WaitPakin(); waitPakin.sync(mat); waitPakin.setModel(matList.getBatch()); //批次 waitPakin.setSpecs(matList.getSpecs()); //规格 waitPakin.setBatch(matList.getBoxNo()); //木箱编码 waitPakin.setBrand(param.getBoxType()); //木箱类型 waitPakin.setZpallet(param.getBarcode()); //托盘码 waitPakin.setOrigin(matList.getPosition()); //木箱在托盘上的位置 waitPakin.setIoStatus("N"); // 入出状态 waitPakin.setAnfme(matList.getAnfme().doubleValue()); // 木箱中铜箔数量 waitPakin.setStatus("Y"); // 状态 waitPakin.setAppeUser(userId); waitPakin.setAppeTime(now); waitPakin.setModiUser(userId); waitPakin.setModiTime(now); waitPakin.setRollUp(rollUp); if (!Cools.isEmpty(matList.getMatDetlList())){ for (PalletizingCompleteParam.MatDetlList matDetlList:matList.getMatDetlList()){ LocDetlRullUpDetail locDetlRullUpDetail = new LocDetlRullUpDetail(); locDetlRullUpDetail.setUuid(rollUp); locDetlRullUpDetail.setRollNo(matDetlList.getBoxNoDetl()); locDetlRullUpDetail.setRollWeight(matDetlList.getWeightDetl().toString()); locDetlRullUpDetailService.insert(locDetlRullUpDetail); } } if (!waitPakinService.insert(waitPakin)) { throw new CoolException("保存入库通知档失败"); } } } /* *中控:出库完成月台相关 * */ @Override @Transactional public void balconyComplete(LabellerMatParam param) { if (Cools.isEmpty(param.getWrkNo())){ throw new CoolException("工作号为空!"); } WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper().eq("wrk_no", param.getWrkNo())); if (Cools.isEmpty(wrkMast)){ throw new CoolException("工作号为空!"); } wrkMast.setWrkSts(57L); wrkMastService.updateById(wrkMast); } /* * 桁架上位软件:单次拆垛完成通知 * */ @Override @Transactional public void singleUnstackingComplete(SingleUnstackingCompleteParam param) { Long userId = 8888L;//桁架上位软件 //判断param参数 if (Cools.isEmpty(param.getPalletizingNo())){ throw new CoolException("参数:码垛位编号 palletizingNo为空"); }else if (Cools.isEmpty(param.getMatLists()) || param.getMatLists().size()==0){ throw new CoolException("参数:物料明细 matLists为空"); } ArrayList wrkDetlsNew = new ArrayList<>(); ArrayList wrkDetlsOld = new ArrayList<>(); //判断matLists参数 for (SingleUnstackingCompleteParam.MatList matList:param.getMatLists()){ if (Cools.isEmpty(matList.getPosition())){ throw new CoolException("参数:码垛位置 position为空"); }else if (Cools.isEmpty(matList.getBoxNo())){ throw new CoolException("参数:木箱编号 boxNo为空"); } List wrkDetlSingles = wrkDetlSingleService.selectList(new EntityWrapper().eq("batch", matList.getBoxNo())); boolean sign=true; for (WrkDetlSingle wrkDetlSingle:wrkDetlSingles){ if (wrkDetlSingle.getBatch().equals(matList.getBoxNo())){//木箱编码 WrkDetl wrkDetl = new WrkDetl(); wrkDetl.sync(wrkDetlSingle); wrkDetlsNew.add(wrkDetl); wrkDetlsOld.add(wrkDetlSingle); sign=false; break; } } if (sign){ throw new CoolException("参数:木箱编号 boxNo未查询到对应的工作明细!"); } } // 生成工作号 int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(202)); Date now = new Date(); // 生成工作档 WrkMast wrkMast = new WrkMast(); wrkMast.setWrkNo(workNo); wrkMast.setIoTime(now); wrkMast.setWrkSts(51L); // 工作状态:生成入库ID wrkMast.setIoType(202); // 入出库状态:202.拆垛后出库 wrkMast.setIoPri(99D); // 优先级 wrkMast.setSourceStaNo(param.getDevNo$()); wrkMast.setStaNo(140); //贴标站点 // 操作人员数据 wrkMast.setAppeUser(userId); wrkMast.setAppeTime(now); wrkMast.setModiUser(userId); wrkMast.setModiTime(now); if (!wrkMastService.insert(wrkMast)) { throw new CoolException("生成工作档失败==》桁架上位软件:单次拆垛完成通知"); } for (WrkDetl wrkDetl : wrkDetlsNew){ wrkDetl.setWrkNo(wrkMast.getWrkNo()); wrkDetl.setIoTime(wrkMast.getIoTime()); wrkDetl.setAppeTime(now); wrkDetl.setModiTime(now); if (!wrkDetlService.insert(wrkDetl)) { throw new CoolException("保存工作明细失败==》桁架上位软件:单次拆垛完成通知"); } } for (WrkDetlSingle wrkDetlSingle : wrkDetlsOld) { wrkDetlSingleService.delete(new EntityWrapper() .eq("batch",wrkDetlSingle.getBatch()) .eq("wrk_no",wrkDetlSingle.getWrkNo()) .eq("io_time",wrkDetlSingle.getIoTime())); } } /* * 桁架上位软件:单托拆垛完成通知 * */ @Override @Transactional public void singleMountUnstackingComplete(SingleMountUnstackingCompleteParam param) { Long userId = 8888L;//桁架上位软件 //判断param参数 if (Cools.isEmpty(param.getBarcode())){ throw new CoolException("参数:托盘码 barcode为空"); } // else if (Cools.isEmpty(param.getPalletizingNo())){ // throw new CoolException("参数:码垛位编号 palletizingNo为空"); // } WrkMast wrkMastMatrix = wrkMastService.selectByBarcode(param.getBarcode()); if (Cools.isEmpty(wrkMastMatrix)){ throw new CoolException("参数:托盘码查询工作档失败:"+param.getBarcode()); }else { // if (wrkMastMatrix.getIoType().equals(103)){ // List wrkDetls = wrkDetlService.selectByWrkNoUnstacking(wrkMastMatrix.getWrkNo()); // if (Cools.isEmpty(param.getMatLists()) || param.getMatLists().size()==0 || param.getMatLists().size()!=wrkDetls.size()){ // throw new CoolException("返回物料明细数为"+param.getMatLists().size()+",托盘码:"+param.getBarcode()+"应剩余物料数:"+wrkDetls.size()); // } // // ArrayList orgin = new ArrayList<>(); // //判断matLists参数 // for (SingleMountUnstackingCompleteParam.MatList matList : param.getMatLists()){ // if (Cools.isEmpty(matList.getPosition())){ // throw new CoolException("参数:码垛位置 position为空"); // }else if (Cools.isEmpty(matList.getBoxNo())){ // throw new CoolException("参数:木箱编号 boxNo为空"); // } // if (!orgin.contains(matList.getPosition())){ // orgin.add(matList.getPosition()); // }else { // throw new CoolException("参数:木箱编号 boxNo:"+matList.getBoxNo()+",木箱位置存在重复"); // } // boolean sign=true; // for (WrkDetl wrkDetl:wrkDetls){ // if (wrkDetl.getBatch().equals(matList.getBoxNo())){//木箱编码 // wrkDetl.setOrigin(matList.getPosition()); // wrkDetlService.update(wrkDetl,new EntityWrapper().eq("batch",wrkDetl.getBatch())); // sign=false; // break; // } // } // if (sign){ // throw new CoolException("参数:木箱编号 boxNo:"+matList.getBoxNo()+"未查询到对应的工作明细!"); // } // } // } } wrkMastMatrix.setSheetNo("2"); if (!wrkMastService.updateById(wrkMastMatrix)){ throw new CoolException("更新工作档失败==》桁架上位软件:单托拆垛完成通知"); } } /* * * */ @Override @Transactional public void cs1(String barcode) { BasDevp basDevp = basDevpService.selectById(216); basDevp.setWrkNo(9992); basDevp.setBarcode(barcode); basDevpService.updateById(basDevp); } /* * * */ @Override @Transactional public void cs2() { BasDevp basDevp = basDevpService.selectById(216); basDevp.setWrkNo(0); basDevp.setBarcode(""); basDevpService.updateById(basDevp); } /* * * */ @Override @Transactional public void cs3() { //拆盘 WrkMastSta wrkMastSta1 = new WrkMastSta(new Date(),118); wrkMastSta1.setType(2); wrkMastSta1.setWrkType(2); wrkMastStaService.insert(wrkMastSta1); WrkMastSta wrkMastSta2 = new WrkMastSta(new Date(),122); wrkMastSta2.setType(2); wrkMastSta2.setWrkType(2); wrkMastStaService.insert(wrkMastSta2); } /*...........................上饶江铜..............以上.............徐工汉云...........................*/ }