package com.zy.asrs.service.impl; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.mapper.Wrapper; import com.core.common.BaseRes; import com.core.common.Cools; import com.core.common.DateUtils; 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.task.AbstractHandler; import com.zy.asrs.task.core.ReturnT; import com.zy.asrs.utils.MatUtils; import com.zy.common.constant.MesConstant; import com.zy.common.model.DetlDto; import com.zy.common.model.enums.WorkNoType; import com.zy.common.service.CommonService; import com.zy.common.utils.HttpHandler; import com.zy.common.utils.NodeUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; /** * Created by vincent on 2022/4/9 */ @Slf4j @Service public class OpenServiceImpl extends AbstractHandler 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 WaitPakinService waitPakinService; @Autowired private WrkDetlService wrkDetlService; @Autowired private TestMastService testMastService; @Autowired private LocMastService locMastService; @Autowired private CommonService commonService; @Autowired private ApiLogService apiLogService; @Autowired private WrkMastService wrkMastService; @Value("${mes.url}") private String mesUrl; @Value("${mes.inPath}") private String inpath; @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("更新已存在商品信息失败,请联系管理员"); } } } } /*...........................赣州新增..............以下.............赣州新增...........................*/ @Override @Transactional public void combPACK(CombParam param) { if (Cools.isEmpty(param.getPackNo())) { throw new CoolException(BaseRes.PARAM); } // 判断是否有相同Pack码的数据 if (waitPakinService.selectCount(new EntityWrapper(). eq("zpallet", param.getPackNo()).eq("io_status", "N")) > 0) { throw new CoolException(param.getPackNo() + "数据正在进行入库"); } int countLoc = locDetlService.selectCount(new EntityWrapper().eq("zpallet",param.getPackNo())); int countWrk = wrkDetlService.selectCount(new EntityWrapper().eq("zpallet",param.getPackNo())); if (countLoc > 0 || countWrk > 0) { throw new CoolException("工作档/库存条码数据已存在===>>" + param.getPackNo()); } SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); java.util.Date date1=null; try { date1= sdf.parse(param.getRequestTime()); } catch (ParseException e) { e.printStackTrace(); } java.sql.Date requestTime = new java.sql.Date(date1.getTime()); // 生成入库通知档 // Mat mat = matService.selectByMatnr(param.getPackName()); // if (Cools.isEmpty(mat)) { // throw new CoolException(param.getPackName() + "商品档案不存在"); // } WaitPakin waitPakin = new WaitPakin(); // waitPakin.sync(mat); waitPakin.setMatnr(param.getPackName()); waitPakin.setMaktx(param.getPackName()); waitPakin.setZpallet(param.getPackNo()); // Pack码 waitPakin.setIoStatus("N"); // 入出状态 waitPakin.setAnfme(1.0); // 数量 waitPakin.setStatus("Y"); // 状态 waitPakin.setManuDate(requestTime.toString()); waitPakin.setAppeUser(null); waitPakin.setAppeTime(new Date()); waitPakin.setModiUser(null); waitPakin.setModiTime(new Date()); waitPakin.setDeadWarn(param.getSettingTimes()); if (!waitPakinService.insert(waitPakin)) { throw new CoolException("保存入库通知档失败"); } } @Override @Transactional public void combPackOut(CombParam param) { if (Cools.isEmpty(param.getPackNo())) { throw new CoolException(BaseRes.PARAM); } LocMast locMast = locMastService.selectOne(new EntityWrapper() // .eq("fire_status", 0) // .eq("loc_sts", "F") .eq("barcode", param.getPackNo())); if (Cools.isEmpty(locMast)){ throw new CoolException("未查询到PACK码为:"+param.getPackNo()+"的货物"); }else if (locMast.getLocSts().equals("F")){ throw new CoolException("PACK码为:"+param.getPackNo()+"的货物库位状态不是“F”"); }else if (locMast.getFireStatus()!=0){ throw new CoolException("警告!!!PACK码为:"+param.getPackNo()+"的库位:"+locMast.getLocNo()+"消防状态异常!!!"); // }else if (locMast.getFireStatus()!=0){ // throw new CoolException("警告!!!PACK码为:"+param.getPackNo()+"的库位:"+locMast.getLocNo()+"消防状态异常!!!"); // }else if (locMast.getFireStatus()!=0){ // throw new CoolException("警告!!!PACK码为:"+param.getPackNo()+"的库位:"+locMast.getLocNo()+"消防状态异常!!!"); // }else if (locMast.getFireStatus()!=0){ // throw new CoolException("警告!!!PACK码为:"+param.getPackNo()+"的库位:"+locMast.getLocNo()+"消防状态异常!!!"); }else { Date now = new Date(); Integer ioType = 101; //入出库类型 LocDetl locDetl=locDetlService.selectOne(new EntityWrapper().eq("loc_no",locMast.getLocNo())); if (Cools.isEmpty(locDetl)){ log.error("库位:"+locMast.getLocNo()+"没有明细"); // } else if (Cools.isEmpty(locDetl.getDeadWarn())){ // log.error("库位:"+locMast.getLocNo()+"没有静置时间"); // } else if (Cools.isEmpty(locMast.getModiTime())){ // log.error("库位:"+locMast.getLocNo()+"modiTime为空"); } else if (Cools.isEmpty(locMast.getBarcode())){ log.error("库位:"+locMast.getLocNo()+"Pack码为空"); } else { // 生成工作号 int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType)); // 生成工作档 WrkMast wrkMast = new WrkMast(); wrkMast.setWrkNo(workNo); wrkMast.setIoTime(now); wrkMast.setWrkSts(11L); // 工作状态:11.生成出库ID wrkMast.setIoType(ioType); // 入出库状态 wrkMast.setIoPri(13D); // 优先级:13 wrkMast.setCrnNo(1); wrkMast.setSourceStaNo(107); // 源站 wrkMast.setStaNo(104); // 目标站 wrkMast.setSourceLocNo(locMast.getLocNo()); // 源库位 wrkMast.setFullPlt("Y"); // 满板:Y wrkMast.setPicking("N"); // 拣料 wrkMast.setExitMk("N"); // 退出 wrkMast.setEmptyMk("N"); // 空板 wrkMast.setLinkMis("N"); wrkMast.setBarcode(locMast.getBarcode()); wrkMast.setAppeTime(now); wrkMast.setModiTime(now); if (!wrkMastService.insert(wrkMast)) { throw new CoolException("保存工作档失败,出库库位号:"+locMast.getLocNo()); } // 生成工作档明细 WrkDetl wrkDetl = new WrkDetl(); wrkDetl.sync(locDetl); wrkDetl.setWrkNo(workNo); wrkDetl.setIoTime(now); wrkDetl.setAnfme(1.0); // 数量 wrkDetl.setAppeTime(now); wrkDetl.setModiTime(now); if (!wrkDetlService.insert(wrkDetl)) { throw new CoolException("保存工作档明细失败"); } // 修改库位状态: F.在库 ====>>> R.出库预约 if (locMast.getLocSts().equals("F")) { locMast.setLocSts("R"); locMast.setModiTime(now); locMast.setPackStatus(5); //5:静置完成 CombParam combParam = new CombParam(); combParam.setPackNo(locMast.getBarcode()); combParam.setLocNo(locMast.getLocNo()); combParam.setPackSts(6); combParam.setRequestTime(DateUtils.convert(new Date())); postMesData(inpath,combParam); if (!locMastService.updateById(locMast)) { throw new CoolException("预约库位状态失败,库位号:"+locMast.getLocNo()); } } else { throw new CoolException(locMast.getLocNo() + "库位不是在库状态"); } } } } @Override @Transactional public void infoReview(Review review) { LocMast locMast = locMastService.selectOne(new EntityWrapper().eq("loc_no", review.getLocNo())); if (!review.getBarcode().equals(locMast.getBarcode())){ throw new CoolException("pack码不同"); } Wrapper wrapper = new EntityWrapper() .eq("loc_no", review.getLocNo()) .eq("barcode", review.getBarcode()) .eq("user_Id", review.getUserId()); if (null == locMast ||locMast.getPackStatus()!=1) { throw new CoolException("产品状态不是 1:待测试"); } TestMast testMast = testMastService.selectOne(wrapper); if(null != testMast){ if (testMast.getStatus()==1){ testMast.setStatus(3); testMast.setModiTime(new Date()); if (!testMastService.update(testMast,wrapper)){ throw new CoolException("更新测试状态失败"); } locMast.setPackStatus(2); CombParam combParam = new CombParam(); combParam.setPackNo(locMast.getBarcode()); combParam.setLocNo(locMast.getLocNo()); combParam.setPackSts(2); combParam.setRequestTime(DateUtils.convert(new Date())); postMesData(inpath,combParam); if (!locMastService.update(locMast,new EntityWrapper().eq("loc_no", review.getLocNo()))){ throw new CoolException("更新产品状态失败"); } }else if (Cools.isEmpty(testMast.getStatus())){ throw new CoolException("状态异常"); }else { throw new CoolException("状态不是 1:申请中"); } } else { throw new CoolException("测试申请复核失败"); } } @Override @Transactional public Boolean testFinish(Review review) { Boolean success=true; Wrapper wrapper = new EntityWrapper() .eq("loc_no", review.getLocNo()) .eq("barcode", review.getBarcode()) .eq("user_Id", review.getUserId()); LocMast locMast = locMastService.selectOne(new EntityWrapper().eq("loc_no", review.getLocNo())); if (null == locMast ||locMast.getPackStatus()!=2){ throw new CoolException("产品状态不是 2:测试中"); }else if (!review.getBarcode().equals(locMast.getBarcode())){ throw new CoolException("pack码不同"); } TestMast testMast = testMastService.selectOne(wrapper); if(null != testMast){ if (testMast.getStatus()==3){ Date date = new Date(); testMast.setStatus(4); testMast.setModiTime(date); if (!testMastService.update(testMast,wrapper)){ throw new CoolException("更改测试状态失败"); } locMast.setPackStatus(3); testMast.setModiTime(date); CombParam combParam = new CombParam(); combParam.setPackNo(locMast.getBarcode()); combParam.setLocNo(locMast.getLocNo()); combParam.setPackSts(3); combParam.setRequestTime(DateUtils.convert(new Date())); postMesData(inpath,combParam); if (!locMastService.update(locMast, new EntityWrapper().eq("loc_no", review.getLocNo()))){ throw new CoolException("更改产品状态失败"); } }else if (Cools.isEmpty(testMast.getStatus())){ throw new CoolException("状态异常"); }else { throw new CoolException("状态不是 3:测试中"); } } else { throw new CoolException("状态异常"); } return success; } private ReturnT postMesData(String mesPath, Object combParam){ if(combParam != null){ String response = ""; boolean success = false; try { // Map map = new HashMap<>(); // map.put("appkey","ea1f0459efc02a79f046f982767939ae"); response = new HttpHandler.Builder() // .setHeaders(map) .setUri(mesUrl) .setPath(mesPath) .setJson(JSON.toJSONString(combParam)) .build() .doPost(); JSONObject jsonObject = JSON.parseObject(response); if (jsonObject.getInteger("code").equals(200)) { if (jsonObject.getDate("isComplete").equals(true)){ success = true; }else if (jsonObject.getDate("isComplete").equals(false)){ success = false; }else { log.error("返回值出错!!!url:{};request:{};response:{}", MesConstant.URL+MesConstant.PAKIN_URL, JSON.toJSONString(combParam), response); throw new CoolException("返回值出错"); } } else { log.error("请求接口失败!!!url:{};request:{};response:{}", MesConstant.URL+MesConstant.PAKIN_URL, JSON.toJSONString(combParam), response); throw new CoolException("上报mes系统失败"); } } catch (Exception e) { log.error("fail", e); // TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return FAIL.setMsg(e.getMessage()); } finally { try { // 保存接口日志 apiLogService.save( "成品库入库上报", MesConstant.URL + MesConstant.PAKIN_URL, null, "127.0.0.1", JSON.toJSONString(combParam), response, success ); } catch (Exception e) { log.error("", e); } } } return SUCCESS; } /*...........................赣州新增..............以上.............赣州新增...........................*/ }