入库部分和接口

This commit is contained in:
张怡蓉
2026-01-05 16:09:50 +08:00
parent f5f4d1007a
commit 9ffd5c01a3
25 changed files with 504 additions and 202 deletions

View File

@@ -2,6 +2,7 @@ package com.ruoyi.api.controller;
import com.ruoyi.api.service.IToErpService;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.log.service.IRequestLogService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@@ -16,13 +17,21 @@ public class ToErpApiController {
@Autowired
private IToErpService toErpService;
@Autowired
private IRequestLogService requestLogService;
/**
* 接收入出库通知单
*/
@PostMapping("/receiveDeliveryNotice")
@ResponseBody
public AjaxResult receiveDeliveryNotice(@RequestBody DeliveryNoticeVo deliveryNoticeVo) {
return toErpService.receiveDeliveryNotice(deliveryNoticeVo);
AjaxResult ajaxResult = toErpService.receiveDeliveryNotice(deliveryNoticeVo);
requestLogService.insertRequestLog(requestLogService.getRequestLog(deliveryNoticeVo.toString(), "接收入出库通知单", ajaxResult));
return ajaxResult;
}
@@ -30,7 +39,9 @@ public class ToErpApiController {
* 回传其他出入库单
*/
// @Scheduled(fixedDelay = 1500)
public void callbackTransferBill() {
toErpService.callbackTransferBill();
@RequestMapping("/callbackDeliveryNotice")
@ResponseBody
public AjaxResult callbackDeliveryNotice(String billNo) {
return toErpService.callbackDeliveryNotice(billNo);
}
}

View File

@@ -13,8 +13,12 @@ import lombok.ToString;
@NoArgsConstructor
@ToString
public class DeliveryNoticeItemVo {
/** 行号 */
private String lineNo;
/** 单据号 */
private String billNo;
/** 存货编码 */
private String inventoryCode;
/** 存货名称 */

View File

@@ -12,7 +12,7 @@ public interface IToErpService {
AjaxResult receiveDeliveryNotice(DeliveryNoticeVo deliveryNoticeVo);
void callbackTransferBill();
AjaxResult callbackDeliveryNotice(String billNo);
AjaxResult createWorkshopInboundOrder(BasProduct basProduct);
}

View File

@@ -14,6 +14,8 @@ import com.ruoyi.in.stockin.domain.InStockin;
import com.ruoyi.in.stockin.service.IInStockinService;
import com.ruoyi.in.stockindetail.domain.InStockinDetail;
import com.ruoyi.in.stockindetail.service.IInStockinDetailService;
import com.ruoyi.in.stockinfinish.domain.InStockinFinish;
import com.ruoyi.in.stockinfinish.service.IInStockinFinishService;
import com.ruoyi.job.mydojob.service.IMydoJobService;
import com.ruoyi.job.mydojobdetail.domain.MydoJobDetail;
import com.ruoyi.job.mydojobdetail.service.IMydoJobDetailService;
@@ -25,7 +27,9 @@ import com.ruoyi.out.outStockoutDetail.domain.OutStockoutDetail;
import com.ruoyi.out.outStockoutDetail.service.IOutStockoutDetailService;
import com.ruoyi.out.outStockoutDetail.mapper.OutStockoutDetailMapper;
import com.ruoyi.out.outStockout.mapper.OutStockoutMapper;
import io.swagger.v3.oas.models.security.SecurityScheme;
import org.apache.pdfbox.pdmodel.interactive.viewerpreferences.PDViewerPreferences;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -65,6 +69,9 @@ public class ToErpServiceImpl implements IToErpService {
@Autowired
private IOutStockoutDetailService outStockoutDetailService;
@Autowired
private IInStockinFinishService inStockinFinishService;
private static final String TO_ERP_URL = "http://192.168.1.100:8080/api/";
//todo 需要调试
@@ -119,6 +126,9 @@ public class ToErpServiceImpl implements IToErpService {
if ("2".equals(opType) && exist == null) {
return AjaxResult.error("单据不存在,无法修改");
}
if("1".equals(opType) && exist != null){
return AjaxResult.error("单据已存在,请勿重复添加");
}
if (exist != null && "3".equals(exist.getStatus()) && "2".equals(opType)) {
return AjaxResult.error("单据已执行,禁止修改");
}
@@ -149,8 +159,8 @@ public class ToErpServiceImpl implements IToErpService {
inStockinDetailService.deleteInStockinDetailByStockinGuid(inStockin.getStockinGuid());
}
List<DeliveryNoticeItemVo> items = deliveryNoticeVo.getDetailList();
List<InStockinDetail> detailList = new ArrayList<>();
int i = 1;
for (DeliveryNoticeItemVo item : items) {
InStockinDetail detail = new InStockinDetail();
detail.setStockinGuid(inStockin.getStockinGuid());
@@ -162,13 +172,16 @@ public class ToErpServiceImpl implements IToErpService {
detail.setUnit(item.getUnit());
detail.setQuantity(item.getQuantity());
detail.setLotNo(item.getLotNo());
detail.setStockStatus("0");
detail.setSpare1(item.getLevelRelation());
detail.setSpare2(item.getUpperMaterial());
detail.setSpare3(item.getTopMaterial());
detail.setRemark(item.getRemark());
detail.setAssignNum("0");
detail.setScanNum("0");
detailList.add(detail);
i++;
inStockinDetailService.insertInStockinDetail(detail);
}
inStockinDetailService.insertInStockinDetailList(detailList);
return AjaxResult.success();
}
}
@@ -182,14 +195,14 @@ public class ToErpServiceImpl implements IToErpService {
// 删除操作(操作类型3)
if ("3".equals(opType)) {
if (exist == null) {
return AjaxResult.success();
return AjaxResult.error("单据不存在");
}
if ("3".equals(exist.getStatus())) {
return AjaxResult.error("单据已完成,禁止删除");
return AjaxResult.error("单据已执行,禁止删除");
}
OutStockoutDetail q = new OutStockoutDetail();
q.setStockoutId(deliveryNoticeVo.getBillNo());
List<OutStockoutDetail> details = outStockoutDetailService.selectOutStockoutDetailList(q);
OutStockoutDetail outStockoutDetail = new OutStockoutDetail();
outStockoutDetail.setStockoutId(deliveryNoticeVo.getBillNo());
List<OutStockoutDetail> details = outStockoutDetailService.selectOutStockoutDetailList(outStockoutDetail);
if (details != null && !details.isEmpty()) {
String[] ids = details.stream().map(OutStockoutDetail::getStockoutDetailId).toArray(String[]::new);
outStockoutDetailService.deleteOutStockoutDetailByStockoutDetailIds(ids);
@@ -203,15 +216,19 @@ public class ToErpServiceImpl implements IToErpService {
if ("2".equals(opType) && exist == null) {
return AjaxResult.error("单据不存在,无法修改");
}
if (exist != null && "3".equals(exist.getStatus())) {
return AjaxResult.error("单据已完成,禁止修改");
if ("1".equals(opType) && exist != null){
return AjaxResult.error("单据已存在,请勿重复添加");
}
if (exist != null && "3".equals(exist.getStatus()) && "2".equals(opType) ) {
return AjaxResult.error("单据已执行,禁止修改");
}
OutStockout out = exist != null ? exist : new OutStockout();
if (exist == null) {
out.setStockoutGuid(UUID.randomUUID().toString());
}
out.setStockoutId(deliveryNoticeVo.getBillNo());
out.setOutType(deliveryNoticeVo.getOutType());
out.setOutType(deliveryNoticeVo.getBillType());
out.setCreateDate(deliveryNoticeVo.getBillDate());
out.setCreateManId(deliveryNoticeVo.getCreateMan());
out.setStatus("1");
@@ -219,6 +236,13 @@ public class ToErpServiceImpl implements IToErpService {
out.setStockoutSource("1");
out.setDepartmentNo(deliveryNoticeVo.getProjectNo());
out.setCustomerNo(deliveryNoticeVo.getCustomerId());
out.setClassNowId(deliveryNoticeVo.getCustomerName());
out.setSpare1(deliveryNoticeVo.getContractNo());//合同号
out.setSpare2(deliveryNoticeVo.getSalesOrderNo());//销售订单号
out.setSpare3(deliveryNoticeVo.getApproveDate());//审核时间
out.setSpare4(deliveryNoticeVo.getApproveMan());//审核人
out.setSpare5(deliveryNoticeVo.getRemark());
if (exist == null) {
outStockoutService.insertOutStockout(out);
} else {
@@ -231,22 +255,32 @@ public class ToErpServiceImpl implements IToErpService {
outStockoutDetailService.deleteOutStockoutDetailByStockoutDetailIds(ids);
}
}
int i = 1;
for (DeliveryNoticeItemVo item : deliveryNoticeVo.getDetailList()) {
OutStockoutDetail d = new OutStockoutDetail();
String line = item.getLineNo() != null ? item.getLineNo() : String.valueOf(i);
d.setStockoutDetailId(out.getStockoutId()+"-"+line);
d.setStockoutDetailId(item.getLineNo());
d.setStockoutGuid(out.getStockoutGuid());
d.setStockoutId(out.getStockoutId());
d.setProductId(item.getInventoryCode());
d.setProductId(item.getInventoryCode());
d.setLotNo(item.getLotNo());
d.setSpec(item.getSpecModel());
d.setUnit(item.getUnit());
d.setSpare1(item.getLevelRelation());
d.setSpare2(item.getUpperMaterial());
d.setSpare3(item.getTopMaterial());
d.setRemark(item.getRemark());
try {
d.setQuantity(new BigDecimal(item.getQuantity()));
d.setAllotQuantity(BigDecimal.ZERO);
d.setAssignNum(BigDecimal.ZERO);
} catch (Exception e) {
d.setQuantity(BigDecimal.ZERO);
}
outStockoutDetailService.insertOutStockoutDetail(d);
i++;
}
return AjaxResult.success();
}
@@ -257,19 +291,63 @@ public class ToErpServiceImpl implements IToErpService {
@Override
public void callbackTransferBill() {
TransferBillCallback param = new TransferBillCallback();
param.setStatus("0");
List<TransferBillCallback> list = transferBillCallbackService.selectTransferBillCallbackList(param);
for (TransferBillCallback transferBillCallback : list) {
//todo 请求其他出入库单回传接口
AjaxResult otherInOutboundOrder = createOtherInOutboundOrder(transferBillCallback);
if (otherInOutboundOrder.isSuccess()){
transferBillCallback.setStatus("1");
transferBillCallback.setFinishTime(DateUtil.formatDateTime(new Date()));
transferBillCallbackService.updateTransferBillCallback(transferBillCallback);
public AjaxResult callbackDeliveryNotice(String billNo) {
InStockin inStockin = null;
inStockin = inStockinService.selectInStockinByStockinId(billNo);
if(inStockin==null) {
InStockinFinish inStockinFinish = inStockinFinishService.selectInStockinFinishByStockinId(billNo);
if (inStockinFinish == null) {
return AjaxResult.error("单据不存在");
}else{
//将inStockinFinish对象中的所有值赋给inStockin
inStockin = new InStockin();
BeanUtils.copyProperties(inStockinFinish, inStockin);
}
}
DeliveryNoticeVo deliveryNoticeVo = new DeliveryNoticeVo();
deliveryNoticeVo.setBillNo(inStockin.getStockinId());
deliveryNoticeVo.setBillType(inStockin.getInType());
deliveryNoticeVo.setBillDate(inStockin.getCreateDate());
deliveryNoticeVo.setCreateMan(inStockin.getCreateManId());
deliveryNoticeVo.setWarehouseId(inStockin.getWarehouseId());
deliveryNoticeVo.setProjectNo(inStockin.getDepartmentNo());
deliveryNoticeVo.setCustomerId(inStockin.getSupplierNo());
deliveryNoticeVo.setCustomerName(inStockin.getClassNo()); // 对应receiveDeliveryNotice中的映射
deliveryNoticeVo.setContractNo(inStockin.getSpare1());
deliveryNoticeVo.setSalesOrderNo(inStockin.getSpare2());
deliveryNoticeVo.setApproveDate(inStockin.getSpare3());
deliveryNoticeVo.setApproveMan(inStockin.getSpare4());
deliveryNoticeVo.setRemark(inStockin.getSpare5());
InStockinDetail inStockinDetailParam = new InStockinDetail();
inStockinDetailParam.setStockinId(billNo);
List<InStockinDetail> inStockinDetails = inStockinDetailService.selectInStockinDetailList(inStockinDetailParam);
List<DeliveryNoticeItemVo> detailList = new ArrayList<>();
if (inStockinDetails != null && !inStockinDetails.isEmpty()) {
for (InStockinDetail detail : inStockinDetails) {
DeliveryNoticeItemVo item = new DeliveryNoticeItemVo();
item.setLineNo(detail.getStockinDetailId());
item.setBillNo(detail.getStockinId());
item.setInventoryCode(detail.getProductId());
item.setInventoryName(detail.getProductName());
item.setSpecModel(detail.getSpec());
item.setUnit(detail.getUnit());
item.setQuantity(detail.getAssignNum());
item.setLotNo(detail.getLotNo());
item.setLevelRelation(detail.getSpare1());
item.setUpperMaterial(detail.getSpare2());
item.setTopMaterial(detail.getSpare3());
item.setRemark(detail.getRemark());
detailList.add(item);
}
}
deliveryNoticeVo.setDetailList(detailList);
return AjaxResult.success(deliveryNoticeVo);
}
@Override

View File

@@ -43,7 +43,7 @@ public class ToWcsServiceImpl implements IToWcsService {
@Override
@Scheduled(fixedDelay=1500)
// @Scheduled(fixedDelay=1500)
public void pushOutMydoJob() {
//查询所有未推送的料箱出库作业
MydoJob mydoJobParam = new MydoJob();

View File

@@ -20,6 +20,9 @@ public interface InStockinMapper
*/
public InStockin selectInStockinByStockinGuid(String stockinGuid);
public InStockin selectInStockinByStockinId(String stockinId);
/**
* 查询入库单据列表
*

View File

@@ -21,6 +21,7 @@ public interface IInStockinService
* @return 入库单据
*/
public InStockin selectInStockinByStockinGuid(String stockinGuid);
public InStockin selectInStockinByStockinId(String stockinId);
/**
* 查询入库单据列表

View File

@@ -50,6 +50,11 @@ public class InStockinServiceImpl implements IInStockinService
return inStockinMapper.selectInStockinByStockinGuid(stockinGuid);
}
@Override
public InStockin selectInStockinByStockinId(String stockinId) {
return inStockinMapper.selectInStockinByStockinId(stockinId);
}
/**
* 查询入库单据列表
*

View File

@@ -20,6 +20,7 @@ public interface InStockinFinishMapper
* @return 历史入库单据主信息
*/
public InStockinFinish selectInStockinFinishByStockinGuid(String stockinGuid);
public InStockinFinish selectInStockinFinishByStockinId(String stockinId);
/**
* 查询历史入库单据主信息列表

View File

@@ -20,6 +20,7 @@ public interface IInStockinFinishService
* @return 历史入库单据主信息
*/
public InStockinFinish selectInStockinFinishByStockinGuid(String stockinGuid);
public InStockinFinish selectInStockinFinishByStockinId(String stockinId);
/**
* 查询历史入库单据主信息列表

View File

@@ -34,6 +34,13 @@ public class InStockinFinishServiceImpl implements IInStockinFinishService
return inStockinFinishMapper.selectInStockinFinishByStockinGuid(stockinGuid);
}
@Override
public InStockinFinish selectInStockinFinishByStockinId(String stockinId)
{
return inStockinFinishMapper.selectInStockinFinishByStockinId(stockinId);
}
/**
* 查询历史入库单据主信息列表
*

View File

@@ -62,11 +62,9 @@ public class RequestLogServiceImpl implements IRequestLogService
@Override
public int insertRequestLog(RequestLog requestLog)
{
if (requestLog.getIsSuccessful().equals("1")){
return requestLogMapper.insertRequestLog(requestLog);
}else {
return 0;
}
}
/**

View File

@@ -82,6 +82,15 @@ public class OutStockout extends BaseEntity
@Excel(name = "确认时间")
private String finishDate;
private String spare1;
private String spare2;
private String spare3;
private String spare4;
private String spare5;
private String customerName;
@@ -299,24 +308,76 @@ public class OutStockout extends BaseEntity
return erpStockoutId;
}
public String getSpare1() {
return spare1;
}
public void setSpare1(String spare1) {
this.spare1 = spare1;
}
public String getSpare2() {
return spare2;
}
public void setSpare2(String spare2) {
this.spare2 = spare2;
}
public String getSpare3() {
return spare3;
}
public void setSpare3(String spare3) {
this.spare3 = spare3;
}
public String getSpare4() {
return spare4;
}
public void setSpare4(String spare4) {
this.spare4 = spare4;
}
public String getSpare5() {
return spare5;
}
public void setSpare5(String spare5) {
this.spare5 = spare5;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("stockoutGuid", getStockoutGuid())
.append("stockoutId", getStockoutId())
.append("outType", getOutType())
.append("createDate", getCreateDate())
.append("departmentNo", getDepartmentNo())
.append("customerNo", getCustomerNo())
.append("createManId", getCreateManId())
.append("status", getStatus())
.append("stockoutSource", getStockoutSource())
.append("warehouseId", getWarehouseId())
.append("classNowId", getClassNowId())
.append("exitId", getExitId())
.append("carNumber", getCarNumber())
.append("FID", getFID())
.append("erpStockoutId", getErpStockoutId())
.toString();
return "OutStockout{" +
"stockoutGuid='" + stockoutGuid + '\'' +
", stockoutId='" + stockoutId + '\'' +
", outType='" + outType + '\'' +
", createDate='" + createDate + '\'' +
", departmentNo='" + departmentNo + '\'' +
", customerNo='" + customerNo + '\'' +
", createManId='" + createManId + '\'' +
", status='" + status + '\'' +
", stockoutSource='" + stockoutSource + '\'' +
", warehouseId='" + warehouseId + '\'' +
", classNowId='" + classNowId + '\'' +
", exitId='" + exitId + '\'' +
", carNumber='" + carNumber + '\'' +
", FID='" + FID + '\'' +
", erpStockoutId='" + erpStockoutId + '\'' +
", startDate='" + startDate + '\'' +
", finishDate='" + finishDate + '\'' +
", spare1='" + spare1 + '\'' +
", spare2='" + spare2 + '\'' +
", spare3='" + spare3 + '\'' +
", spare4='" + spare4 + '\'' +
", spare5='" + spare5 + '\'' +
", customerName='" + customerName + '\'' +
", warehouseName='" + warehouseName + '\'' +
", productId='" + productId + '\'' +
", productName='" + productName + '\'' +
", typeData=" + typeData +
'}';
}
}

View File

@@ -171,6 +171,108 @@ public class OutStockoutDetail extends BaseEntity
@Excel(name = "订单号")
private String orderId;
@Excel(name = "型号")
private String spare1;
/** 备用字段2 */
@Excel(name = "净重")
private String spare2;
/** 备用字段3 */
@Excel(name = "颜色")
private String spare3;
/** 备用字段4 */
@Excel(name = "序列号")
private String spare4;
/** 备用字段5 */
@Excel(name = "电压")
private String spare5;
/** 备用字段6 */
@Excel(name = "功率")
private String spare6;
@Excel(name = "相位")
private String spare7;
@Excel(name = "毛重")
private String spare8;
private String spare9;
public String getSpare1() {
return spare1;
}
public void setSpare1(String spare1) {
this.spare1 = spare1;
}
public String getSpare2() {
return spare2;
}
public void setSpare2(String spare2) {
this.spare2 = spare2;
}
public String getSpare3() {
return spare3;
}
public void setSpare3(String spare3) {
this.spare3 = spare3;
}
public String getSpare4() {
return spare4;
}
public void setSpare4(String spare4) {
this.spare4 = spare4;
}
public String getSpare5() {
return spare5;
}
public void setSpare5(String spare5) {
this.spare5 = spare5;
}
public String getSpare6() {
return spare6;
}
public void setSpare6(String spare6) {
this.spare6 = spare6;
}
public String getSpare7() {
return spare7;
}
public void setSpare7(String spare7) {
this.spare7 = spare7;
}
public String getSpare8() {
return spare8;
}
public void setSpare8(String spare8) {
this.spare8 = spare8;
}
public String getSpare9() {
return spare9;
}
public void setSpare9(String spare9) {
this.spare9 = spare9;
}
public String getVoltage() {
return voltage;
}

View File

@@ -54,7 +54,7 @@ public class OutStockoutDetailServiceImpl implements IOutStockoutDetailService
@Override
public int insertOutStockoutDetail(OutStockoutDetail outStockoutDetail)
{
outStockoutDetail.setCreateTime(DateUtils.getNowDate());
// outStockoutDetail.setCreateTime(DateUtils.getNowDate());
return outStockoutDetailMapper.insertOutStockoutDetail(outStockoutDetail);
}

View File

@@ -107,7 +107,10 @@ public class PdaServiceImp implements PdaService {
@Override
public AjaxResult confirmIn(String trayCode) {
//如果有出库作业,修改作业类型改为合盘入库类型
//如果有出库作业,修改作业类型改为合盘入库类型,合盘出库放历史表
//如果没有出库作业,正常生成入库作业
return null;
}