package com.tld.service.impl; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.tld.excel.ExcelUtils; import com.tld.mapper.*; import com.tld.model.*; import com.tld.model.Error; import com.tld.service.AskGoodsService; import com.tld.service.QueryListService; import com.tld.service.WarehousingService; import com.tld.util.DateUtil; import com.tld.util.HttpClientUtil; import org.redisson.api.RLock; import org.redisson.api.RedissonClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.text.SimpleDateFormat; import java.util.*; @Service public class AskGoodsServiceImpl implements AskGoodsService { @Autowired private AskGoodsMapper askGoodsMapper; //redis锁 @Autowired private RedissonClient redissonClient; //入库 @Autowired private WarehousingMapper warehousingMapper; //入库 @Autowired private WarehousingService warehousingService; @Autowired private ErrorMapper errorMapper; @Autowired private DeliveryMapper deliveryMapper; @Autowired private DictionaryMapper dictionaryMapper; @Autowired private QueryListMapper queryListMapper; @Autowired private QueryListService queryListService; /** * @Description: 要货申请单(生产领用申请) * @Param: mapList * @return: Map 成功失败状态 * @Author: XiaoChen * @Date: 2023/4/10 */ @Override @Transactional(rollbackFor = Exception.class) public Map addAskGoods(List> mapList) { Map map = new HashMap<>(); try{ List askGoodsList = new LinkedList(); for(Map jsonMap:mapList) { List> list = (List) jsonMap.get("datalist"); for (Map element : list) { AskGoods ag = new AskGoods(); //父表 ag.setAskGoodsId(jsonMap.get("requestOrderId").toString()); ag.setAskGoodsCode(jsonMap.get("requestOrderNo").toString()); ag.setCompanyNumber(jsonMap.get("companyNo").toString()); ag.setSqrq(jsonMap.get("requestDate").toString());//申请日期 ag.setDepartmentId(jsonMap.get("useDepartment").toString()); ag.setSourceType(jsonMap.get("sourceType").toString()); ag.setMoveType(jsonMap.get("moveType").toString()); ag.setRequestTypeNumber(jsonMap.get("requestTypeNumber").toString()); ag.setRequestTypeName(jsonMap.get("requestTypeName").toString()); ag.setIfCommodity(jsonMap.get("ifCommodity").toString()); //子表 ag.setType("0"); ag.setEntryNumber(element.get("entryNumber").toString()); ag.setProductionCode(element.get("prodOrderNo").toString()); ag.setMaterialId(element.get("materialId").toString()); ag.setWbs(element.get("WBS").toString()); ag.setMeasurementId(element.get("measUnitId").toString()); ag.setNum(element.get("orderCount").toString()); askGoodsList.add(ag); } } for(AskGoods askGoods : askGoodsList) { // int count = askGoodsMapper.getAskGoods(askGoods); // if (count != 0) { // askGoodsMapper.updateAskGoodsNum(askGoods); // } else { if (askGoodsMapper.getAskGoodsf(askGoods) == 0) { askGoodsMapper.addAskGoodsf(askGoods); } askGoodsMapper.addAskGoods(askGoods); // } askGoodsMapper.addAskGoodsLog(askGoods); } //新增日志 Access access = new Access().setType("生产领料信息").setData(JSON.toJSONString(mapList)).setAccessType("0"); dictionaryMapper.addAccess(access); map.put("status", "0000"); map.put("msg","成功"); }catch (Exception e){ e.printStackTrace(); map.put("status", "0002"); map.put("msg", "服务器请求异常,请稍后再试"); } return map; } @Override public Map getAskGoodsfList(AskGoods askGoods) { Map map = new HashMap<>(); try{ List list = askGoodsMapper.getAskGoodsfList(askGoods); map.put("data", list); map.put("msg", "200"); }catch (Exception e){ e.printStackTrace(); map.put("msg", "500"); map.put("errMsg", "失败"); } return map; } @Override public Map getAskGoodsMaterial(AskGoods askGoods) { Map map = new HashMap<>(); try{ List list = askGoodsMapper.getAskGoodsMaterial(askGoods); List scanNum = new LinkedList<>(); List mapVal = new LinkedList<>(); for(AskGoods askGoods1 : list){ askGoods1.setUniqueCode(askGoods.getUniqueCode()); askGoods1.setWllbCode(askGoods1.getMaterialCode()); scanNum.add(askGoodsMapper.getScanNum(askGoods1));//扫描总数 Inventory inventory = new Inventory() .setMaterialId(askGoods1.getMaterialId()) .setWbs(askGoods1.getWbs()) .setCompanyCode(askGoods1.getCompanyNumber()) .setGroupBy(askGoods.getGroupBy()); List> inventorVal = queryListMapper.storageLocation(inventory); if(inventorVal.size() != 0) { mapVal.add(inventorVal.get(0).get("sum").toString()); } else { mapVal.add("0"); } } map.put("scanNum", scanNum); map.put("sum", mapVal); map.put("data", list); map.put("msg", "200"); }catch (Exception e){ e.printStackTrace(); map.put("msg", "500"); map.put("errMsg", "失败"); } return map; } @Override public Map getMaterialCk(AskGoods askGoods) { Map map = new HashMap<>(); try{ List list = new LinkedList<>(); for(Inventory inventory : askGoodsMapper.getMaterialCk(askGoods)){ AskGoods askGoods1 = askGoodsMapper.getAsk(inventory); if(askGoods1 != null){ if(Double.doubleToLongBits(Double.parseDouble(askGoods1.getNum())) != Double.doubleToLongBits(Double.parseDouble(inventory.getAmount())) ){ list.add(inventory); } } else { list.add(inventory); } } map.put("data", list); map.put("msg", "200"); }catch (Exception e){ e.printStackTrace(); map.put("msg", "500"); map.put("errMsg", "失败"); } return map; } @Override @Transactional(rollbackFor = Exception.class) public Map addAskGoodsVitrual(AskGoods askGoods) { Map map = new HashMap<>(); //redis并发锁 RLock lock = redissonClient.getLock(askGoods.getUniqueCode()); lock.lock(); try{ Map mapVal = askGoodsMapper.getScanIsNot(askGoods); if(Double.doubleToLongBits(Double.parseDouble(mapVal.get("inventoryNum").toString()) - Double.parseDouble(mapVal.get("virtualNum").toString())) == 0){ map.put("msg", "500"); map.put("errMsg", "已全部出库"); return map; } askGoods.setAccountSleeve(askGoods.getCompanyNumber()); Inventory inventory = askGoodsMapper.getInventory(askGoods); //库存数量 AskGoods askGoods1 = askGoodsMapper.getAsknInfo(askGoods); //要货单数量 int alreadyNum = askGoodsMapper.getAskInfoNumVitrual(askGoods);//已扫描总数 int inventoryAlready = askGoodsMapper.getInventoryAlready(askGoods);//库存已扫描数量 Double inventorySurplus = DateUtil.formatDouble1((Double.parseDouble(inventory.getAmount()) - Double.parseDouble(inventory.getAmountLock())) - inventoryAlready); //库存剩余数量 Double surplusNum = DateUtil.formatDouble1(Double.parseDouble(askGoods1.getNum()) - Double.parseDouble(askGoods1.getOutNum()) - alreadyNum); //剩余要扫描数量 if(Double.doubleToLongBits(surplusNum) >= Double.doubleToLongBits(inventorySurplus)){ askGoods.setNum(String.valueOf(inventorySurplus)); } else { askGoods.setNum(String.valueOf(surplusNum)); } askGoods.setStorageLocationCode(inventory.getStorageLocationCode());//库存编号 askGoodsMapper.addAskGoodsVitrual(askGoods); map.put("msg", "200"); }catch (Exception e){ e.printStackTrace(); map.put("msg", "500"); map.put("errMsg", "失败"); } finally { //判断要解锁的key是否已被锁定;判断要解锁的key是否被当前线程持有 if (lock.isLocked() && lock.isHeldByCurrentThread()) { //释放锁 lock.unlock(); } } return map; } @Override public Map addAskGoodsVitrualMinus(AskGoods askGoods) { Map map = new HashMap<>(); try{ askGoodsMapper.addAskGoodsVitrual(askGoods); map.put("msg", "200"); }catch (Exception e){ e.printStackTrace(); map.put("msg", "500"); map.put("errMsg", "失败"); } return map; } @Override @Transactional(rollbackFor = Exception.class) public Map OutOfLibrary(String uniqueCode, String type, String askGoodsId, String name) { Map map = new HashMap<>(); //redis并发锁 RLock lock = redissonClient.getLock(uniqueCode); lock.lock(); try{ //出库流水 String removalCode = codeGenerateCk(); List list = askGoodsMapper.getVirtualUniqueCode(uniqueCode, type, askGoodsId); for(AskGoods askGoods : list){ askGoods.setStorageCode(removalCode); askGoods.setCompanyNumber(askGoods.getAccountSleeve()); String materialId = askGoodsMapper.getMaterialId(askGoods.getWllbCode());//查询物料id Inventory inventory = askGoodsMapper.getInventory(askGoods);//查询库存数量 if(inventory == null) { // throw new Exception("库存不存在"); // System.out.println("库存不存在"); //查询物料信息 MaterialClass material = warehousingMapper.getMaterial(new Notice().setMaterialCode(askGoods.getWllbCode())); inventory = new Inventory() .setStorageLocationCode(askGoods.getStorageLocationCode()) .setAmount("0") .setWllbClass(material.getWllbClass()) .setMaterialId(material.getTldId()) .setWllbCode(material.getWllbCode()) .setAccountSleeve(askGoods.getAccountSleeve()) .setWbs(askGoods.getWbs()) .setProducDate(askGoods.getProducDate()) .setProducBatch("19700101") .setSupplierId(askGoods.getSupplierId()) .setSerial(askGoods.getSerial()); if(material.getPartType().equals("半成品") || material.getPartType().equals("产成品")) { inventory.setSupplierId("EC13437"); if(askGoods.getAccountSleeve().equals("8130")){ inventory.setSerial("000000"); } else if(askGoods.getAccountSleeve().equals("8400")){ inventory.setSerial("100000"); } } askGoodsMapper.addInventory(inventory); inventory.setId(inventory.getId()); } //如果出库库存等于虚拟表库存则删除此库存 if(Double.doubleToLongBits(Double.parseDouble(askGoods.getNum())) == Double.doubleToLongBits(Double.parseDouble(inventory.getAmount()))){ askGoodsMapper.deleteInventory(inventory); } else { inventory.setAmount(askGoods.getNum()); askGoodsMapper.updateInventory(inventory); } AskGoods askGoods1 = askGoodsMapper.getAskDetailed(askGoodsId, materialId, askGoods.getEntryNumber());//查询要料申请单内容 ReturRemoval returRemoval = new ReturRemoval() .setMaterialId(materialId) .setDocumentId(askGoodsId) .setWbs(askGoods1.getWbs()) .setNum(askGoods.getNum()) .setEntryNumber(askGoods1.getEntryNumber()) .setDocumentPointsId(askGoods1.getId()) .setStorageLocationCode(askGoods.getStorageLocationCode()); askGoodsMapper.addRemoval(askGoods);//插入出库流水 askGoodsMapper.deleteVirtual(askGoods.getId());//删除已出虚拟表库存 askGoodsMapper.addReturnGsRemoval(returRemoval);//新增返回gs数据子表信息 askGoodsMapper.updateOutNum(askGoods.getNum(), askGoodsId, materialId, askGoods.getEntryNumber());//修改出库数量 } //查询要货单父级信息 AskGoods askGoods3 = askGoodsMapper.getAskDetailedF(askGoodsId); // if(askGoods3 != null){ ReturRemoval returRemoval1 = new ReturRemoval() .setDocumentId(askGoods3.getAskGoodsId()) .setRemovalCode(removalCode) .setSourceType(askGoods3.getSourceType()) .setMoveType(askGoods3.getMoveType()) .setName(name) .setRequestTypeName(askGoods3.getRequestTypeName()); askGoodsMapper.addReturnGsRemovalF(returRemoval1);//新增返回gs数据父表信息 map.put("data", askGoods3.getAskGoodsId()); // } else { // map.put("data", "0"); // } map.put("msg", "200"); }catch (Exception e){ e.printStackTrace(); map.put("msg", "500"); map.put("errMsg", "失败"); } finally { //判断要解锁的key是否已被锁定;判断要解锁的key是否被当前线程持有 if (lock.isLocked() && lock.isHeldByCurrentThread()) { //释放锁 lock.unlock(); } } return map; } /** * 出库回传 * @param removalCode 单据id */ @Override @Transactional(rollbackFor = Exception.class) public void plugOutRemoval(String removalCode, String realName) { try{ for(String warehouseWhere : askGoodsMapper.getWarehouseWhere(removalCode)){ List> mapList = askGoodsMapper.plugOutRemoval(removalCode); if(mapList.size() >0 ) { JSONObject strJson = new JSONObject(); int isRed = 0; if(mapList.get(0).get("requestTypeName").toString().equals("跨月退料")){ isRed = 2; } else { isRed = 0; } //父表 strJson.put("GIReqBillID", mapList.get(0).get("askGoodsId").toString());//要货单id strJson.put("WMSID", mapList.get(0).get("id").toString());//出库单id strJson.put("WMSCode", mapList.get(0).get("removalCode").toString());//出库单编号 strJson.put("WareHouse", warehouseWhere);//仓库ID strJson.put("SourceBillDate",DateUtil.dateConversion(mapList.get(0).get("scrq").toString()));//业务日期 strJson.put("SourceType", mapList.get(0).get("sourceType").toString());//来源类型 8 strJson.put("MoveType", mapList.get(0).get("moveType").toString());//移动类型 strJson.put("IsRed", isRed);//是否红单1 2 if (realName == null || realName == ""){ realName = "李兆峰" ; } strJson.put("Creator", realName);//制单人姓名1 //子表 for (Map map : askGoodsMapper.getRemovalz(mapList.get(0).get("askGoodsId").toString(), warehouseWhere)) { List list = new LinkedList<>();//5 JSONObject BillItems = new JSONObject();//6 List retunList = new LinkedList<>();//3 JSONObject ReqOutStocks = new JSONObject();//2 JSONObject returnData = new JSONObject();//1 BillItems.put("WMSItemID", map.get("id"));//分录ID BillItems.put("GIReqBillID", map.get("askGoodsId"));//要货申请单ID BillItems.put("GIReqBillItemID", map.get("entryNumber"));//要货申请明细ID BillItems.put("Material", map.get("materialId"));//物料id BillItems.put("Quantity", map.get("num"));//数量 BillItems.put("FlexField1", map.get("wbsId"));//wbs BillItems.put("FlexField1Code", map.get("wbsCode"));//WBS编号 BillItems.put("FlexField1Name", map.get("wbsName"));//WBS名称 list.add(BillItems);//*1 子表信息放在集合中 strJson.put("BillItems", list);//*2 将子表集合放在父表中 retunList.add(strJson);//*3 将父子表信息放在集合中 ReqOutStocks.put("ReqOutStocks",retunList);//*4 将放集合的数据封装到ReqOutStocks returnData.put("strJson", JSON.toJSONString(ReqOutStocks));//*5 将封装好的ReqOutStocks放进strJson //添加记录到tld_access String names = "出库回传" ; String accessType = "1" ; String returnGsRemoval = returnData.toString() ; askGoodsMapper.addAccess(names,returnGsRemoval,accessType); System.out.println("封装好的:"+returnData); //回传地址 String url = "https://erp4.teld.cn:8443/cwbase/sg/V1/ERP/TELD/TELD_WMS/TELD_API_WMS_StockManage/CreateProductiveOutStock"; // String url = "http://42.159.85.29:52480/cwbase/sg/V1/ERP/TELD/DEVTEST/API_WMS_PurInStock/CreateProductiveOutStock"; HttpClientUtil httpClientUtil1 = new HttpClientUtil(); Map result = httpClientUtil1.doPost(url, returnData); System.out.println("返回信息" + result); //如果失败存入错误信息 Error error = new Error(); if(Integer.parseInt(result.get("msg").toString()) != 200){ //如果失败存入报错信息跟数据 error.setErrorInfo(result.get("data").toString()); error.setUrl(url); error.setDataVal(returnData.toJSONString()).setType("出库回传"); //修改流水传输状态 for(Map maps : askGoodsMapper.plugOutRemoval(removalCode)){ askGoodsMapper.updateRemoval(maps.get("removalCode").toString(), null); } errorMapper.addError(error); }else { JSONObject jsonObject = (JSONObject) JSONObject.parse(result.get("data").toString()); JSONObject jsonObject1 = (JSONObject) JSONObject.parse(jsonObject.get("result").toString()); if ( jsonObject1.get("State").toString().equals("0") ){ //如果失败存入报错信息跟数据 error.setErrorInfo(jsonObject1.get("Msg").toString()); error.setUrl(url); error.setDataVal(returnData.toJSONString()).setType("出库回传"); errorMapper.addError(error); //修改流水传输状态 for(Map maps : askGoodsMapper.plugOutRemoval(removalCode)){ askGoodsMapper.updateRemoval(maps.get("removalCode").toString(), null); } }else { List data1 = (List) JSONObject.parse(jsonObject1.get("data").toString()); for (JSONObject map1 : data1) { if (map1.get("State").toString().equals("0")){ for(JSONObject jsonObject2 : retunList){ if(jsonObject2.get("WMSCode").toString().equals(map1.get("WMSCode")) && jsonObject2.get("WareHouse").toString().equals(map1.get("WareHouse"))){ //如果失败存入报错信息跟数据 List retunList2 = new LinkedList<>(); retunList2.add(jsonObject2); JSONObject ReqOutStocks1 = new JSONObject(); ReqOutStocks1.put("ReqOutStocks", retunList2); JSONObject ReqOutStocks2 = new JSONObject(); ReqOutStocks2.put("strJson",ReqOutStocks1.toJSONString()); //如果失败存入报错信息跟数据 error.setErrorInfo(map1.get("FailReason").toString()); error.setUrl(url); error.setDataVal(ReqOutStocks2.toJSONString()).setType("出库回传"); errorMapper.addError(error); List list1 = (List) jsonObject2.get("BillItems"); for(JSONObject jsonObject3 : list1){ MaterialClass material = warehousingMapper.getMaterial(new Notice().setMaterialId(jsonObject3.get("Material").toString())); askGoodsMapper.updateRemoval(jsonObject2.get("WMSCode").toString(), material.getWllbCode()); } } } } } } } } } } //删除父子表信息 askGoodsMapper.delPlugOutRemoval(removalCode); askGoodsMapper.delRemovalz(removalCode); }catch (Exception e){ e.printStackTrace(); } } @Override public Map getRemoval(AskGoods askGoods) { Map map = new HashMap<>(); try{ //查询数据 PageHelper.startPage(askGoods.getPage(), askGoods.getLimit()); PageInfo list = new PageInfo<>(askGoodsMapper.getRemoval(askGoods)); map.put("data", list); map.put("msg", "200"); }catch (Exception e){ e.printStackTrace(); map.put("msg", "500"); map.put("errMsg", "失败"); } return map; } @Override public void export(AskGoods askGoods, HttpServletResponse response) { try{ //导出数据汇总 List> sheetDataList = new ArrayList<>(); //表头数据 List head = Arrays.asList("物料名称", "供应商名称", "连番号", "类型", "出库用户", "领用部门", "库位名称", "出库日期", "出库数量","要货单编号","真实姓名","公司名称","WBS","WBS名称"); //查询数据 List> list = askGoodsMapper.export(askGoods); sheetDataList.add(head); for(Map userMap : list){ List listSheet = new ArrayList<>(); for(String key: userMap.keySet()){ listSheet.add(userMap.get(key)); } sheetDataList.add(listSheet); } //当前时间 Date time = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyyMddHHmmss"); ExcelUtils.export(response, "出库流水数据导出" + sdf.format(time), sheetDataList); }catch (Exception e){ e.printStackTrace(); } } @Override public Map getAskGoodsVitrual(String uniqueCode, String type) { Map map = new HashMap<>(); try{ List list = askGoodsMapper.getAskGoodsVitrual(uniqueCode, type); map.put("data", list); map.put("msg", "200"); }catch (Exception e){ e.printStackTrace(); map.put("msg", "500"); map.put("errMsg", "失败"); } return map; } @Override @Transactional(rollbackFor = Exception.class) public Map delAskGoodsVitrual(String id, String type) { Map map = new HashMap<>(); try{ askGoodsMapper.delAskGoodsVitrual(id, type); map.put("msg", "200"); }catch (Exception e){ e.printStackTrace(); map.put("msg", "500"); map.put("errMsg", "失败"); } return map; } @Override public Map getGoodsHalf(AskGoods askGoods, HttpServletRequest request) { Map map = new HashMap<>(); try{ //查询数据 PageHelper.startPage(askGoods.getPage(), askGoods.getLimit()); askGoods.setIsWeb(request.getHeader("isWeb")); PageInfo list = new PageInfo<>(askGoodsMapper.getGoodsHalf(askGoods)); for (AskGoods goods : list.getList()) { String amount = askGoodsMapper.getAmount(goods); goods.setAmount(amount); } map.put("data", list); map.put("msg", "200"); }catch (Exception e){ e.printStackTrace(); map.put("msg", "500"); map.put("errMsg", "失败"); } return map; } @Override public Map getRemovalHalfProduct(AskGoods askGoods) { Map map = new HashMap<>(); try{ //查询数据 PageHelper.startPage(askGoods.getPage(), askGoods.getLimit()); PageInfo list = new PageInfo<>(askGoodsMapper.getRemovalHalfProduct(askGoods)); map.put("data", list); map.put("msg", "200"); }catch (Exception e){ e.printStackTrace(); map.put("msg", "500"); map.put("errMsg", "失败"); } return map; } @Override public void getRemovalHalfProductExcel(AskGoods askGoods, HttpServletResponse response) { try{ //导出数据汇总 List> sheetDataList = new ArrayList<>(); //表头数据 List head = Arrays.asList("要货单", "出库编号","物料编号","物料名称", "出库数量", "出库人", "领用部门", "WBS编号","WBS名称", "出库时间","真实姓名","所属公司"); //查询数据 List> list = askGoodsMapper.getRemovalHalfProductExcel(askGoods); sheetDataList.add(head); for(Map userMap : list){ List listSheet = new ArrayList<>(); for(String key: userMap.keySet()){ listSheet.add(userMap.get(key)); } sheetDataList.add(listSheet); } //当前时间 Date time = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyyMddHHmmss"); ExcelUtils.export(response, "半成品出库流水数据导出" + sdf.format(time), sheetDataList); }catch (Exception e){ e.printStackTrace(); } } @Override public Map getRemovalHalf(AskGoods askGoods) { Map map = new HashMap<>(); try{ //查询数据 PageHelper.startPage(askGoods.getPage(), askGoods.getLimit()); PageInfo list = new PageInfo<>(askGoodsMapper.getRemovalHalf(askGoods)); map.put("data", list); map.put("msg", "200"); }catch (Exception e){ e.printStackTrace(); map.put("msg", "500"); map.put("errMsg", "失败"); } return map; } @Override public void getRemovalHalfExcel(AskGoods askGoods, HttpServletResponse response) { try{ //导出数据汇总 List> sheetDataList = new ArrayList<>(); //表头数据 List head = Arrays.asList("交货单编号","物料名称", "出库数量", "用户名称", "出库时间", "公司名称", "客户名称", "出库单编号", "WBS","WBS名称","真实姓名"); //查询数据 List> list = askGoodsMapper.getRemovalHalfExcel(askGoods); sheetDataList.add(head); for(Map userMap : list){ List listSheet = new ArrayList<>(); for(String key: userMap.keySet()){ listSheet.add(userMap.get(key)); } sheetDataList.add(listSheet); } //当前时间 Date time = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyyMddHHmmss"); ExcelUtils.export(response, "产成品出库流水数据导出" + sdf.format(time), sheetDataList); }catch (Exception e){ e.printStackTrace(); } } /** * @Description: 其他出库 * @Param: AskGoods askGoods * @return: Map map * @Author: XiaoChen * @Date: 2023/4/15 */ @Override public Map otherAskGoods(AskGoods askGoods) { Map map = new HashMap<>(); //redis并发锁 RLock lock = redissonClient.getLock(askGoods.getWllbCode() + askGoods.getStorageLocationCode()); lock.lock(); try{ //查询物料信息 MaterialClass material = warehousingMapper.getMaterial(new Notice().setMaterialCode(askGoods.getWllbCode())); if(material.getPartType().equals("原材料")){ if(askGoods.getSerial() == null) { map.put("msg", "500"); map.put("errMsg", "此物料是" + material.getPartType() + "连番号参数不能为空!"); return map; } } else if(material.getPartType().equals("产成品")) { if(askGoods.getAttribute() == null) { map.put("msg", "500"); map.put("errMsg", "此物料是" + material.getPartType() + "属性参数不能为空!"); return map; } } else if(material.getPartType().equals("半成品")) { askGoods.setProducDate(null); if(askGoods.getStorageLocationCode() == null) { map.put("msg", "500"); map.put("errMsg", "此物料是" + material.getPartType() + "库位参数不能为空!"); return map; } } askGoods.setMaterialId(material.getTldId()); //查询库存 List inventory = askGoodsMapper.getInventoryInfo(askGoods); if(inventory.size() == 0){ map.put("msg", "500"); map.put("errMsg", "未查询到该库位的库存"); return map; } if(Double.parseDouble(inventory.get(0).getAmount()) < Double.parseDouble(askGoods.getNum())){ map.put("msg", "500"); map.put("errMsg", "库存数量不足"); return map; } //如果出库库存等于虚拟表库存则删除此库存 if(Double.doubleToLongBits(Double.parseDouble(askGoods.getNum())) == Double.doubleToLongBits(Double.parseDouble(inventory.get(0).getAmount()))){ askGoodsMapper.deleteInventory(inventory.get(0)); } else { inventory.get(0).setAmount(askGoods.getNum()); askGoodsMapper.updateInventory(inventory.get(0)); } String removalCode = codeGenerateCk(); if(material.getPartType().equals("半成品")){ //新增半成品出库流水 AskGoods askGoods1 = new AskGoods() .setWllbCode(material.getWllbCode()) .setNum(askGoods.getNum()) .setUserId(askGoods.getUserId()) .setAskGoodsId("") .setDepartment(askGoods.getDepartment()) .setWbs(askGoods.getWbs()) .setStorageCode(removalCode) .setStorageLocationCode(askGoods.getStorageLocationCode()) .setCompanyNumber(askGoods.getAccountSleeve());//新增出库流水 warehousingMapper.addRemovalHalfProduct(askGoods1); } else if(material.getPartType().equals("产成品")){ //产成品销售流水 Delivery delivery1 = new Delivery() .setMaterialCode(material.getWllbCode()) //物料code .setOutNum(askGoods.getNum()) //出库数量 .setUserId(askGoods.getUserId()) //用户id .setDeliveryId("") //销售单id .setCompanyNumber(askGoods.getAccountSleeve()) //公司编号 .setCustomerCode("")//客户编号 .setWbs(askGoods.getWbs()) .setStorageCode(removalCode); deliveryMapper.addRemovalHalf(delivery1); //流水录入 } else { askGoods.setSupplierId(inventory.get(0).getSupplierId()); askGoods.setType("其他出库"); askGoods.setProducDate(inventory.get(0).getProducDate()); askGoods.setSerial(inventory.get(0).getSerial()); askGoods.setStorageCode(removalCode); askGoods.setWbs(askGoods.getWbs()); askGoodsMapper.addRemoval(askGoods);//插入出库流水 } //新增返回gs信息 ReturRemoval returRemoval = new ReturRemoval() .setMaterialId(material.getTldId()) .setWbs(askGoods.getWbs()) .setNum(askGoods.getNum()) .setStorageLocationCode(inventory.get(0).getStorageLocationCode()) .setRemovalCode(removalCode) .setSourceType(askGoods.getSourceType()) .setMoveType(askGoods.getMoveType()) .setDocumentId(askGoods.getAskGoodsId()) .setEntryNumber(askGoods.getEntryNumber()) .setDocumentPointsId(askGoods.getId()); askGoodsMapper.updateEnquiryOutNum(askGoods); //增加数量 askGoodsMapper.addReturnGsRemovalF(returRemoval);//新增返回gs数据父表信息 askGoodsMapper.addReturnGsRemoval(returRemoval);//新增返回gs数据子表信息 map.put("data", removalCode); map.put("msg", "200"); }catch (Exception e){ map.put("msg", "500"); map.put("errMsg", "失败"); e.printStackTrace(); } finally { //判断要解锁的key是否已被锁定;判断要解锁的key是否被当前线程持有 if (lock.isLocked() && lock.isHeldByCurrentThread()) { //释放锁 lock.unlock(); } } return map; } @Override @Transactional(rollbackFor = Exception.class) public Map delAskGoods(String id, HttpServletRequest request) { Map map = new HashMap<>(); try{ String userId = request.getHeader("userId"); Map mapVal = askGoodsMapper.getDelAskGoods(id); if(Double.parseDouble(mapVal.get("out_num").toString()) > 0){ map.put("msg", "500"); map.put("errMsg", "此单据已出库!"); return map; } LogData logData = new LogData() .setUserId(userId) .setData(mapVal.toString()) .setType("0") .setDocumentType("生产领料"); dictionaryMapper.addLogdata(logData); askGoodsMapper.delAskGoods(id); map.put("msg","200"); } catch (Exception e) { e.printStackTrace(); map.put("msg", "500"); map.put("errMsg", "服务器请求异常,请稍后再试"); } return map; } /** * 销售发货单接口 * @return */ @Override public void CreateBOLOutStock(String removalCode, String realName) { try{ String documentId = null ; for(String warehouseWhere : askGoodsMapper.getWarehouseWheres(removalCode)){ List> mapList = askGoodsMapper.getGsRemoval(removalCode); if(mapList.size() >0 ) { JSONObject strJson = new JSONObject(); //父表 documentId = mapList.get(0).get("askGoodsId").toString(); strJson.put("BOLID", mapList.get(0).get("askGoodsId").toString());//要货单id strJson.put("WMSID", mapList.get(0).get("id").toString());//出库单id strJson.put("WMSCode", mapList.get(0).get("removalCode").toString());//出库单编号 strJson.put("WareHouse", warehouseWhere);//仓库ID strJson.put("SourceBillDate",DateUtil.dateConversion(mapList.get(0).get("scrq").toString()));//业务日期 strJson.put("SourceType", mapList.get(0).get("sourceType").toString());//来源类型 strJson.put("MoveType", mapList.get(0).get("moveType").toString());//移动类型 strJson.put("IsRed", 0);//是否红单1 if (realName == null || realName == ""){ realName = "李兆峰" ; } strJson.put("Creator", realName);//制单人姓名1 //子表 JSONObject returnData = new JSONObject(); List retunList = new LinkedList<>(); JSONObject ReqOutStocks = new JSONObject(); List list2 = new LinkedList<>(); for (Map map : askGoodsMapper.getRemovalz(mapList.get(0).get("askGoodsId").toString(), warehouseWhere)) { JSONObject BillItems = new JSONObject(); BillItems.put("WMSItemID", map.get("id"));//分录ID BillItems.put("BOLID", map.get("askGoodsId"));//要货申请单ID BillItems.put("BOLItemID", map.get("entryNumber"));//要货申请明细ID BillItems.put("Material", map.get("materialId"));//物料id BillItems.put("Quantity", map.get("num"));//数量 BillItems.put("FlexField1", map.get("wbsId"));//wbs BillItems.put("FlexField1Code", map.get("wbsCode"));//WBS编号 BillItems.put("FlexField1Name", map.get("wbsName"));//WBS名称 list2.add(BillItems); } strJson.put("BillItems", list2); retunList.add(strJson); ReqOutStocks.put("BILLs",retunList); returnData.put("strJson", JSON.toJSONString(ReqOutStocks)); //添加记录到tld_access String names = "销售发货单" ; String accessType = "1" ; String returnGsRemoval = returnData.toString() ; askGoodsMapper.addAccess(names,returnGsRemoval,accessType); System.out.println("封装好的:"+returnData.toString()); //回传地址 // String url = "http://42.159.85.29:52480/cwbase/sg/V1/ERP/TELD/DEVTEST/API_WMS_PurInStock/CreateBOLOutStock"; String url = "https://erp4.teld.cn:8443/cwbase/sg/V1/ERP/TELD/TELD_WMS/TELD_API_WMS_StockManage/CreateBOLOutStock"; HttpClientUtil httpClientUtil1 = new HttpClientUtil(); Map result = httpClientUtil1.doPost(url, returnData); System.out.println("返回信息为:"+result.toString()); // Error error = new Error(); if(Integer.parseInt(result.get("msg").toString()) != 200){ //如果失败存入报错信息跟数据 error.setErrorInfo(result.get("data").toString()); error.setUrl(url); error.setDataVal(returnData.toJSONString()).setType("销售出库"); errorMapper.addError(error); queryListMapper.updateType(removalCode, 1, null); }else { JSONObject jsonObject = (JSONObject) JSONObject.parse(result.get("data").toString()); JSONObject jsonObject1 = (JSONObject) JSONObject.parse(jsonObject.get("result").toString()); if ( jsonObject1.get("State").toString().equals("0") ){ //如果失败存入报错信息跟数据 error.setErrorInfo(jsonObject1.get("Msg").toString()); error.setUrl(url); error.setDataVal(returnData.toJSONString()).setType("销售出库"); errorMapper.addError(error); queryListMapper.updateType(removalCode, 1, null); }else { List data1 = (List) JSONObject.parse(jsonObject1.get("data").toString()); for (JSONObject map1 : data1) { if (map1.get("State").toString().equals("0")){ for(JSONObject jsonObject2 : retunList){ if(jsonObject2.get("WMSCode").toString().equals(map1.get("WMSCode")) && jsonObject2.get("WareHouse").toString().equals(map1.get("WareHouse"))){ //如果失败存入报错信息跟数据 List retunList2 = new LinkedList<>(); retunList2.add(jsonObject2); JSONObject ReqOutStocks1 = new JSONObject(); ReqOutStocks1.put("BILLs", retunList2); JSONObject ReqOutStocks2 = new JSONObject(); ReqOutStocks2.put("strJson",ReqOutStocks1.toJSONString()); //如果失败存入报错信息跟数据 error.setErrorInfo(map1.get("FailReason").toString()); error.setUrl(url); error.setDataVal(ReqOutStocks2.toJSONString()).setType("销售出库"); errorMapper.addError(error); List list1 = (List) jsonObject2.get("BillItems"); for(JSONObject jsonObject3 : list1){ MaterialClass material = warehousingMapper.getMaterial(new Notice().setMaterialId(jsonObject3.get("Material").toString())); queryListMapper.updateType(jsonObject2.get("WMSCode").toString(), 1, material.getWllbCode()); } } } } } } } } } //删除父子表信息 askGoodsMapper.delPlugOutRemoval(documentId); askGoodsMapper.delRemovalz(documentId); }catch (Exception e){ e.printStackTrace(); } } @Override public Map addWarehouseTransferVitrual(AskGoods askGoods) { Map map = new HashMap<>(); //redis并发锁 RLock lock = redissonClient.getLock(askGoods.getUniqueCode()); lock.lock(); try{ Map mapVal = askGoodsMapper.getScanIsNot(askGoods); if((Double.parseDouble(mapVal.get("inventoryNum").toString()) - Double.parseDouble(mapVal.get("virtualNum").toString())) == 0){ map.put("msg", "500"); map.put("errMsg", "已全部出库"); return map; } Inventory inventory = askGoodsMapper.getInventory(askGoods); //库存数量 if(inventory == null){ map.put("msg", "500"); map.put("errMsg", "暂无库存"); return map; } AskGoods askGoods1 = askGoodsMapper.getWareInfo(askGoods); //要货单数量 int alreadyNum = askGoodsMapper.getAskInfoNumVitrual(askGoods);//已扫描总数 int inventoryAlready = askGoodsMapper.getInventoryAlready(askGoods);//库存已扫描数量 Double inventorySurplus = DateUtil.formatDouble1((Double.parseDouble(inventory.getAmount()) - Double.parseDouble(inventory.getAmountLock())) - inventoryAlready); //库存剩余数量 Double surplusNum = DateUtil.formatDouble1(Double.parseDouble(askGoods1.getNum()) - Double.parseDouble(askGoods1.getOutNum()) - alreadyNum); //剩余要扫描数量 if(Double.doubleToLongBits(surplusNum) >= Double.doubleToLongBits(inventorySurplus)){ askGoods.setNum(String.valueOf(inventorySurplus)); } else { askGoods.setNum(String.valueOf(surplusNum)); } askGoods.setStorageLocationCode(inventory.getStorageLocationCode());//库存编号 askGoodsMapper.addAskGoodsVitrual(askGoods); map.put("msg", "200"); }catch (Exception e){ e.printStackTrace(); map.put("msg", "500"); map.put("errMsg", "失败"); }finally { //判断要解锁的key是否已被锁定;判断要解锁的key是否被当前线程持有 if (lock.isLocked() && lock.isHeldByCurrentThread()) { //释放锁 lock.unlock(); } } return map; } /** * 移库单接口文档 */ @Override public void CreateGMReqOutStock(String removalCode, String realName) { try { //通过code查询id String warehouseTransferTd = askGoodsMapper.getSupplyWarehouseWheres(removalCode); //根据id查询子表的供货仓库 for (String warehouseWhere : askGoodsMapper.getSupplyWarehouseWhere(warehouseTransferTd)) { //查询父表信息 List> mapList = askGoodsMapper.getReturnWarehouseTransfer(removalCode); if (mapList.size() > 0) { JSONObject strJson = new JSONObject(); //父表 strJson.put("GMReqBillID", mapList.get(0).get("warehouseTransferId").toString());//移库通知ID strJson.put("WMSID", mapList.get(0).get("id").toString());//利道WMS出库单id strJson.put("WMSCode", mapList.get(0).get("warehouseTransferCode").toString());//利道WMS出库单编号 strJson.put("TOWareHouse", mapList.get(0).get("askGoodsWarehouseId").toString());//要货仓库ID strJson.put("FromWareHouse", warehouseWhere);//供货仓库ID strJson.put("SourceBillDate", DateUtil.dateConversion(mapList.get(0).get("scrq").toString()));//业务日期 strJson.put("MoveType", mapList.get(0).get("warehouseTransferType").toString());//移动类型345 strJson.put("IsRed", 0);//是否红单1 if (realName == null || realName == ""){ realName = "李兆峰" ; } strJson.put("Creator", realName);//制单人姓名1 //子表 for (Map map : askGoodsMapper.getReturnWarehouseTransferZ(mapList.get(0).get("warehouseTransferId").toString(), warehouseWhere)) { List list = new LinkedList<>(); JSONObject BillItems = new JSONObject(); List retunList = new LinkedList<>(); JSONObject ReqOutStocks = new JSONObject(); JSONObject returnData = new JSONObject(); BillItems.put("WMSItemID", map.get("id"));//分录ID BillItems.put("GMReqBillID", map.get("warehouseTransferId"));//移库通知单ID BillItems.put("GMReqBillItemID", map.get("entryNumber"));//移库通知明细ID BillItems.put("Material", map.get("materialId"));//物料id BillItems.put("Quantity", map.get("outNum"));//数量 BillItems.put("FlexField1", map.get("wbsId"));//wbs BillItems.put("FlexField1Code", map.get("wbsCode"));//WBS编号 BillItems.put("FlexField1Name", map.get("wbsName"));//WBS名称 list.add(BillItems); strJson.put("BillItems", list); retunList.add(strJson); ReqOutStocks.put("BILLs", retunList); returnData.put("strJson", JSON.toJSONString(ReqOutStocks)); //添加记录到tld_access String names = "移库单"; String accessType = "1"; String returnGsRemoval = returnData.toString(); askGoodsMapper.addAccess(names, returnGsRemoval, accessType); System.out.println("封装好的:"+returnData); // // String url = "http://42.159.85.29:52480/cwbase/sg/V1/ERP/TELD/DEVTEST/API_WMS_PurInStock/CreateGMReqOutStock"; String url = "https://erp4.teld.cn:8443/cwbase/sg/V1/ERP/TELD/TELD_WMS/TELD_API_WMS_StockManage/CreateGMReqOutStock"; HttpClientUtil httpClientUtil1 = new HttpClientUtil(); Map result = httpClientUtil1.doPost(url, returnData); System.out.println("返回信息为:"+result.toString()); Error error = new Error(); if (Integer.parseInt(result.get("msg").toString()) != 200) { //如果失败存入报错信息跟数据 error.setErrorInfo(result.get("data").toString()); error.setUrl(url); error.setDataVal(returnData.toJSONString()).setType("移库"); errorMapper.addError(error); } else { JSONObject jsonObject = (JSONObject) JSONObject.parse(result.get("data").toString()); JSONObject jsonObject1 = (JSONObject) JSONObject.parse(jsonObject.get("result").toString()); if (jsonObject1.get("State").toString().equals("0")) { //如果失败存入报错信息跟数据 error.setErrorInfo(jsonObject1.get("Msg").toString()); error.setUrl(url); error.setDataVal(returnData.toJSONString()).setType("移库"); errorMapper.addError(error); } else { List data1 = (List) JSONObject.parse(jsonObject1.get("data").toString()); for (JSONObject map1 : data1) { if (map1.get("State").toString().equals("0")) { for (JSONObject jsonObject2 : retunList) { if (jsonObject2.get("WMSCode").toString().equals(map1.get("WMSCode")) && jsonObject2.get("FromWareHouse").toString().equals(map1.get("FromWareHouse"))) { //如果失败存入报错信息跟数据 List retunList2 = new LinkedList<>(); retunList2.add(jsonObject2); JSONObject ReqOutStocks1 = new JSONObject(); ReqOutStocks1.put("BILLs", retunList2); JSONObject ReqOutStocks2 = new JSONObject(); ReqOutStocks2.put("strJson",ReqOutStocks1.toJSONString()); //如果失败存入报错信息跟数据 error.setErrorInfo(map1.get("FailReason").toString()); error.setUrl(url); error.setDataVal(ReqOutStocks2.toJSONString()).setType("移库"); errorMapper.addError(error); } } } } } } } } } //删除父子表信息 //根据code askGoodsMapper.delReturnWarehouseTransfer(removalCode); //根据id askGoodsMapper.delReturnWarehouseTransferZ(warehouseTransferTd); } catch (Exception e) { e.printStackTrace(); } } /** * @Description: 生产收货接口文档 * @Param: removalCode 入库单编号 * @return: void * @Author: XiaoChen * @Date: 2023/4/7 */ @Override public void CreateGRReqInStock(String removalCode, String realName) { try { String orderNumber = null ; //通过入库单编号查询入库单信息 // ReturnWarehousing returnWarehousing = askGoodsMapper.getReturnGsWarehousing(removalCode); //根据id查询子表的供货仓库 for (Map returnWarehousing1 : askGoodsMapper.getStorageLocationWarehouseWhere(removalCode)) { orderNumber = returnWarehousing1.get("orderNumber").toString() ; //查询父表信息 List> mapList = askGoodsMapper.getNoticeParent(returnWarehousing1.get("orderNumber").toString()); if (mapList.size() > 0) { JSONObject strJson = new JSONObject(); //父表 strJson.put("GRReqBillID", mapList.get(0).get("noticeId").toString());//入库通知单ID strJson.put("WMSID", mapList.get(0).get("id").toString());//利道WMS出库单id strJson.put("WMSCode", mapList.get(0).get("noticeCode").toString());//利道WMS出库单编号 strJson.put("WareHouse", returnWarehousing1.get("warehouseWhere"));//仓库ID strJson.put("SourceBillDate", DateUtil.dateConversion(mapList.get(0).get("noticeTime").toString()));//业务日期 strJson.put("SourceType", mapList.get(0).get("sourceType").toString());//来源类型 strJson.put("MoveType", mapList.get(0).get("moveType").toString());//移动类型 strJson.put("IsRed", 0);//是否红单1 if (realName == null || realName == ""){ realName = "李兆峰" ; } strJson.put("Creator", realName);//制单人姓名1 //子表 for (Map map : askGoodsMapper.getNoticeSubtabulation(mapList.get(0).get("noticeId").toString())) { List list = new LinkedList<>(); JSONObject BillItems = new JSONObject(); List retunList = new LinkedList<>(); JSONObject ReqOutStocks = new JSONObject(); JSONObject returnData = new JSONObject(); BillItems.put("WMSItemID", map.get("id"));//分录ID BillItems.put("GRReqBillID", map.get("noticeId"));//入库通知单ID BillItems.put("GRReqBillItemID", map.get("entryNumber"));//入库通知单明细ID BillItems.put("Material", map.get("materialId"));//物料id BillItems.put("Quantity", map.get("num"));//数量 BillItems.put("FlexField1", map.get("wbsId"));//wbs BillItems.put("FlexField1Code", map.get("wbsCode"));//WBS编号 BillItems.put("FlexField1Name", map.get("wbsName"));//WBS名称 list.add(BillItems); strJson.put("BillItems", list); retunList.add(strJson); ReqOutStocks.put("BILLs", retunList); returnData.put("strJson", JSON.toJSONString(ReqOutStocks)); //添加记录到tld_access String names = "生产收货"; String accessType = "1"; String returnGsRemoval = returnData.toString(); askGoodsMapper.addAccess(names, returnGsRemoval, accessType); System.out.println("封装好的:"+returnData.toString()); //回传地址 // String url = "http://42.159.85.29:52480/cwbase/sg/V1/ERP/TELD/DEVTEST/API_WMS_PurInStock/CreateGRReqInStock"; String url = "https://erp4.teld.cn:8443/cwbase/sg/V1/ERP/TELD/TELD_WMS/TELD_API_WMS_StockManage/CreateGRReqInStock"; HttpClientUtil httpClientUtil1 = new HttpClientUtil(); Map result = httpClientUtil1.doPost(url, returnData); System.out.println("返回信息为:"+result.toString()); Error error = new Error(); if (Integer.parseInt(result.get("msg").toString()) != 200) { //如果失败存入报错信息跟数据 error.setErrorInfo(result.get("data").toString()); error.setUrl(url); error.setDataVal(returnData.toJSONString()).setType("生产收货"); errorMapper.addError(error); //修改流水传输状态 for(Map map1 : askGoodsMapper.plugOutRemoval(removalCode)){ askGoodsMapper.updateRemoval(map1.get("removalCode").toString(), null); } } else { JSONObject jsonObject = (JSONObject) JSONObject.parse(result.get("data").toString()); JSONObject jsonObject1 = (JSONObject) JSONObject.parse(jsonObject.get("result").toString()); if (jsonObject1.get("State").toString().equals("0")) { //如果失败存入报错信息跟数据 error.setErrorInfo(jsonObject1.get("Msg").toString()); error.setUrl(url); error.setDataVal(returnData.toJSONString()).setType("生产收货"); errorMapper.addError(error); } else { List data1 = (List) JSONObject.parse(jsonObject1.get("data").toString()); for (JSONObject map1 : data1) { if (map1.get("State").toString().equals("0")) { for (JSONObject jsonObject2 : retunList) { if (jsonObject2.get("WMSCode").toString().equals(map1.get("WMSCode")) && jsonObject2.get("WareHouse").toString().equals(map1.get("WareHouse"))) { //如果失败存入报错信息跟数据 List retunList2 = new LinkedList<>(); retunList2.add(jsonObject2); JSONObject ReqOutStocks1 = new JSONObject(); ReqOutStocks1.put("BILLs", retunList2); JSONObject ReqOutStocks2 = new JSONObject(); ReqOutStocks2.put("strJson",ReqOutStocks1.toJSONString()); error.setErrorInfo(map1.get("FailReason").toString()); error.setUrl(url); error.setDataVal(ReqOutStocks2.toJSONString()).setType("生产收货"); errorMapper.addError(error); } } } } } } } } } //删除虚拟表 askGoodsMapper.delReturnGsWarehousing(orderNumber); } catch (Exception e) { e.printStackTrace(); } } /** * @Description: 其他收货接口文档/其它入库 * @Param: removalCode * @return: void * @Author: XiaoChen * @Date: 2023/4/12 */ @Override public void CreateOtherInStock(String removalCode, String realName) { try { LinkedList noticeIds = new LinkedList<>(); //通过入库单编号查询通知单ID // List returnWarehousing = askGoodsMapper.getReturnGsOtherWarehousing(removalCode); //根据id查询子表的供货仓库 for (Map returnWarehousing1 : askGoodsMapper.getCreateOtherInStockWarehouseWhere(removalCode)) { JSONObject strJson = new JSONObject(); //父表 strJson.put("GRReqBillID", returnWarehousing1.get("noticeId").toString());//入库通知单ID strJson.put("WMSID", returnWarehousing1.get("wmsId").toString());//利道WMS出库单id strJson.put("WMSCode", returnWarehousing1.get("noticeCode").toString());//利道WMS出库单编号 strJson.put("WareHouse", returnWarehousing1.get("warehouseWhere"));//仓库ID strJson.put("SourceBillDate", DateUtil.dateConversion(returnWarehousing1.get("noticeTime").toString()));//业务日期 strJson.put("SourceType", returnWarehousing1.get("sourceType").toString());//来源类型 strJson.put("MoveType", returnWarehousing1.get("moveType").toString());//移动类型 strJson.put("IsRed", 0);//是否红单1 if (realName == null || realName == ""){ realName = "李兆峰" ; } strJson.put("Creator", realName);//制单人姓名1 //查询信息 List> mapList = askGoodsMapper.getNoticesParent(removalCode,returnWarehousing1.get("storageLocationCode").toString()); if (mapList.size() > 0) { for (Map map : mapList) { //子表 List list = new LinkedList<>(); JSONObject BillItems = new JSONObject(); List retunList = new LinkedList<>(); JSONObject ReqOutStocks = new JSONObject(); JSONObject returnData = new JSONObject(); BillItems.put("WMSItemID", map.get("wmsItemId"));//分录ID BillItems.put("GRReqBillID", map.get("noticeId"));//入库通知单ID BillItems.put("GRReqBillItemID", map.get("entryNumber"));//入库通知单明细ID BillItems.put("Material", map.get("materialId"));//物料id BillItems.put("Quantity", map.get("amount"));//数量 BillItems.put("FlexField1", map.get("wbsId"));//wbs BillItems.put("FlexField1Code", map.get("wbsCode"));//WBS编号 BillItems.put("FlexField1Name", map.get("wbsName"));//WBS名称 list.add(BillItems); strJson.put("BillItems", list); retunList.add(strJson); ReqOutStocks.put("BILLs", retunList); returnData.put("strJson", JSON.toJSONString(ReqOutStocks)); //添加记录到tld_access String names = "其它入库"; String accessType = "1"; String returnGsRemoval = returnData.toString(); askGoodsMapper.addAccess(names, returnGsRemoval, accessType); System.out.println("封装好的:"+returnData.toString()); // String url = "http://42.159.85.29:52480/cwbase/sg/V1/ERP/TELD/DEVTEST/API_WMS_PurInStock/CreateOtherInStock"; String url = "https://erp4.teld.cn:8443/cwbase/sg/V1/ERP/TELD/TELD_WMS/TELD_API_WMS_StockManage/CreateOtherInStock"; HttpClientUtil httpClientUtil1 = new HttpClientUtil(); Map result = httpClientUtil1.doPost(url, returnData); System.out.println("result:" + result); System.out.println("返回信息为:"+result.toString()); Error error = new Error(); if (Integer.parseInt(result.get("msg").toString()) != 200) { //如果失败存入报错信息跟数据 error.setErrorInfo(result.get("data").toString()); error.setUrl(url); error.setDataVal(returnData.toJSONString()).setType("其它入库"); errorMapper.addError(error); } else { JSONObject jsonObject = (JSONObject) JSONObject.parse(result.get("data").toString()); JSONObject jsonObject1 = (JSONObject) JSONObject.parse(jsonObject.get("result").toString()); if (jsonObject1.get("State").toString().equals("0")) { //如果失败存入报错信息跟数据 error.setErrorInfo(jsonObject1.get("Msg").toString()); error.setUrl(url); error.setDataVal(returnData.toJSONString()).setType("其它入库"); errorMapper.addError(error); } else { List data1 = (List) JSONObject.parse(jsonObject1.get("data").toString()); for (JSONObject map1 : data1) { if (map1.get("State").toString().equals("0")) { for (JSONObject jsonObject2 : retunList) { if (jsonObject2.get("WMSCode").toString().equals(map1.get("WMSCode")) && jsonObject2.get("WareHouse").toString().equals(map1.get("WareHouse"))) { //如果失败存入报错信息跟数据 List retunList2 = new LinkedList<>(); retunList2.add(jsonObject2); JSONObject ReqOutStocks1 = new JSONObject(); ReqOutStocks1.put("BILLs", retunList2); JSONObject ReqOutStocks2 = new JSONObject(); ReqOutStocks2.put("strJson",ReqOutStocks1.toJSONString()); //如果失败存入报错信息跟数据 error.setErrorInfo(map1.get("FailReason").toString()); error.setUrl(url); error.setDataVal(ReqOutStocks2.toJSONString()).setType("其它入库"); errorMapper.addError(error); } } } } } } } } noticeIds.add(returnWarehousing1.get("noticeId").toString()); } askGoodsMapper.delNoticesParent(removalCode); } catch (Exception e) { e.printStackTrace(); } } /** * @Description: 其他发货补领料/其他出货接口文档/其它出库 * @Param: removalCode 单据id * @return: void * @Author: XiaoChen * @Date: 2023/4/13 */ @Override public void CreateOtherDeliveryMaterials(String removalCode, String realName) { try { String documentId = null ; //通过出库单编号查询单据ID List> lists = askGoodsMapper.getCreateOtherDeliveryMaterialsWarehouseWhere(removalCode); //根据id查询子表的供货仓库 //根据仓库 for (Map maps : lists) { List> mapList = askGoodsMapper.getGsRemovals(removalCode); if(mapList.size() >0 ) { JSONObject strJson = new JSONObject(); //父表 documentId = mapList.get(0).get("askGoodsId").toString(); strJson.put("GIReqBillID", mapList.get(0).get("askGoodsId").toString());//要货单id strJson.put("WMSID", mapList.get(0).get("id").toString());//出库单id strJson.put("WMSCode", mapList.get(0).get("removalCode").toString());//出库单编号 strJson.put("WareHouse", maps.get("warehouseWhere"));//仓库ID strJson.put("SourceBillDate",DateUtil.dateConversion(mapList.get(0).get("scrq").toString()));//业务日期 strJson.put("SourceType", mapList.get(0).get("sourceType").toString());//来源类型 strJson.put("MoveType", mapList.get(0).get("moveType").toString());//移动类型 strJson.put("IsRed", 0);//是否红单1 if (realName == null || realName == ""){ realName = "李兆峰" ; } strJson.put("Creator", realName);//制单人姓名1 //子表 for (Map map : askGoodsMapper.getRemovalz(mapList.get(0).get("askGoodsId").toString(),maps.get("warehouseWhere").toString())) { List list = new LinkedList<>(); JSONObject BillItems = new JSONObject(); List retunList = new LinkedList<>(); JSONObject ReqOutStocks = new JSONObject(); JSONObject returnData = new JSONObject(); BillItems.put("WMSItemID", map.get("askId"));//分录ID BillItems.put("GIReqBillID", map.get("askGoodsId"));//要货申请单ID BillItems.put("GIReqBillItemID", map.get("entryNumber"));//要货申请明细ID BillItems.put("Material", map.get("materialId"));//物料id BillItems.put("Quantity", map.get("num"));//数量 BillItems.put("FlexField1", map.get("wbsId"));//wbs BillItems.put("FlexField1Code", map.get("wbsCode"));//WBS编号 BillItems.put("FlexField1Name", map.get("wbsName"));//WBS名称 list.add(BillItems); strJson.put("BillItems", list); retunList.add(strJson); ReqOutStocks.put("ReqOutStocks", retunList); returnData.put("strJson", JSON.toJSONString(ReqOutStocks)); //添加记录到tld_access String names = "其它出库"; String accessType = "1"; String returnGsRemoval = returnData.toString(); askGoodsMapper.addAccess(names, returnGsRemoval, accessType); System.out.println("封装好的:"+returnData.toString()); // String url = "http://42.159.85.29:52480/cwbase/sg/V1/ERP/TELD/DEVTEST/API_WMS_PurInStock/CreateMakeUpOtherOutStock"; String url = "https://erp4.teld.cn:8443/cwbase/sg/V1/ERP/TELD/TELD_WMS/TELD_API_WMS_StockManage/CreateMakeUpOtherOutStock"; HttpClientUtil httpClientUtil1 = new HttpClientUtil(); Map result = httpClientUtil1.doPost(url, returnData); System.out.println("result:" + result); System.out.println("返回信息为:"+result.toString()); Error error = new Error(); if (Integer.parseInt(result.get("msg").toString()) != 200) { //如果失败存入报错信息跟数据 error.setErrorInfo(result.get("data").toString()); error.setUrl(url); error.setDataVal(returnData.toJSONString()).setType("其它出库"); errorMapper.addError(error); } else { JSONObject jsonObject = (JSONObject) JSONObject.parse(result.get("data").toString()); JSONObject jsonObject1 = (JSONObject) JSONObject.parse(jsonObject.get("result").toString()); if (jsonObject1.get("State").toString().equals("0")) { //如果失败存入报错信息跟数据 error.setErrorInfo(jsonObject1.get("Msg").toString()); error.setUrl(url); error.setDataVal(returnData.toJSONString()).setType("其它出库"); errorMapper.addError(error); } else { List data1 = (List) JSONObject.parse(jsonObject1.get("data").toString()); for (JSONObject map1 : data1) { if (map1.get("State").toString().equals("0")) { for (JSONObject jsonObject2 : retunList) { if (jsonObject2.get("WMSCode").toString().equals(map1.get("WMSCode")) && jsonObject2.get("WareHouse").toString().equals(map1.get("WareHouse"))) { //如果失败存入报错信息跟数据 List retunList2 = new LinkedList<>(); retunList2.add(jsonObject2); JSONObject ReqOutStocks1 = new JSONObject(); ReqOutStocks1.put("ReqOutStocks", retunList2); JSONObject ReqOutStocks2 = new JSONObject(); ReqOutStocks2.put("strJson",ReqOutStocks1.toJSONString()); //如果失败存入报错信息跟数据 error.setErrorInfo(map1.get("FailReason").toString()); error.setUrl(url); error.setDataVal(ReqOutStocks2.toJSONString()).setType("其它出库"); errorMapper.addError(error); } } } } } } } } } //删除父子表信息 askGoodsMapper.delPlugOutRemoval(documentId); askGoodsMapper.delRemovalz(documentId); } catch (Exception e) { e.printStackTrace(); } } /** * @Description: 其他发货(参照要货申请制单(其他发货通知_青岛工厂))接口文档 * @Param: removalCode * @return: void * @Author: XiaoChen * @Date: 2023/4/14 */ @Override public void CreateOtherDeliveryMaterial(String removalCode, String realName) { try { String documentId = null ; //通过出库单编号查询单据ID List> lists = askGoodsMapper.getCreateOtherDeliveryMaterialsWarehouseWhere(removalCode); //根据id查询子表的供货仓库 //根据仓库循环 for (Map maps : lists) { List> mapList = askGoodsMapper.getGsRemovals(removalCode); if(mapList.size() >0 ) { JSONObject strJson = new JSONObject(); //父表 documentId = mapList.get(0).get("askGoodsId").toString(); strJson.put("GIReqBillID", mapList.get(0).get("askGoodsId").toString());//要货单id strJson.put("WMSID", mapList.get(0).get("id").toString());//出库单id strJson.put("WMSCode", mapList.get(0).get("removalCode").toString());//出库单编号 strJson.put("WareHouse", maps.get("warehouseWhere"));//仓库ID strJson.put("SourceBillDate",DateUtil.dateConversion(mapList.get(0).get("scrq").toString()));//业务日期 strJson.put("SourceType", mapList.get(0).get("sourceType").toString());//来源类型 strJson.put("MoveType", mapList.get(0).get("moveType").toString());//移动类型 strJson.put("IsRed", 0);//是否红单1 if (realName == null || realName == ""){ realName = "李兆峰" ; } strJson.put("Creator", realName);//制单人姓名1 //子表 for (Map map : askGoodsMapper.getRemovalz(mapList.get(0).get("askGoodsId").toString(),maps.get("warehouseWhere").toString())) { List list = new LinkedList<>(); JSONObject BillItems = new JSONObject(); List retunList = new LinkedList<>(); JSONObject ReqOutStocks = new JSONObject(); JSONObject returnData = new JSONObject(); BillItems.put("WMSItemID", map.get("askId"));//分录ID BillItems.put("GIReqBillID", map.get("askGoodsId"));//要货申请单ID BillItems.put("GIReqBillItemID", map.get("entryNumber"));//要货申请明细ID BillItems.put("Material", map.get("materialId"));//物料id BillItems.put("Quantity", map.get("num"));//数量 BillItems.put("FlexField1", map.get("wbsId"));//wbs BillItems.put("FlexField1Code", map.get("wbsCode"));//WBS编号 BillItems.put("FlexField1Name", map.get("wbsName"));//WBS名称 list.add(BillItems); strJson.put("BillItems", list); retunList.add(strJson); ReqOutStocks.put("ReqOutStocks", retunList); returnData.put("strJson", JSON.toJSONString(ReqOutStocks)); //添加记录到tld_access String names = "其它出库"; String accessType = "1"; String returnGsRemoval = returnData.toString(); askGoodsMapper.addAccess(names, returnGsRemoval, accessType); System.out.println("封装好的:"+returnData); HttpClientUtil httpClientUtil1 = new HttpClientUtil(); // String url = "http://42.159.85.29:52480/cwbase/sg/V1/ERP/TELD/DEVTEST/API_WMS_PurInStock/CreateOtherOutStock"; String url = "https://erp4.teld.cn:8443/cwbase/sg/V1/ERP/TELD/TELD_WMS/TELD_API_WMS_StockManage/CreateOtherOutStock"; Map result = httpClientUtil1.doPost(url, returnData); System.out.println("result:" + result); System.out.println("返回信息为:"+result.toString()); Error error = new Error(); if (Integer.parseInt(result.get("msg").toString()) != 200) { //如果失败存入报错信息跟数据 error.setErrorInfo(result.get("data").toString()); error.setUrl(url); error.setDataVal(returnData.toJSONString()).setType("其它出库"); errorMapper.addError(error); } else { JSONObject jsonObject = (JSONObject) JSONObject.parse(result.get("data").toString()); JSONObject jsonObject1 = (JSONObject) JSONObject.parse(jsonObject.get("result").toString()); if (jsonObject1.get("State").toString().equals("0")) { //如果失败存入报错信息跟数据 error.setErrorInfo(jsonObject1.get("Msg").toString()); error.setUrl(url); error.setDataVal(returnData.toJSONString()).setType("其它出库"); errorMapper.addError(error); } else { List data1 = (List) JSONObject.parse(jsonObject1.get("data").toString()); for (JSONObject map1 : data1) { if (map1.get("State").toString().equals("0")) { for (JSONObject jsonObject2 : retunList) { if (jsonObject2.get("WMSCode").toString().equals(map1.get("WMSCode")) && jsonObject2.get("WareHouse").toString().equals(map1.get("WareHouse"))) { //如果失败存入报错信息跟数据 List retunList2 = new LinkedList<>(); retunList2.add(jsonObject2); JSONObject ReqOutStocks1 = new JSONObject(); ReqOutStocks1.put("ReqOutStocks", retunList2); JSONObject ReqOutStocks2 = new JSONObject(); ReqOutStocks2.put("strJson",ReqOutStocks1.toJSONString()); //如果失败存入报错信息跟数据 error.setErrorInfo(map1.get("FailReason").toString()); error.setUrl(url); error.setDataVal(ReqOutStocks2.toJSONString()).setType("其它出库"); errorMapper.addError(error); } } } } } } } } } //删除父子表信息 askGoodsMapper.delPlugOutRemoval(documentId); askGoodsMapper.delRemovalz(documentId); } catch (Exception e) { e.printStackTrace(); } } /** * 产成品出库流水修改连翻号 * @param askGoods 参数 * @return 返回结果 */ @Override public Map getRemovalHalfUpdSerial(AskGoods askGoods) { Map map = new HashMap<>(); try{ askGoodsMapper.UpdSerial(askGoods); map.put("msg", "200"); }catch (Exception e){ e.printStackTrace(); map.put("msg", "500"); map.put("errMsg", "失败"); } return map; } /** * 入库回传 * */ @Override public void test03() { List> mapList = askGoodsMapper.test03(); System.out.println("mapList:"+mapList); //入库回传 5 for (Map map : mapList) { warehousingService.plugOutWarehousing(map.get("orderNumber").toString()+",","李兆峰");//入库回传 } } /** * 存入GS返回数据 * */ @Override public void merge() { //查询库存 List list = askGoodsMapper.getOutgoingReturnList(); //根据 库位编号 物料id wbs 所属公司 判断是否相同 for (OutgoingReturn outgoingReturn : list) { System.out.println("数量为:"+Double.parseDouble(outgoingReturn.getAmount())); System.out.println("已发数量为:"+Double.parseDouble(outgoingReturn.getAmountNum())); System.out.println("取消数量为:"+Double.parseDouble(outgoingReturn.getAmountNumber())); System.out.println("转化为整数为:"+Double.valueOf(outgoingReturn.getAmount()).intValue()); if (Double.valueOf(outgoingReturn.getAmountNum()).intValue() == 0){ ReturRemoval returRemoval = new ReturRemoval() .setDocumentId(outgoingReturn.getAskId())//单据id1 .setRemovalCode(outgoingReturn.getAskId().substring(outgoingReturn.getAskId().length()-6)+outgoingReturn.getEntryNumber())//出库单编号1 .setSourceType("8")//来源类型1 .setMoveType(outgoingReturn.getMoveType())//移动类型1 .setMaterialId(outgoingReturn.getMaterialId())//物料id .setWbs(outgoingReturn.getWbs())//wbs .setEntryNumber(outgoingReturn.getEntryNumber())//分录号 .setDocumentPointsId(" ")//分录单id .setStorageLocationCode(askGoodsMapper.getLocationCode(outgoingReturn.getWarehouse()));//库存编号 if (Double.valueOf(outgoingReturn.getAmount()).intValue() < 0 ){ returRemoval.setNum( String.valueOf( Double.parseDouble(outgoingReturn.getAmount()))); }else { returRemoval.setNum( String.valueOf(Double.parseDouble(outgoingReturn.getAmount()) - Double.parseDouble(outgoingReturn.getAmountNum()) - Double.parseDouble(outgoingReturn.getAmountNumber())) );//数量-已发数量-取消数量 = 未发数量 } if (Double.valueOf(returRemoval.getNum()).intValue() == 0){ System.out.println("不能添加:"+Double.valueOf(returRemoval.getNum()).intValue()); }else { //添加父表信息 askGoodsMapper.addReturnGsRemovalF(returRemoval); //添加子表信息 askGoodsMapper.addReturnGsRemoval(returRemoval); } } //删除 askGoodsMapper.DelOutgoingReturnList(outgoingReturn); } } /** * 生产收货接口文档/报工单 w * */ @Override public void test04() { List> mapList = askGoodsMapper.test04(); System.out.println("mapList:"+mapList); //生产收货接口文档/报工单 w for (Map map : mapList) { CreateGRReqInStock(map.get("storageCode").toString(),"李兆峰");//生产收货接口文档 } } /** * 出库回传数据导入 */ @Override @Transactional(rollbackFor = Exception.class) public void importExcel(List list) { askGoodsMapper.importExcel(list); } /** * 出库回传跑数据 * */ @Override public void outgoingReturn() { //查询单据id List list = askGoodsMapper.getOutgoingReturn(); for (ReturRemoval returRemoval : list) { plugOutRemoval(returRemoval.getDocumentId(),"李兆峰"); } } /** * 存入GS返回数据/入库回传 * */ @Override public void returnInStorage() { List list = askGoodsMapper.getReturnInStorageF();//查询父表信息 for (ReceiveGoods receiveGoods : list) { List list1 = askGoodsMapper.getReturnInStorageZ(receiveGoods.getOrderCode());//查询子表信息 for (ReceiveGoods goods : list1) { //存入GS返回数据 String LocationCode = null ; String PartType = askGoodsMapper.getMaterialPartType(goods.getMaterialId());//查询物料类型 if (PartType.equals("半成品")){ LocationCode = "XNKW001" ; }else if (PartType.equals("原材料")){ LocationCode = "D2-3-2" ; }else { LocationCode = "D2-3-2" ; } ReturnWarehousing returnWarehousing = new ReturnWarehousing() .setStorageCode("TK"+receiveGoods.getSupplierId()) .setSourceType(receiveGoods.getSourceType()) .setMoveType(receiveGoods.getMoveType()) .setEntryNumber(goods.getEntryNumber()) .setWbs(goods.getWbs()) .setMaterialId(goods.getMaterialId()) .setWarehousingNum(goods.getQualifiedNum()) .setReceiveGoodsId(goods.getEntryNumber()) .setScrq(goods.getArrivalTime()) .setOrderNumber(receiveGoods.getOrderNumber()) .setStorageLocationCode(LocationCode); System.out.println("封装的数据:"+returnWarehousing.toString()); System.out.println("入库数量:"+goods.getWarehousingNum()); // if (goods.getWarehousingNum().equals("0")){ askGoodsMapper.addReturnWarehousing(returnWarehousing);//添加GS返回数据 // } } } } /** * 出库错误信息回调 * */ @Override public void outgoingReturnError() { List list = askGoodsMapper.getOutgoingReturnError(); for (Error error : list) { queryListService.anew(error); } } /** * 销售出库导入数据 */ @Override public void marketImport(List list) { askGoodsMapper.marketImport(list); // askGoodsMapper.marketImports(list); } /** * 存入GS返回数据/销售出库 * */ @Override public void market() { //查询销售出库导入数据 List list = askGoodsMapper.getMarketList(); //根据 库位编号 物料id wbs 所属公司 判断是否相同 for (MarketReturn marketReturn : list) { //查询物料id String materialId = askGoodsMapper.getMaterialId(marketReturn.getMaterialCode()); //查询销售单父子表信息 Delivery delivery1 = askGoodsMapper.getDeliveryF(marketReturn.getDeliveryOrder()); if (delivery1!= null){ List delivery2 = askGoodsMapper.getDeliveryZ(delivery1.getDeliveryId(),materialId); if (delivery2 != null){ for (Delivery delivery : delivery2) { ReturRemoval returRemoval = new ReturRemoval() .setDocumentId(delivery1.getDeliveryId())//单据id1 .setRemovalCode( codeGenerateCk())//出库单编号1 .setSourceType(delivery1.getSourceType())//来源类型1 .setMoveType(delivery1.getMoveType())//移动类型1 .setMaterialId(materialId)//物料id .setWbs(delivery.getWbs())//wbs .setNum( marketReturn.getNum() )//数量-已发数量-取消数量 = 未发数量 .setEntryNumber(delivery.getEntryNumber())//分录号 .setDocumentPointsId(" ")//分录单id .setStorageLocationCode("D2-3-2");//库存编号 //添加父表信息 askGoodsMapper.addReturnGsRemovalF(returRemoval); //添加子表信息 askGoodsMapper.addReturnGsRemoval(returRemoval); } } } } } /** * 销售发货跑数据 * */ @Override public void marketReturn() { //查询单据id List list = askGoodsMapper.getOutgoingReturn(); for (ReturRemoval returRemoval : list) { CreateBOLOutStock(returRemoval.getRemovalCode(),"李兆峰"); } } /** * 入库导出 * @param askGoods 参数 * @param response 参数 * @return 返回结果 */ @Override public void getStorage(AskGoods askGoods, HttpServletResponse response) { try{ //导出数据汇总 List> sheetDataList = new ArrayList<>(); //表头数据 List head = Arrays.asList("物料编号", "供应商id", "连翻号", "生产日期", "生产批次", "容量", "工序", "序列号", "类型","用户编号","部门编号","库位编号","生成日期","入库单编号","WBS","采购订单号","所属公司","采购数量","传输状态0成功1失败"); //查询条件 List list1 = askGoodsMapper.getMarketList(); //查询数据 List> list = askGoodsMapper.getStorage(list1); sheetDataList.add(head); for(Map userMap : list){ List listSheet = new ArrayList<>(); for(String key: userMap.keySet()){ listSheet.add(userMap.get(key)); } sheetDataList.add(listSheet); } //当前时间 Date time = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyyMddHHmmss"); ExcelUtils.export(response, "出库流水数据导出" + sdf.format(time), sheetDataList); }catch (Exception e){ e.printStackTrace(); } } /** * 入库错误信息回调 * */ @Override public void storageReturnError() { List list = askGoodsMapper.getStorageReturnError(); for (Error error : list) { queryListService.anew(error); } } /** * 移库错误信息回调 * */ @Override public void parkingReturnError() { List list = askGoodsMapper.parkingReturnError(); for (Error error : list) { queryListService.anew(error); } } /** * 移库跑数据 * */ @Override public void shiftingParkingReturn() { //查询单据id List list = askGoodsMapper.shiftingParkingReturn(); for (WarehouseTransfer returRemoval : list) { CreateGMReqOutStock(returRemoval.getWarehouseTransferCode(),"李兆峰"); } } /** * 其它入库错误信息回调 * */ @Override public void otherWarehousingReturnError() { List list = askGoodsMapper.otherWarehousingReturnError(); for (Error error : list) { queryListService.anew(error); } } /** * 转JSON * */ @Override public void jsonError() { List errorList = askGoodsMapper.getJsonError(); for (Error error : errorList) { System.out.println("字符串为:"); System.out.println(error.getDataVal()); JSONObject jsonObject = JSONObject.parseObject(error.getDataVal()); JSONObject jsonObject1 = JSONObject.parseObject(jsonObject.get("strJson").toString()); JSONObject jsonObject2 = new JSONObject(); jsonObject2.put("strJson",jsonObject1.toJSONString()); System.out.println("toJsonString字符串为:"); System.out.println(jsonObject2.toJSONString()); error.setDataVal(jsonObject2.toJSONString()); //修改 askGoodsMapper.updJSONError(error); } } @Override public void ProductionReturnError() { } /** * 从父子表存入GS返回数据/出库回传 * */ @Override public void mergeGs() { //查询父表信息 List list = askGoodsMapper.getMergeGsF(); for (ReturRemoval returRemoval : list) { //存入父表信息 ReturRemoval returRemoval1 = new ReturRemoval() .setDocumentId(returRemoval.getAskGoodsId())//单据id1 .setRemovalCode(codeGenerateCk())//出库单编号1 .setSourceType(returRemoval.getSourceType())//来源类型1 .setMoveType(returRemoval.getMoveType())//移动类型1 .setDeliveryType(returRemoval.getDeliveryType());//交货类型(DE交货,RD退货)1 //查询子表信息 List list1 = askGoodsMapper.getMergeGsZ(returRemoval); for (ReturRemoval removal : list1) { //存入子表信息 ReturRemoval returRemoval2 = new ReturRemoval() .setDocumentId(returRemoval.getAskGoodsId())//要货申请单id .setMaterialId(removal.getMaterialId())//物料id .setWbs(removal.getWbs())//wbs .setNum(removal.getNum())//出库数量 .setEntryNumber(removal.getEntryNumber())//分录号 .setDocumentPointsId(" ")//分录单id .setStorageLocationCode("D2-3-2");//库存编号 //添加子表信息 askGoodsMapper.addReturnGsRemoval(returRemoval2); } //添加父表信息 askGoodsMapper.addReturnGsRemovalF(returRemoval1); } } /** * 移库获取单据物料code分录号数量 * */ @Override public void jsonErrorParking() { //获取数据 List errorList = askGoodsMapper.getjsonErrorParking(); for (Error error : errorList) { System.out.println("字符串为:"); System.out.println(error.getDataVal()); JSONObject jsonObject = JSONObject.parseObject(error.getDataVal()); JSONObject jsonObject1 = JSONObject.parseObject(jsonObject.get("strJson").toString()); List bilLs = (List) jsonObject1.get("BILLs"); for (JSONObject bilL : bilLs) { List billItems = (List) bilL.get("BillItems"); for (JSONObject billItem : billItems) { String WMSCode = bilL.get("WMSCode").toString(); String Quantity = billItem.get("Quantity").toString(); String Material = billItem.get("Material").toString(); String GMReqBillItemID = billItem.get("GMReqBillItemID").toString(); //查询物料code String code = askGoodsMapper.getMaterialCode(Material); error.setOrderNumber(WMSCode);//单号 error.setMaterialCode(code);//物料code error.setNum(Quantity);//数量 error.setClassify(GMReqBillItemID);//分录号 askGoodsMapper.updErrorParking(error);//修改error } } } } /** * 批量回调 生产收货接口文档/报工单 w */ @Override public void getCallWorkOrder() { //查询入库返回GS表信息 List> list = askGoodsMapper.getCallWorkOrder(); if(list.size() != 0) { //入库回传 5 for (Map map : list) { //查询用户信息 String userName = askGoodsMapper.getUserName(map.get("UserName").toString()); CreateGRReqInStock(map.get("storageCode").toString(),userName); } } } @Override public void getCallback() { List list = askGoodsMapper.getCallback(); if(list.size() != 0) { for(ReturRemoval returRemoval : list){ plugOutRemoval(returRemoval.getDocumentId(), returRemoval.getName()); } } } /** * error错误信息全部跑调用错误回传 * */ @Override public void errorParkingReturn() { List list = askGoodsMapper.getErrorParkingReturn(); for (Error error : list) { queryListService.anew(error); } } /** * 批量回调 入库回传 */ @Override public void getCallPlugOutWarehousing() { //查询入库返回GS表信息 List> list = askGoodsMapper.getCallPlugOutWarehousing(); if(list.size() != 0) { //入库回传 5 for (Map map : list) { //查询用户信息 String userName = askGoodsMapper.getUserName(map.get("UserName").toString()); warehousingService.plugOutWarehousing(map.get("orderNumber").toString() + ",", userName);//入库回传 } } } @Override public void test() { AskGoods askGoods = new AskGoods(); List list = askGoodsMapper.getAskGoodsMaterialTest(askGoods); for(AskGoods askGoods1 : list) { Inventory inventory = new Inventory() .setMaterialId(askGoods1.getMaterialId()) .setCompanyCode(askGoods1.getCompanyNumber()) .setAmount(askGoods1.getNum()) .setWbs(askGoods1.getWbs()); List> list1 = queryListMapper.storageLocationNum(inventory); if(list1.size() == 0){ continue; } String aaa = "8130"; String bbb = "000000"; if(askGoods1.getCompanyNumber().equals("8400")){ aaa = "8400"; bbb = "100000"; } if(list1.get(0).get("storageLocationCode").equals("1")){ continue; } AskGoods askGoods2 = new AskGoods().setUniqueCode("1111") .setSupplierId("EC13437") .setSerial(bbb) .setWllbCode(list1.get(0).get("code").toString()) .setProducDate("20230514") .setAskGoodsId(askGoods1.getAskGoodsId()) .setType("非生产领料") .setStorageLocationCode(list1.get(0).get("storageLocationCode").toString()) .setNum(askGoods1.getNum()) .setUserId("27") .setDepartment("000300020001") .setCompanyNumber(askGoods1.getCompanyNumber()) .setWbs(askGoods1.getWbs()) .setEntryNumber(askGoods1.getEntryNumber()); askGoodsMapper.addAskGoodsVitrual(askGoods2); } } @Override public void testTwo() { List> list1 = queryListMapper.getTestTwo(); for(Map map : list1){ Map map1 = OutOfLibrary("1111", "非生产领料", map.get("ask_goods_id").toString(), "李兆峰"); // System.out.println(map1.get("data")); if(map1.get("data") != null){ // System.out.println("-------------------------------------"); // System.out.println("测试"); // System.out.println("-------------------------------------"); // plugOutRemoval(map1.get("data").toString(), "王孝苗"); } } } /** * 出库单生成 * @return */ public String codeGenerateCk(){ StringBuilder stringBuilder = new StringBuilder("YHCK"); Date date = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyMMdd"); stringBuilder.append(sdf.format(date)); int count = askGoodsMapper.getReturnRemovalCount(); for(int i = 0; i < 4 - (count + "").length(); i++){ stringBuilder.append("0"); } return (stringBuilder.append(count + 1)).toString(); } }