feat(erp): 新增ERP接口对接功能

- 新增ErpExecution、ErpInOutBoundOrder等多个ERP实体类
- 修改IToErpService接口,调整createWorkshopInboundOrder方法参数
- 重构ToErpServiceImpl实现类,完善车间入库单和其它出入库单逻辑
- 新增WipTransferDoc及WipTransferDocD等工单转移相关实体类
- 调整ToWmsServiceImpl中二楼入库创建工艺单的调用方式
- 完善ERP接口请求URL配置及数据封装处理
- 优化作业生成流程中的异常处理机制
This commit is contained in:
liuhanqing
2025-12-12 10:29:04 +08:00
parent 0290bdaa61
commit 2885ba7323
13 changed files with 561 additions and 142 deletions

View File

@@ -0,0 +1,16 @@
package com.ruoyi.api.domain;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@AllArgsConstructor
@NoArgsConstructor
@Data
public class ErpExecution {
private String code;
private String sql_code;
private String description;
private String token_id;
}

View File

@@ -0,0 +1,54 @@
package com.ruoyi.api.domain;
import cn.hutool.core.annotation.Alias;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@AllArgsConstructor
@NoArgsConstructor
@Data
public class ErpInOutBoundOrder {
//单号 入库 11T1-202512020001 出库 11T2-202512020001
@Alias("DOC_NO")
private String DOC_NO;
//单据类型.单据类型 入库 11T1 出库 11T2
@Alias("DOC_ID_DOC_CODE")
private String DOC_ID_DOC_CODE;
//单据类型.组织类型.工厂/储运.工厂/储运编号 B0801
@Alias("DOC_ID_Owner_Org_PLANT_CODR")
private String DOC_ID_Owner_Org_PLANT_CODR;
//单据日期
@Alias("DOC_DATE")
private String DOC_DATE;
//交易日期
@Alias("TRANSACTION_DATE")
private String TRANSACTION_DATE;
//关联员工.员工编号
@Alias("Owner_Emp_EMPLOYEE_CODE")
private String Owner_Emp_EMPLOYEE_CODE;
//组织类型.工厂/储运.工厂/储运编号 B0801
@Alias("Owner_Org_PLANT_PLANT_CODE")
private String Owner_Org_PLANT_PLANT_CODE;
//单据状态属性 N
@Alias("ApproveStatus")
private String ApproveStatus;
//单据性质 11
@Alias("CATEGORY")
private String CATEGORY;
//公司.公司编号 B08
@Alias("COMPANY_ID_COMPANY_CODE")
private String COMPANY_ID_COMPANY_CODE;
//关联部门.行政单元编码
@Alias("Owner_Dept_ADMIN_UNIT_CODE")
private String Owner_Dept_ADMIN_UNIT_CODE;
//库存影响
@Alias("STOCK_ACTION")
private Integer STOCK_ACTION;
//库存交易单单身
@Alias("TRANSACTION_DOC_D")
private List<ErpTransactionDocD> TRANSACTION_DOC_D;
}

View File

@@ -0,0 +1,15 @@
package com.ruoyi.api.domain;
import cn.hutool.core.annotation.Alias;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ErpInterfaceParam<T> {
@Alias("std_data")
private ErpStdData<T> std_data;
}

View File

@@ -0,0 +1,17 @@
package com.ruoyi.api.domain;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ErpParameter<T> {
private List<T> datas;
private ErpResult result;
}

View File

@@ -0,0 +1,13 @@
package com.ruoyi.api.domain;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ErpResult {
private ErpSuccess success;
}

View File

@@ -0,0 +1,15 @@
package com.ruoyi.api.domain;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ErpStdData<T> {
private ErpExecution execution;
private ErpParameter<T> parameter;
}

View File

@@ -0,0 +1,15 @@
package com.ruoyi.api.domain;
import cn.hutool.core.annotation.Alias;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ErpSuccess {
@Alias("DOC_NO")
private String DOC_NO;
}

View File

@@ -0,0 +1,39 @@
package com.ruoyi.api.domain;
import cn.hutool.core.annotation.Alias;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ErpTransactionDocD {
//序号
@Alias("SequenceNumber")
private Integer SequenceNumber;
//品号.品号
@Alias("ITEM_ID_ITEM_CODE")
private String ITEM_ID_ITEM_CODE;
//品名
@Alias("ITEM_DESCRIPTION")
private String ITEM_DESCRIPTION;
//规格
@Alias("ITEM_SPECIFICATION")
private String ITEM_SPECIFICATION;
//业务数量
@Alias("BUSINESS_QTY")
private Double BUSINESS_QTY;
//仓库.仓库编号
@Alias("WAREHOUSE_ID_WAREHOUSE_CODE")
private String WAREHOUSE_ID_WAREHOUSE_CODE;
//仓库.组织类型.工厂/储运.工厂/储运编号
@Alias("WAREHOUSE_ID_Owner_Org_PLANT_PLANT_CODE")
private String WAREHOUSE_ID_Owner_Org_PLANT_PLANT_CODE;
//业务单位.单位编号
@Alias("BUSINESS_UNIT_ID_UNIT_CODE")
private String BUSINESS_UNIT_ID_UNIT_CODE;
//单据来源
@Alias("GENERATE_SOURCE")
private String GENERATE_SOURCE;
}

View File

@@ -0,0 +1,82 @@
package com.ruoyi.api.domain;
import cn.hutool.core.annotation.Alias;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* WIP 转移文档主实体类
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class WipTransferDoc {
/**
* 单号 5C21-2501000000
*/
@Alias("DOC_NO")
private String DOC_NO;
/**
* 单据类型, 单据类型 5C21
*/
@Alias("DOC_ID_DOC_CODE")
private String DOC_ID_DOC_CODE;
/**
* 单据日期
*/
@Alias("DOC_DATE")
private String DOC_DATE;
/**
* 移出地, 工作中心, 工作中心编码
*/
@Alias("SOURCE_ID_WORK_CENTER_WORK_CENTER_CODE")
private String SOURCE_ID_WORK_CENTER_WORK_CENTER_CODE;
/**
* 移出部门, 行政单元编码
*/
@Alias("FROM_ADMIN_UNIT_ID_ADMIN_UNIT_CODE")
private String FROM_ADMIN_UNIT_ID_ADMIN_UNIT_CODE;
/**
* 关联部门, 行政单元编码
*/
@Alias("Owner_Dept_ADMIN_UNIT_CODE")
private String Owner_Dept_ADMIN_UNIT_CODE;
/**
* 移出部门, 生效日期
*/
@Alias("Owner_Dept_START_DATE")
private String Owner_Dept_START_DATE;
/**
* 关联员工, 员工编号
*/
@Alias("Owner_Emp_EMPLOYEE_CODE")
private String Owner_Emp_EMPLOYEE_CODE;
/**
* 备注
*/
@Alias("REMARK")
private String REMARK;
/**
* 限用仓库, 仓库编号
*/
@Alias("WAREHOUSE_ID_WAREHOUSE_CODE")
private String WAREHOUSE_ID_WAREHOUSE_CODE;
/**
* WIP 转移文档明细列表
*/
@Alias("WIP_TRANSFER_DOC_D")
private List<WipTransferDocD> WIP_TRANSFER_DOC_D;
}

View File

@@ -0,0 +1,110 @@
package com.ruoyi.api.domain;
import cn.hutool.core.annotation.Alias;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* WIP 转移文档明细项实体类
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class WipTransferDocD {
/**
* 工单单号, 单号
*/
@Alias("MO_ID_DOC_NO")
private String MO_ID_DOC_NO;
/**
* 移入部门, 行政单元编码
*/
@Alias("TO_ADMIN_UNIT_ID_ADMIN_UNIT_CODE")
private String TO_ADMIN_UNIT_ID_ADMIN_UNIT_CODE;
/**
* 移入部门, 生效日期
*/
@Alias("TO_ADMIN_UNIT_ID_START_DATE")
private String TO_ADMIN_UNIT_ID_START_DATE;
/**
* 数量
*/
@Alias("QTY")
private String QTY;
/**
* 产品品号, 品号
*/
@Alias("ITEM_ID_ITEM_CODE")
private String ITEM_ID_ITEM_CODE;
/**
* 产品品名
*/
@Alias("ITEM_NAME")
private String ITEM_NAME;
/**
* 产品规格
*/
@Alias("ITEM_SPECIFICATION")
private String ITEM_SPECIFICATION;
/**
* 移入地, 仓库, 仓库编号
*/
@Alias("SOURCE_ID_WAREHOUSE_WAREHOUSE_CODE")
private String SOURCE_ID_WAREHOUSE_WAREHOUSE_CODE;
/**
* 移入地, 仓库, 组织类型, 公司
*/
@Alias("SOURCE_ID_WAREHOUSE_Owner_Org_COMPANY_COMPANY_CODE")
private String SOURCE_ID_WAREHOUSE_Owner_Org_COMPANY_COMPANY_CODE;
/**
* 移入地, 仓库, 组织类型, 销售
*/
@Alias("SOURCE_ID_WAREHOUSE_Owner_Org_SALES_CENTER_SALES_CENTER_CODE")
private String SOURCE_ID_WAREHOUSE_Owner_Org_SALES_CENTER_SALES_CENTER_CODE;
/**
* 移入地, 仓库, 组织类型, 采购
*/
@Alias("SOURCE_ID_WAREHOUSE_Owner_Org_SUPPLY_CENTER_SUPPLY_CENTER_CODE")
private String SOURCE_ID_WAREHOUSE_Owner_Org_SUPPLY_CENTER_SUPPLY_CENTER_CODE;
/**
* 移入地, 仓库, 组织类型, 营运
*/
@Alias("SOURCE_ID_WAREHOUSE_Owner_Org_OPERATION_CENTER_OPERATION_CENTER_CODE")
private String SOURCE_ID_WAREHOUSE_Owner_Org_OPERATION_CENTER_OPERATION_CENTER_CODE;
/**
* 移入地, 仓库, 组织类型, 工厂
*/
@Alias("SOURCE_ID_WAREHOUSE_Owner_Org_SHOP_SHOP_CODE")
private String SOURCE_ID_WAREHOUSE_Owner_Org_SHOP_SHOP_CODE;
/**
* 移入地, 仓库, 组织类型, 服务
*/
@Alias("SOURCE_ID_WAREHOUSE_Owner_Org_SERVICE_CENTER_SERVICE_CENTER_CODE")
private String SOURCE_ID_WAREHOUSE_Owner_Org_SERVICE_CENTER_SERVICE_CENTER_CODE;
/**
* 移出工序, 序号
*/
@Alias("FROM_MO_ROUTING_D_ID_SequenceNumber")
private Integer FROM_MO_ROUTING_D_ID_SequenceNumber;
/**
* 移出工序, 工单工艺信息, 工单号
*/
@Alias("FROM_MO_ROUTING_D_ID_Parent_MO_ID_DOC_NO")
private String FROM_MO_ROUTING_D_ID_Parent_MO_ID_DOC_NO;
}

View File

@@ -15,14 +15,5 @@ public interface IToErpService {
void callbackTransferBill();
AjaxResult receiveMaterial(BasProduct basProduct);
AjaxResult receiveCustomer(BasCustomer basProduct);
AjaxResult receiveSupplier(BasSupplier basSupplier);
AjaxResult createWorkshopInboundOrder();
AjaxResult createOtherInOutboundOrder();
AjaxResult createWorkshopInboundOrder(BasProduct basProduct);
}

View File

@@ -3,6 +3,9 @@ package com.ruoyi.api.service.impl;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjUtil;
import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONUtil;
import com.ruoyi.api.domain.*;
import com.ruoyi.api.domain.ErpResponse;
import com.ruoyi.api.mapper.JobStatisticsMapper;
import com.ruoyi.api.service.IJobStatisticsService;
import com.ruoyi.api.service.IToErpService;
@@ -12,6 +15,7 @@ import com.ruoyi.bas.BasProduct.domain.BasProduct;
import com.ruoyi.bas.BasProduct.service.IBasProductService;
import com.ruoyi.bas.BasSupplier.domain.BasSupplier;
import com.ruoyi.bas.BasSupplier.service.IBasSupplierService;
import com.ruoyi.bas.basJobId.service.IBasJobIdService;
import com.ruoyi.bas.cargoSpace.mapper.BasCargoSpaceMapper;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.utils.DateUtils;
@@ -19,6 +23,9 @@ import com.ruoyi.in.erp.domain.TransferBillCallback;
import com.ruoyi.in.erp.service.ITransferBillCallbackService;
import com.ruoyi.job.mydojob.domain.MydoJob;
import com.ruoyi.job.mydojob.mapper.MydoJobMapper;
import com.ruoyi.job.mydojob.service.IMydoJobService;
import com.ruoyi.job.mydojobdetail.domain.MydoJobDetail;
import com.ruoyi.job.mydojobdetail.service.IMydoJobDetailService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -30,16 +37,22 @@ import java.util.*;
@Service
public class ToErpServiceImpl implements IToErpService {
@Autowired
private IBasProductService basProductService;
@Autowired
private IBasSupplierService basSupplierService;
@Autowired
private IBasCustomerService basCustomerService;
@Autowired
private ITransferBillCallbackService transferBillCallbackService;
@Autowired
private IMydoJobService mydoJobService;
@Autowired
private IMydoJobDetailService mydoJobDetailService;
@Autowired
private IBasJobIdService basJobIdService;
private static final String TO_ERP_URL = "http://192.168.1.100:8080/api/";
//todo 需要调试
private static final String WORKSHOP_INBOUND_ORDER_URL = TO_ERP_URL+"TRANSACTION_DOC";
//todo 需要调试
private static final String OTHER_IN_OUTBOUND_ORDER_URL = TO_ERP_URL+"WIP_TRANSFER_DOC";
@Override
@@ -49,7 +62,7 @@ public class ToErpServiceImpl implements IToErpService {
List<TransferBillCallback> list = transferBillCallbackService.selectTransferBillCallbackList(param);
for (TransferBillCallback transferBillCallback : list) {
//todo 请求其他出入库单回传接口
AjaxResult otherInOutboundOrder = createOtherInOutboundOrder();
AjaxResult otherInOutboundOrder = createOtherInOutboundOrder(transferBillCallback);
if (otherInOutboundOrder.isSuccess()){
transferBillCallback.setStatus("1");
transferBillCallback.setFinishTime(DateUtil.formatDateTime(new Date()));
@@ -59,48 +72,90 @@ public class ToErpServiceImpl implements IToErpService {
}
@Override
public AjaxResult receiveMaterial(BasProduct basProduct) {
String productId = basProduct.getProductId();
BasProduct oldProduct = basProductService.selectBasProductByProductId(productId);
if (ObjUtil.isNotNull(oldProduct)){
basProductService.updateBasProduct(basProduct);
}else {
basProductService.insertBasProduct(basProduct);
public AjaxResult createWorkshopInboundOrder(BasProduct basProduct) {
ErpInterfaceParam<WipTransferDoc> param = new ErpInterfaceParam<>();
ErpStdData<WipTransferDoc> erpStdData = new ErpStdData<>();
ErpParameter<WipTransferDoc> objectErpParameter = new ErpParameter<>();
ArrayList<WipTransferDocD> list = new ArrayList<WipTransferDocD>();
WipTransferDoc wipTransferDoc = new WipTransferDoc();
wipTransferDoc.setDOC_NO(basJobIdService.getJobId("5C21"));
wipTransferDoc.setDOC_ID_DOC_CODE("5C21");
WipTransferDocD wipTransferDocD = new WipTransferDocD();
wipTransferDocD.setMO_ID_DOC_NO(basJobIdService.getJobId("5C21"));
wipTransferDocD.setQTY("1");
wipTransferDocD.setITEM_ID_ITEM_CODE(DateUtil.formatDateTime(new Date()));
wipTransferDocD.setITEM_NAME(basProduct.getProductName());
wipTransferDocD.setITEM_SPECIFICATION(basProduct.getSpec());
wipTransferDocD.setSOURCE_ID_WAREHOUSE_WAREHOUSE_CODE("Z251");
wipTransferDocD.setFROM_MO_ROUTING_D_ID_SequenceNumber(1);
list.add(wipTransferDocD);
wipTransferDoc.setWIP_TRANSFER_DOC_D(list);
objectErpParameter.setDatas(List.of(wipTransferDoc));
erpStdData.setParameter(objectErpParameter);
param.setStd_data(erpStdData);
String post = HttpUtil.post(OTHER_IN_OUTBOUND_ORDER_URL, JSONUtil.toJsonStr(param));
ErpInterfaceParam bean = JSONUtil.toBean(post, ErpInterfaceParam.class);
if ("0".equals(bean.getStd_data().getExecution().getCode())) {
return AjaxResult.success();
}
return AjaxResult.success();
return AjaxResult.error();
}
@Override
public AjaxResult receiveCustomer(BasCustomer basCustomer) {
String customerNo = basCustomer.getId();
BasCustomer oldCustomer = basCustomerService.selectBasCustomerById(customerNo);
if (ObjUtil.isNotNull(oldCustomer)){
basCustomerService.updateBasCustomer(basCustomer);
public AjaxResult createOtherInOutboundOrder(TransferBillCallback transferBillCallback) {
ErpInterfaceParam<ErpInOutBoundOrder> param = new ErpInterfaceParam<>();
ErpStdData<ErpInOutBoundOrder> erpStdData = new ErpStdData<>();
ErpParameter<ErpInOutBoundOrder> objectErpParameter = new ErpParameter<>();
ArrayList<ErpInOutBoundOrder> list = new ArrayList<ErpInOutBoundOrder>();
ErpInOutBoundOrder erpInOutBoundOrder = new ErpInOutBoundOrder();
String docNo = "";
String docIdDocCode = "";
if ("1".equals(transferBillCallback.getType())){
docNo = basJobIdService.getJobId("11T1");
docIdDocCode = "11T1";
}else {
basCustomerService.insertBasCustomer(basCustomer);
docNo = basJobIdService.getJobId("11T2");
docIdDocCode = "11T2";
}
return AjaxResult.success();
}
@Override
public AjaxResult receiveSupplier(BasSupplier basSupplier) {
String supplierNo = basSupplier.getId();
BasSupplier oldSupplier = basSupplierService.selectBasSupplierById(supplierNo);
if (ObjUtil.isNotNull(oldSupplier)){
basSupplierService.updateBasSupplier(basSupplier);
}else {
basSupplierService.insertBasSupplier(basSupplier);
erpInOutBoundOrder.setDOC_NO(docNo);
erpInOutBoundOrder.setDOC_ID_DOC_CODE(docIdDocCode);
erpInOutBoundOrder.setDOC_ID_Owner_Org_PLANT_CODR("B0801");
erpInOutBoundOrder.setDOC_DATE(DateUtil.formatDateTime(new Date()));
erpInOutBoundOrder.setTRANSACTION_DATE(DateUtil.formatDateTime(new Date()));
erpInOutBoundOrder.setOwner_Emp_EMPLOYEE_CODE("");
erpInOutBoundOrder.setOwner_Org_PLANT_PLANT_CODE("B0801");
erpInOutBoundOrder.setApproveStatus("N");
erpInOutBoundOrder.setCATEGORY("11");
erpInOutBoundOrder.setCOMPANY_ID_COMPANY_CODE("B08");
erpInOutBoundOrder.setOwner_Dept_ADMIN_UNIT_CODE("");
erpInOutBoundOrder.setSTOCK_ACTION(1);
List<MydoJobDetail> mydoJobDetails = mydoJobDetailService.selectMydoJobDetailListByJobId(transferBillCallback.getJobId());
ArrayList<ErpTransactionDocD> erpTransactionDocDS = new ArrayList<>();
for (int i = 0; i < mydoJobDetails.size(); i++) {
MydoJobDetail mydoJobDetail = mydoJobDetails.get(i);
ErpTransactionDocD erpTransactionDocD = new ErpTransactionDocD();
erpTransactionDocD.setSequenceNumber(i+1);
erpTransactionDocD.setITEM_ID_ITEM_CODE(mydoJobDetail.getProductId());
erpTransactionDocD.setITEM_DESCRIPTION(mydoJobDetail.getProductName());
erpTransactionDocD.setITEM_SPECIFICATION(mydoJobDetail.getSpec());
erpTransactionDocD.setBUSINESS_QTY(1.0);
erpTransactionDocD.setWAREHOUSE_ID_WAREHOUSE_CODE("");
erpTransactionDocD.setWAREHOUSE_ID_Owner_Org_PLANT_PLANT_CODE("");
erpTransactionDocD.setBUSINESS_UNIT_ID_UNIT_CODE("");
erpTransactionDocD.setGENERATE_SOURCE("");
erpTransactionDocDS.add(erpTransactionDocD);
}
return AjaxResult.success();
}
@Override
public AjaxResult createWorkshopInboundOrder() {
return AjaxResult.success();
}
@Override
public AjaxResult createOtherInOutboundOrder() {
return AjaxResult.success();
erpInOutBoundOrder.setTRANSACTION_DOC_D(erpTransactionDocDS);
list.add(erpInOutBoundOrder);
objectErpParameter.setDatas(list);
erpStdData.setParameter(objectErpParameter);
param.setStd_data(erpStdData);
String post = HttpUtil.post(OTHER_IN_OUTBOUND_ORDER_URL, JSONUtil.toJsonStr(param));
ErpInterfaceParam bean = JSONUtil.toBean(post, ErpInterfaceParam.class);
if ("0".equals(bean.getStd_data().getExecution().getCode())) {
return AjaxResult.success();
}
return AjaxResult.error();
}
}

View File

@@ -145,12 +145,10 @@ public class ToWmsServiceImpl implements IToWmsService {
return new AjaxResult(4, "托盘大小不匹配");
}
String inOrOutType = null;
String inStockId = null;
String inStockDetailId = null;
//创建作业标准
boolean flag = false;
if ("1".equals(requestEnter.getFloor())) {
//一楼入库 其它入库 和 退料入库 存在单据,需要修改单据数量
InStockin inStockinParam = new InStockin();
@@ -178,95 +176,94 @@ public class ToWmsServiceImpl implements IToWmsService {
inStockinDetail.setScanNum(Convert.toStr(Convert.toBigDecimal(inStockinDetail.getScanNum()).add(Convert.toBigDecimal(1))));
inStockinDetailService.updateInStockinDetail(inStockinDetail);
flag = true;
} else if ("2".equals(requestEnter.getFloor())){
}else if ("2".equals(requestEnter.getFloor())) {
inOrOutType = "1";
//todo 创建工艺入库单
AjaxResult workshopInboundOrder = toErpService.createWorkshopInboundOrder();
if (workshopInboundOrder.isSuccess()){
flag = true;
}
//生成作业
MydoJob mydoJob = new MydoJob();
mydoJob.setStatus("1");
mydoJob.setInOrOut(inOrOutType);
mydoJob.setExecutionPhase("1");
mydoJob.setTrayCode(basJobIdService.getJobId("TP"));
mydoJob.setWarehouseId("01");
mydoJob.setRoadwayId(getRoadway(size));
mydoJob.setLineId(erpBill);
BasRoadway basRoadway = basRoadwayService.selectBasRoadwayById(mydoJob.getRoadwayId());
if ("1".equals(requestEnter.getFloor())) {
if ("Y".equals(basRoadway.getInLocked())) {
return new AjaxResult(6, "巷道已锁");
}
} else {
if ("Y".equals(basRoadway.getInLocked2())) {
return new AjaxResult(6, "巷道已锁");
}
}
if (flag){
//生成作业
MydoJob mydoJob = new MydoJob();
mydoJob.setStatus("1");
mydoJob.setInOrOut(inOrOutType);
mydoJob.setExecutionPhase("1");
mydoJob.setTrayCode(basJobIdService.getJobId("TP"));
mydoJob.setWarehouseId("01");
mydoJob.setRoadwayId(getRoadway(size));
mydoJob.setLineId(erpBill);
BasRoadway basRoadway = basRoadwayService.selectBasRoadwayById(mydoJob.getRoadwayId());
if ("1".equals(requestEnter.getFloor())) {
if ("Y".equals(basRoadway.getInLocked())) {
return new AjaxResult(6, "巷道已锁");
}
} else {
if ("Y".equals(basRoadway.getInLocked2())) {
return new AjaxResult(6, "巷道已锁");
}
}
//根据巷道查找货位
BasCargoSpace basCargoSpaceParam = new BasCargoSpace();
basCargoSpaceParam.setWarehouseId(mydoJob.getWarehouseId());
basCargoSpaceParam.setRoadwayId(mydoJob.getRoadwayId());
BasCargoSpace basCargoSpace = basCargoSpaceService.selectEmptyCargoSpaceByWarehouseId(basCargoSpaceParam);
if (ObjUtil.isNull(basCargoSpace)) {
return new AjaxResult(5, "没有货位");
}
mydoJob.setCargoSpaceId(basCargoSpace.getCargoSpaceId());
mydoJob.setEntranceId(requestEnter.getEntranceId());
mydoJob.setClassId(requestEnter.getFloor());
mydoJobService.insertMydoJob(mydoJob);
//生成子作业
MydoJobDetail mydoJobDetail = new MydoJobDetail();
mydoJobDetail.setJobDetailId(mydoJob.getJobId() + "-1");
mydoJobDetail.setJobId(mydoJob.getJobId());
mydoJobDetail.setCreateTime(new Date());
mydoJobDetail.setProductGuid(basProduct.getProductGuid());
mydoJobDetail.setProductId(basProduct.getProductId());
mydoJobDetail.setInQuantity("1");
mydoJobDetail.setSpare1(xh);
mydoJobDetail.setSpare2(nw);
mydoJobDetail.setSpare3(color);
mydoJobDetail.setSpare4(xlh);
mydoJobDetail.setSpare5(v);
mydoJobDetail.setSpare6(hz);
mydoJobDetail.setSpare7(ph);
mydoJobDetail.setSpare8(gw);
mydoJobDetail.setSpare9(fx);
mydoJobDetail.setUnit(jx);
mydoJobDetail.setSpec(basProduct.getSpec());
mydoJobDetail.setInOrOutId(inStockId);
mydoJobDetail.setInOrOutDId(inStockDetailId);
mydoJobDetail.setStockinId(inStockId);
mydoJobDetailService.insertMydoJobDetail(mydoJobDetail);
//修改货位状态
basCargoSpace.setStatus("3");
basCargoSpaceService.updateBasCargoSpace(basCargoSpace);
//type=1是手持机调用
if (!"1".equals(requestEnter.getType())) {
mydoJob.setStatus("3");
mydoJobService.updateMydoJob(mydoJob);
}
//修改作业状态为正执行
result.put("jobId", mydoJob.getJobId());
result.put("taskNo", mydoJob.getTaskNo());
result.put("cargoSpaceId", mydoJob.getCargoSpaceId());
result.put("roadwayId", mydoJob.getRoadwayId());
result.put("entranceId", mydoJob.getEntranceId());
result.put("inOrOut", mydoJob.getInOrOut());
return AjaxResult.success(result);
}else {
return new AjaxResult(7,"生成工艺单失败");
//根据巷道查找货位
BasCargoSpace basCargoSpaceParam = new BasCargoSpace();
basCargoSpaceParam.setWarehouseId(mydoJob.getWarehouseId());
basCargoSpaceParam.setRoadwayId(mydoJob.getRoadwayId());
BasCargoSpace basCargoSpace = basCargoSpaceService.selectEmptyCargoSpaceByWarehouseId(basCargoSpaceParam);
if (ObjUtil.isNull(basCargoSpace)) {
return new AjaxResult(5, "没有货位");
}
mydoJob.setCargoSpaceId(basCargoSpace.getCargoSpaceId());
mydoJob.setEntranceId(requestEnter.getEntranceId());
mydoJob.setClassId(requestEnter.getFloor());
mydoJobService.insertMydoJob(mydoJob);
//生成子作业
MydoJobDetail mydoJobDetail = new MydoJobDetail();
mydoJobDetail.setJobDetailId(mydoJob.getJobId() + "-1");
mydoJobDetail.setJobId(mydoJob.getJobId());
mydoJobDetail.setCreateTime(new Date());
mydoJobDetail.setProductGuid(basProduct.getProductGuid());
mydoJobDetail.setProductId(basProduct.getProductId());
mydoJobDetail.setInQuantity("1");
mydoJobDetail.setSpare1(xh);
mydoJobDetail.setSpare2(nw);
mydoJobDetail.setSpare3(color);
mydoJobDetail.setSpare4(xlh);
mydoJobDetail.setSpare5(v);
mydoJobDetail.setSpare6(hz);
mydoJobDetail.setSpare7(ph);
mydoJobDetail.setSpare8(gw);
mydoJobDetail.setSpare9(fx);
mydoJobDetail.setUnit(jx);
mydoJobDetail.setSpec(basProduct.getSpec());
mydoJobDetail.setInOrOutId(inStockId);
mydoJobDetail.setInOrOutDId(inStockDetailId);
mydoJobDetail.setStockinId(inStockId);
mydoJobDetailService.insertMydoJobDetail(mydoJobDetail);
//修改货位状态
basCargoSpace.setStatus("3");
basCargoSpaceService.updateBasCargoSpace(basCargoSpace);
//type=1是手持机调用
if (!"1".equals(requestEnter.getType())) {
mydoJob.setStatus("3");
mydoJobService.updateMydoJob(mydoJob);
}
//todo 创建工艺入库单
if ("2".equals(requestEnter.getFloor())){
AjaxResult workshopInboundOrder = toErpService.createWorkshopInboundOrder(basProduct);
if (!workshopInboundOrder.isSuccess()){
throw new RuntimeException("创建工单失败");
}
}
//修改作业状态为正执行
result.put("jobId", mydoJob.getJobId());
result.put("taskNo", mydoJob.getTaskNo());
result.put("cargoSpaceId", mydoJob.getCargoSpaceId());
result.put("roadwayId", mydoJob.getRoadwayId());
result.put("entranceId", mydoJob.getEntranceId());
result.put("inOrOut", mydoJob.getInOrOut());
return AjaxResult.success(result);
}
private String getRoadway(int size) {