add:erp下发出库单据

This commit is contained in:
2025-06-11 13:56:04 +08:00
parent 42c1a1b9b4
commit a1c7893ad3
10 changed files with 110 additions and 34 deletions

View File

@@ -90,7 +90,7 @@ public class BsrealStorattrServiceImpl extends ServiceImpl<BsrealStorattrMapper,
BsrealStorattr bsrealStorattr = bsrealStorattrMapper.selectOne(queryWrapper);
if (ObjectUtil.isEmpty(bsrealStorattr)) {
return null;
throw new BadRequestException("仓库编码为【"+code+"】不存在!");
}
return bsrealStorattr;

View File

@@ -28,13 +28,17 @@ public interface ErpToWmsService {
* 下发出库单据
* @param whereJson {
* stor_code仓库编码
* mater_code物料编码
* batch_no批次号可为空
* quantity数量
* unit_code计量单位
* unit_name计量单位名称
* inv_code单据号可为空
* task_type :业务类型(可为空)
* data : [
* {
* mater_code物料编码
* batch_no批次号可为空
* quantity数量
* unit_code计量单位
* unit_name计量单位名称
* }
* ]
* }
* @return ErpResponse
*/

View File

@@ -1,13 +1,28 @@
package org.nl.wms.ext.service.impl;
import cn.hutool.core.date.DateUtil;
import cn.hutool.json.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import lombok.extern.slf4j.Slf4j;
import org.nl.wms.basedata_manage.service.IBsrealStorattrService;
import org.nl.wms.basedata_manage.service.IMdMeMaterialbaseService;
import org.nl.wms.basedata_manage.service.IMdPbMeasureunitService;
import org.nl.wms.basedata_manage.service.dao.BsrealStorattr;
import org.nl.wms.basedata_manage.service.dao.MdMeMaterialbase;
import org.nl.wms.basedata_manage.service.dao.MdPbMeasureunit;
import org.nl.wms.basedata_manage.service.dao.mapper.MdPbStoragevehicleextMapper;
import org.nl.wms.ext.service.ErpToWmsService;
import org.nl.wms.ext.service.util.ErpResponse;
import org.nl.wms.warehouse_management.enums.IOSEnum;
import org.nl.wms.warehouse_management.service.IOutBillService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
import java.util.stream.Collectors;
/**
* <p>
* ERP调用WMS 实现类
@@ -20,12 +35,36 @@ import org.springframework.stereotype.Service;
@Slf4j
public class ErpToWmsServiceImpl implements ErpToWmsService {
/**
* 仓库实物表服务
*/
@Autowired
private IBsrealStorattrService iBsrealStorattrService;
/**
* 物料基础数据服务
*/
@Autowired
private IMdMeMaterialbaseService iMdMeMaterialbaseService;
/**
* 计量单位服务
*/
@Autowired
private IMdPbMeasureunitService iMdPbMeasureunitService;
/**
* 载具扩展属性mapper
*/
@Autowired
private MdPbStoragevehicleextMapper mdPbStoragevehicleextMapper;
/**
* 出库服务
*/
@Autowired
private IOutBillService iOutBillService;
@Override
public ErpResponse erpQueryIvt(JSONObject whereJson) {
log.info("erpQueryIvt查询物料接口输入参数为-------------------" + whereJson.toString());
@@ -37,7 +76,55 @@ public class ErpToWmsServiceImpl implements ErpToWmsService {
@Override
public ErpResponse sendTask(JSONObject whereJson) {
log.info("sendTask下发出库任务接口输入参数为-------------------" + whereJson.toString());
// 组织主表数据
JSONObject jsonMst = new JSONObject();
jsonMst.put("biz_date", DateUtil.now());
jsonMst.put("bill_status", IOSEnum.BILL_STATUS.code("生成"));
jsonMst.put("source_id", whereJson.getString("inv_code"));
jsonMst.put("source_type", whereJson.getString("task_type"));
jsonMst.put("bill_type", whereJson.getString("task_type"));
jsonMst.put("user","erp");
// 查询仓库
BsrealStorattr storDao = iBsrealStorattrService.findByCode(whereJson.getString("stor_code"));
jsonMst.put("stor_id", storDao.getStor_id());
// 组织明细
List<JSONObject> dataList = whereJson.getJSONArray("data").toJavaList(JSONObject.class);
// 查询所有物料
List<MdMeMaterialbase> materDaoList = iMdMeMaterialbaseService.list(
new QueryWrapper<MdMeMaterialbase>().lambda()
.in(MdMeMaterialbase::getMaterial_code, dataList.stream()
.map(row -> row.getString("mater_code"))
.collect(Collectors.toList())
)
);
// 查询所有计量单位
List<MdPbMeasureunit> unitDaoList = iMdPbMeasureunitService.list(
new QueryWrapper<MdPbMeasureunit>().lambda()
.in(MdPbMeasureunit::getUnit_code, dataList.stream()
.map(row -> row.getString("unit_code"))
.collect(Collectors.toList()))
);
// 明细集合
JSONArray dtlArr = new JSONArray();
for (JSONObject json : dataList) {
JSONObject jsonDtl = new JSONObject();
MdMeMaterialbase materDao = materDaoList.stream()
.filter(row -> row.getMaterial_code().equals(json.getString("mater_code")))
.findFirst().orElse(null);
jsonDtl.put("material_id", materDao.getMaterial_id());
jsonDtl.put("pcsn", json.getString("batch_no"));
MdPbMeasureunit unitDao = unitDaoList.stream()
.filter(row -> row.getUnit_code().equals(json.getString("unit_code")))
.findFirst().orElse(null);
jsonDtl.put("qty_unit_id", unitDao.getMeasure_unit_id());
jsonDtl.put("qty_unit_name", unitDao.getUnit_name());
jsonDtl.put("qty", json.getString("quantity"));
dtlArr.add(jsonDtl);
}
jsonMst.put("tableData",dtlArr);
// 调用出库单新增服务
iOutBillService.insertDtl(jsonMst);
log.info("sendTask下发出库任务接口输出参数为-------------------" + ErpResponse.requestOk().toString());
return ErpResponse.requestOk();

View File

@@ -165,11 +165,6 @@ public class OutBillServiceImpl extends ServiceImpl<IOStorInvMapper,IOStorInv> i
@Override
@Transactional(rollbackFor = Exception.class)
public String insertDtl(JSONObject map) {
// if(MapUtil.getStr(map,"bill_type").equals("1011")) {
// String iostorinv_id = inserdtlPic(map);
// return iostorinv_id ;
// }
//明细
JSONArray array = map.getJSONArray("tableData");
@@ -178,13 +173,9 @@ public class OutBillServiceImpl extends ServiceImpl<IOStorInvMapper,IOStorInv> i
String nickName = SecurityUtils.getCurrentNickName();
String user = map.getString("user");
if (ObjectUtil.isNotEmpty(user)) {
if ("mes".equals(user)) {
if ("erp".equals(user)) {
currentUserId = "2";
nickName = "mes用户";
}
if ("sap".equals(user)) {
currentUserId = "3";
nickName = "sap用户";
nickName = "ERP用户";
}
}
String now = DateUtil.now();
@@ -210,13 +201,6 @@ public class OutBillServiceImpl extends ServiceImpl<IOStorInvMapper,IOStorInv> i
map.put("update_time", now);
map.put("is_delete", BaseDataEnum.IS_YES_NOT.code(""));
map.put("is_upload", BaseDataEnum.IS_YES_NOT.code(""));
if (ObjectUtil.isNotEmpty(user)) {
if (!"mes".equals(user) || "sap".equals(user)) {
Long deptId = SecurityUtils.getDeptId();
map.put("sysdeptid", deptId);
map.put("syscompanyid", deptId);
}
}
// 主表重量
double qty = 0.0;
// 明细数
@@ -305,7 +289,7 @@ public class OutBillServiceImpl extends ServiceImpl<IOStorInvMapper,IOStorInv> i
// 根据物料和批次号查询库存可用
BigDecimal canuseSum = mdPbStoragevehicleextMapper.queryCanuseSum(pcsn,material_id);
if (canuseSum.doubleValue()<unassign_qty){
if (ObjectUtil.isEmpty(canuseSum) || canuseSum.doubleValue()<unassign_qty){
throw new BadRequestException("物料编号:"+ dtl.getMaterial_code() +"出库分配数量不满足");
}

View File

@@ -3,10 +3,10 @@
<springProperty scope="context" name="logPath" source="logging.file.path" defaultValue="logs"/>
<property name="LOG_HOME" value="${logPath}"/>
<!-- 按照每天生成日志文件 -->
<appender name="FILE_SENDTASK" class="ch.qos.logback.core.rolling.RollingFileAppender">
<appender name="FILE_ERPTOWMS" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!--日志文件输出的文件名-->
<FileNamePattern>${LOG_HOME}/SendAcsTask/%d{yyyy-MM-dd}.%i.log</FileNamePattern>
<FileNamePattern>${LOG_HOME}/ErpToWms/%d{yyyy-MM-dd}.%i.log</FileNamePattern>
<!--日志文件保留天数-->
<maxHistory>15</maxHistory>
<!--单个日志最大容量 至少10MB才能看得出来-->
@@ -23,6 +23,6 @@
</appender>
<!-- 打印sql -->
<logger name="org.nl.wms.ext.service.impl.ErpToWmsServiceImpl" level="info" additivity="false">
<appender-ref ref="FILE_SENDTASK"/>
<appender-ref ref="FILE_ERPTOWMS"/>
</logger>
</included>

View File

@@ -3,10 +3,10 @@
<springProperty scope="context" name="logPath" source="logging.file.path" defaultValue="logs"/>
<property name="LOG_HOME" value="${logPath}"/>
<!-- 按照每天生成日志文件 -->
<appender name="FILE_ERPTOWMS" class="ch.qos.logback.core.rolling.RollingFileAppender">
<appender name="FILE_SENDTASK" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!--日志文件输出的文件名-->
<FileNamePattern>${LOG_HOME}/ErpToWms/%d{yyyy-MM-dd}.%i.log</FileNamePattern>
<FileNamePattern>${LOG_HOME}/SendAcsTask/%d{yyyy-MM-dd}.%i.log</FileNamePattern>
<!--日志文件保留天数-->
<maxHistory>15</maxHistory>
<!--单个日志最大容量 至少10MB才能看得出来-->
@@ -23,6 +23,6 @@
</appender>
<!-- 打印sql -->
<logger name="org.nl.wms.ext.util.AcsUtil" level="info" additivity="false">
<appender-ref ref="FILE_ERPTOWMS"/>
<appender-ref ref="FILE_SENDTASK"/>
</logger>
</included>

View File

@@ -17,6 +17,7 @@ https://juejin.cn/post/6844903775631572999
<!--引入默认的一些设置-->
<include resource="log/WmsToErp.xml"/>
<include resource="log/ErpToWms.xml"/>
<include resource="log/SendAcsTask.xml"/>
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<!--withJansi 参数改为true-->

View File

@@ -1,3 +1,3 @@
# 新生北安系统
# 北安新生WMS系统
/api/sysMenu/build?systemType=1

View File

@@ -2,7 +2,7 @@ export default {
'lang': 'zh',
// 平台
'platform': {
'title': '新生北安系统',
'title': '北安新生WMS系统',
'tip1': '用户名不能为空',
'tip2': '密码不能为空',
'tip3': '验证码不能为空'

View File

@@ -26,7 +26,7 @@ export default {
},
data() {
return {
title: '新生北安系统',
title: '北安新生WMS系统',
logo: Logo,
title_param: 'platform'
}