diff --git a/src/main/java/com/gaotao/modules/pda/controller/ProduceController.java b/src/main/java/com/gaotao/modules/pda/controller/ProduceController.java index bd4597d..cd15778 100644 --- a/src/main/java/com/gaotao/modules/pda/controller/ProduceController.java +++ b/src/main/java/com/gaotao/modules/pda/controller/ProduceController.java @@ -210,7 +210,11 @@ public class ProduceController { @ResponseBody public Object endCurrentScan(HttpServletRequest request, String depot){ HttpSession session = request.getSession(); - ResponseData responseData = produceService.endCurrentScan(session, xuJieConfig.getWebservice(), depot); + //获取创建的交易单号 + String transNo = produceService.getTransNo("1", "SR"); + //ResponseData responseData = produceService.endCurrentScan(session, xuJieConfig.getWebservice(), depot); + ResponseData responseData = produceService.endCurrentScanNew(session, xuJieConfig.getWebservice(), depot, transNo); + return responseData; } diff --git a/src/main/java/com/gaotao/modules/pda/service/ProduceService.java b/src/main/java/com/gaotao/modules/pda/service/ProduceService.java index 0ca4bf8..69bc86c 100644 --- a/src/main/java/com/gaotao/modules/pda/service/ProduceService.java +++ b/src/main/java/com/gaotao/modules/pda/service/ProduceService.java @@ -88,4 +88,19 @@ public interface ProduceService { */ ResponseData endCurrentScan(HttpSession session, String webservice, String depot); + /** + * @description: 交易单号生成 + * @author LR + * @date 2026-7-7 14:49 + * @version 1.0 + */ + String getTransNo(String site, String transType); + + /** + * @description: 结束扫描,发送数据 + * @author LR + * @date 2026-7-7 14:51 + * @version 1.0 + */ + ResponseData endCurrentScanNew(HttpSession session, String webservice, String depot, String transNo); } diff --git a/src/main/java/com/gaotao/modules/pda/service/impl/ProduceServiceImpl.java b/src/main/java/com/gaotao/modules/pda/service/impl/ProduceServiceImpl.java index ba51d35..e867abf 100644 --- a/src/main/java/com/gaotao/modules/pda/service/impl/ProduceServiceImpl.java +++ b/src/main/java/com/gaotao/modules/pda/service/impl/ProduceServiceImpl.java @@ -623,4 +623,159 @@ public class ProduceServiceImpl implements ProduceService { return responseData; } + @Override + @Transactional + public String getTransNo(String site, String transType) { + String transNo = transNoDao.getTransNo("1", "SR"); + //更新当前的交易号 + transNoDao.updateTransNo("1", "SR"); + return transNo; + } + + @Override + @Transactional + public ResponseData endCurrentScanNew(HttpSession session, String webservice, String depot, String transNo) { + ResponseData responseData = new ResponseData(); + //获取生产入库的标记 + Object produce_submit_flag = session.getAttribute("produce_submit_flag"); + if(null == produce_submit_flag){ + //设置库存转储的结束标记 + session.setAttribute("produce_submit_flag", "Y"); + }else{ + responseData.setCode("500"); + responseData.setMsg("不允许重复提交!"); + return responseData; + } + //从session中获取sap数据 + Map produceToSap = (Map) session.getAttribute("produceToSap"); + String orderNo = session.getAttribute("produce_order_no").toString(); + //获取用户名 + + SysUserEntity auth = (SysUserEntity) SecurityUtils.getSubject().getPrincipal(); + String userid = auth.getUsername(); + //根据userid获取user + // todo Users user = userDao.findByUserId(userid); + //获取所有未入库的成品卷号数据 + List fg_rolls = fPRollsDao.getFGRollsByOrderNo(orderNo, auth.getSite()); + Map fg_rollMap = new HashMap<>(); + //转换成map + for(FPRollsOutData fgRoll : fg_rolls){ + fg_rollMap.put(fgRoll.getRollNo(), fgRoll); + } + //获取session中的卷号记录 + Map produceRollNos = (Map) session.getAttribute("produceRollNos"); + List errorStatusRollNos = new ArrayList<>(); + List scanedRolls = new ArrayList<>(); + //判断状态是否正确 + for(String str : produceRollNos.keySet()){ + boolean errorFlag = fg_rollMap.containsKey(str); + if(!errorFlag){ + errorStatusRollNos.add(str); + }else{ + FPRollsOutData temp = fg_rollMap.get(str); + temp.setStatus("已入库"); + temp.setStatusDb("I"); + scanedRolls.add(temp); + } + } + //判断是否可以结束 + int size = errorStatusRollNos.size(); + if(size==0){ + //从session中获取sap数据 + StringBuilder xmlParams = new StringBuilder(); + xmlParams.append("592"); + xmlParams.append(""+ DateUtils.getStringDate(new Date(), "yyyyMMdd")+""); + xmlParams.append(""+DateUtils.getStringDate(new Date(), "yyyyMMdd")+""); + xmlParams.append(""+transNo+""); + //发送的参数 + xmlParams.append(""); + //需要保存的transdetails + List transDetails = new ArrayList<>(); + //临时的itemnNo + Map tempItemNos = new HashMap<>(); + int itemNo = 1; + Map shopOrderMap = new HashMap<>(); + for(String str : produceToSap.keySet()){ + Map currentRollSap = (Map) produceToSap.get(str); + xmlParams.append("202"); + xmlParams.append(""+orderNo+""); + xmlParams.append(""+currentRollSap.get("nums").toString()+""); + xmlParams.append(""+depot+""); + //处理参数 + tempItemNos.put(orderNo, itemNo+""); + shopOrderMap.put(orderNo, Float.parseFloat(currentRollSap.get("nums").toString())); + TransDetail transDetail = new TransDetail(auth.getSite(), transNo, itemNo+"", currentRollSap.get("partNo").toString(), + Double.parseDouble(currentRollSap.get("nums").toString()), "*", + depot, "+", orderNo, null, null, null, null, null); + transDetails.add(transDetail); + itemNo++; + } + xmlParams.append(""); + Map paramsMap = new HashMap<>(); + paramsMap.put("xmlDocument", xmlParams.toString()); + String url = webservice+"/ImportReceiptFromProduction"; + logger.info("请求webservice的路径:"+url); + logger.info("请求webservice的参数:"+xmlParams.toString()); + responseData = HttpClientUtil.doGet(url, paramsMap); + if(!"200".equals(responseData.getCode())){ + responseData.setCode("500"); + responseData.setMsg("SAP服务出错!"); + //10.移除提交标记 + session.removeAttribute("produce_submit_flag"); + return responseData; + } + //判断是否保存成功 + if("200".equals(responseData.getCode())){ + String str = responseData.getMsg(); + XMLSerializer xmlSerializer = new XMLSerializer(); + String js = xmlSerializer.read(str).toString(); + JSONObject jsonObject = JSONObject.fromObject(js); + Map map = jsonObject.getJSONObject("ResponseMessage"); + String code = map.get("Code").toString(); + logger.info("请求webservice的结果:"+responseData.getMsg()); + //任务失败返回信息 + if("1".equals(code)){ + String msg = map.get("Message").toString(); + responseData.setCode("500"); + responseData.setMsg(msg); + //删除提交过程中的标记允许下一次提交 + session.removeAttribute("produce_submit_flag"); + }else{ + String sapNo = map.get("DocEntry").toString(); + //新建一个transHeader + TransHeader transHeader = new TransHeader(auth.getSite(), transNo, "SR",auth.getUsername(), auth.getUserDisplay()); + //设置Sap回写单号 + transHeader.setOrderRef1(sapNo); + //保存当前交易记录 + transHeaderDao.saveTransHeader(transHeader); + //需要保存的列表 + List saveTransDetailSub = new ArrayList<>(); + //已扫描的卷转成transdetailroll + for(int i = 0;i