|
|
@ -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(); |
|
|
|