1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534 |
- 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.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 ErrorMapper errorMapper;
- @Autowired
- private DeliveryMapper deliveryMapper;
- @Autowired
- private DictionaryMapper dictionaryMapper;
- @Autowired
- private QueryListMapper queryListMapper;
- /**
- * @Description: 要货申请单(生产领用申请)
- * @Param: mapList
- * @return: Map<String, Object> 成功失败状态
- * @Author: XiaoChen
- * @Date: 2023/4/10
- */
- @Override
- @Transactional(rollbackFor = Exception.class)
- public Map<String, Object> addAskGoods(List<Map<String,Object>> mapList) {
- Map<String, Object> map = new HashMap<>();
- try{
- List<AskGoods> askGoodsList = new LinkedList<AskGoods>();
- for(Map<String,Object> jsonMap:mapList) {
- List<Map<String, Object>> list = (List) jsonMap.get("datalist");
- for (Map<String, Object> 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", "0009");
- map.put("msg", "服务器请求异常,请稍后再试");
- }
- return map;
- }
- @Override
- public Map<String, Object> getAskGoodsfList(AskGoods askGoods) {
- Map<String, Object> map = new HashMap<>();
- try{
- List<AskGoods> 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<String, Object> getAskGoodsMaterial(AskGoods askGoods) {
- Map<String, Object> map = new HashMap<>();
- try{
- List<AskGoods> list = askGoodsMapper.getAskGoodsMaterial(askGoods);
- List<String> scanNum = new LinkedList<>();
- List<String> 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<Map<String, Object>> 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<String, Object> getMaterialCk(AskGoods askGoods) {
- Map<String, Object> map = new HashMap<>();
- try{
- List<Inventory> 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<String, Object> addAskGoodsVitrual(AskGoods askGoods) {
- Map<String, Object> map = new HashMap<>();
- //redis并发锁
- RLock lock = redissonClient.getLock(askGoods.getUniqueCode());
- lock.lock();
- try{
- Map<String, Object> 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;
- }
- Inventory inventory = askGoodsMapper.getInventory(askGoods); //库存数量
- AskGoods askGoods1 = askGoodsMapper.getAsknInfo(askGoods); //要货单数量
- int alreadyNum = askGoodsMapper.getAskInfoNumVitrual(askGoods);//已扫描总数
- int inventoryAlready = askGoodsMapper.getInventoryAlready(askGoods);//库存已扫描数量
- Double inventorySurplus = (Double.parseDouble(inventory.getAmount()) - Double.parseDouble(inventory.getAmountLock())) - inventoryAlready; //库存剩余数量
- Double surplusNum = 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
- @Transactional(rollbackFor = Exception.class)
- public Map<String, Object> OutOfLibrary(String uniqueCode, String type, String askGoodsId) {
- Map<String, Object> map = new HashMap<>();
- //redis并发锁
- RLock lock = redissonClient.getLock(uniqueCode);
- lock.lock();
- try{
- //出库流水
- String removalCode = codeGenerateCk();
- List<AskGoods> list = askGoodsMapper.getVirtualUniqueCode(uniqueCode, type, askGoodsId);
- for(AskGoods askGoods : list){
- askGoods.setStorageCode(removalCode);
- askGoods.setCompanyNumber(askGoods.getAccountSleeve());
- Inventory inventory = askGoodsMapper.getInventory(askGoods);
- if(inventory == null){
- throw new Exception("库存不存在");
- }
- //如果出库库存等于虚拟表库存则删除此库存
- if(Double.parseDouble(askGoods.getNum()) == Double.parseDouble(inventory.getAmount())){
- askGoodsMapper.deleteInventory(inventory);
- } else {
- inventory.setAmount(askGoods.getNum());
- askGoodsMapper.updateInventory(inventory);
- }
- String materialId = askGoodsMapper.getMaterialId(askGoods.getWllbCode());//查询物料id
- 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 askGoods3 = askGoodsMapper.getAskDetailedF(askGoodsId);
- ReturRemoval returRemoval1 = new ReturRemoval()
- .setDocumentId(askGoods3.getAskGoodsId())
- .setRemovalCode(removalCode)
- .setSourceType(askGoods3.getSourceType())
- .setMoveType(askGoods3.getMoveType());
- askGoodsMapper.addReturnGsRemovalF(returRemoval1);//新增返回gs数据父表信息
- map.put("data", askGoods3.getAskGoodsId());
- 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<Map<String, Object>> mapList = askGoodsMapper.plugOutRemoval(removalCode);
- if(mapList.size() >0 ) {
- JSONObject strJson = new JSONObject();//4
- //父表
- 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());//来源类型
- strJson.put("MoveType", mapList.get(0).get("moveType").toString());//移动类型
- strJson.put("IsRed", 0);//是否红单1
- strJson.put("Creator", realName);//制单人姓名1
- //子表
- for (Map<String, Object> map : askGoodsMapper.getRemovalz(mapList.get(0).get("askGoodsId").toString(), warehouseWhere)) {
- List<JSONObject> list = new LinkedList<>();//5
- JSONObject BillItems = new JSONObject();//6
- List<JSONObject> 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
- 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<String, Object> result = httpClientUtil1.doPost(url, returnData);
- //如果失败存入错误信息
- 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<String, Object> 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<String, Object> maps : askGoodsMapper.plugOutRemoval(removalCode)){
- askGoodsMapper.updateRemoval(maps.get("removalCode").toString(), null);
- }
- }else {
- List<JSONObject> data1 = (List<JSONObject>) 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<JSONObject> retunList2 = new LinkedList<>();
- retunList2.add(jsonObject2);
- JSONObject ReqOutStocks1 = new JSONObject();
- ReqOutStocks1.put("ReqOutStocks", retunList2);
- JSONObject ReqOutStocks2 = new JSONObject();
- ReqOutStocks2.put("strJson",ReqOutStocks1);
- //如果失败存入报错信息跟数据
- error.setErrorInfo(map1.get("FailReason").toString());
- error.setUrl(url);
- error.setDataVal(ReqOutStocks2.toString()).setType("出库回传");
- errorMapper.addError(error);
- List<JSONObject> list1 = (List<JSONObject>) 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());
- }
- }
- }
- }
- }
- }
- }
- //添加记录到tld_access
- String names = "出库回传" ;
- String accessType = "1" ;
- String returnGsRemoval = returnData.toString() ;
- askGoodsMapper.addAccess(names,returnGsRemoval,accessType);
- }
- }
- }
- //删除父子表信息
- askGoodsMapper.delPlugOutRemoval(removalCode);
- askGoodsMapper.delRemovalz(removalCode);
- }catch (Exception e){
- e.printStackTrace();
- }
- }
- @Override
- public Map<String, Object> getRemoval(AskGoods askGoods) {
- Map<String, Object> map = new HashMap<>();
- try{
- //查询数据
- PageHelper.startPage(askGoods.getPage(), askGoods.getLimit());
- PageInfo<AskGoods> 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<List<Object>> sheetDataList = new ArrayList<>();
- //表头数据
- List<Object> head = Arrays.asList("物料名称", "供应商名称", "连番号", "类型", "出库用户", "领用部门", "库位名称", "出库日期", "出库数量","要货单编号","真实姓名","公司名称");
- //查询数据
- List<Map<String, Object>> list = askGoodsMapper.export(askGoods);
- sheetDataList.add(head);
- for(Map<String, Object> userMap : list){
- List<Object> 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<String, Object> getAskGoodsVitrual(String uniqueCode, String type) {
- Map<String, Object> map = new HashMap<>();
- try{
- List<AskGoods> 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<String, Object> delAskGoodsVitrual(String id, String type) {
- Map<String, Object> 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<String, Object> getGoodsHalf(AskGoods askGoods) {
- Map<String, Object> map = new HashMap<>();
- try{
- //查询数据
- PageHelper.startPage(askGoods.getPage(), askGoods.getLimit());
- PageInfo<AskGoods> 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<String, Object> getRemovalHalfProduct(AskGoods askGoods) {
- Map<String, Object> map = new HashMap<>();
- try{
- //查询数据
- PageHelper.startPage(askGoods.getPage(), askGoods.getLimit());
- PageInfo<AskGoods> 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<List<Object>> sheetDataList = new ArrayList<>();
- //表头数据
- List<Object> head = Arrays.asList("要货单", "出库编号","物料编号","物料名称", "出库数量", "出库人", "领用部门", "WBS编号", "出库时间","真实姓名","所属公司");
- //查询数据
- List<Map<String, Object>> list = askGoodsMapper.getRemovalHalfProductExcel(askGoods);
- sheetDataList.add(head);
- for(Map<String, Object> userMap : list){
- List<Object> 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<String, Object> getRemovalHalf(AskGoods askGoods) {
- Map<String, Object> map = new HashMap<>();
- try{
- //查询数据
- PageHelper.startPage(askGoods.getPage(), askGoods.getLimit());
- PageInfo<AskGoods> 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<List<Object>> sheetDataList = new ArrayList<>();
- //表头数据
- List<Object> head = Arrays.asList("交货单编号","物料名称", "出库数量", "用户名称", "出库时间", "公司名称", "客户名称", "出库单编号", "WBS","真实姓名");
- //查询数据
- List<Map<String, Object>> list = askGoodsMapper.getRemovalHalfExcel(askGoods);
- sheetDataList.add(head);
- for(Map<String, Object> userMap : list){
- List<Object> 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<String, Object> map
- * @Author: XiaoChen
- * @Date: 2023/4/15
- */
- @Override
- public Map<String, Object> otherAskGoods(AskGoods askGoods) {
- Map<String, Object> 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> 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.parseDouble(askGoods.getNum()) == 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<String, Object> delAskGoods(String id, HttpServletRequest request) {
- Map<String, Object> map = new HashMap<>();
- try{
- String userId = request.getHeader("userId");
- Map<String, Object> 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<Map<String, Object>> 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
- strJson.put("Creator", realName);//制单人姓名1
- //子表
- for (Map<String, Object> map : askGoodsMapper.getRemovalz(mapList.get(0).get("askGoodsId").toString(), warehouseWhere)) {
- List<JSONObject> list = new LinkedList<>();
- JSONObject BillItems = new JSONObject();
- List<JSONObject> retunList = new LinkedList<>();
- JSONObject ReqOutStocks = new JSONObject();
- JSONObject returnData = 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名称
- list.add(BillItems);
- strJson.put("BillItems", list);
- retunList.add(strJson);
- ReqOutStocks.put("BILLs",retunList);
- returnData.put("strJson", JSON.toJSONString(ReqOutStocks));
- System.out.println("封装好的:"+returnData);
- //回传地址
- // 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<String, Object> result = httpClientUtil1.doPost(url, returnData);
- //
- 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<JSONObject> data1 = (List<JSONObject>) 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<JSONObject> retunList2 = new LinkedList<>();
- retunList2.add(jsonObject2);
- JSONObject ReqOutStocks1 = new JSONObject();
- ReqOutStocks1.put("BILLs", retunList2);
- JSONObject ReqOutStocks2 = new JSONObject();
- ReqOutStocks2.put("strJson",ReqOutStocks1);
- //如果失败存入报错信息跟数据
- error.setErrorInfo(map1.get("FailReason").toString());
- error.setUrl(url);
- error.setDataVal(ReqOutStocks2.toString()).setType("销售出库");
- errorMapper.addError(error);
- List<JSONObject> list1 = (List<JSONObject>) 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());
- }
- }
- }
- }
- }
- }
- }
- //添加记录到tld_access
- String names = "销售发货单" ;
- String accessType = "1" ;
- String returnGsRemoval = returnData.toString() ;
- askGoodsMapper.addAccess(names,returnGsRemoval,accessType);
- }
- }
- }
- //删除父子表信息
- askGoodsMapper.delPlugOutRemoval(documentId);
- askGoodsMapper.delRemovalz(documentId);
- }catch (Exception e){
- e.printStackTrace();
- }
- }
- @Override
- public Map<String, Object> addWarehouseTransferVitrual(AskGoods askGoods) {
- Map<String, Object> map = new HashMap<>();
- //redis并发锁
- RLock lock = redissonClient.getLock(askGoods.getUniqueCode());
- lock.lock();
- try{
- Map<String, Object> 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 = (Double.parseDouble(inventory.getAmount()) - Double.parseDouble(inventory.getAmountLock())) - inventoryAlready; //库存剩余数量
- Double surplusNum = 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<Map<String, Object>> 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());//移动类型
- strJson.put("IsRed", 0);//是否红单1
- strJson.put("Creator", realName);//制单人姓名1
- //子表
- for (Map<String, Object> map : askGoodsMapper.getReturnWarehouseTransferZ(mapList.get(0).get("warehouseTransferId").toString(), warehouseWhere)) {
- List<JSONObject> list = new LinkedList<>();
- JSONObject BillItems = new JSONObject();
- List<JSONObject> 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));
- 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<String, Object> result = httpClientUtil1.doPost(url, returnData);
- 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<JSONObject> data1 = (List<JSONObject>) 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<JSONObject> retunList2 = new LinkedList<>();
- retunList2.add(jsonObject2);
- JSONObject ReqOutStocks1 = new JSONObject();
- ReqOutStocks1.put("BILLs", retunList2);
- JSONObject ReqOutStocks2 = new JSONObject();
- ReqOutStocks2.put("strJson",ReqOutStocks1);
- //如果失败存入报错信息跟数据
- error.setErrorInfo(map1.get("FailReason").toString());
- error.setUrl(url);
- error.setDataVal(ReqOutStocks2.toString()).setType("移库");
- errorMapper.addError(error);
- }
- }
- }
- }
- }
- }
- //添加记录到tld_access
- String names = "移库单";
- String accessType = "1";
- String returnGsRemoval = returnData.toString();
- askGoodsMapper.addAccess(names, returnGsRemoval, accessType);
- }
- }
- }
- //删除父子表信息
- //根据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<String,Object> returnWarehousing1 : askGoodsMapper.getStorageLocationWarehouseWhere(removalCode)) {
- orderNumber = returnWarehousing1.get("orderNumber").toString() ;
- //查询父表信息
- List<Map<String, Object>> 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
- strJson.put("Creator", realName);//制单人姓名1
- //子表
- for (Map<String, Object> map : askGoodsMapper.getNoticeSubtabulation(mapList.get(0).get("noticeId").toString())) {
- List<JSONObject> list = new LinkedList<>();
- JSONObject BillItems = new JSONObject();
- List<JSONObject> 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));
- System.out.println("封装好的:"+returnData);
- //回传地址
- // 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<String, Object> result = httpClientUtil1.doPost(url, returnData);
- 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<String, Object> 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<JSONObject> data1 = (List<JSONObject>) 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<JSONObject> retunList2 = new LinkedList<>();
- retunList2.add(jsonObject2);
- JSONObject ReqOutStocks1 = new JSONObject();
- ReqOutStocks1.put("BILLs", retunList2);
- JSONObject ReqOutStocks2 = new JSONObject();
- ReqOutStocks2.put("strJson",ReqOutStocks1);
- error.setErrorInfo(map1.get("FailReason").toString());
- error.setUrl(url);
- error.setDataVal(ReqOutStocks2.toJSONString()).setType("生产收货");
- errorMapper.addError(error);
- }
- }
- }
- }
- }
- }
- //添加记录到tld_access
- String names = "生产收货";
- String accessType = "1";
- String returnGsRemoval = returnData.toString();
- askGoodsMapper.addAccess(names, returnGsRemoval, accessType);
- }
- }
- }
- //删除虚拟表
- 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<String> noticeIds = new LinkedList<>();
- //通过入库单编号查询通知单ID
- // List<ReturnWarehousing> returnWarehousing = askGoodsMapper.getReturnGsOtherWarehousing(removalCode);
- //根据id查询子表的供货仓库
- for (Map<String,Object> 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
- strJson.put("Creator", realName);//制单人姓名1
- //查询信息
- List<Map<String, Object>> mapList = askGoodsMapper.getNoticesParent(removalCode,returnWarehousing1.get("storageLocationCode").toString());
- if (mapList.size() > 0) {
- for (Map<String, Object> map : mapList) {
- //子表
- List<JSONObject> list = new LinkedList<>();
- JSONObject BillItems = new JSONObject();
- List<JSONObject> 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));
- System.out.println("封装好的:"+returnData);
- // 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<String, Object> result = httpClientUtil1.doPost(url, returnData);
- System.out.println("result:" + 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("其它入库");
- 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<JSONObject> data1 = (List<JSONObject>) 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<JSONObject> retunList2 = new LinkedList<>();
- retunList2.add(jsonObject2);
- JSONObject ReqOutStocks1 = new JSONObject();
- ReqOutStocks1.put("BILLs", retunList2);
- JSONObject ReqOutStocks2 = new JSONObject();
- ReqOutStocks2.put("strJson",ReqOutStocks1);
- //如果失败存入报错信息跟数据
- error.setErrorInfo(map1.get("FailReason").toString());
- error.setUrl(url);
- error.setDataVal(ReqOutStocks2.toString()).setType("其它入库");
- errorMapper.addError(error);
- }
- }
- }
- }
- }
- }
- //添加记录到tld_access
- String names = "其它入库";
- String accessType = "1";
- String returnGsRemoval = returnData.toString();
- askGoodsMapper.addAccess(names, returnGsRemoval, accessType);
- }
- }
- 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<Map<String,Object>> lists = askGoodsMapper.getCreateOtherDeliveryMaterialsWarehouseWhere(removalCode);
- //根据id查询子表的供货仓库
- //根据仓库
- for (Map<String, Object> maps : lists) {
- List<Map<String, Object>> 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
- strJson.put("Creator", realName);//制单人姓名1
- //子表
- for (Map<String, Object> map : askGoodsMapper.getRemovalz(mapList.get(0).get("askGoodsId").toString(),maps.get("warehouseWhere").toString())) {
- List<JSONObject> list = new LinkedList<>();
- JSONObject BillItems = new JSONObject();
- List<JSONObject> 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));
- System.out.println("封装好的:"+returnData);
- // 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<String, Object> result = httpClientUtil1.doPost(url, returnData);
- System.out.println("result:" + 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("其它出库");
- 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<JSONObject> data1 = (List<JSONObject>) 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<JSONObject> retunList2 = new LinkedList<>();
- retunList2.add(jsonObject2);
- JSONObject ReqOutStocks1 = new JSONObject();
- ReqOutStocks1.put("ReqOutStocks", retunList2);
- JSONObject ReqOutStocks2 = new JSONObject();
- ReqOutStocks2.put("strJson",ReqOutStocks1);
- //如果失败存入报错信息跟数据
- error.setErrorInfo(map1.get("FailReason").toString());
- error.setUrl(url);
- error.setDataVal(ReqOutStocks2.toString()).setType("其它出库");
- errorMapper.addError(error);
- }
- }
- }
- }
- }
- }
- //添加记录到tld_access
- String names = "其它出库";
- String accessType = "1";
- String returnGsRemoval = returnData.toString();
- askGoodsMapper.addAccess(names, returnGsRemoval, accessType);
- }
- }
- }
- //删除父子表信息
- 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<Map<String,Object>> lists = askGoodsMapper.getCreateOtherDeliveryMaterialsWarehouseWhere(removalCode);
- //根据id查询子表的供货仓库
- //根据仓库循环
- for (Map<String, Object> maps : lists) {
- List<Map<String, Object>> 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
- strJson.put("Creator", realName);//制单人姓名1
- //子表
- for (Map<String, Object> map : askGoodsMapper.getRemovalz(mapList.get(0).get("askGoodsId").toString(),maps.get("warehouseWhere").toString())) {
- List<JSONObject> list = new LinkedList<>();
- JSONObject BillItems = new JSONObject();
- List<JSONObject> 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));
- 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<String, Object> result = httpClientUtil1.doPost(url, returnData);
- System.out.println("result:" + 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("其它出库");
- 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<JSONObject> data1 = (List<JSONObject>) 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<JSONObject> retunList2 = new LinkedList<>();
- retunList2.add(jsonObject2);
- JSONObject ReqOutStocks1 = new JSONObject();
- ReqOutStocks1.put("ReqOutStocks", retunList2);
- JSONObject ReqOutStocks2 = new JSONObject();
- ReqOutStocks2.put("strJson",ReqOutStocks1);
- //如果失败存入报错信息跟数据
- error.setErrorInfo(map1.get("FailReason").toString());
- error.setUrl(url);
- error.setDataVal(ReqOutStocks2.toString()).setType("其它出库");
- errorMapper.addError(error);
- }
- }
- }
- }
- }
- }
- //添加记录到tld_access
- String names = "其它出库";
- String accessType = "1";
- String returnGsRemoval = returnData.toString();
- askGoodsMapper.addAccess(names, returnGsRemoval, accessType);
- }
- }
- }
- //删除父子表信息
- askGoodsMapper.delPlugOutRemoval(documentId);
- askGoodsMapper.delRemovalz(documentId);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- /**
- * 出库单生成
- * @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();
- }
- }
|