关于JSON.toJSONString()报红问题

博客提及需要导入com.alibaba.fastjson.JSON的jar包,涉及FastJSON相关信息技术内容。

import com.alibaba.fastjson.JSON;
上述为需要导入的jar包

@Override public Result transferMaterialFromSAP(String data){ log.error("物料转移接口,收到data:{}", data); //初始化 //模拟登录,使用集团账号admin loginService.login(ifmnConfig.getGroupAdmin(), companyService.getCompanyByCode(ifmnConfig.getCompanyGroup()).getId()); //成功计数,仅用于反馈SAP int successCount = 0; //失败计数,仅用于反馈SAP,与生成错误记录无关 int errorCount = 0; //查询可用量sql String sql = "SELECT * FROM STB_KYL WHERE CID = ? AND CKBM = ? AND WLBM = ? AND WLPH = ?;"; //建立map判断是否属于BCD栋 Map<String, String> plantToUserMap = new HashMap<>(); //B栋 plantToUserMap.put(ifmnConfig.getbFactoryCode(), ifmnConfig.getbAdmin()); //C栋 plantToUserMap.put(ifmnConfig.getcFactoryCode(), ifmnConfig.getcAdmin()); //D栋 plantToUserMap.put(ifmnConfig.getdFactoryCode(), ifmnConfig.getDAdmin()); //转对象 ObjectMapper objectMapper = new ObjectMapper(); //忽略未知字段 objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); //忽略大小写 objectMapper.configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES, true); List<TransferMaterialDataDto> transferMaterialDataList = new ArrayList<>(); try { transferMaterialDataList = objectMapper.readValue(data, new TypeReference<List<TransferMaterialDataDto>>() { }); } catch (IOException e) { log.error("301、302、201、202、551物料转移数据格式转换失败:{}", e.getMessage()); e.printStackTrace(); } if(transferMaterialDataList.isEmpty()){ log.error("物料转移数据转换异常,数据为空!"); return Result.success("操作成功;接口 'SAP物料转移' :物料转移数据未获取数据,修改数据" + successCount + "条;"); } //2.遍历列表,调用接口 for(TransferMaterialDataDto item : transferMaterialDataList){ log.error("物料凭证:{}", item.getMaterialDocu()); //校验旗标,代表通过校验 //允许生成不代表一定生成出库单与入库单,具体生成取决于item的outPlantFlag与inPlantFlag boolean allowFlag; //物料id Long materialId = 0L; //物料名称 String materialName = ""; //可用量 BigDecimal kyl = new BigDecimal(BigInteger.ZERO); //生成转料记录 createTransMaterial(item); //判断入库、出库工厂是否属于BCD checkPlant(item, plantToUserMap); if(item.getOutPlantFlag()) { //判定为bcd出库,需要计算可用量 //查询出库仓库可用量(工厂id,仓库编码,物料编码,批号) List<Map<String, Object>> kylList = jdbcTemplate.queryForList(sql, wmsDealUtils.obtainCompanyId(item.getOutPlant()), item.getOutWare(), item.getMaterialCode(), item.getBatch()); if(kylList.isEmpty()){ log.error("物料凭证 {} 出库单未查到可用量数据!", item.getMaterialDocu()); allowFlag = false; //记录错误信息 createErrRecord(item, null, null, "出库未查到可用量数据!", null); errorCount++; }else if (kylList.size() > 1) { //可用量查到多条 log.error("物料凭证 {} 出库单查到多条可用量数据!", item.getMaterialDocu()); allowFlag = false; //记录错误信息 createErrRecord(item, null, null, "出库查到多条可用量数据!", null); errorCount++; } else { //查到数据,对物料名称、物料id、可用量进行改写 kyl = (BigDecimal) kylList.get(0).get("KYL"); materialId = (Long) kylList.get(0).get("GOOD"); materialName = kylList.get(0).get("WLMC").toString(); if (kyl.compareTo(item.getTransNum()) < 0) { //当前仓库可用量不足 log.error("出库仓库可用量不足!"); log.error("物料凭证 {} 当前出库可用量不足!", item.getMaterialDocu()); allowFlag = false; //记录错误信息 createErrRecord(item, materialId, materialName, "物料可用量不足,出库失败!", kyl); errorCount++; }else{ allowFlag = true; } } }else{ //非bcd出库,允许出库 allowFlag = true; } //判定为bcd入库,不需要校验 // if(item.getInPlantFlag()){ // //do noting // } boolean successOut = true; boolean successIn = true; if(allowFlag){ log.error("校验通过,可以进行出库入库"); if(item.getOutPlantFlag()){ log.error("开始生成出库单"); String outData = outWareData(item); log.error("出库单data:{}", outData); Result outResult = otherOutSingle(outData, item.getMaterialDocu(), "SAP物料转移", wmsDealUtils.obtainCompanyId(item.getOutPlant())); if(outResult.getCode() != 200){ log.error("调用出库单接口失败!具体信息:{}", outResult); //记录错误信息 createErrRecord(item, null, null, "调用出库单接口失败!具体信息:" + outResult, null); successOut = false; } } if(item.getInPlantFlag()){ log.error("开始生成入库单"); String inData = inWareData(item); log.error("入库单data:{}", inData); Result inResult = otherInSingle(inData, item.getMaterialDocu(), "SAP物料转移", wmsDealUtils.obtainCompanyId(item.getInPlant())); if(inResult.getCode() != 200){ log.error("调用入库单接口失败!具体信息:{}", inResult); //todo 记录错误信息 createErrRecord(item, null, null, "调用入库单接口失败!具体信息:" + inResult, null); successIn = false; } } if(successOut && successIn){ successCount++; }else{ errorCount++; } } } //为保证对方系统正常运行,任何情况都返回success return Result.success("操作成功;接口 'SAP同步物料给MES' :成功数据 " + successCount + " 条,失败 " + errorCount + "条。"); } /** * 生成转料记录 * @param item */ private void createTransMaterial(TransferMaterialDataDto item){ log.error("开始生成转料记录"); SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); //生成转料记录 IFMNTransMaterial transMaterial = new IFMNTransMaterial(); transMaterial.setBatch(item.getBatch()); transMaterial.setDocumentItem(item.getDocumentItem()); transMaterial.setInPlant(item.getInPlant()); transMaterial.setInWare(item.getInWare()); transMaterial.setMaterialCode(item.getMaterialCode()); transMaterial.setMaterialDocu(item.getMaterialDocu()); transMaterial.setObtainDate(new Date()); transMaterial.setOutPlant(item.getOutPlant()); transMaterial.setOutWare(item.getOutWare()); Date postDate = new Date(); try{ postDate = sdf.parse(item.getPostDate()); }catch (Exception e) { //do nothing } transMaterial.setPostDate(postDate); transMaterial.setTransNum(item.getTransNum()); transMaterial.setTransType(new SystemCode("IFMN_TransType/" + item.getTransType())); transMaterialDao.save(transMaterial); } /** * 判断工厂是否属于bcd * @param item * @param plantToUserMap */ private void checkPlant(TransferMaterialDataDto item, Map<String, String> plantToUserMap){ //判断入库工厂,工厂属于bcd栋则设定入库管理员code if(plantToUserMap.containsKey(item.getInPlant())){ log.error("入库属于bcd栋"); item.setInPlantFlag(true); item.setInPlantAdmin(plantToUserMap.get(item.getInPlant())); } //判断出库工厂,工厂属于bcd栋则设定出库管理员code if(plantToUserMap.containsKey(item.getOutPlant())){ log.error("出库属于bcd栋"); item.setOutPlantFlag(true); item.setOutPlantAdmin(plantToUserMap.get(item.getOutPlant())); } } /** * 生成出库单data * @param item * @return */ private String outWareData(TransferMaterialDataDto item){ log.error("开始生成出库单data..."); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); //生成同步仓库的detail List<Map<String, Object>> detailList = new ArrayList<>(); //warehouse细节 Map<String, Object> detail = new HashMap<>(); //物料编码 detail.put("goodCode", item.getMaterialCode()); //数量 detail.put("quantity", item.getTransNum()); //出库批号 detail.put("batchText", item.getBatch()); detailList.add(detail); Staff staff = staffService.getStaffByCode(item.getOutPlantAdmin()); Map<String, Object> outMap = new HashMap<>(); //用户名 outMap.put("userName", item.getOutPlantAdmin()); //公司编码 outMap.put("companyCode", item.getOutPlant()); //蓝字 redBlue outMap.put("redBlue", "blue"); //部门编码 outMap.put("deptCode", staff.getMainPosition().getDepartment().getCode()); //人员编码 outMap.put("staffCode", item.getOutPlantAdmin()); //出库原因 outMap.put("comeType", "generalGoodOut"); //工作流编码 outMap.put("workflowStateSetCode", "otherOut"); //备注 outMap.put("handRemarks", "物料转移,物料凭证【" + item.getMaterialDocu() + "】"); //出库日期 outMap.put("storageDate", sdf.format(new Date())); //仓库编码 outMap.put("wareCode", item.getOutWare()); //detailList outMap.put("detailList", detailList); return JSONObject.toJSONString(outMap); } /** * 生成入库单data * @param item * @return */ private String inWareData(TransferMaterialDataDto item){ log.error("开始生成入库单data..."); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); //生成同步仓库的detail List<Map<String, Object>> detailList = new ArrayList<>(); //warehouse细节 Map<String, Object> detail = new HashMap<>(); //物料编码 detail.put("goodCode", item.getMaterialCode()); //数量 detail.put("quantity", item.getTransNum()); //入库批号 detail.put("batchText", item.getBatch()); detailList.add(detail); Staff staff = staffService.getStaffByCode(item.getInPlantAdmin()); //生成同步仓库的map Map<String, Object> outMap = new HashMap<>(); //用户名 outMap.put("userName", item.getInPlantAdmin()); //公司编码 outMap.put("companyCode", item.getInPlant()); //蓝字 redBlue outMap.put("redBlue", "blue"); //部门编码 outMap.put("deptCode", staff.getMainPosition().getDepartment().getCode()); //人员编码 outMap.put("staffCode", item.getInPlantAdmin()); //入库原因 outMap.put("comeType", "cgylrk"); //工作流编码 outMap.put("workflowStateSetCode", "otherInFlw"); //备注 outMap.put("handRemarks", "物料转移,物料凭证【" + item.getMaterialDocu() + "】"); //入库日期 outMap.put("storageDate", sdf.format(new Date())); //仓库编码 outMap.put("wareCode", item.getInWare()); //detailList outMap.put("detailList", detailList); return JSONObject.toJSONString(outMap); } /** * 生成错误记录 * @param item * @param materialId * @param materialName */ private void createErrRecord(TransferMaterialDataDto item, Long materialId, String materialName, String errMsg, BigDecimal mesNum){ IFMNTransErrorData errorData = new IFMNTransErrorData(); errorData.setMaterialDocu(item.getMaterialDocu()); errorData.setDocumentItem(item.getDocumentItem()); errorData.setTransType(new SystemCode("IFMN_TransType/" + item.getTransType())); errorData.setOutPlant(item.getOutPlant()); errorData.setOutWare(item.getOutWare()); errorData.setInPlant(item.getInPlant()); errorData.setInWare(item.getInWare()); errorData.setMaterialCode(item.getMaterialCode()); if(Objects.nonNull(materialId)){ errorData.setMaterialId(materialId.toString()); } errorData.setMaterialName(materialName); errorData.setBatch(item.getBatch()); errorData.setSapTransNum(item.getTransNum()); errorData.setMesNum(mesNum); errorData.setErrorMsg(errMsg); errorData.setIsClose(false); transErrorDataDao.save(errorData); }方法所处类已加事务控制,忽略该问题
11-07
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值