Browse Source

SAP 入库 出库BUG修改

master
rui_li 5 months ago
parent
commit
cfb304966c
  1. 4
      src/main/java/com/gaotao/modules/finishedProduct/controller/CRollinfoController.java
  2. 11
      src/main/java/com/gaotao/modules/finishedProduct/sap/service/SapRollService.java
  3. 143
      src/main/java/com/gaotao/modules/finishedProduct/sap/service/impl/SapRollServiceImpl.java
  4. 1
      src/main/java/com/gaotao/modules/finishedProduct/vo/CRollInfoStorageVo.java
  5. 13
      src/main/resources/static/pda/js/productwarehouse/sap/sap_outbound.js
  6. 10
      src/main/resources/static/pda/js/productwarehouse/sap/sap_storage.js

4
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<CRollinfoEntity> cRollinfoList) {
return sapRollService.sapBatchRollOutbound(cRollinfoList);
public R sapBatchRollOutbound(@RequestBody List<CRollinfoEntity> cRollinfoList, String reasonCode) {
return sapRollService.sapBatchRollOutbound(cRollinfoList, reasonCode);
}
@GetMapping("/sapUfdOptions")

11
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<CRollinfoEntity> {
/**
* SAP成品出库
*/
R sapBatchRollOutbound(List<CRollinfoEntity> cRollinfoList);
R sapBatchRollOutbound(List<CRollinfoEntity> cRollinfoList, String reasonCode);
/**
* 获取SAP下拉选项根据类型查询不同视图
* @param type "IN"=入库(UFD_OIGN), "OUT"=出库(UFD_OIGE)
*/
List<Map<String, Object>> getSapUfdOptions(String type);
/**
* @description: 保存SAP交易记录的信息
* @author LR
* @date 2026-5-6 17:24
* @version 1.0
*/
String saveTransInfo(List<CRollinfoEntity> cRollinfoList, String warehouseId, String reasonCode, String tranType);
}

143
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<CRollinfoDao, CRollinfoEntity> 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<CRollinfoDao, CRollinfoEntit
@Autowired
private TransheaderService transheaderService;
@Autowired
private TransdetailService transdetailService;
@Autowired
private TransdetailsubService transdetailsubService;
@Autowired
private PartService partService;
@ -77,6 +81,10 @@ public class SapRollServiceImpl extends ServiceImpl<CRollinfoDao, CRollinfoEntit
@Transactional(rollbackFor = Exception.class)
public R sapRollToStorage(CRollInfoStorageVo cRollInfoStorageVo) {
SysUserEntity user = (SysUserEntity) SecurityUtils.getSubject().getPrincipal();
//公共参数
String site = user.getSite();
String warehouseId = cRollInfoStorageVo.getWarehouseId();
String reasonCode = cRollInfoStorageVo.getReasonCode();
List<CRollinfoEntity> 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<CRollinfoDao, CRollinfoEntit
cRollinfoList.add(cRollinfoEntity);
}
transheaderService.saveTransInfo(cRollinfoList, SAP_TRANS_TYPE_IN);
String transNo = saveTransInfo(cRollinfoList, warehouseId, reasonCode, SAP_TRANS_TYPE_IN);
cRollinfoService.saveBatch(cRollinfoList);
// TODO 调用SAP存储过程入库
// List<Object> params = new ArrayList<>();
// params.add(...);
// List<Map<String, Object>> resultList = procedureMapper.getProcedureData("存储过程名", params);
// Map<String, Object> resultMap = resultList.get(0);
// String resultCode = String.valueOf(resultMap.get("resultCode"));
// if (!"200".equalsIgnoreCase(resultCode)) {
// throw new XJException(resultMap.get("resultMsg").toString());
// }
// 调用SAP存储过程入库
List<Object> params = new ArrayList<>();
params.add(site);//
params.add(transNo);
List<Map<String, Object>> resultList = procedureDao.getProcedureData("P_SAP_RECEIVEPART", params);
Map<String, Object> 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<CRollinfoEntity> cRollinfoList) {
public R sapBatchRollOutbound(List<CRollinfoEntity> 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<CRollinfoDao, CRollinfoEntit
item.setSite(user.getSite());
item.setPartno(dbRoll.getPartno());
item.setRollqty(dbRoll.getRollqty());
warehouseId = dbRoll.getWarehouseid();
}
transheaderService.saveTransInfo(cRollinfoList, SAP_TRANS_TYPE_OUT);
//调用方法 保存数据
String transNo = saveTransInfo(cRollinfoList, warehouseId, reasonCode, SAP_TRANS_TYPE_OUT);
cRollinfoList.forEach(rollInfo -> {
cRollinfoService.lambdaUpdate()
@ -172,16 +184,16 @@ public class SapRollServiceImpl extends ServiceImpl<CRollinfoDao, CRollinfoEntit
.update();
});
// TODO 调用SAP存储过程出库
// List<Object> params = new ArrayList<>();
// params.add(...);
// List<Map<String, Object>> resultList = procedureMapper.getProcedureData("存储过程名", params);
// Map<String, Object> resultMap = resultList.get(0);
// String resultCode = String.valueOf(resultMap.get("resultCode"));
// if (!"200".equalsIgnoreCase(resultCode)) {
// throw new XJException(resultMap.get("resultMsg").toString());
// }
// 调用SAP存储过程出库
List<Object> params = new ArrayList<>();
params.add(site);
params.add(transNo);
List<Map<String, Object>> resultList = procedureDao.getProcedureData("P_SAP_ISSUEPART", params);
Map<String, Object> 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<CRollinfoDao, CRollinfoEntit
}
return Collections.emptyList();
}
@Override
@Transactional
public String saveTransInfo(List<CRollinfoEntity> 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<String, List<CRollinfoEntity>> partGroup = cRollinfoList.stream().collect(Collectors.groupingBy((CRollinfoEntity::getPartno)));
List<Transdetail> 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<Transdetailsub> 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;
}
}

1
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;
}

13
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 || '出库失败');
}

10
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() {
'</tr>';
$("#roll_table").append(str);
})
print(data.inRollList)
print(data.inRollList);
//获取焦点
$("#rollNo").focus();
} else {
layer.alert(data.msg || '入库失败')
}

Loading…
Cancel
Save