add:生产领料回传ERP;
opt:ErpUtil; opt:采购入库单回传逻辑;
This commit is contained in:
@@ -228,28 +228,22 @@
|
||||
<version>1.4</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>javax.xml.rpc</groupId>
|
||||
<artifactId>javax.xml.rpc-api</artifactId>
|
||||
<version>1.1.2</version>
|
||||
<groupId>javax.xml</groupId>
|
||||
<artifactId>jaxrpc-api</artifactId>
|
||||
<version>1.1</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>commons-logging</groupId>
|
||||
<artifactId>commons-logging</artifactId>
|
||||
<version>1.2</version>
|
||||
</dependency>
|
||||
<!-- 2. Commons Discovery(缺少这个导致报错) -->
|
||||
<!-- 2. Commons Discovery -->
|
||||
<dependency>
|
||||
<groupId>commons-discovery</groupId>
|
||||
<artifactId>commons-discovery</artifactId>
|
||||
<version>0.5</version>
|
||||
<version>0.2</version>
|
||||
</dependency>
|
||||
|
||||
<!-- 3. Commons HttpClient(调用远程服务必需) -->
|
||||
<dependency>
|
||||
<groupId>commons-httpclient</groupId>
|
||||
<artifactId>commons-httpclient</artifactId>
|
||||
<version>3.1</version>
|
||||
</dependency>
|
||||
<!-- WSDL4J - Axis 解析 WSDL 必需 -->
|
||||
<dependency>
|
||||
<groupId>wsdl4j</groupId>
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
</resultMap>
|
||||
|
||||
<select id="selectByBillId" resultType="org.nl.wms.pm_manage.purchase.service.dao.Purchasemst" resultMap="BaseResultMap">
|
||||
SELECT
|
||||
SELECT DISTINCT
|
||||
billid,
|
||||
orderNo,
|
||||
orderType,
|
||||
@@ -30,7 +30,6 @@
|
||||
red
|
||||
FROM v_uc_cgrk06
|
||||
WHERE billid = #{bill_id}
|
||||
GROUP BY billid
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
|
||||
@@ -1,9 +1,12 @@
|
||||
package org.nl.wms.ext_manage.service.impl;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.common.utils.IdUtil;
|
||||
import org.nl.config.SpringContextHolder;
|
||||
import org.nl.wms.ext_manage.service.MesToWmsService;
|
||||
import org.nl.wms.ext_manage.service.dto.MesTaskParams;
|
||||
@@ -14,6 +17,12 @@ import org.nl.wms.sch_manage.service.dao.SchBasePoint;
|
||||
import org.nl.wms.warehouse_manage.enums.IOSEnum;
|
||||
import org.nl.wms.warehouse_manage.service.IMdPbGroupplateService;
|
||||
import org.nl.wms.warehouse_manage.service.dao.GroupPlate;
|
||||
import org.nl.wms.warehouse_manage.stockReturn.service.IPmStockReturnService;
|
||||
import org.nl.wms.warehouse_manage.stockReturn.service.dao.PmStockReturn;
|
||||
import org.nl.wms.warehouse_manage.stockReturn.service.enums.StockReturnStatusEnum;
|
||||
import org.nl.wms.welding_manage.service.work_order.IWorkOrderService;
|
||||
import org.nl.wms.welding_manage.service.work_order.dao.WorkOrderBomDao;
|
||||
import org.nl.wms.welding_manage.service.work_order.dao.WorkOrderDao;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
@@ -28,6 +37,10 @@ public class MesToWmsServiceImpl implements MesToWmsService {
|
||||
private IMdPbGroupplateService iMdPbGroupplateService;
|
||||
@Autowired
|
||||
private ISchBasePointService iSchBasePointService;
|
||||
@Autowired
|
||||
private IWorkOrderService iWorkOrderService;
|
||||
@Autowired
|
||||
private IPmStockReturnService iPmStockReturnService;
|
||||
|
||||
@Transactional
|
||||
@Override
|
||||
@@ -85,6 +98,45 @@ public class MesToWmsServiceImpl implements MesToWmsService {
|
||||
taskFormCall.put("create_name", "MES");
|
||||
LineCallFullTask lineCallFullTask = SpringContextHolder.getBean("LineCallFullTask");
|
||||
lineCallFullTask.create(taskFormCall);
|
||||
//调用eas领料出库单
|
||||
//获取工单信息
|
||||
WorkOrderDao workOrder = iWorkOrderService.getWorkOrder(mesTaskParams.getOrderCode());
|
||||
List<WorkOrderBomDao> orderBomItems = iWorkOrderService.getOrderBomItem(mesTaskParams.getOrderCode());
|
||||
|
||||
// 创建最外层的JSONObject
|
||||
JSONObject root = new JSONObject();
|
||||
root.put("method", "DealMaterailReqBill");
|
||||
root.put("type", "MES");
|
||||
// 创建data对象
|
||||
JSONObject data = new JSONObject();
|
||||
data.put("bizStatus", "02");
|
||||
data.put("mesNo", IdUtil.getLongId());
|
||||
// 创建entrys数组
|
||||
JSONArray entrys = new JSONArray();
|
||||
// 创建第一个entry对象
|
||||
JSONObject entry = new JSONObject();
|
||||
for (WorkOrderBomDao orderBomItem : orderBomItems) {
|
||||
entry.put("qty", groupList.get(0).getQty());
|
||||
entry.put("sourceBillId", workOrder.getOrder_id());
|
||||
entry.put("sourceBillEntryId", orderBomItem.getItem_id());
|
||||
entry.put("sourceBillNo", workOrder.getOrder_code());
|
||||
}
|
||||
// 将entry添加到数组中
|
||||
entrys.add(entry);
|
||||
// 将entrys数组设置到data中
|
||||
data.put("entrys", entrys);
|
||||
// 将data设置到根对象中
|
||||
root.put("data", data);
|
||||
// ErpUtil.create().login().audit(root.toJSONString());
|
||||
//保存回传单
|
||||
PmStockReturn stockReturn = new PmStockReturn();
|
||||
stockReturn.setRequest_Id(workOrder.getOrder_id());
|
||||
stockReturn.setRequest_type(IOSEnum.BILL_TYPE.code("生产领料"));
|
||||
stockReturn.setStatus(StockReturnStatusEnum.TODO.getCode()); // 0-处理中
|
||||
stockReturn.setCreate_time(DateUtil.now());
|
||||
stockReturn.setRequest_data(root.toJSONString());
|
||||
|
||||
iPmStockReturnService.save(stockReturn);
|
||||
if (Objects.equals(mesTaskParams.getRequestedCode(), "2")) break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package org.nl.wms.ext_manage.util;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.Data;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -14,7 +15,6 @@ import org.nl.config.SpringContextHolder;
|
||||
import org.nl.wms.system_manage.enums.SysParamConstant;
|
||||
import org.nl.wms.system_manage.service.param.dao.Param;
|
||||
import org.nl.wms.system_manage.service.param.impl.SysParamServiceImpl;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
|
||||
import javax.xml.namespace.QName;
|
||||
import javax.xml.rpc.ParameterMode;
|
||||
@@ -24,27 +24,29 @@ import javax.xml.rpc.encoding.XMLType;
|
||||
@Slf4j
|
||||
@Data
|
||||
public class ErpUtil {
|
||||
|
||||
private String loginUrl;
|
||||
private String auditUrl;
|
||||
private String busUrl;
|
||||
private String userName;
|
||||
private String password;
|
||||
private String slnName;
|
||||
private String dcName;
|
||||
private String dbType;
|
||||
private int dbType;
|
||||
|
||||
private final Service service = new Service();
|
||||
private Call call;
|
||||
|
||||
private String sessionId;
|
||||
|
||||
public static ErpUtil create(){
|
||||
ErpUtil erpUtil = new ErpUtil();
|
||||
erpUtil.setLoginUrl(SpringContextHolder.getProperties("erp.loginUrl"));
|
||||
erpUtil.setAuditUrl(SpringContextHolder.getProperties("erp.busUrl"));
|
||||
erpUtil.setBusUrl(SpringContextHolder.getProperties("erp.busUrl"));
|
||||
erpUtil.setUserName(SpringContextHolder.getProperties("erp.username"));
|
||||
erpUtil.setPassword(SpringContextHolder.getProperties("erp.password"));
|
||||
erpUtil.setSlnName(SpringContextHolder.getProperties("erp.slnName"));
|
||||
erpUtil.setDcName(SpringContextHolder.getProperties("erp.dcName"));
|
||||
erpUtil.setDbType(SpringContextHolder.getProperties("erp.dbType"));
|
||||
erpUtil.setDbType(Integer.parseInt(SpringContextHolder.getProperties("erp.dbType")));
|
||||
return erpUtil;
|
||||
}
|
||||
/**
|
||||
@@ -53,56 +55,25 @@ public class ErpUtil {
|
||||
*/
|
||||
public ErpUtil login(){
|
||||
try {
|
||||
Call call = (Call) service.createCall();
|
||||
call = (Call)service.createCall();
|
||||
call.setOperationName("login");
|
||||
//登录的webservice的wsdl的地址
|
||||
call.setTargetEndpointAddress(loginUrl);
|
||||
call.setMaintainSession(true);
|
||||
call.setTimeout(60*1000);
|
||||
QName wsContextQName = new QName("urn:client", "WSContext");
|
||||
call.registerTypeMapping(
|
||||
WSContext.class,
|
||||
wsContextQName,
|
||||
BeanSerializerFactory.class,
|
||||
BeanDeserializerFactory.class
|
||||
);
|
||||
call.setReturnType(wsContextQName);
|
||||
call.setReturnType(new QName("urn:client", "WSContext"));
|
||||
//本地根据wsdl文件建立的返回对象
|
||||
call.setReturnClass(WSContext.class);
|
||||
call.addParameter(
|
||||
new QName("", "userName"), // 空命名空间
|
||||
XMLType.XSD_STRING,
|
||||
String.class,
|
||||
ParameterMode.IN
|
||||
);
|
||||
call.addParameter(
|
||||
new QName("", "password"), // 空命名空间
|
||||
XMLType.XSD_STRING,
|
||||
String.class,
|
||||
ParameterMode.IN
|
||||
);
|
||||
call.addParameter(
|
||||
new QName("", "slnName"), // 空命名空间
|
||||
XMLType.XSD_STRING,
|
||||
String.class,
|
||||
ParameterMode.IN
|
||||
);
|
||||
call.addParameter(
|
||||
new QName("", "dcName"), // 空命名空间
|
||||
XMLType.XSD_STRING,
|
||||
String.class,
|
||||
ParameterMode.IN
|
||||
);
|
||||
call.addParameter(
|
||||
new QName("", "dbType"), // 空命名空间
|
||||
XMLType.XSD_STRING,
|
||||
String.class,
|
||||
ParameterMode.IN
|
||||
);
|
||||
WSContext response = (WSContext)call.invoke(new Object[]{userName, password, slnName, dcName, dbType});
|
||||
if (StrUtil.isEmptyIfStr(response.getSessionId())){
|
||||
throw new BadRequestException("erp登录接口请求失败: 返回sessionId为空,请检查账户设置是否正确");
|
||||
}
|
||||
this.sessionId = response.getSessionId();
|
||||
log.info("ERP登录接口返回:{}", response);
|
||||
call.setReturnQName(new QName("", "loginReturn"));
|
||||
//超时时间 自由配置
|
||||
call.setTimeout(1000 * 15);
|
||||
call.setMaintainSession(true);
|
||||
WSContext result = null;
|
||||
//解决方案:eas
|
||||
//语言:L2 简体中文 L3 繁体中文
|
||||
//数据库类型:0 SQL Server 1 Oracle 2 DB2
|
||||
result = (WSContext) call.invoke(new Object[]{userName, password, slnName, dcName, "L2", dbType, "BaseDB"});
|
||||
//关键点,获取登录时返回的sessionid
|
||||
sessionId = result.getSessionId();
|
||||
log.info("ERP登录接口返回:{}", result.toString());
|
||||
} catch (Exception e) {
|
||||
throw new BadRequestException("erp登录接口请求失败:" + e.getMessage());
|
||||
}
|
||||
@@ -113,15 +84,20 @@ public class ErpUtil {
|
||||
*/
|
||||
public void audit(String json){
|
||||
try {
|
||||
Call call = (Call) service.createCall();
|
||||
call.clearOperation();
|
||||
call.setOperationName("dealTask");
|
||||
call.setTimeout(1000*60);
|
||||
call.setMaintainSession(true);
|
||||
call.setTargetEndpointAddress(auditUrl);
|
||||
call.setReturnQName(new QName("", "erpsyncReturn"));
|
||||
call.setTargetEndpointAddress(busUrl);
|
||||
call.setReturnQName(new QName("", "dealTaskReturn"));
|
||||
call.addHeader(new SOAPHeaderElement("http://login.webservice.bos.kingdee.com", "SessionId", sessionId));
|
||||
Object result = call.invoke(new Object[]{json});
|
||||
System.out.println(result);
|
||||
JSONObject resultJson = JSON.parseObject(result.toString());
|
||||
if (resultJson.getInteger("result") == 0){
|
||||
throw new BadRequestException("回传失败:" + resultJson.getString("msg"));
|
||||
}
|
||||
log.error("Eas回传接口请求成功!");
|
||||
log.error("Eas回传接口invoke调用结果:" + result.toString());
|
||||
} catch (Exception e) {
|
||||
throw new BadRequestException("erp审核接口请求失败:" + e.getMessage());
|
||||
}
|
||||
|
||||
@@ -1,13 +1,295 @@
|
||||
/**
|
||||
* WSContext.java
|
||||
*
|
||||
* This file was auto-generated from WSDL
|
||||
* by the Apache Axis 1.4 Apr 22, 2006 (06:55:48 PDT) WSDL2Java emitter.
|
||||
*/
|
||||
|
||||
package org.nl.wms.ext_manage.util;
|
||||
|
||||
import lombok.Data;
|
||||
public class WSContext implements java.io.Serializable {
|
||||
private int dbType;
|
||||
|
||||
@Data
|
||||
public class WSContext {
|
||||
private Integer dbType;
|
||||
private String dcName;
|
||||
|
||||
private String password;
|
||||
|
||||
private String sessionId;
|
||||
|
||||
private String slnName;
|
||||
|
||||
private String userName;
|
||||
|
||||
public WSContext() {
|
||||
}
|
||||
|
||||
public WSContext(
|
||||
int dbType,
|
||||
String dcName,
|
||||
String password,
|
||||
String sessionId,
|
||||
String slnName,
|
||||
String userName) {
|
||||
this.dbType = dbType;
|
||||
this.dcName = dcName;
|
||||
this.password = password;
|
||||
this.sessionId = sessionId;
|
||||
this.slnName = slnName;
|
||||
this.userName = userName;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Gets the dbType value for this WSContext.
|
||||
*
|
||||
* @return dbType
|
||||
*/
|
||||
public int getDbType() {
|
||||
return dbType;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Sets the dbType value for this WSContext.
|
||||
*
|
||||
* @param dbType
|
||||
*/
|
||||
public void setDbType(int dbType) {
|
||||
this.dbType = dbType;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Gets the dcName value for this WSContext.
|
||||
*
|
||||
* @return dcName
|
||||
*/
|
||||
public String getDcName() {
|
||||
return dcName;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Sets the dcName value for this WSContext.
|
||||
*
|
||||
* @param dcName
|
||||
*/
|
||||
public void setDcName(String dcName) {
|
||||
this.dcName = dcName;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Gets the password value for this WSContext.
|
||||
*
|
||||
* @return password
|
||||
*/
|
||||
public String getPassword() {
|
||||
return password;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Sets the password value for this WSContext.
|
||||
*
|
||||
* @param password
|
||||
*/
|
||||
public void setPassword(String password) {
|
||||
this.password = password;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Gets the sessionId value for this WSContext.
|
||||
*
|
||||
* @return sessionId
|
||||
*/
|
||||
public String getSessionId() {
|
||||
return sessionId;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Sets the sessionId value for this WSContext.
|
||||
*
|
||||
* @param sessionId
|
||||
*/
|
||||
public void setSessionId(String sessionId) {
|
||||
this.sessionId = sessionId;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Gets the slnName value for this WSContext.
|
||||
*
|
||||
* @return slnName
|
||||
*/
|
||||
public String getSlnName() {
|
||||
return slnName;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Sets the slnName value for this WSContext.
|
||||
*
|
||||
* @param slnName
|
||||
*/
|
||||
public void setSlnName(String slnName) {
|
||||
this.slnName = slnName;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Gets the userName value for this WSContext.
|
||||
*
|
||||
* @return userName
|
||||
*/
|
||||
public String getUserName() {
|
||||
return userName;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Sets the userName value for this WSContext.
|
||||
*
|
||||
* @param userName
|
||||
*/
|
||||
public void setUserName(String userName) {
|
||||
this.userName = userName;
|
||||
}
|
||||
|
||||
private Object __equalsCalc = null;
|
||||
public synchronized boolean equals(Object obj) {
|
||||
if (!(obj instanceof WSContext)) return false;
|
||||
WSContext other = (WSContext) obj;
|
||||
if (obj == null) return false;
|
||||
if (this == obj) return true;
|
||||
if (__equalsCalc != null) {
|
||||
return (__equalsCalc == obj);
|
||||
}
|
||||
__equalsCalc = obj;
|
||||
boolean _equals;
|
||||
_equals = true &&
|
||||
this.dbType == other.getDbType() &&
|
||||
((this.dcName==null && other.getDcName()==null) ||
|
||||
(this.dcName!=null &&
|
||||
this.dcName.equals(other.getDcName()))) &&
|
||||
((this.password==null && other.getPassword()==null) ||
|
||||
(this.password!=null &&
|
||||
this.password.equals(other.getPassword()))) &&
|
||||
((this.sessionId==null && other.getSessionId()==null) ||
|
||||
(this.sessionId!=null &&
|
||||
this.sessionId.equals(other.getSessionId()))) &&
|
||||
((this.slnName==null && other.getSlnName()==null) ||
|
||||
(this.slnName!=null &&
|
||||
this.slnName.equals(other.getSlnName()))) &&
|
||||
((this.userName==null && other.getUserName()==null) ||
|
||||
(this.userName!=null &&
|
||||
this.userName.equals(other.getUserName())));
|
||||
__equalsCalc = null;
|
||||
return _equals;
|
||||
}
|
||||
|
||||
private boolean __hashCodeCalc = false;
|
||||
public synchronized int hashCode() {
|
||||
if (__hashCodeCalc) {
|
||||
return 0;
|
||||
}
|
||||
__hashCodeCalc = true;
|
||||
int _hashCode = 1;
|
||||
_hashCode += getDbType();
|
||||
if (getDcName() != null) {
|
||||
_hashCode += getDcName().hashCode();
|
||||
}
|
||||
if (getPassword() != null) {
|
||||
_hashCode += getPassword().hashCode();
|
||||
}
|
||||
if (getSessionId() != null) {
|
||||
_hashCode += getSessionId().hashCode();
|
||||
}
|
||||
if (getSlnName() != null) {
|
||||
_hashCode += getSlnName().hashCode();
|
||||
}
|
||||
if (getUserName() != null) {
|
||||
_hashCode += getUserName().hashCode();
|
||||
}
|
||||
__hashCodeCalc = false;
|
||||
return _hashCode;
|
||||
}
|
||||
|
||||
// Type metadata
|
||||
private static org.apache.axis.description.TypeDesc typeDesc =
|
||||
new org.apache.axis.description.TypeDesc(WSContext.class, true);
|
||||
|
||||
static {
|
||||
typeDesc.setXmlType(new javax.xml.namespace.QName("urn:client", "WSContext"));
|
||||
org.apache.axis.description.ElementDesc elemField = new org.apache.axis.description.ElementDesc();
|
||||
elemField.setFieldName("dbType");
|
||||
elemField.setXmlName(new javax.xml.namespace.QName("", "dbType"));
|
||||
elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "int"));
|
||||
elemField.setNillable(false);
|
||||
typeDesc.addFieldDesc(elemField);
|
||||
elemField = new org.apache.axis.description.ElementDesc();
|
||||
elemField.setFieldName("dcName");
|
||||
elemField.setXmlName(new javax.xml.namespace.QName("", "dcName"));
|
||||
elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
|
||||
elemField.setNillable(true);
|
||||
typeDesc.addFieldDesc(elemField);
|
||||
elemField = new org.apache.axis.description.ElementDesc();
|
||||
elemField.setFieldName("password");
|
||||
elemField.setXmlName(new javax.xml.namespace.QName("", "password"));
|
||||
elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
|
||||
elemField.setNillable(true);
|
||||
typeDesc.addFieldDesc(elemField);
|
||||
elemField = new org.apache.axis.description.ElementDesc();
|
||||
elemField.setFieldName("sessionId");
|
||||
elemField.setXmlName(new javax.xml.namespace.QName("", "sessionId"));
|
||||
elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
|
||||
elemField.setNillable(true);
|
||||
typeDesc.addFieldDesc(elemField);
|
||||
elemField = new org.apache.axis.description.ElementDesc();
|
||||
elemField.setFieldName("slnName");
|
||||
elemField.setXmlName(new javax.xml.namespace.QName("", "slnName"));
|
||||
elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
|
||||
elemField.setNillable(true);
|
||||
typeDesc.addFieldDesc(elemField);
|
||||
elemField = new org.apache.axis.description.ElementDesc();
|
||||
elemField.setFieldName("userName");
|
||||
elemField.setXmlName(new javax.xml.namespace.QName("", "userName"));
|
||||
elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
|
||||
elemField.setNillable(true);
|
||||
typeDesc.addFieldDesc(elemField);
|
||||
}
|
||||
|
||||
/**
|
||||
* Return type metadata object
|
||||
*/
|
||||
public static org.apache.axis.description.TypeDesc getTypeDesc() {
|
||||
return typeDesc;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Custom Serializer
|
||||
*/
|
||||
public static org.apache.axis.encoding.Serializer getSerializer(
|
||||
String mechType,
|
||||
Class _javaType,
|
||||
javax.xml.namespace.QName _xmlType) {
|
||||
return
|
||||
new org.apache.axis.encoding.ser.BeanSerializer(
|
||||
_javaType, _xmlType, typeDesc);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Custom Deserializer
|
||||
*/
|
||||
public static org.apache.axis.encoding.Deserializer getDeserializer(
|
||||
String mechType,
|
||||
Class _javaType,
|
||||
javax.xml.namespace.QName _xmlType) {
|
||||
return
|
||||
new org.apache.axis.encoding.ser.BeanDeserializer(
|
||||
_javaType, _xmlType, typeDesc);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -29,6 +29,7 @@ import org.nl.wms.pm_manage.purchase.service.dao.Purchasemst;
|
||||
import org.nl.wms.pda_manage.ios_manage.purchase.service.dto.PdaGroupPlateDto;
|
||||
import org.nl.wms.warehouse_manage.enums.IOSEnum;
|
||||
import org.nl.wms.warehouse_manage.inAndOut.service.IInBillService;
|
||||
import org.nl.wms.warehouse_manage.inAndOut.service.dao.IOStorInvDis;
|
||||
import org.nl.wms.warehouse_manage.inAndOut.service.dao.IOStorInvDtl;
|
||||
import org.nl.wms.warehouse_manage.inAndOut.service.dao.mapper.IOStorInvDisMapper;
|
||||
import org.nl.wms.warehouse_manage.inAndOut.service.dao.mapper.IOStorInvDtlMapper;
|
||||
@@ -241,7 +242,6 @@ public class InboundPdaServiceImpl implements InboundPdaService {
|
||||
Structattr struct = structList.get(0);
|
||||
log.info("平库入库:找到虚拟库位{}",JSON.toJSONString(struct));
|
||||
String storagevehicleCode = struct.getStoragevehicle_code();//载具编码
|
||||
List<PurchaseListenerParams.DetailItem> items = new ArrayList<>();
|
||||
boolean flag = false;
|
||||
for (UsualInboundDto.UsualInboundDtlDto item : usualInboundDto.getDetailList()) {
|
||||
//判断当前物料是否在库内
|
||||
@@ -290,10 +290,6 @@ public class InboundPdaServiceImpl implements InboundPdaService {
|
||||
.create_time(DateUtil.now())
|
||||
.build();
|
||||
iMdPbGroupplateService.save(plateDao);
|
||||
PurchaseListenerParams.DetailItem detailItem = new PurchaseListenerParams.DetailItem();
|
||||
detailItem.setItem_no(item.getItem_no());
|
||||
detailItem.setQty(item.getQty());
|
||||
items.add(detailItem);
|
||||
}
|
||||
if (flag) return;//已存在库存则不用走组盘入库
|
||||
GroupPlateInboundDto groupPlateInboundDto = new GroupPlateInboundDto();
|
||||
@@ -332,21 +328,25 @@ public class InboundPdaServiceImpl implements InboundPdaService {
|
||||
// 组织明细数据
|
||||
ArrayList<HashMap> tableData = new ArrayList<>();
|
||||
HashMap<String, String> dtl = new HashMap<>();
|
||||
GroupPlate plateDao = plateDaoList.get(0);
|
||||
MdMeMaterialbase materDao = iMdMeMaterialbaseService.getByCode(plateDao.getMaterial_code());
|
||||
dtl.put("storagevehicle_code", plateDao.getStoragevehicle_code());
|
||||
dtl.put("material_id", materDao.getMaterial_id());
|
||||
dtl.put("material_code", materDao.getMaterial_code());
|
||||
dtl.put("material_name", materDao.getMaterial_name());
|
||||
dtl.put("pcsn", plateDao.getPcsn());
|
||||
dtl.put("qty_unit_id", plateDao.getQty_unit_id());
|
||||
dtl.put("qty_unit_name", plateDao.getQty_unit_name());
|
||||
dtl.put("qty", String.valueOf(total_qty));
|
||||
dtl.put("plan_qty", String.valueOf(total_qty));
|
||||
dtl.put("ext_code", plateDao.getExt_code());
|
||||
dtl.put("ext_type", plateDao.getExt_type());
|
||||
// 调用新增
|
||||
tableData.add(dtl);
|
||||
// GroupPlate plateDao = plateDaoList.get(0);
|
||||
for (GroupPlate plateDao : plateDaoList) {
|
||||
MdMeMaterialbase materDao = iMdMeMaterialbaseService.getByCode(plateDao.getMaterial_code());
|
||||
dtl.put("storagevehicle_code", plateDao.getStoragevehicle_code());
|
||||
dtl.put("material_id", materDao.getMaterial_id());
|
||||
dtl.put("material_code", materDao.getMaterial_code());
|
||||
dtl.put("material_name", materDao.getMaterial_name());
|
||||
dtl.put("pcsn", plateDao.getPcsn());
|
||||
dtl.put("qty_unit_id", plateDao.getQty_unit_id());
|
||||
dtl.put("qty_unit_name", plateDao.getQty_unit_name());
|
||||
dtl.put("qty", String.valueOf(total_qty));
|
||||
dtl.put("plan_qty", String.valueOf(total_qty));
|
||||
dtl.put("ext_code", plateDao.getExt_code());
|
||||
dtl.put("ext_type", plateDao.getExt_type());
|
||||
dtl.put("callback_strategy", "dealPurchaseRecBillCallback");
|
||||
// 调用新增
|
||||
tableData.add(dtl);
|
||||
}
|
||||
|
||||
jsonMst.put("tableData",tableData);
|
||||
String iostorinv_id = iRawAssistIStorService.insertDtl(jsonMst);
|
||||
// 查询仓库
|
||||
@@ -382,19 +382,22 @@ public class InboundPdaServiceImpl implements InboundPdaService {
|
||||
sendTask(whereJsonTask);
|
||||
} else {
|
||||
// 单据直接完成
|
||||
JSONObject confirmJson = new JSONObject();
|
||||
confirmJson.put("iostorinv_id", iostorinv_id);
|
||||
iRawAssistIStorService.confirm(confirmJson);
|
||||
// JSONObject confirmJson = new JSONObject();
|
||||
// confirmJson.put("iostorinv_id", iostorinv_id);
|
||||
// iRawAssistIStorService.confirm(confirmJson);
|
||||
List<IOStorInvDis> ioStorInvDis = ioStorInvDisMapper.selectList(new LambdaQueryWrapper<IOStorInvDis>()
|
||||
.eq(IOStorInvDis::getIostorinv_id, iostorinv_id));
|
||||
iRawAssistIStorService.disFinish(ioStorInvDis);
|
||||
}
|
||||
PurchaseListenerParams listenerParams = new PurchaseListenerParams();
|
||||
listenerParams.setBillId(plateDao.getExt_code());
|
||||
PurchaseListenerParams.DetailItem detailItem = new PurchaseListenerParams.DetailItem();
|
||||
detailItem.setQty(plateDao.getQty());
|
||||
detailItem.setMaterialCode(plateDao.getMaterial_code());
|
||||
List<PurchaseListenerParams.DetailItem> detailItemList = new ArrayList<>();
|
||||
detailItemList.add(detailItem);
|
||||
listenerParams.setDetailItem(detailItemList);
|
||||
pushEvent(listenerParams);
|
||||
// PurchaseListenerParams listenerParams = new PurchaseListenerParams();
|
||||
// listenerParams.setBillId(plateDao.getExt_code());
|
||||
// PurchaseListenerParams.DetailItem detailItem = new PurchaseListenerParams.DetailItem();
|
||||
// detailItem.setQty(plateDao.getQty());
|
||||
// detailItem.setMaterialCode(plateDao.getMaterial_code());
|
||||
// List<PurchaseListenerParams.DetailItem> detailItemList = new ArrayList<>();
|
||||
// detailItemList.add(detailItem);
|
||||
// listenerParams.setDetailItem(detailItemList);
|
||||
// pushEvent(listenerParams);
|
||||
|
||||
}
|
||||
|
||||
@@ -429,21 +432,25 @@ public class InboundPdaServiceImpl implements InboundPdaService {
|
||||
// 组织明细数据
|
||||
ArrayList<HashMap> tableData = new ArrayList<>();
|
||||
HashMap<String, String> dtl = new HashMap<>();
|
||||
GroupPlate plateDao = plateDaoList.get(0);
|
||||
MdMeMaterialbase materDao = iMdMeMaterialbaseService.getByCode(plateDao.getMaterial_code());
|
||||
dtl.put("storagevehicle_code", plateDao.getStoragevehicle_code());
|
||||
dtl.put("material_id", materDao.getMaterial_id());
|
||||
dtl.put("material_code", materDao.getMaterial_code());
|
||||
dtl.put("material_name", materDao.getMaterial_name());
|
||||
dtl.put("pcsn", plateDao.getPcsn());
|
||||
dtl.put("qty_unit_id", plateDao.getQty_unit_id());
|
||||
dtl.put("qty_unit_name", plateDao.getQty_unit_name());
|
||||
dtl.put("qty", String.valueOf(total_qty));
|
||||
dtl.put("plan_qty", String.valueOf(total_qty));
|
||||
dtl.put("ext_code", plateDao.getExt_code());
|
||||
dtl.put("ext_type", plateDao.getExt_type());
|
||||
// 调用新增入库单
|
||||
tableData.add(dtl);
|
||||
// GroupPlate plateDao = plateDaoList.get(0);
|
||||
for (GroupPlate plateDao : plateDaoList) {
|
||||
MdMeMaterialbase materDao = iMdMeMaterialbaseService.getByCode(plateDao.getMaterial_code());
|
||||
dtl.put("storagevehicle_code", plateDao.getStoragevehicle_code());
|
||||
dtl.put("material_id", materDao.getMaterial_id());
|
||||
dtl.put("material_code", materDao.getMaterial_code());
|
||||
dtl.put("material_name", materDao.getMaterial_name());
|
||||
dtl.put("pcsn", plateDao.getPcsn());
|
||||
dtl.put("qty_unit_id", plateDao.getQty_unit_id());
|
||||
dtl.put("qty_unit_name", plateDao.getQty_unit_name());
|
||||
dtl.put("qty", String.valueOf(total_qty));
|
||||
dtl.put("plan_qty", String.valueOf(total_qty));
|
||||
dtl.put("ext_code", plateDao.getExt_code());
|
||||
dtl.put("ext_type", plateDao.getExt_type());
|
||||
dtl.put("callback_strategy", "dealPurchaseRecBillCallback");
|
||||
// 调用新增入库单
|
||||
tableData.add(dtl);
|
||||
}
|
||||
|
||||
jsonMst.put("tableData",tableData);
|
||||
String iostorinv_id = iRawAssistIStorService.insertDtl(jsonMst);
|
||||
// 查询仓库
|
||||
@@ -478,19 +485,22 @@ public class InboundPdaServiceImpl implements InboundPdaService {
|
||||
// 调用分配,分配库位
|
||||
iRawAssistIStorService.divStruct(new JSONObject(jsonMst1));
|
||||
// 手工入库单据直接完成
|
||||
JSONObject confirmJson = new JSONObject();
|
||||
confirmJson.put("iostorinv_id", iostorinv_id);
|
||||
iRawAssistIStorService.confirm(confirmJson);
|
||||
List<IOStorInvDis> ioStorInvDis = ioStorInvDisMapper.selectList(new LambdaQueryWrapper<IOStorInvDis>()
|
||||
.eq(IOStorInvDis::getIostorinv_id, iostorinv_id));
|
||||
iRawAssistIStorService.disFinish(ioStorInvDis);
|
||||
// JSONObject confirmJson = new JSONObject();
|
||||
// confirmJson.put("iostorinv_id", iostorinv_id);
|
||||
// iRawAssistIStorService.confirm(confirmJson);
|
||||
|
||||
PurchaseListenerParams purchaseListenerParams = new PurchaseListenerParams();
|
||||
purchaseListenerParams.setBillId(plateDao.getExt_code());
|
||||
PurchaseListenerParams.DetailItem detailItem = new PurchaseListenerParams.DetailItem();
|
||||
detailItem.setMaterialCode(plateDao.getMaterial_code());
|
||||
detailItem.setQty(plateDao.getQty());
|
||||
List<PurchaseListenerParams.DetailItem> detailItemList = new ArrayList<>();
|
||||
detailItemList.add(detailItem);
|
||||
purchaseListenerParams.setDetailItem(detailItemList);
|
||||
pushEvent(purchaseListenerParams);
|
||||
// PurchaseListenerParams purchaseListenerParams = new PurchaseListenerParams();
|
||||
// purchaseListenerParams.setBillId(plateDao.getExt_code());
|
||||
// PurchaseListenerParams.DetailItem detailItem = new PurchaseListenerParams.DetailItem();
|
||||
// detailItem.setMaterialCode(plateDao.getMaterial_code());
|
||||
// detailItem.setQty(plateDao.getQty());
|
||||
// List<PurchaseListenerParams.DetailItem> detailItemList = new ArrayList<>();
|
||||
// detailItemList.add(detailItem);
|
||||
// purchaseListenerParams.setDetailItem(detailItemList);
|
||||
// pushEvent(purchaseListenerParams);
|
||||
}
|
||||
|
||||
private Map<String,Object> parseCode(String code){
|
||||
|
||||
@@ -25,7 +25,7 @@ import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
/**
|
||||
* @Author: Liuxy
|
||||
* @Description: 产线返空托盘
|
||||
* @Description: 产线叫满
|
||||
* @Date: 2025/6/6
|
||||
*/
|
||||
@Component(value = "LineCallFullTask")
|
||||
|
||||
@@ -21,14 +21,6 @@ public class SysParamConstant {
|
||||
* ERP系统IP
|
||||
*/
|
||||
public final static String ERP_URL = "erp_url";
|
||||
/**
|
||||
* ERP登录接口
|
||||
*/
|
||||
public final static String ERP_LOGIN_URL = "erp_login_url";
|
||||
/**
|
||||
* ERP审核接口
|
||||
*/
|
||||
public final static String ERP_AUDIT_URL = "erp_audit_url";
|
||||
|
||||
/**
|
||||
* 中鼎系统URL
|
||||
|
||||
@@ -28,7 +28,7 @@ public enum IOSEnum {
|
||||
BILL_STATUS(MapOf.of("生成","10", "分配中", "20", "分配完", "30", "完成", "99")),
|
||||
|
||||
// 入库业务类型
|
||||
BILL_TYPE(MapOf.of("生产入库","0001", "采购入库", "0005", "手工入库", "0009","销售出库","1001","生产出库","1005","调拨出库","1004", "手工出库", "1009")),
|
||||
BILL_TYPE(MapOf.of("生产入库","0001", "采购入库", "0005","生产领料", "0006", "手工入库", "0009","销售出库","1001","生产出库","1005","调拨出库","1004", "手工出库", "1009")),
|
||||
|
||||
//入库分配明细状态
|
||||
INBILL_DIS_STATUS(MapOf.of("未生成", "00", "生成", "01", "执行中", "02", "完成", "99")),
|
||||
|
||||
@@ -30,29 +30,26 @@ import org.nl.wms.basedata_manage.service.dto.StrategyMater;
|
||||
import org.nl.wms.basedata_manage.service.dto.StrategyStructParam;
|
||||
import org.nl.wms.basedata_manage.service.dto.StructattrChangeDto;
|
||||
import org.nl.wms.sch_manage.enums.StatusEnum;
|
||||
import org.nl.wms.sch_manage.service.dao.SchBasePoint;
|
||||
import org.nl.wms.sch_manage.service.dao.SchBaseTask;
|
||||
import org.nl.wms.sch_manage.service.core.tasks.StInTask;
|
||||
import org.nl.wms.sch_manage.service.dao.SchBaseTask;
|
||||
import org.nl.wms.warehouse_manage.enums.IOSConstant;
|
||||
import org.nl.wms.warehouse_manage.enums.IOSEnum;
|
||||
import org.nl.wms.warehouse_manage.inventory.IStInventoryService;
|
||||
import org.nl.wms.warehouse_manage.inventory.core.enums.InventoryChangeType;
|
||||
import org.nl.wms.warehouse_manage.inventory.core.param.impl.AddInvParam;
|
||||
import org.nl.wms.warehouse_manage.inventory.core.param.impl.InFinishParam;
|
||||
import org.nl.wms.warehouse_manage.inventory.core.param.impl.OutFinishParam;
|
||||
import org.nl.wms.warehouse_manage.service.IMdPbGroupplateService;
|
||||
import org.nl.wms.warehouse_manage.service.impl.MdPbGroupplateServiceImpl;
|
||||
import org.nl.wms.warehouse_manage.inAndOut.service.IInBillService;
|
||||
import org.nl.wms.warehouse_manage.service.dao.GroupPlate;
|
||||
import org.nl.wms.warehouse_manage.inAndOut.service.dao.IOStorInv;
|
||||
import org.nl.wms.warehouse_manage.inAndOut.service.dao.IOStorInvDis;
|
||||
import org.nl.wms.warehouse_manage.inAndOut.service.dao.IOStorInvDtl;
|
||||
import org.nl.wms.warehouse_manage.service.dto.GroupPlateDto;
|
||||
import org.nl.wms.warehouse_manage.inAndOut.service.dao.mapper.IOStorInvDisMapper;
|
||||
import org.nl.wms.warehouse_manage.inAndOut.service.dao.mapper.IOStorInvDtlMapper;
|
||||
import org.nl.wms.warehouse_manage.inAndOut.service.dao.mapper.IOStorInvMapper;
|
||||
import org.nl.wms.warehouse_manage.inAndOut.service.dto.IOStorInvDisDto;
|
||||
import org.nl.wms.warehouse_manage.inAndOut.service.dto.IOStorInvDtlDto;
|
||||
import org.nl.wms.warehouse_manage.inventory.IStInventoryService;
|
||||
import org.nl.wms.warehouse_manage.inventory.core.enums.InventoryChangeType;
|
||||
import org.nl.wms.warehouse_manage.inventory.core.param.impl.AddInvParam;
|
||||
import org.nl.wms.warehouse_manage.service.IMdPbGroupplateService;
|
||||
import org.nl.wms.warehouse_manage.service.dao.GroupPlate;
|
||||
import org.nl.wms.warehouse_manage.service.dto.GroupPlateDto;
|
||||
import org.nl.wms.warehouse_manage.service.impl.MdPbGroupplateServiceImpl;
|
||||
import org.nl.wms.warehouse_manage.stockReturn.strategy.CallbackStrategyPublish;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
@@ -673,9 +670,21 @@ public class InBillServiceImpl extends ServiceImpl<IOStorInvMapper, IOStorInv> i
|
||||
if (CollectionUtils.isEmpty(ioStorInvDis)) {
|
||||
throw new BadRequestException("未找到任务对应的分配明细");
|
||||
}
|
||||
String iostorinvId = ioStorInvDis.get(0).getIostorinv_id();
|
||||
String storagevehicleCode = ioStorInvDis.get(0).getStoragevehicle_code();
|
||||
String structCode = ioStorInvDis.get(0).getStruct_code();
|
||||
//库存变动
|
||||
StructattrChangeDto changeDto = StructattrChangeDto.builder()
|
||||
.inv(ioStorInvDis.get(0).getIostorinv_id())
|
||||
.storagevehicleCode(ioStorInvDis.get(0).getStoragevehicle_code())
|
||||
.structCode(ioStorInvDis.get(0).getStruct_code()).taskType(task.getConfig_code()).inBound(true).build();
|
||||
iStructattrService.changeStruct(changeDto);
|
||||
disFinish(ioStorInvDis);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void disFinish(List<IOStorInvDis> disList) {
|
||||
String iostorinvId = disList.get(0).getIostorinv_id();
|
||||
String storagevehicleCode = disList.get(0).getStoragevehicle_code();
|
||||
String structCode = disList.get(0).getStruct_code();
|
||||
//解锁库位
|
||||
JSONObject finish_map = new JSONObject();
|
||||
finish_map.put("struct_code", structCode);
|
||||
@@ -684,50 +693,6 @@ public class InBillServiceImpl extends ServiceImpl<IOStorInvMapper, IOStorInv> i
|
||||
finish_map.put("inv_id", null);
|
||||
finish_map.put("inv_code", null);
|
||||
iStructattrService.updateStatusByCode("1", finish_map);
|
||||
//库存变动
|
||||
StructattrChangeDto changeDto = StructattrChangeDto.builder()
|
||||
.inv(iostorinvId)
|
||||
.storagevehicleCode(storagevehicleCode)
|
||||
.structCode(structCode).taskType(task.getConfig_code()).inBound(true).build();
|
||||
iStructattrService.changeStruct(changeDto);
|
||||
// 完成当前分配明细
|
||||
Map<String, BigDecimal> dtlMap = new HashMap<>();
|
||||
for (IOStorInvDis item : ioStorInvDis) {
|
||||
ioStorInvDisMapper.update(item, new LambdaUpdateWrapper<>(IOStorInvDis.class)
|
||||
.set(IOStorInvDis::getWork_status, IOSEnum.INBILL_DIS_STATUS.code("完成"))
|
||||
.set(IOStorInvDis::getReal_qty, item.getPlan_qty())
|
||||
.eq(IOStorInvDis::getIostorinvdis_id, item.getIostorinvdis_id()));
|
||||
dtlMap.put(item.getIostorinvdtl_id(), item.getPlan_qty());
|
||||
}
|
||||
//更新明细
|
||||
for (String dtl_id : dtlMap.keySet()) {
|
||||
IOStorInvDtl invDtl = new IOStorInvDtl();
|
||||
invDtl.setIostorinvdtl_id(dtl_id);
|
||||
invDtl.setReal_qty(dtlMap.get(dtl_id));
|
||||
invDtl.setBill_status(IOSEnum.BILL_STATUS.code("完成"));
|
||||
ioStorInvDtlMapper.updateById(invDtl);
|
||||
}
|
||||
// 查看明细是否全部完成
|
||||
int countDtl = ioStorInvDtlMapper.selectCount(new LambdaQueryWrapper<>(IOStorInvDtl.class)
|
||||
.eq(IOStorInvDtl::getIostorinv_id, iostorinvId)
|
||||
.ne(IOStorInvDtl::getBill_status, IOSEnum.BILL_STATUS.code("完成"))
|
||||
);
|
||||
// 如果明细全部完成则更新主表状态
|
||||
if (countDtl == 0) {
|
||||
//更新主表状态
|
||||
ioStorInvMapper.update(new IOStorInv(), new LambdaUpdateWrapper<>(IOStorInv.class)
|
||||
.set(IOStorInv::getBill_status, IOSEnum.BILL_STATUS.code("完成"))
|
||||
.set(IOStorInv::getConfirm_optid, currentUserId)
|
||||
.set(IOStorInv::getConfirm_optname, nickName)
|
||||
.set(IOStorInv::getConfirm_time, now)
|
||||
.eq(IOStorInv::getIostorinv_id, iostorinvId)
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void disFinish(List<IOStorInvDis> disList) {
|
||||
// 完成当前任务对应的所有分配明细
|
||||
ioStorInvDisMapper.update(null,new LambdaUpdateWrapper<>(IOStorInvDis.class)
|
||||
.set(IOStorInvDis::getWork_status,IOSEnum.INBILL_DIS_STATUS.code("完成"))
|
||||
|
||||
@@ -0,0 +1,114 @@
|
||||
package org.nl.wms.warehouse_manage.stockReturn.strategy.core.impl;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import org.apache.commons.lang.time.DateFormatUtils;
|
||||
import org.nl.wms.ext_manage.purchase.service.dto.EasAuditRequestDto;
|
||||
import org.nl.wms.ext_manage.util.ErpUtil;
|
||||
import org.nl.wms.pm_manage.purchase.service.PurchaseService;
|
||||
import org.nl.wms.pm_manage.purchase.service.PurchasedtlService;
|
||||
import org.nl.wms.pm_manage.purchase.service.dao.Purchasedtl;
|
||||
import org.nl.wms.pm_manage.purchase.service.dao.Purchasemst;
|
||||
import org.nl.wms.pm_manage.purchase.service.enums.PurchaseBillStatus;
|
||||
import org.nl.wms.warehouse_manage.enums.IOSEnum;
|
||||
import org.nl.wms.warehouse_manage.inAndOut.service.dao.IOStorInvDtl;
|
||||
import org.nl.wms.warehouse_manage.inAndOut.service.dao.mapper.IOStorInvDtlMapper;
|
||||
import org.nl.wms.warehouse_manage.stockReturn.service.IPmStockReturnService;
|
||||
import org.nl.wms.warehouse_manage.stockReturn.service.dao.PmStockReturn;
|
||||
import org.nl.wms.warehouse_manage.stockReturn.service.enums.StockReturnStatusEnum;
|
||||
import org.nl.wms.warehouse_manage.stockReturn.strategy.core.CallbackStrategy;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 生产入库回传
|
||||
*/
|
||||
@Service
|
||||
public class DealPurchaseRecBillCallback implements CallbackStrategy {
|
||||
|
||||
@Autowired
|
||||
private IPmStockReturnService iPmStockReturnService;
|
||||
@Autowired
|
||||
private PurchaseService purchaseService;
|
||||
@Autowired
|
||||
private PurchasedtlService purchasedtlService;
|
||||
@Autowired
|
||||
private IOStorInvDtlMapper ioStorInvDtlMapper;
|
||||
|
||||
|
||||
@Override
|
||||
public void buildCallback(IOStorInvDtl param) {
|
||||
final String orderCode = param.getSource_bill_code();
|
||||
Purchasemst purchasemst = purchaseService.getOne(new LambdaQueryWrapper<Purchasemst>()
|
||||
.eq(Purchasemst::getBill_id, orderCode));
|
||||
List<IOStorInvDtl> ioStorInvDtls = ioStorInvDtlMapper.selectList(new LambdaQueryWrapper<IOStorInvDtl>()
|
||||
.eq(IOStorInvDtl::getIostorinv_id, param.getIostorinv_id()));
|
||||
List<EasAuditRequestDto.EasAuditEntryDto> entryList = new ArrayList<>();
|
||||
for (IOStorInvDtl item : ioStorInvDtls) {
|
||||
Purchasedtl purchasedtl = purchasedtlService.getOne(new LambdaQueryWrapper<Purchasedtl>()
|
||||
.eq(Purchasedtl::getBill_id, orderCode)
|
||||
.eq(Purchasedtl::getSku_code, item.getMaterial_code()));
|
||||
|
||||
purchasedtl.setInstock_qty(item.getPlan_qty().add(purchasedtl.getInstock_qty()));
|
||||
purchasedtlService.updateById(purchasedtl);
|
||||
|
||||
EasAuditRequestDto.EasAuditEntryDto easAuditEntryDto = new EasAuditRequestDto.EasAuditEntryDto();
|
||||
easAuditEntryDto.setSeq(Integer.parseInt(purchasedtl.getItem_no()));
|
||||
easAuditEntryDto.setQty(item.getPlan_qty());
|
||||
easAuditEntryDto.setEntryId(purchasedtl.getEntry_id());
|
||||
entryList.add(easAuditEntryDto);
|
||||
}
|
||||
List<Purchasedtl> list = purchasedtlService.list(new LambdaQueryWrapper<Purchasedtl>()
|
||||
.eq(Purchasedtl::getBill_id, orderCode));
|
||||
boolean flag = list.stream().anyMatch(i -> i.getQty().compareTo(i.getInstock_qty()) != 0);
|
||||
if (!flag){
|
||||
//全部相等则单据完成
|
||||
purchaseService.lambdaUpdate()
|
||||
.set(Purchasemst::getBill_status, PurchaseBillStatus.COMPLETED.getCode())
|
||||
.set(Purchasemst::getModify_date, DateFormatUtils.format(new Date(), "yyyy-MM-dd HH:mm:ss"))
|
||||
.eq(Purchasemst::getBill_id, orderCode)
|
||||
.update();
|
||||
// 保存回传单
|
||||
EasAuditRequestDto easAuditRequestDto = new EasAuditRequestDto();
|
||||
easAuditRequestDto.setType("WMS");
|
||||
easAuditRequestDto.setMethod("DealBill");
|
||||
EasAuditRequestDto.EasAuditDataDto easAuditDataDto = new EasAuditRequestDto.EasAuditDataDto();
|
||||
easAuditDataDto.setBillType(purchasemst.getOrder_type());
|
||||
easAuditDataDto.setBillNo(purchasemst.getOrder_no());
|
||||
easAuditDataDto.setEntrys(entryList);
|
||||
easAuditRequestDto.setData(easAuditDataDto);
|
||||
|
||||
final PmStockReturn stockReturn = new PmStockReturn();
|
||||
stockReturn.setRequest_Id(orderCode);
|
||||
stockReturn.setCreate_time(DateUtil.now());
|
||||
stockReturn.setRequest_type(IOSEnum.BILL_TYPE.code("采购入库"));
|
||||
stockReturn.setStatus(StockReturnStatusEnum.TODO.getCode());
|
||||
stockReturn.setRequest_data(JSON.toJSONString(easAuditRequestDto));
|
||||
iPmStockReturnService.save(stockReturn);
|
||||
//回传
|
||||
try {
|
||||
ErpUtil.create().login().audit(JSONObject.toJSONString(easAuditRequestDto));
|
||||
iPmStockReturnService.lambdaUpdate()
|
||||
.set(PmStockReturn::getStatus,StockReturnStatusEnum.SUCESS.getCode())
|
||||
.eq(PmStockReturn::getRequest_Id, orderCode);
|
||||
} catch (Exception e) {
|
||||
iPmStockReturnService.lambdaUpdate()
|
||||
.set(PmStockReturn::getStatus,StockReturnStatusEnum.FAIL.getCode())
|
||||
.eq(PmStockReturn::getRequest_Id, orderCode);
|
||||
}
|
||||
}else {
|
||||
//更新单据状态执行中
|
||||
purchaseService.lambdaUpdate()
|
||||
.eq(Purchasemst::getBill_id, orderCode)
|
||||
.eq(Purchasemst::getBill_status, PurchaseBillStatus.CREATED.getCode())
|
||||
.set(Purchasemst::getBill_status, PurchaseBillStatus.EXECUTING.getCode())
|
||||
.update();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -38,4 +38,6 @@ public interface IWorkOrderService extends IService<WorkOrderDao> {
|
||||
void updateBomUseQty(String id, BigDecimal qty);
|
||||
|
||||
List<WorkOrderBomDao> getOrderBomItem(String orderCode);
|
||||
|
||||
WorkOrderDao getWorkOrder(String orderCode);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package org.nl.wms.welding_manage.service.work_order.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
@@ -119,4 +120,15 @@ public class WorkOrderServiceImpl extends ServiceImpl<WorkOrderMapper, WorkOrder
|
||||
}
|
||||
return workOrderMapper.getOrderBomItem(orderCode);
|
||||
}
|
||||
|
||||
@Override
|
||||
public WorkOrderDao getWorkOrder(String orderCode) {
|
||||
if (StringUtils.isEmpty(orderCode)){
|
||||
throw new BadRequestException("查询工单失败,工单编号为空");
|
||||
}
|
||||
return this.getOne(new LambdaQueryWrapper<WorkOrderDao>()
|
||||
.eq(WorkOrderDao::getOrder_code, orderCode));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user