From cfb304966c02af29bd7665a864d36960ac1ed880 Mon Sep 17 00:00:00 2001 From: rui_li <877258667@qq.com> Date: Thu, 7 May 2026 09:19:09 +0800 Subject: [PATCH] =?UTF-8?q?SAP=20=E5=85=A5=E5=BA=93=20=E5=87=BA=E5=BA=93BU?= =?UTF-8?q?G=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/CRollinfoController.java | 4 +- .../sap/service/SapRollService.java | 11 +- .../sap/service/impl/SapRollServiceImpl.java | 143 ++++++++++++++---- .../vo/CRollInfoStorageVo.java | 1 + .../js/productwarehouse/sap/sap_outbound.js | 13 +- .../js/productwarehouse/sap/sap_storage.js | 10 +- 6 files changed, 140 insertions(+), 42 deletions(-) diff --git a/src/main/java/com/gaotao/modules/finishedProduct/controller/CRollinfoController.java b/src/main/java/com/gaotao/modules/finishedProduct/controller/CRollinfoController.java index 357335b..38fa4c7 100644 --- a/src/main/java/com/gaotao/modules/finishedProduct/controller/CRollinfoController.java +++ b/src/main/java/com/gaotao/modules/finishedProduct/controller/CRollinfoController.java @@ -283,8 +283,8 @@ public class CRollinfoController extends AbstractController { } @PostMapping("/sapBatchRollOutbound") - public R sapBatchRollOutbound(@RequestBody List cRollinfoList) { - return sapRollService.sapBatchRollOutbound(cRollinfoList); + public R sapBatchRollOutbound(@RequestBody List cRollinfoList, String reasonCode) { + return sapRollService.sapBatchRollOutbound(cRollinfoList, reasonCode); } @GetMapping("/sapUfdOptions") diff --git a/src/main/java/com/gaotao/modules/finishedProduct/sap/service/SapRollService.java b/src/main/java/com/gaotao/modules/finishedProduct/sap/service/SapRollService.java index 8a30e2b..e50df86 100644 --- a/src/main/java/com/gaotao/modules/finishedProduct/sap/service/SapRollService.java +++ b/src/main/java/com/gaotao/modules/finishedProduct/sap/service/SapRollService.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.gaotao.common.utils.R; import com.gaotao.modules.finishedProduct.entity.CRollinfoEntity; import com.gaotao.modules.finishedProduct.vo.CRollInfoStorageVo; +import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.Map; @@ -23,11 +24,19 @@ public interface SapRollService extends IService { /** * SAP成品出库 */ - R sapBatchRollOutbound(List cRollinfoList); + R sapBatchRollOutbound(List cRollinfoList, String reasonCode); /** * 获取SAP下拉选项(根据类型查询不同视图) * @param type "IN"=入库(UFD_OIGN), "OUT"=出库(UFD_OIGE) */ List> getSapUfdOptions(String type); + + /** + * @description: 保存SAP交易记录的信息 + * @author LR + * @date 2026-5-6 17:24 + * @version 1.0 + */ + String saveTransInfo(List cRollinfoList, String warehouseId, String reasonCode, String tranType); } diff --git a/src/main/java/com/gaotao/modules/finishedProduct/sap/service/impl/SapRollServiceImpl.java b/src/main/java/com/gaotao/modules/finishedProduct/sap/service/impl/SapRollServiceImpl.java index 77afa66..60322df 100644 --- a/src/main/java/com/gaotao/modules/finishedProduct/sap/service/impl/SapRollServiceImpl.java +++ b/src/main/java/com/gaotao/modules/finishedProduct/sap/service/impl/SapRollServiceImpl.java @@ -2,20 +2,17 @@ package com.gaotao.modules.finishedProduct.sap.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.gaotao.common.constant.SysMsgConstant; +import com.gaotao.common.exception.XJException; import com.gaotao.common.utils.DateUtils; import com.gaotao.common.utils.R; import com.gaotao.common.utils.RandomUtil; import com.gaotao.modules.finishedProduct.dao.CRollinfoDao; -import com.gaotao.modules.finishedProduct.entity.CRollinfoEntity; -import com.gaotao.modules.finishedProduct.entity.Part; +import com.gaotao.modules.finishedProduct.entity.*; import com.gaotao.modules.finishedProduct.sap.dao.SapViewDao; import com.gaotao.modules.finishedProduct.sap.service.SapRollService; -import com.gaotao.modules.finishedProduct.service.CRollinfoService; -import com.gaotao.modules.finishedProduct.service.PartService; -import com.gaotao.modules.finishedProduct.service.TransheaderService; +import com.gaotao.modules.finishedProduct.service.*; import com.gaotao.modules.finishedProduct.vo.CRollInfoStorageVo; import com.gaotao.modules.report.dao.ProcedureDao; -import com.gaotao.modules.schedule.mapper.ProcedureMapper; import com.gaotao.modules.sys.entity.SysUserEntity; import com.gaotao.modules.sys.service.SysMsgService; import lombok.extern.slf4j.Slf4j; @@ -27,6 +24,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import java.util.*; +import java.util.stream.Collectors; @Slf4j @Service @@ -34,8 +32,8 @@ import java.util.*; public class SapRollServiceImpl extends ServiceImpl implements SapRollService { private static final String SAP_SOURCE_TYPE = "SAP成品入库"; - private static final String SAP_TRANS_TYPE_IN = "SOI"; - private static final String SAP_TRANS_TYPE_OUT = "SOC"; + private static final String SAP_TRANS_TYPE_IN = "OI"; + private static final String SAP_TRANS_TYPE_OUT = "OC"; @Autowired private CRollinfoService cRollinfoService; @@ -43,6 +41,12 @@ public class SapRollServiceImpl extends ServiceImpl cRollinfoList = new ArrayList<>(); Integer num = (int) Math.ceil(cRollInfoStorageVo.getStorageNumber() / cRollInfoStorageVo.getRollNumber()); Double y = cRollInfoStorageVo.getStorageNumber() % cRollInfoStorageVo.getRollNumber(); @@ -118,29 +126,32 @@ public class SapRollServiceImpl extends ServiceImpl params = new ArrayList<>(); - // params.add(...); - // List> resultList = procedureMapper.getProcedureData("存储过程名", params); - // Map resultMap = resultList.get(0); - // String resultCode = String.valueOf(resultMap.get("resultCode")); - // if (!"200".equalsIgnoreCase(resultCode)) { - // throw new XJException(resultMap.get("resultMsg").toString()); - // } - + // 调用SAP存储过程(入库) + List params = new ArrayList<>(); + params.add(site);// + params.add(transNo); + List> resultList = procedureDao.getProcedureData("P_SAP_RECEIVEPART", params); + Map resultMap = resultList.get(0); + String resultCode = String.valueOf(resultMap.get("resultCode")); + if (!"200".equalsIgnoreCase(resultCode)) { + throw new XJException(resultMap.get("resultMsg").toString(), 400); + } return R.ok().put("inRollList", cRollinfoList); } @Override @Transactional(rollbackFor = Exception.class) - public R sapBatchRollOutbound(List cRollinfoList) { + public R sapBatchRollOutbound(List cRollinfoList, String reasonCode) { + SysUserEntity user = (SysUserEntity) SecurityUtils.getSubject().getPrincipal(); + //公共参数 + String site = user.getSite(); + String warehouseId = ""; if (CollectionUtils.isEmpty(cRollinfoList)) { return R.error("请扫描卷再出库"); } - SysUserEntity user = (SysUserEntity) SecurityUtils.getSubject().getPrincipal(); for (CRollinfoEntity item : cRollinfoList) { CRollinfoEntity dbRoll = cRollinfoService.lambdaQuery() @@ -157,9 +168,10 @@ public class SapRollServiceImpl extends ServiceImpl { cRollinfoService.lambdaUpdate() @@ -172,16 +184,16 @@ public class SapRollServiceImpl extends ServiceImpl params = new ArrayList<>(); - // params.add(...); - // List> resultList = procedureMapper.getProcedureData("存储过程名", params); - // Map resultMap = resultList.get(0); - // String resultCode = String.valueOf(resultMap.get("resultCode")); - // if (!"200".equalsIgnoreCase(resultCode)) { - // throw new XJException(resultMap.get("resultMsg").toString()); - // } - + // 调用SAP存储过程(出库) + List params = new ArrayList<>(); + params.add(site); + params.add(transNo); + List> resultList = procedureDao.getProcedureData("P_SAP_ISSUEPART", params); + Map resultMap = resultList.get(0); + String resultCode = String.valueOf(resultMap.get("resultCode")); + if (!"200".equalsIgnoreCase(resultCode)) { + throw new XJException(resultMap.get("resultMsg").toString(), 400); + } return R.ok("出库成功"); } @@ -194,4 +206,69 @@ public class SapRollServiceImpl extends ServiceImpl cRollinfoList, String warehouseId, String reasonCode, String tranType) { + SysUserEntity user = (SysUserEntity) SecurityUtils.getSubject().getPrincipal(); + // transheader + String transHeaderNo = RandomUtil.getOrderNoByAtomic(user.getSite(), tranType); + Transheader herder = new Transheader(); + herder.setTransno(transHeaderNo); + herder.setSite(user.getSite()); + herder.setTranstypeDb(tranType); + herder.setUserid(user.getUsername()); + herder.setUsername(user.getUserDisplay()); + herder.setTransdate(Calendar.getInstance().getTime()); + herder.setStatus("已录入"); + String remark = ""; + switch (tranType){ + case "OI": + remark = reasonCode; + break; + case "OC": + remark = reasonCode; + break; + case "CRR": + remark = "采购退货"; + break; + } + herder.setRemark(remark); + transheaderService.save(herder); + // transDetail + Map> partGroup = cRollinfoList.stream().collect(Collectors.groupingBy((CRollinfoEntity::getPartno))); + List transdetailList = new ArrayList<>(); + double itemNo = 0.0; + for (String partNo : partGroup.keySet() ){ + itemNo = itemNo+1.0; + Double sumQty = partGroup.get(partNo).stream().collect(Collectors.summingDouble((CRollinfoEntity::getRollqty))); + Transdetail transdetail = new Transdetail(); + transdetail.setTransno(herder.getTransno()); + transdetail.setSite(user.getSite()); + transdetail.setPartno(partNo); + transdetail.setWarehouseid(warehouseId); + transdetail.setItemno(itemNo); + transdetail.setTransqty(sumQty); + transdetail.setBatchno("*"); + transdetailList.add(transdetail); + } + transdetailService.saveBatch(transdetailList,1000); + // transDetailSub + List transdetailsubs = new ArrayList<>(); + for (int i = 0; i < cRollinfoList.size(); i++) { + CRollinfoEntity cRollinfoEntity = cRollinfoList.get(i); + Transdetailsub sub = new Transdetailsub(); + sub.setSite(cRollinfoEntity.getSite()); + sub.setSubqty(cRollinfoEntity.getRollqty()); + sub.setOrderref1(cRollinfoEntity.getOrderref1() != null ? cRollinfoEntity.getOrderref1() : ""); + sub.setOrderref3(cRollinfoEntity.getOrderref2() != null ? cRollinfoEntity.getOrderref2() : ""); + sub.setItemno(1.0 + i); + sub.setTransno(herder.getTransno()); + sub.setSubno(cRollinfoEntity.getRollno()); + sub.setDirection("-"); + transdetailsubs.add(sub); + } + transdetailsubService.saveBatch(transdetailsubs,1000); + return transHeaderNo; + } } diff --git a/src/main/java/com/gaotao/modules/finishedProduct/vo/CRollInfoStorageVo.java b/src/main/java/com/gaotao/modules/finishedProduct/vo/CRollInfoStorageVo.java index 66c3aa4..470e9c4 100644 --- a/src/main/java/com/gaotao/modules/finishedProduct/vo/CRollInfoStorageVo.java +++ b/src/main/java/com/gaotao/modules/finishedProduct/vo/CRollInfoStorageVo.java @@ -13,4 +13,5 @@ public class CRollInfoStorageVo { private String userName; private String orderref1; private String orderref2; + private String reasonCode; } diff --git a/src/main/resources/static/pda/js/productwarehouse/sap/sap_outbound.js b/src/main/resources/static/pda/js/productwarehouse/sap/sap_outbound.js index 06fdb2c..62a7d4d 100644 --- a/src/main/resources/static/pda/js/productwarehouse/sap/sap_outbound.js +++ b/src/main/resources/static/pda/js/productwarehouse/sap/sap_outbound.js @@ -1,5 +1,5 @@ -$(function () { - +$(function (){ + $("#rollNo").focus(); }); $("#rollNo").bind("keydown", function (event) { @@ -106,7 +106,7 @@ function sapOutbound() { return Object.assign({}, item, { remark: reasonCode }) }) $.ajax({ - url: "/finishedProduct/crollinfo/sapBatchRollOutbound", + url: "/finishedProduct/crollinfo/sapBatchRollOutbound?reasonCode="+reasonCode, contentType: 'application/json', type: "POST", data: JSON.stringify(submitList), @@ -120,7 +120,12 @@ function sapOutbound() { $("#reasonCode").val(''); $("tr[id]").remove(); rollList = [] - layer.alert('出库成功'); + layer.alert('出库成功', function (index){ + layer.close(index); + //获取焦点 + $("#rollNo").focus(); + }); + } else { layer.alert(data.msg || '出库失败'); } diff --git a/src/main/resources/static/pda/js/productwarehouse/sap/sap_storage.js b/src/main/resources/static/pda/js/productwarehouse/sap/sap_storage.js index 595fcf2..0145db4 100644 --- a/src/main/resources/static/pda/js/productwarehouse/sap/sap_storage.js +++ b/src/main/resources/static/pda/js/productwarehouse/sap/sap_storage.js @@ -27,6 +27,10 @@ if (version) { // if (window.AndroidBridge) AndroidBridge.hideKeyboardAfterFocus(); // }, 0); +$(function (){ + $("#rollNo").focus(); +}); + function getPartName(partNo) { let part = {"partno": partNo} $.ajax({ @@ -178,7 +182,7 @@ function submitToStorage() { storageNumber: storageNumber, rollNumber: rollNumber, warehouseId: warehouseId, - display: reasonCode, + reasonCode: reasonCode, orderref1: orderref1, orderref2: orderref2, } @@ -217,7 +221,9 @@ function submitToStorage() { ''; $("#roll_table").append(str); }) - print(data.inRollList) + print(data.inRollList); + //获取焦点 + $("#rollNo").focus(); } else { layer.alert(data.msg || '入库失败') }