|
|
@ -623,4 +623,159 @@ public class ProduceServiceImpl implements ProduceService { |
|
|
return responseData; |
|
|
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<String, Object> produceToSap = (Map<String, Object>) 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<FPRollsOutData> fg_rolls = fPRollsDao.getFGRollsByOrderNo(orderNo, auth.getSite()); |
|
|
|
|
|
Map<String, FPRollsOutData> fg_rollMap = new HashMap<>(); |
|
|
|
|
|
//转换成map |
|
|
|
|
|
for(FPRollsOutData fgRoll : fg_rolls){ |
|
|
|
|
|
fg_rollMap.put(fgRoll.getRollNo(), fgRoll); |
|
|
|
|
|
} |
|
|
|
|
|
//获取session中的卷号记录 |
|
|
|
|
|
Map<String, String> produceRollNos = (Map<String, String>) session.getAttribute("produceRollNos"); |
|
|
|
|
|
List<String> errorStatusRollNos = new ArrayList<>(); |
|
|
|
|
|
List<FPRollsOutData> 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("<BOM><BO><AdmInfo><Object>59</Object><Version>2</Version></AdmInfo>"); |
|
|
|
|
|
xmlParams.append("<Documents><row><DocDate>"+ DateUtils.getStringDate(new Date(), "yyyyMMdd")+"</DocDate>"); |
|
|
|
|
|
xmlParams.append("<DocDueDate>"+DateUtils.getStringDate(new Date(), "yyyyMMdd")+"</DocDueDate>"); |
|
|
|
|
|
xmlParams.append("<U_MESTransNo>"+transNo+"</U_MESTransNo></row></Documents>"); |
|
|
|
|
|
//发送的参数 |
|
|
|
|
|
xmlParams.append("<Document_Lines>"); |
|
|
|
|
|
//需要保存的transdetails |
|
|
|
|
|
List<TransDetail> transDetails = new ArrayList<>(); |
|
|
|
|
|
//临时的itemnNo |
|
|
|
|
|
Map<String, String> tempItemNos = new HashMap<>(); |
|
|
|
|
|
int itemNo = 1; |
|
|
|
|
|
Map<String, Float> shopOrderMap = new HashMap<>(); |
|
|
|
|
|
for(String str : produceToSap.keySet()){ |
|
|
|
|
|
Map<String, Object> currentRollSap = (Map<String, Object>) produceToSap.get(str); |
|
|
|
|
|
xmlParams.append("<row><BaseType>202</BaseType>"); |
|
|
|
|
|
xmlParams.append("<BaseEntry>"+orderNo+"</BaseEntry>"); |
|
|
|
|
|
xmlParams.append("<Quantity>"+currentRollSap.get("nums").toString()+"</Quantity>"); |
|
|
|
|
|
xmlParams.append("<WarehouseCode>"+depot+"</WarehouseCode></row>"); |
|
|
|
|
|
//处理参数 |
|
|
|
|
|
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("</Document_Lines></BO></BOM>"); |
|
|
|
|
|
Map<String, String> 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<String, Object> 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<TransDetailSub> saveTransDetailSub = new ArrayList<>(); |
|
|
|
|
|
//已扫描的卷转成transdetailroll |
|
|
|
|
|
for(int i = 0;i<scanedRolls.size();i++){ |
|
|
|
|
|
String current_itemNo = tempItemNos.get(orderNo); |
|
|
|
|
|
TransDetailSub tempTransDetailSub = new TransDetailSub("1", transNo, current_itemNo, scanedRolls.get(i).getRollNo(), |
|
|
|
|
|
scanedRolls.get(i).getRollQty(), "+", orderNo, scanedRolls.get(i).getOrderRef3(), |
|
|
|
|
|
null, null, null, null); |
|
|
|
|
|
saveTransDetailSub.add(tempTransDetailSub); |
|
|
|
|
|
} |
|
|
|
|
|
//批量保存transDetail |
|
|
|
|
|
transDetailDao.batchInsert(transDetails); |
|
|
|
|
|
//批量修改卷号状态 |
|
|
|
|
|
fPRollsDao.batchUpdateRoll(scanedRolls, depot); |
|
|
|
|
|
//批量插入明细 |
|
|
|
|
|
transDetailSubDao.batchInsert(saveTransDetailSub); |
|
|
|
|
|
//刷新shoporder的finishedQty |
|
|
|
|
|
shopOrderDao.batchUpdateQty(shopOrderMap); |
|
|
|
|
|
goBackHome(session); |
|
|
|
|
|
responseData.setCode("200"); |
|
|
|
|
|
responseData.setMsg("生产收货订单:"+sapNo+"已生成!"); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
}else{ |
|
|
|
|
|
responseData.setCode("501"); |
|
|
|
|
|
responseData.setObj(errorStatusRollNos); |
|
|
|
|
|
} |
|
|
|
|
|
return responseData; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
} |
|
|
} |