|  |  |  | 
|---|
|  |  |  | import com.zy.asrs.entity.param.*; | 
|---|
|  |  |  | import com.zy.asrs.mapper.ManLocDetlMapper; | 
|---|
|  |  |  | import com.zy.asrs.mapper.MatMapper; | 
|---|
|  |  |  | import com.zy.asrs.mapper.OrderDetlMapper; | 
|---|
|  |  |  | import com.zy.asrs.service.*; | 
|---|
|  |  |  | import com.zy.asrs.utils.MatUtils; | 
|---|
|  |  |  | import com.zy.common.constant.MesConstant; | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Resource | 
|---|
|  |  |  | private OpenServiceImpl openServiceImpl; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Resource | 
|---|
|  |  |  | private OrderDetlMapper orderDetlMapper; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | @Transactional | 
|---|
|  |  |  | 
|---|
|  |  |  | throw new CoolException("工作档不存在:" + param.getBarcode()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (wrkMast.getIoType() != 107 || wrkMast.getWrkSts() != 2) { | 
|---|
|  |  |  | throw new CoolException(wrkMast.getWrkNo() + ",工作档类型:" + wrkMast.getIoType() + "工作状态:" + wrkMast.getWrkSts() + ",不匹配"); | 
|---|
|  |  |  | throw new CoolException(wrkMast.getWrkNo() + ":工作状态不匹配"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo()); | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 推送给gwcs执行命令 | 
|---|
|  |  |  | openServiceImpl.pushStaNoToGwcs(wrkMast.getSourceStaNo(),wrkMast.getStaNo(),wrkMast.getWrkNo(),wrkMast.getBarcode()); | 
|---|
|  |  |  | openServiceImpl.pushStaNoToGwcs(wrkMast.getSourceStaNo(),wrkMast.getStaNo(),wrkMast.getWrkNo(),wrkMast.getBarcode(),"盘点确认成功推送gwcs"); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return R.ok("盘点确认成功"); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 推送GWCS目标消息 | 
|---|
|  |  |  | openServiceImpl.pushStaNoToGwcs(sourceStaNo,dto.getStaNo(),dto.getWorkNo(),barcode); | 
|---|
|  |  |  | openServiceImpl.pushStaNoToGwcs(sourceStaNo,dto.getStaNo(),dto.getWorkNo(),barcode,"pda组托立即入库推送gwcs"); | 
|---|
|  |  |  | return R.ok("入库启动成功"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 返回GWCS目标信息 | 
|---|
|  |  |  | boolean result = pushStaNoToGwcs(param.getPalletizingNo(), dto.getStaNo(), dto.getWorkNo(), param.getBarcode()); | 
|---|
|  |  |  | openServiceImpl.pushStaNoToGwcs(param.getPalletizingNo(), dto.getStaNo(), dto.getWorkNo(), param.getBarcode(),"二楼返修入库推送gwcs"); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 一楼反修品入库的木箱通过包装组号需给mes推送待判 | 
|---|
|  |  |  | pushDpToMes(groupNos); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return R.ok("入库成功"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | @Transactional | 
|---|
|  |  |  | public R pdtz(PdtzParam param) { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | String barcode = param.getBarcode(); | 
|---|
|  |  |  | Integer palletizingNo = param.getPalletizingNo(); | 
|---|
|  |  |  | List<PdtzParam.MatList> matList = param.getMatList(); | 
|---|
|  |  |  | // 增加冗余字段,给mes推送时结构和入库保存一致 | 
|---|
|  |  |  | for (PdtzParam.MatList matList1 : matList) { | 
|---|
|  |  |  | matList1.setBarcode(barcode); | 
|---|
|  |  |  | matList1.setPalletizingNo(palletizingNo); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("barcode", barcode)); | 
|---|
|  |  |  | LocMast locMast = locMastService.selectById(wrkMast.getSourceLocNo()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 实物包装组号 | 
|---|
|  |  |  | List<String> groups = matList.stream().map(PdtzParam.MatList::getPackageGroupNo).distinct().collect(Collectors.toList()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 库存明细木箱位置集合 | 
|---|
|  |  |  | List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("zpallet", barcode)); | 
|---|
|  |  |  | List<String> collect1 = locDetls.stream().map(LocDetl::getOrigin).distinct().collect(Collectors.toList()); | 
|---|
|  |  |  | // 工作明细木箱位置集合 | 
|---|
|  |  |  | List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("zpallet", barcode)); | 
|---|
|  |  |  | List<String> collect2 = wrkDetls.stream().map(WrkDetl::getOrigin).distinct().collect(Collectors.toList()); | 
|---|
|  |  |  | // 工作的包装组号 | 
|---|
|  |  |  | List<String> wrkBrandlist = wrkDetls.stream().map(WrkDetl::getBrand).distinct().collect(Collectors.toList()); | 
|---|
|  |  |  | // 工作订单明细 | 
|---|
|  |  |  | List<OrderDetl> orderDetlList = orderDetlMapper.selectList(new EntityWrapper<OrderDetl>().in("brand", wrkBrandlist)); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | Date now = new Date(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 判断要调整的木箱所在位置关系 | 
|---|
|  |  |  | if (collect1.size() == 0 || collect2.size() == 0){ | 
|---|
|  |  |  | return R.parse(barcode+":任务库存异常!"); | 
|---|
|  |  |  | } else if(collect1.size() == 2 && collect2.size() == 1) { // 2出1,都是单箱的 | 
|---|
|  |  |  | if (matList.size() == 0) { // 实物是空 | 
|---|
|  |  |  | // 把该任务在库明细删除 | 
|---|
|  |  |  | locDetlService.delete(new EntityWrapper<LocDetl>().in("brand",wrkBrandlist)); | 
|---|
|  |  |  | // todo 标记异常,推送mes,回库 | 
|---|
|  |  |  | for(OrderDetl orderDetl:orderDetlList) { | 
|---|
|  |  |  | orderDetl.setSource(1); | 
|---|
|  |  |  | orderDetlMapper.updateById(orderDetl); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | JSONObject jsonObject = new JSONObject(); | 
|---|
|  |  |  | jsonObject.put("delete",wrkBrandlist); | 
|---|
|  |  |  | kctzPushMes(jsonObject); | 
|---|
|  |  |  | kctzReturn(wrkMast); | 
|---|
|  |  |  | } else { // 实物不为空 | 
|---|
|  |  |  | // 寻找实物的位置 | 
|---|
|  |  |  | List<LocDetl> locDetls1 = locDetlService.selectList(new EntityWrapper<LocDetl>().in("brand", groups).notIn("barcode",barcode)); | 
|---|
|  |  |  | if (locDetls1.size() == 0) { // 实物无库存 | 
|---|
|  |  |  | // 把该任务在库明细删除 | 
|---|
|  |  |  | locDetlService.delete(new EntityWrapper<LocDetl>().in("brand",wrkBrandlist)); | 
|---|
|  |  |  | // 补充木箱位置 | 
|---|
|  |  |  | matList.get(0).setBoxPos(collect2.get(0)); | 
|---|
|  |  |  | // 把实物物料信息放入任务所在库位 | 
|---|
|  |  |  | insertLocDetl(locMast.getLocNo(),barcode,matList); | 
|---|
|  |  |  | // todo 标记异常,推送mes,回库 | 
|---|
|  |  |  | for(OrderDetl orderDetl:orderDetlList) { | 
|---|
|  |  |  | orderDetl.setSource(1); | 
|---|
|  |  |  | orderDetlMapper.updateById(orderDetl); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | JSONObject jsonObject = new JSONObject(); | 
|---|
|  |  |  | jsonObject.put("delete",wrkBrandlist); | 
|---|
|  |  |  | jsonObject.put("insert",matList); | 
|---|
|  |  |  | kctzPushMes(jsonObject); | 
|---|
|  |  |  | kctzReturn(wrkMast); | 
|---|
|  |  |  | }else { // 实物有库存 | 
|---|
|  |  |  | List<String> brandList = locDetls1.stream().map(LocDetl::getBrand).distinct().collect(Collectors.toList()); | 
|---|
|  |  |  | return R.parse(brandList+"库存已存在,请先处理!"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } else if(collect1.size() == 1 && collect2.size() == 1) { | 
|---|
|  |  |  | if (matList.size() == 0) { // 实物为空 | 
|---|
|  |  |  | // 把该任务在库明细删除 | 
|---|
|  |  |  | locDetlService.delete(new EntityWrapper<LocDetl>().in("brand",wrkBrandlist)); | 
|---|
|  |  |  | // 完成这条盘点任务:更新订单完成数量,工作主档5 | 
|---|
|  |  |  | for(WrkDetl wrkDetl:wrkDetls) { | 
|---|
|  |  |  | if (!Cools.isEmpty(wrkDetl.getOrderNo())) { | 
|---|
|  |  |  | // 更新订单完成数量 | 
|---|
|  |  |  | orderDetlMapper.updateOrderDetlQtyByGroupNo(wrkDetl.getOrderNo(), wrkDetl.getBrand()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (locMast.getLocSts().equals("P")) { | 
|---|
|  |  |  | locMast.setLocSts("O"); | 
|---|
|  |  |  | locMast.setBarcode(""); | 
|---|
|  |  |  | locMast.setSheetNo(""); | 
|---|
|  |  |  | locMast.setIoTime(now); | 
|---|
|  |  |  | locMast.setModiTime(now); | 
|---|
|  |  |  | locMastService.updateById(locMast); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // 修改工作主档状态 | 
|---|
|  |  |  | wrkMast.setWrkSts(5L); | 
|---|
|  |  |  | wrkMast.setModiTime(now); | 
|---|
|  |  |  | wrkMastService.updateById(wrkMast); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // todo 标记异常,不回库,给gwcs下发去叠盘机命令,推送mes | 
|---|
|  |  |  | for(OrderDetl orderDetl:orderDetlList) { | 
|---|
|  |  |  | orderDetl.setSource(1); | 
|---|
|  |  |  | orderDetlMapper.updateById(orderDetl); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | JSONObject jsonObject = new JSONObject(); | 
|---|
|  |  |  | jsonObject.put("delete",wrkBrandlist); | 
|---|
|  |  |  | kctzPushMes(jsonObject); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 推送给gwcs执行命令 | 
|---|
|  |  |  | openServiceImpl.pushStaNoToGwcs(wrkMast.getSourceStaNo(),3013,wrkMast.getWrkNo(),wrkMast.getBarcode(),"盘点异常调整后回叠盘机推送gwcs"); | 
|---|
|  |  |  | } else { // 实物不为空 | 
|---|
|  |  |  | // 寻找实物的位置 | 
|---|
|  |  |  | List<LocDetl> locDetls1 = locDetlService.selectList(new EntityWrapper<LocDetl>().in("brand", groups).notIn("barcode",barcode)); | 
|---|
|  |  |  | if (locDetls1.size() == 0) { // 实物无库存 | 
|---|
|  |  |  | // 把该任务在库明细删除 | 
|---|
|  |  |  | locDetlService.delete(new EntityWrapper<LocDetl>().in("brand",wrkBrandlist)); | 
|---|
|  |  |  | // 补充木箱位置 | 
|---|
|  |  |  | for (PdtzParam.MatList matList1:matList) { | 
|---|
|  |  |  | matList1.setBoxPos(collect2.get(0)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // 把实物物料信息放入任务所在库位 | 
|---|
|  |  |  | insertLocDetl(locMast.getLocNo(),barcode,matList); | 
|---|
|  |  |  | // todo 标记异常,回库,推送mes | 
|---|
|  |  |  | for(OrderDetl orderDetl:orderDetlList) { | 
|---|
|  |  |  | orderDetl.setSource(1); | 
|---|
|  |  |  | orderDetlMapper.updateById(orderDetl); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | JSONObject jsonObject = new JSONObject(); | 
|---|
|  |  |  | jsonObject.put("delete",wrkBrandlist); | 
|---|
|  |  |  | jsonObject.put("insert",matList); | 
|---|
|  |  |  | kctzPushMes(jsonObject); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | kctzReturn(wrkMast); | 
|---|
|  |  |  | } else { // 实物有库存 | 
|---|
|  |  |  | List<String> brandList = locDetls1.stream().map(LocDetl::getBrand).distinct().collect(Collectors.toList()); | 
|---|
|  |  |  | return R.parse(brandList+"库存已存在,请先处理!"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }  else if (collect1.size() == 2 && collect2.size() == 2) { | 
|---|
|  |  |  | if (matList.size() == 0) { // 实物为空 | 
|---|
|  |  |  | // 把该任务在库明细删除 | 
|---|
|  |  |  | locDetlService.delete(new EntityWrapper<LocDetl>().in("brand",wrkBrandlist)); | 
|---|
|  |  |  | // 完成这条盘点任务:更新订单完成数量,工作主档5 | 
|---|
|  |  |  | for(WrkDetl wrkDetl:wrkDetls) { | 
|---|
|  |  |  | if (!Cools.isEmpty(wrkDetl.getOrderNo())) { | 
|---|
|  |  |  | // 更新订单完成数量 | 
|---|
|  |  |  | orderDetlMapper.updateOrderDetlQtyByGroupNo(wrkDetl.getOrderNo(), wrkDetl.getBrand()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (locMast.getLocSts().equals("P")) { | 
|---|
|  |  |  | locMast.setLocSts("O"); | 
|---|
|  |  |  | locMast.setBarcode(""); | 
|---|
|  |  |  | locMast.setSheetNo(""); | 
|---|
|  |  |  | locMast.setIoTime(now); | 
|---|
|  |  |  | locMast.setModiTime(now); | 
|---|
|  |  |  | locMastService.updateById(locMast); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // 修改工作主档状态 | 
|---|
|  |  |  | wrkMast.setWrkSts(5L); | 
|---|
|  |  |  | wrkMast.setModiTime(now); | 
|---|
|  |  |  | wrkMastService.updateById(wrkMast); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // todo 标记异常,推送mes,不回库,给gwcs下发去叠盘机命令 | 
|---|
|  |  |  | for(OrderDetl orderDetl:orderDetlList) { | 
|---|
|  |  |  | orderDetl.setSource(1); | 
|---|
|  |  |  | orderDetlMapper.updateById(orderDetl); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | JSONObject jsonObject = new JSONObject(); | 
|---|
|  |  |  | jsonObject.put("delete",wrkBrandlist); | 
|---|
|  |  |  | jsonObject.put("insert",matList); | 
|---|
|  |  |  | kctzPushMes(jsonObject); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 推送给gwcs执行命令 | 
|---|
|  |  |  | openServiceImpl.pushStaNoToGwcs(wrkMast.getSourceStaNo(),3013,wrkMast.getWrkNo(),wrkMast.getBarcode(),"盘点异常调整后回叠盘机推送gwcs"); | 
|---|
|  |  |  | } else { // 实物不为空 | 
|---|
|  |  |  | // 寻找实物的位置 | 
|---|
|  |  |  | List<LocDetl> locDetls1 = locDetlService.selectList(new EntityWrapper<LocDetl>().in("brand", groups).notIn("barcode",barcode)); | 
|---|
|  |  |  | if (locDetls1.size() == 0) { // 实物无库存 | 
|---|
|  |  |  | // 把该任务在库明细删除 | 
|---|
|  |  |  | locDetlService.delete(new EntityWrapper<LocDetl>().in("brand",wrkBrandlist)); | 
|---|
|  |  |  | // 补充木箱位置 | 
|---|
|  |  |  | matList.get(0).setBoxPos("左"); | 
|---|
|  |  |  | matList.get(1).setBoxPos("右"); | 
|---|
|  |  |  | // 把实物物料信息放入任务所在库位 | 
|---|
|  |  |  | insertLocDetl(locMast.getLocNo(),barcode,matList); | 
|---|
|  |  |  | // todo 标记异常,回库,推送mes | 
|---|
|  |  |  | for(OrderDetl orderDetl:orderDetlList) { | 
|---|
|  |  |  | orderDetl.setSource(1); | 
|---|
|  |  |  | orderDetlMapper.updateById(orderDetl); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | JSONObject jsonObject = new JSONObject(); | 
|---|
|  |  |  | jsonObject.put("delete",wrkBrandlist); | 
|---|
|  |  |  | jsonObject.put("insert",matList); | 
|---|
|  |  |  | kctzPushMes(jsonObject); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | kctzReturn(wrkMast); | 
|---|
|  |  |  | } else { // 实物有库存 | 
|---|
|  |  |  | List<String> brandList = locDetls1.stream().map(LocDetl::getBrand).distinct().collect(Collectors.toList()); | 
|---|
|  |  |  | return R.parse(brandList+"库存已存在,请先处理!"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return R.ok("调整成功"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 同步盘点异常调整结果给mes | 
|---|
|  |  |  | void kctzPushMes(JSONObject jsonObject) { | 
|---|
|  |  |  | // 接口请求结果 | 
|---|
|  |  |  | boolean success = false; | 
|---|
|  |  |  | // 接口记录空间名称 | 
|---|
|  |  |  | String message = "同步盘点异常调整结果给mes"; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 构造请求体 | 
|---|
|  |  |  | String body = jsonObject.toJSONString(); | 
|---|
|  |  |  | String response = ""; | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | response = new HttpHandler.Builder() | 
|---|
|  |  |  | .setUri(MesConstant.MES_CC_IP_PORT) | 
|---|
|  |  |  | .setPath(MesConstant.MES_CC_YCTZ_URL) | 
|---|
|  |  |  | .setJson(body) | 
|---|
|  |  |  | .build() | 
|---|
|  |  |  | .doPost(); | 
|---|
|  |  |  | if (!Cools.isEmpty(response)) { | 
|---|
|  |  |  | JSONObject result = JSON.parseObject(response); | 
|---|
|  |  |  | if (result.getInteger("code").equals(200)) { | 
|---|
|  |  |  | success = true; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | log.error(message + "失败!!!url:{};request:{};response:{}", MesConstant.MES_CC_IP_PORT + MesConstant.MES_CC_YCTZ_URL, body, response); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } catch (Exception e) { | 
|---|
|  |  |  | log.error(message + "异常:{}", e); | 
|---|
|  |  |  | } finally { | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | // 保存接口日志 | 
|---|
|  |  |  | apiLogService.save( | 
|---|
|  |  |  | message, | 
|---|
|  |  |  | MesConstant.MES_CC_IP_PORT + MesConstant.MES_CC_YCTZ_URL, | 
|---|
|  |  |  | null, | 
|---|
|  |  |  | "127.0.0.1", | 
|---|
|  |  |  | body, | 
|---|
|  |  |  | response, | 
|---|
|  |  |  | success | 
|---|
|  |  |  | ); | 
|---|
|  |  |  | } catch (Exception e) { | 
|---|
|  |  |  | log.error("", e); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 盘点异常回库 | 
|---|
|  |  |  | @Transactional | 
|---|
|  |  |  | public void kctzReturn(WrkMast wrkMast) { | 
|---|
|  |  |  | if (!wrkMastLogService.save(wrkMast.getWrkNo())) { | 
|---|
|  |  |  | throw new CoolException("保存工作主档历史档失败"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // 获取目标站 | 
|---|
|  |  |  | Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>() | 
|---|
|  |  |  | .eq("type_no", wrkMast.getIoType() - 50) | 
|---|
|  |  |  | .eq("stn_no", wrkMast.getStaNo()) | 
|---|
|  |  |  | .eq("crn_no", wrkMast.getCrnNo()); | 
|---|
|  |  |  | StaDesc staDesc = staDescService.selectOne(wrapper); | 
|---|
|  |  |  | if (Cools.isEmpty(staDesc)) { | 
|---|
|  |  |  | throw new CoolException("入库路径不存在"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | Date now = new Date(); | 
|---|
|  |  |  | // 堆垛机站点(目标站) | 
|---|
|  |  |  | Integer staNo = staDesc.getCrnStn(); | 
|---|
|  |  |  | // 更新工作档数据状态 | 
|---|
|  |  |  | wrkMast.setIoType(wrkMast.getIoType() - 50); // 入出库类型: 103->53,104->54,107->57 | 
|---|
|  |  |  | wrkMast.setWrkSts(14L); // 工作状态: 14.已出库未确认 | 
|---|
|  |  |  | wrkMast.setSourceStaNo(wrkMast.getStaNo()); // 源站 | 
|---|
|  |  |  | wrkMast.setStaNo(staNo); // 目标站 | 
|---|
|  |  |  | wrkMast.setLocNo(wrkMast.getSourceLocNo()); // 目标库位 = 出库时的源库位 | 
|---|
|  |  |  | wrkMast.setSourceLocNo(""); // 源库位清空 | 
|---|
|  |  |  | wrkMast.setModiTime(now); | 
|---|
|  |  |  | if (!wrkMastService.updateById(wrkMast)) { | 
|---|
|  |  |  | throw new CoolException("更新工作档数据状态失败"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // 修改库位状态 Q.拣料/盘点/并板再入库 | 
|---|
|  |  |  | LocMast locMast = locMastService.selectById(wrkMast.getLocNo()); | 
|---|
|  |  |  | locMast.setLocSts("Q"); | 
|---|
|  |  |  | locMast.setModiTime(now); | 
|---|
|  |  |  | if (!locMastService.updateById(locMast)) { | 
|---|
|  |  |  | throw new CoolException("修改库位状态失败"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 推送给gwcs执行命令 | 
|---|
|  |  |  | openServiceImpl.pushStaNoToGwcs(wrkMast.getSourceStaNo(),wrkMast.getStaNo(),wrkMast.getWrkNo(),wrkMast.getBarcode(),"盘点异常调整后推送gwcs"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 调整库存明细 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @Transactional | 
|---|
|  |  |  | void insertLocDetl(String locNo, String barcode, List<PdtzParam.MatList> matList) { | 
|---|
|  |  |  | Date now = new Date(); | 
|---|
|  |  |  | for (PdtzParam.MatList mat : matList) { | 
|---|
|  |  |  | LocDetl locDetl = new LocDetl(); | 
|---|
|  |  |  | locDetl.setBatch(""); | 
|---|
|  |  |  | locDetl.setLocNo(locNo); | 
|---|
|  |  |  | locDetl.setMatnr(mat.getSpecs()); // 规格 | 
|---|
|  |  |  | locDetl.setMaktx(mat.getSpecs()); //规格 | 
|---|
|  |  |  | locDetl.setUnit(mat.getBoxNo()); // 箱号 | 
|---|
|  |  |  | locDetl.setModel(mat.getRollNo()); // 卷号 | 
|---|
|  |  |  | locDetl.setBrand(mat.getPackageGroupNo()); // 包装组号 | 
|---|
|  |  |  | locDetl.setZpallet(barcode); // 托盘码 | 
|---|
|  |  |  | locDetl.setBarcode(barcode); | 
|---|
|  |  |  | locDetl.setOrigin(mat.getBoxPos()); // 木箱在托盘位置 | 
|---|
|  |  |  | locDetl.setColor(mat.getBoxType()); // 木箱类型 | 
|---|
|  |  |  | locDetl.setManu(mat.getRollType()); // 管芯类型 | 
|---|
|  |  |  | locDetl.setSku(mat.getWideInWidth()); // 实测宽幅 | 
|---|
|  |  |  | locDetl.setItemNum(mat.getThickness()); // 生箔厚度 | 
|---|
|  |  |  | locDetl.setManuDate(mat.getFqTime()); // 分切下料时间 | 
|---|
|  |  |  | locDetl.setWeight(mat.getNetWeight()); // 净重 | 
|---|
|  |  |  | locDetl.setVolume(mat.getGrossWeight()); // 毛重 | 
|---|
|  |  |  | locDetl.setLength(mat.getLength()); // 长度 | 
|---|
|  |  |  | locDetl.setSpecs(String.valueOf(mat.getSplices())); // 接头 | 
|---|
|  |  |  | locDetl.setAnfme(1.0); | 
|---|
|  |  |  | //                    wrkDetl.setThreeCode(null); // 通过mes或excel导入检测是否合格 0不合格,1 合格 | 
|---|
|  |  |  | locDetl.setAppeTime(now); | 
|---|
|  |  |  | locDetl.setModiTime(now); | 
|---|
|  |  |  | locDetlService.insert(locDetl); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public boolean pushStaNoToGwcs(Integer palletizingNo, Integer staNo, Integer workNo,String barcode) { | 
|---|
|  |  |  | boolean success = false; | 
|---|
|  |  |  | // 获取请求头 | 
|---|
|  |  |  | Map<String, Object> headers = getHeaders(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 构造请求体 | 
|---|
|  |  |  | JSONObject jsonObject = new JSONObject(); | 
|---|
|  |  |  | jsonObject.put("workNo", workNo); | 
|---|
|  |  |  | jsonObject.put("staNo", staNo); | 
|---|
|  |  |  | jsonObject.put("sourceStaNo", palletizingNo); | 
|---|
|  |  |  | jsonObject.put("barcode", barcode); | 
|---|
|  |  |  | String body = jsonObject.toJSONString(); | 
|---|
|  |  |  | String response = ""; | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | response = new HttpHandler.Builder() | 
|---|
|  |  |  | .setUri(MesConstant.GWCS_IP_PORT) | 
|---|
|  |  |  | .setPath(MesConstant.GWCS_FPKW_URL) | 
|---|
|  |  |  | .setHeaders(headers) | 
|---|
|  |  |  | .setJson(body) | 
|---|
|  |  |  | .build() | 
|---|
|  |  |  | .doPost(); | 
|---|
|  |  |  | if (!Cools.isEmpty(response)) { | 
|---|
|  |  |  | success = true; | 
|---|
|  |  |  | //                // 修改订单状态 4.完成 ===>> 6.已上报 | 
|---|
|  |  |  | //                if (!orderService.updateSettle(order.getId(), 6L, null)) { | 
|---|
|  |  |  | //                    throw new CoolException("服务器内部错误,请联系管理员"); | 
|---|
|  |  |  | //                } | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | log.error("zmws推送入库码头站点接口失败!!!url:{};request:{};response:{}", MesConstant.URL + MesConstant.PAKIN_URL, body, response); | 
|---|
|  |  |  | throw new CoolException("上报mes系统失败"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } catch (Exception e) { | 
|---|
|  |  |  | log.error("入库请求接口失败:{}", e.getMessage()); | 
|---|
|  |  |  | //            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); | 
|---|
|  |  |  | //            return FAIL.setMsg(e.getMessage()); | 
|---|
|  |  |  | } finally { | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | // 保存接口日志 | 
|---|
|  |  |  | apiLogService.save( | 
|---|
|  |  |  | "入库", | 
|---|
|  |  |  | MesConstant.GWCS_IP_PORT + MesConstant.GWCS_FPKW_URL, | 
|---|
|  |  |  | null, | 
|---|
|  |  |  | "127.0.0.1", | 
|---|
|  |  |  | body, | 
|---|
|  |  |  | response, | 
|---|
|  |  |  | success | 
|---|
|  |  |  | ); | 
|---|
|  |  |  | } catch (Exception e) { | 
|---|
|  |  |  | log.error("", e); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return success; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | Map<String, Object> getHeaders(){ | 
|---|
|  |  |  | Map<String,Object> headers = new HashMap<>(); | 
|---|
|  |  |  | headers.put("digi-type","sync "); | 
|---|
|  |  |  | headers.put("digi-protocol","raw"); | 
|---|
|  |  |  | headers.put("digi-datakey"," XCommon.ImportData"); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return headers; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | private Map<String, String> getPackageGroupNoByGwms(List<String> boxNoList) { | 
|---|
|  |  |  | Map<String, String> map = null; | 
|---|
|  |  |  | Map<String, Object> headers = new HashMap<>(); | 
|---|