Compare commits

...

2 Commits

Author SHA1 Message Date
刘先源 708ad618b3 Merge branch 'master' of http://121.40.234.130:7788/zhouz/beianxinsheng 2 weeks ago
刘先源 a891c3b201 add:外部接口 2 weeks ago
  1. 9
      wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/controller/MaterialbaseController.java
  2. 9
      wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/IMdMeMaterialbaseService.java
  3. 12
      wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/MdPbStoragevehicleextMapper.java
  4. 94
      wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/MdPbStoragevehicleextMapper.xml
  5. 51
      wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/MdMeMaterialbaseServiceImpl.java
  6. 48
      wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/controller/ErpToWmsController.java
  7. 19
      wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/enuums/EXTConstant.java
  8. 42
      wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/ErpToWmsService.java
  9. 20
      wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/WmsToErpService.java
  10. 45
      wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/impl/ErpToWmsServiceImpl.java
  11. 36
      wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/impl/WmsToErpServiceImpl.java
  12. 72
      wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/util/ErpResponse.java
  13. 2
      wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/IStIvtCheckmstService.java
  14. 8
      wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/RetrunServiceImpl.java
  15. 4
      wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/StIvtCheckdtlServiceImpl.java
  16. 33
      wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/StIvtCheckmstServiceImpl.java
  17. 2
      wms/nladmin-system/nlsso-server/src/main/resources/config/application-dev.yml
  18. 2
      wms/nladmin-system/nlsso-server/src/main/resources/config/application.yml
  19. 28
      wms/nladmin-system/nlsso-server/src/main/resources/log/ErpToWms.xml
  20. 1
      wms/nladmin-system/nlsso-server/src/main/resources/logback-spring.xml
  21. 19
      wms/nladmin-ui/src/views/wms/basedata/material/index.vue
  22. 10
      wms/nladmin-ui/src/views/wms/basedata/material/material.js
  23. 2
      wms/nladmin-ui/src/views/wms/st/checkbill/CheckDialog.vue

9
wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/controller/MaterialbaseController.java

@ -1,6 +1,7 @@
package org.nl.wms.basedata_manage.controller; package org.nl.wms.basedata_manage.controller;
import com.alibaba.fastjson.JSONObject;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.nl.common.base.TableDataInfo; import org.nl.common.base.TableDataInfo;
@ -61,4 +62,12 @@ public class MaterialbaseController {
return new ResponseEntity<>(HttpStatus.OK); return new ResponseEntity<>(HttpStatus.OK);
} }
@PostMapping("/materialSync")
@Log("物料同步")
public ResponseEntity<Object> materialSync(@RequestBody JSONObject whereJson) {
iMdMeMaterialbaseService.materialSync(whereJson);
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
}
} }

9
wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/IMdMeMaterialbaseService.java

@ -1,5 +1,6 @@
package org.nl.wms.basedata_manage.service; package org.nl.wms.basedata_manage.service;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import org.nl.common.domain.query.PageQuery; import org.nl.common.domain.query.PageQuery;
@ -42,4 +43,12 @@ public interface IMdMeMaterialbaseService extends IService<MdMeMaterialbase> {
* @param ids 物料标识集合 * @param ids 物料标识集合
*/ */
void delete(Set<String> ids); void delete(Set<String> ids);
/**
* 物料同步
* @param whereJson {
* --
* }
*/
void materialSync(JSONObject whereJson);
} }

12
wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/MdPbStoragevehicleextMapper.java

@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.nl.wms.basedata_manage.service.dao.MdPbStoragevehicleext; import org.nl.wms.basedata_manage.service.dao.MdPbStoragevehicleext;
import java.util.List;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Map; import java.util.Map;
@ -37,4 +38,15 @@ public interface MdPbStoragevehicleextMapper extends BaseMapper<MdPbStoragevehic
* @return IPage<StIvtMoveinv> * @return IPage<StIvtMoveinv>
*/ */
IPage<JSONObject> queryAllByPage(Page<JSONObject> page, @Param("param") Map whereJson); IPage<JSONObject> queryAllByPage(Page<JSONObject> page, @Param("param") Map whereJson);
/**
* erp查询库存
* @param whereJson {
* mater_code 物料编码
* stor_code 仓库编码
* point_code 货位编码
* }
* @return List<JSONObject>
*/
List<JSONObject> erpQueryIvt(@Param("param") JSONObject whereJson);
} }

94
wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/MdPbStoragevehicleextMapper.xml

@ -56,6 +56,58 @@
ORDER BY ext.insert_time Desc ORDER BY ext.insert_time Desc
</select> </select>
<select id="queryAllByPage" resultType="com.alibaba.fastjson.JSONObject">
SELECT
ext.storagevehicleext_id,
ext.storagevehicle_code,
ext.pcsn,
ext.qty_unit_name,
ext.canuse_qty,
ext.frozen_qty,
ext.remark,
ext.insert_time,
attr.struct_code,
attr.struct_name,
attr.stor_name,
attr.sect_name,
mater.material_code,
mater.material_name
FROM
md_pb_storagevehicleext ext
LEFT JOIN st_ivt_structattr attr ON ext.storagevehicle_code = attr.storagevehicle_code
LEFT JOIN md_me_materialbase mater ON mater.material_id = ext.material_id
<where>
1 = 1
<if test="param.stor_id != null and param.stor_id != ''">
AND
attr.stor_id = #{param.stor_id}
</if>
<if test="param.sect_id != null and param.sect_id != ''">
AND
attr.sect_id = #{param.sect_id}
</if>
<if test="param.struct_code != null and param.struct_code != ''">
AND
(attr.struct_code LIKE #{param.struct_code} or
attr.struct_name LIKE #{param.struct_code} )
</if>
<if test="param.material_code != null and param.material_code != ''">
AND
(mater.material_code LIKE #{param.material_code} or
mater.material_name LIKE #{param.material_code} )
</if>
<if test="param.pcsn != null and param.pcsn != ''">
AND
ext.pcsn LIKE #{param.pcsn}
</if>
</where>
ORDER BY ext.insert_time Desc
</select>
<select id="queryCanuseSumByPcsn" resultType="java.math.BigDecimal"> <select id="queryCanuseSumByPcsn" resultType="java.math.BigDecimal">
SELECT SELECT
SUM(canuse_qty) SUM(canuse_qty)
@ -66,4 +118,46 @@
</where> </where>
ORDER BY ext.insert_time Desc ORDER BY ext.insert_time Desc
</select> </select>
<select id="erpQueryIvt" resultType="com.alibaba.fastjson.JSONObject">
SELECT
attr.stor_code AS stor_code,
attr.stor_name AS stor_name,
attr.struct_code AS point_code,
attr.struct_name AS point_name,
ext.storagevehicle_code AS pallet_code,
mater.material_code AS mater_code,
mater.material_name AS mater_name,
ext.pcsn AS batch_no,
ext.canuse_qty AS quantity,
unit.unit_code AS unit_code,
unit.unit_name AS unit_name,
ext.insert_time AS in_time
FROM
md_pb_storagevehicleext ext
LEFT JOIN st_ivt_structattr attr ON ext.storagevehicle_code = attr.storagevehicle_code
LEFT JOIN md_me_materialbase mater ON mater.material_id = ext.material_id
LEFT JOIN md_pb_measureunit unit ON ext.qty_unit_id = unit.measure_unit_id
<where>
attr.lock_type = '0'
AND attr.is_used = "1"
AND ext.canuse_qty > 0
<if test="param.mater_code != null and param.mater_code != ''">
AND
mater.material_code = #{param.mater_code}
</if>
<if test="param.stor_code != null and param.stor_code != ''">
AND
attr.stor_code = #{param.stor_code}
</if>
<if test="param.point_code != null and param.point_code != ''">
AND
attr.struct_code = #{param.point_code}
</if>
</where>
ORDER BY ext.insert_time Desc
</select>
</mapper> </mapper>

51
wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/MdMeMaterialbaseServiceImpl.java

@ -3,6 +3,7 @@ package org.nl.wms.basedata_manage.service.impl;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.map.MapUtil; import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
@ -15,11 +16,16 @@ import org.nl.common.utils.SecurityUtils;
import org.nl.wms.basedata_manage.service.IMdMeMaterialbaseService; import org.nl.wms.basedata_manage.service.IMdMeMaterialbaseService;
import org.nl.wms.basedata_manage.service.dao.MdMeMaterialbase; import org.nl.wms.basedata_manage.service.dao.MdMeMaterialbase;
import org.nl.wms.basedata_manage.service.dao.mapper.MdMeMaterialbaseMapper; import org.nl.wms.basedata_manage.service.dao.mapper.MdMeMaterialbaseMapper;
import org.nl.wms.ext.service.WmsToErpService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
import java.util.stream.Collectors;
/** /**
* <p> * <p>
@ -32,6 +38,12 @@ import java.util.Set;
@Service @Service
public class MdMeMaterialbaseServiceImpl extends ServiceImpl<MdMeMaterialbaseMapper, MdMeMaterialbase> implements IMdMeMaterialbaseService { public class MdMeMaterialbaseServiceImpl extends ServiceImpl<MdMeMaterialbaseMapper, MdMeMaterialbase> implements IMdMeMaterialbaseService {
/**
* wms调用erp服务
*/
@Autowired
private WmsToErpService wmsToErpService;
@Override @Override
public IPage<MdMeMaterialbase> queryAll(Map whereJson, PageQuery page) { public IPage<MdMeMaterialbase> queryAll(Map whereJson, PageQuery page) {
// 查询条件 // 查询条件
@ -92,4 +104,43 @@ public class MdMeMaterialbaseServiceImpl extends ServiceImpl<MdMeMaterialbaseMap
public void delete(Set<String> ids) { public void delete(Set<String> ids) {
this.baseMapper.deleteBatchIds(ids); this.baseMapper.deleteBatchIds(ids);
} }
@Override
@Transactional
public void materialSync(JSONObject whereJson) {
JSONObject resultJson = wmsToErpService.materialSync(whereJson);
List<JSONObject> dataList = resultJson.getJSONArray("data").toJavaList(JSONObject.class);
// 查询是否有相同物料
List<MdMeMaterialbase> likeMaterList = this.list(
new QueryWrapper<MdMeMaterialbase>().lambda()
.in(MdMeMaterialbase::getMaterial_code, dataList.stream()
.map(row -> row.getString("mater_code"))
.collect(Collectors.toList())
)
);
// 需插入的物料集合
List<MdMeMaterialbase> materDaoList = new ArrayList<>();
for (JSONObject json : dataList) {
boolean is_like = likeMaterList.stream()
.anyMatch(row -> row.getMaterial_code().equals(json.getString("mater_code")));
if (is_like) {
continue;
}
// 组织数据
MdMeMaterialbase dao = new MdMeMaterialbase();
dao.setMaterial_id(IdUtil.getStringId());
dao.setMaterial_code(json.getString("mater_code"));
dao.setMaterial_name(json.getString("mater_name"));
dao.setMaterial_spec(json.getString("spec_dtl"));
dao.setNet_weight(json.getBigDecimal("mater_height"));
dao.setCreate_id(SecurityUtils.getCurrentUserId());
dao.setCreate_name(SecurityUtils.getCurrentNickName());
dao.setCreate_time(DateUtil.now());
dao.setUpdate_optid(SecurityUtils.getCurrentUserId());
dao.setUpdate_optname(SecurityUtils.getCurrentNickName());
dao.setUpdate_time(DateUtil.now());
materDaoList.add(dao);
}
this.saveBatch(materDaoList);
}
} }

48
wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/controller/ErpToWmsController.java

@ -0,0 +1,48 @@
package org.nl.wms.ext.controller;
import cn.dev33.satoken.annotation.SaIgnore;
import com.alibaba.fastjson.JSONObject;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.nl.common.logging.annotation.Log;
import org.nl.wms.ext.service.ErpToWmsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* ERP调用WMS 控制层
* </p>
*
* @author Liuxy
* @since 2025-06-04
*/
@RestController
@RequiredArgsConstructor
@RequestMapping("/api/lms")
@Slf4j
public class ErpToWmsController {
@Autowired
private ErpToWmsService erpToWmsService;
@PostMapping("/inventory")
@Log("erp查询库存")
@SaIgnore
public ResponseEntity<Object> confirm(@RequestBody JSONObject whereJson) {
return new ResponseEntity<>(erpToWmsService.erpQueryIvt(whereJson),HttpStatus.OK);
}
@PostMapping("/task")
@Log("下发出库单据")
@SaIgnore
public ResponseEntity<Object> sendTask(@RequestBody JSONObject whereJson) {
return new ResponseEntity<>(erpToWmsService.sendTask(whereJson),HttpStatus.OK);
}
}

19
wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/enuums/EXTConstant.java

@ -0,0 +1,19 @@
package org.nl.wms.ext.enuums;
/**
* @author Liuyx
* @date 2025年06月03日
* @desc 外部系统常量
*/
public class EXTConstant {
/**
* 回传ERP接口地址
*/
public final static String UPLOAD_ERP_API = "CamstarApi/MomRollBakeInBound";
/**
* 物料同步ERP接口地址
*/
public final static String MATERIAL_SYNC_ERP_API = "CamstarApi/MomRollBakeInBound";
}

42
wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/ErpToWmsService.java

@ -0,0 +1,42 @@
package org.nl.wms.ext.service;
import com.alibaba.fastjson.JSONObject;
import org.nl.wms.ext.service.util.ErpResponse;
/**
* <p>
* ERP调用WMS 服务类
* </p>
*
* @author Liuxy
* @since 2025-06-04
*/
public interface ErpToWmsService {
/**
* erp查询库存
* @param whereJson {
* mater_code 物料编码可为空
* stor_code 仓库编码可为空
* point_code 货位编码可为空
* }
* @return ErpResponse
*/
ErpResponse erpQueryIvt(JSONObject whereJson);
/**
* 下发出库单据
* @param whereJson {
* stor_code仓库编码
* mater_code物料编码
* batch_no批次号可为空
* quantity数量
* unit_code计量单位
* unit_name计量单位名称
* inv_code单据号可为空
* task_type 业务类型可为空
* }
* @return ErpResponse
*/
ErpResponse sendTask(JSONObject whereJson);
}

20
wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/WmsToErpService.java

@ -23,4 +23,24 @@ public interface WmsToErpService {
* } * }
*/ */
JSONObject uploadErp(JSONObject whereJson); JSONObject uploadErp(JSONObject whereJson);
/**
* 物料同步
* @param whereJson {
* --
* }
* @return JSONObject{
* status状态码
* message错误信息
* data: [
* mater_code:物料编码
* mater_name:物料名称
* type_code:物料类型编码
* type_name:物料类型名称
* spec_dtl:物料规格
* mater_height:物料单重
* ]
* }
*/
JSONObject materialSync(JSONObject whereJson);
} }

45
wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/impl/ErpToWmsServiceImpl.java

@ -0,0 +1,45 @@
package org.nl.wms.ext.service.impl;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
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.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
* <p>
* ERP调用WMS 实现类
* </p>
*
* @author Liuxy
* @since 2025-06-04
*/
@Service
@Slf4j
public class ErpToWmsServiceImpl implements ErpToWmsService {
/**
* 载具扩展属性mapper
*/
@Autowired
private MdPbStoragevehicleextMapper mdPbStoragevehicleextMapper;
@Override
public ErpResponse erpQueryIvt(JSONObject whereJson) {
log.info("erpQueryIvt查询物料接口输入参数为:-------------------" + whereJson.toString());
ErpResponse erpResponse = ErpResponse.requestParamOk(mdPbStoragevehicleextMapper.erpQueryIvt(whereJson));
log.info("erpQueryIvt查询物料接口输出参数为:-------------------" + erpResponse.toString());
return erpResponse;
}
@Override
public ErpResponse sendTask(JSONObject whereJson) {
log.info("sendTask下发出库任务接口输入参数为:-------------------" + whereJson.toString());
log.info("sendTask下发出库任务接口输出参数为:-------------------" + ErpResponse.requestOk().toString());
return ErpResponse.requestOk();
}
}

36
wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/impl/WmsToErpServiceImpl.java

@ -1,12 +1,12 @@
package org.nl.wms.ext.service.impl; package org.nl.wms.ext.service.impl;
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpRequest;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.nl.common.exception.BadRequestException; import org.nl.common.exception.BadRequestException;
import org.nl.config.SpringContextHolder; import org.nl.config.SpringContextHolder;
import org.nl.system.service.param.impl.SysParamServiceImpl; import org.nl.system.service.param.impl.SysParamServiceImpl;
import org.nl.wms.ext.enuums.EXTConstant;
import org.nl.wms.ext.service.WmsToErpService; import org.nl.wms.ext.service.WmsToErpService;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -25,19 +25,18 @@ public class WmsToErpServiceImpl implements WmsToErpService {
@Override @Override
public JSONObject uploadErp(JSONObject whereJson) { public JSONObject uploadErp(JSONObject whereJson) {
log.info("uploadErp接口输入参数为:-------------------" + whereJson.toString()); log.info("uploadErp回传接口输入参数为:-------------------" + whereJson.toString());
JSONObject result = new JSONObject(); JSONObject result = new JSONObject();
String url = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("ERP_URL").getValue(); String url = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("ERP_URL").getValue();
String api = "CamstarApi/MomRollBakeInBound"; url = url + EXTConstant.UPLOAD_ERP_API;
url = url + api;
try { try {
String resultMsg = HttpRequest.post(url) String resultMsg = HttpRequest.post(url)
.body(String.valueOf(whereJson)) .body(String.valueOf(whereJson))
.execute().body(); .execute().body();
result = JSONObject.parseObject(resultMsg); result = JSONObject.parseObject(resultMsg);
log.info("uploadErp接口输出参数为:-------------------" + result.toString()); log.info("uploadErp回传接口输出参数为:-------------------" + result.toString());
Integer status = result.getInteger("status"); Integer status = result.getInteger("status");
@ -51,4 +50,31 @@ public class WmsToErpServiceImpl implements WmsToErpService {
return result; return result;
} }
@Override
public JSONObject materialSync(JSONObject whereJson) {
log.info("materialSync物料同步接口输入参数为:-------------------" + whereJson.toString());
JSONObject result = new JSONObject();
String url = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("ERP_URL").getValue();
url = url + EXTConstant.MATERIAL_SYNC_ERP_API;
try {
String resultMsg = HttpRequest.post(url)
.body(String.valueOf(whereJson))
.execute().body();
result = JSONObject.parseObject(resultMsg);
log.info("materialSync物料同步输出参数为:-------------------" + result.toString());
Integer status = result.getInteger("status");
if (status != HttpStatus.OK.value()) {
throw new BadRequestException(result.getString("message"));
}
} catch (Exception e) {
throw new BadRequestException("ERP提示错误:" + e.getMessage());
}
return result;
}
} }

72
wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/util/ErpResponse.java

@ -0,0 +1,72 @@
package org.nl.wms.ext.service.util;
import cn.hutool.http.HttpStatus;
import com.alibaba.fastjson.JSONObject;
import lombok.Builder;
import lombok.Data;
import java.util.List;
/**
* <p>
* ERP调用WMS 返回结果
* </p>
*
* @author Liuxy
* @since 2025-06-04
*/
@Data
@Builder
public class ErpResponse {
/**
* 状态码
*/
private Integer status;
/**
* 信息
*/
private String message;
/**
* 返回数据
*/
private List<JSONObject> data;
/**
* 不带数据反馈
* @return ErpResponse
*/
public static ErpResponse requestOk() {
return ErpResponse.builder()
.status(HttpStatus.HTTP_OK)
.message("请求成功!")
.build();
}
/**
* 带数据反馈
* @return ErpResponse
*/
public static ErpResponse requestParamOk(List<JSONObject> list) {
return ErpResponse.builder()
.status(HttpStatus.HTTP_OK)
.message("请求成功!")
.data(list)
.build();
}
/**
* 报错信息反馈
* @return ErpResponse
*/
public static ErpResponse requestError(String message) {
return ErpResponse.builder()
.status(HttpStatus.HTTP_BAD_REQUEST)
.message(message)
.build();
}
}

2
wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/IStIvtCheckmstService.java

@ -56,7 +56,7 @@ public interface IStIvtCheckmstService extends IService<StIvtCheckmst> {
List<JSONObject> getDtl(Map whereJson); List<JSONObject> getDtl(Map whereJson);
/** /**
* 到村盘点单 * 保存盘点单
* @param dto 新增修改dto实体类 * @param dto 新增修改dto实体类
*/ */
void saveCheck(CheckInsertDto dto); void saveCheck(CheckInsertDto dto);

8
wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/RetrunServiceImpl.java

@ -133,7 +133,7 @@ public class RetrunServiceImpl extends ServiceImpl<IOStorInvMapper, IOStorInv> i
MdMeMaterialbase materDao = materList.stream() MdMeMaterialbase materDao = materList.stream()
.filter(row -> row.getMaterial_id().equals(disDao.getMaterial_id())) .filter(row -> row.getMaterial_id().equals(disDao.getMaterial_id()))
.findFirst().orElse(null); .findFirst().orElse(null);
param.put("mater_code", materDao.getExt_id()); param.put("mater_code", materDao.getMaterial_code());
// 批次 // 批次
param.put("batch_no", disDao.getPcsn()); param.put("batch_no", disDao.getPcsn());
// 数量 // 数量
@ -142,7 +142,7 @@ public class RetrunServiceImpl extends ServiceImpl<IOStorInvMapper, IOStorInv> i
MdPbMeasureunit unitDao = unitList.stream() MdPbMeasureunit unitDao = unitList.stream()
.filter(row -> row.getMeasure_unit_id().equals(disDao.getQty_unit_id())) .filter(row -> row.getMeasure_unit_id().equals(disDao.getQty_unit_id()))
.findFirst().orElse(null); .findFirst().orElse(null);
param.put("unit_code", unitDao.getExt_id()); param.put("unit_code", unitDao.getUnit_code());
// 仓库编码 // 仓库编码
JSONObject jsonMst = rows.stream() JSONObject jsonMst = rows.stream()
.filter(row -> row.getString("iostorinv_id").equals(disDao.getIostorinv_id())) .filter(row -> row.getString("iostorinv_id").equals(disDao.getIostorinv_id()))
@ -153,9 +153,9 @@ public class RetrunServiceImpl extends ServiceImpl<IOStorInvMapper, IOStorInv> i
// 载具编码 // 载具编码
param.put("pallet_code", disDao.getStoragevehicle_code()); param.put("pallet_code", disDao.getStoragevehicle_code());
// 单据号 // 单据号
param.put("inv_code", jsonMst.getString("bill_code")); param.put("inv_code", jsonMst.getString("source_id"));
// 业务类型 // 业务类型
param.put("task_type", jsonMst.getString("bill_type")); param.put("task_type", jsonMst.getString("source_type"));
paramList.add(param); paramList.add(param);
} }
JSONObject jsonParam = new JSONObject(); JSONObject jsonParam = new JSONObject();

4
wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/StIvtCheckdtlServiceImpl.java

@ -2,6 +2,7 @@ package org.nl.wms.warehouse_management.service.impl;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.nl.common.utils.IdUtil; import org.nl.common.utils.IdUtil;
@ -52,6 +53,9 @@ public class StIvtCheckdtlServiceImpl extends ServiceImpl<StIvtCheckdtlMapper, S
List<StIvtCheckdtl> dtlDaoList = new ArrayList<>(); List<StIvtCheckdtl> dtlDaoList = new ArrayList<>();
for (int i = 0; i < dto.getTableData().size(); i++) { for (int i = 0; i < dto.getTableData().size(); i++) {
JSONObject json = dto.getTableData().get(i); JSONObject json = dto.getTableData().get(i);
if (json.getString("status").equals(IOSEnum.CHECK_DTL_STATUS.code("完成"))) {
continue;
}
StIvtCheckdtl dao = new StIvtCheckdtl(); StIvtCheckdtl dao = new StIvtCheckdtl();
dao.setCheckdtl_id(IdUtil.getStringId()); dao.setCheckdtl_id(IdUtil.getStringId());
dao.setCheck_id(dto.getCheck_id()); dao.setCheck_id(dto.getCheck_id());

33
wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/StIvtCheckmstServiceImpl.java

@ -114,7 +114,7 @@ public class StIvtCheckmstServiceImpl extends ServiceImpl<StIvtCheckmstMapper, S
public void delete(Set<String> ids) { public void delete(Set<String> ids) {
this.update( this.update(
new UpdateWrapper<StIvtCheckmst>().lambda() new UpdateWrapper<StIvtCheckmst>().lambda()
.in(StIvtCheckmst::getCheck_id,ids) .in(StIvtCheckmst::getCheck_id, ids)
.set(StIvtCheckmst::getIs_delete, IOSConstant.IS_DELETE_YES) .set(StIvtCheckmst::getIs_delete, IOSConstant.IS_DELETE_YES)
); );
} }
@ -134,11 +134,13 @@ public class StIvtCheckmstServiceImpl extends ServiceImpl<StIvtCheckmstMapper, S
iStIvtCheckdtlService.remove( iStIvtCheckdtlService.remove(
new QueryWrapper<StIvtCheckdtl>().lambda() new QueryWrapper<StIvtCheckdtl>().lambda()
.eq(StIvtCheckdtl::getCheck_id, mstDao.getCheck_id()) .eq(StIvtCheckdtl::getCheck_id, mstDao.getCheck_id())
.ne(StIvtCheckdtl::getStatus, IOSEnum.CHECK_DTL_STATUS.code("完成"))
); );
iStIvtCheckdtlService.createCheckDtl(dto); iStIvtCheckdtlService.createCheckDtl(dto);
iStIvtCheckdtlService.update( iStIvtCheckdtlService.update(
new UpdateWrapper<StIvtCheckdtl>().lambda() new UpdateWrapper<StIvtCheckdtl>().lambda()
.eq(StIvtCheckdtl::getCheck_id, dto.getCheck_id()) .eq(StIvtCheckdtl::getCheck_id, dto.getCheck_id())
.ne(StIvtCheckdtl::getStatus, IOSEnum.CHECK_DTL_STATUS.code("完成"))
.set(StIvtCheckdtl::getStatus, IOSEnum.CHECK_DTL_STATUS.code("盘点中")) .set(StIvtCheckdtl::getStatus, IOSEnum.CHECK_DTL_STATUS.code("盘点中"))
); );
} }
@ -153,16 +155,37 @@ public class StIvtCheckmstServiceImpl extends ServiceImpl<StIvtCheckmstMapper, S
mstDao.setConfirm_optname(SecurityUtils.getCurrentNickName()); mstDao.setConfirm_optname(SecurityUtils.getCurrentNickName());
mstDao.setConfirm_time(DateUtil.now()); mstDao.setConfirm_time(DateUtil.now());
this.updateById(mstDao); this.updateById(mstDao);
// 创建损益单
iStIvtCheckdtlService.createMore(iStIvtCheckdtlService.list(
new QueryWrapper<StIvtCheckdtl>().lambda()
.eq(StIvtCheckdtl::getCheck_id, mstDao.getCheck_id())
.ne(StIvtCheckdtl::getStatus, IOSEnum.CHECK_DTL_STATUS.code("完成"))
), mstDao.getCheck_id());
// 更新明细 // 更新明细
iStIvtCheckdtlService.update( iStIvtCheckdtlService.update(
new UpdateWrapper<StIvtCheckdtl>().lambda() new UpdateWrapper<StIvtCheckdtl>().lambda()
.eq(StIvtCheckdtl::getCheck_id, dto.getCheck_id()) .eq(StIvtCheckdtl::getCheck_id, dto.getCheck_id())
.set(StIvtCheckdtl::getStatus, IOSEnum.CHECK_DTL_STATUS.code("完成")) .set(StIvtCheckdtl::getStatus, IOSEnum.CHECK_DTL_STATUS.code("完成"))
); );
// 创建损益单 }
iStIvtCheckdtlService.createMore(iStIvtCheckdtlService.list(
/**
* 更新主表状态
* @param check_id 主表标识
*/
private void updateMst(String check_id) {
StIvtCheckmst mstDao = this.getById(check_id);
List<StIvtCheckdtl> dtlDaoList = iStIvtCheckdtlService.list(
new QueryWrapper<StIvtCheckdtl>().lambda() new QueryWrapper<StIvtCheckdtl>().lambda()
.eq(StIvtCheckdtl::getCheck_id,mstDao.getCheck_id()) .eq(StIvtCheckdtl::getCheck_id, check_id)
),mstDao.getCheck_id()); );
boolean is_confirm = dtlDaoList.stream()
.allMatch(row -> row.getStatus().equals(IOSEnum.CHECK_DTL_STATUS.code("完成")));
mstDao.setStatus(is_confirm ? IOSEnum.CHECK_MST_STATUS.code("完成") : IOSEnum.CHECK_MST_STATUS.code("盘点中"));
mstDao.setConfirm_optid(SecurityUtils.getCurrentUserId());
mstDao.setConfirm_optname(SecurityUtils.getCurrentNickName());
mstDao.setConfirm_time(DateUtil.now());
this.updateById(mstDao);
} }
} }

2
wms/nladmin-system/nlsso-server/src/main/resources/config/application-dev.yml

@ -8,7 +8,7 @@ nl:
port: 3306 port: 3306
username: root username: root
password: root password: root
database: nl-platform database: beian_xinsheng
redis: redis:
ip: 127.0.0.1 ip: 127.0.0.1
port: 6379 port: 6379

2
wms/nladmin-system/nlsso-server/src/main/resources/config/application.yml

@ -192,7 +192,7 @@ file:
avatarMaxSize: 5 avatarMaxSize: 5
logging: logging:
file: file:
path: ${nl.config.logging-path} path: D:\log\beian\lms
config: classpath:logback-spring.xml config: classpath:logback-spring.xml
# sa-token白名单配置 # sa-token白名单配置
security: security:

28
wms/nladmin-system/nlsso-server/src/main/resources/log/ErpToWms.xml

@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<included>
<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">
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!--日志文件输出的文件名-->
<FileNamePattern>${LOG_HOME}/ErpToWms/%d{yyyy-MM-dd}.%i.log</FileNamePattern>
<!--日志文件保留天数-->
<maxHistory>15</maxHistory>
<!--单个日志最大容量 至少10MB才能看得出来-->
<maxFileSize>200MB</maxFileSize>
<!--所有日志最多占多大容量-->
<totalSizeCap>2GB</totalSizeCap>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
<charset>${log.charset}</charset>
</encoder>
</appender>
<!-- 打印sql -->
<logger name="org.nl.wms.ext.service.impl.ErpToWmsServiceImpl" level="info" additivity="false">
<appender-ref ref="FILE_ERPTOWMS"/>
</logger>
</included>

1
wms/nladmin-system/nlsso-server/src/main/resources/logback-spring.xml

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

19
wms/nladmin-ui/src/views/wms/basedata/material/index.vue

@ -20,7 +20,18 @@
</el-col> </el-col>
</el-row> </el-row>
<!--如果想在工具栏加入更多按钮可以使用插槽方式 slot = 'left' or 'right'--> <!--如果想在工具栏加入更多按钮可以使用插槽方式 slot = 'left' or 'right'-->
<crudOperation /> <crudOperation>
<el-button
slot="right"
class="filter-item"
type="success"
icon="el-icon-refresh"
size="mini"
@click="materialSync"
>
物料同步
</el-button>
</crudOperation>
<!--表单组件--> <!--表单组件-->
<el-dialog <el-dialog
:close-on-click-modal="false" :close-on-click-modal="false"
@ -232,6 +243,12 @@ export default {
}, },
[CRUD.HOOK.beforeToCU](crud, form) { [CRUD.HOOK.beforeToCU](crud, form) {
}, },
materialSync() {
crudMaterial.materialSync({}).then(res => {
this.crud.toQuery()
this.crud.notify('同步成功!', CRUD.NOTIFICATION_TYPE.SUCCESS)
})
},
// //
changeEnabled(data, val) { changeEnabled(data, val) {
this.$confirm('此操作将 "' + this.dict.label.is_used[val] + '" ' + data.material_name + ', 是否继续?', '提示', { this.$confirm('此操作将 "' + this.dict.label.is_used[val] + '" ' + data.material_name + ', 是否继续?', '提示', {

10
wms/nladmin-ui/src/views/wms/basedata/material/material.js

@ -47,4 +47,12 @@ export function getProductSeries() {
}) })
} }
export default { add, edit, del, getMaterOptType, isAlongMaterType, getProductSeries } export function materialSync(data) {
return request({
url: 'api/Materia/materialSync',
method: 'post',
data
})
}
export default { add, edit, del, getMaterOptType, isAlongMaterType, getProductSeries, materialSync }

2
wms/nladmin-ui/src/views/wms/st/checkbill/CheckDialog.vue

@ -95,7 +95,7 @@
<el-table-column prop="base_qty" label="库存数量" :formatter="crud.formatNum3" align="center" :min-width="flexWidth('base_qty',crud.data,'库存数量')" /> <el-table-column prop="base_qty" label="库存数量" :formatter="crud.formatNum3" align="center" :min-width="flexWidth('base_qty',crud.data,'库存数量')" />
<el-table-column prop="fac_qty" label="盘点数量" align="center" :min-width="flexWidth('fac_qty',crud.data,'盘点数量')"> <el-table-column prop="fac_qty" label="盘点数量" align="center" :min-width="flexWidth('fac_qty',crud.data,'盘点数量')">
<template scope="scope"> <template scope="scope">
<el-input-number v-show="isShow(scope.$index, scope.row,2)" v-model="scope.row.fac_qty" :precision="3" :min="0" /> <el-input-number v-show="isShow(scope.$index, scope.row,2)" v-model="scope.row.fac_qty" :precision="3" :min="0" :disabled="scope.row.status === '99'" />
<span v-show="isShow(scope.$index, scope.row,4)">{{ scope.row.fac_qty }}</span> <span v-show="isShow(scope.$index, scope.row,4)">{{ scope.row.fac_qty }}</span>
</template> </template>
</el-table-column> </el-table-column>

Loading…
Cancel
Save