diff --git a/ruoyi-modules/ruoyi-wms/pom.xml b/ruoyi-modules/ruoyi-wms/pom.xml
index fc33ca3c..33416f01 100644
--- a/ruoyi-modules/ruoyi-wms/pom.xml
+++ b/ruoyi-modules/ruoyi-wms/pom.xml
@@ -104,7 +104,10 @@
org.dromara
ruoyi-api-workflow
-
+
+ org.dromara
+ ruoyi-common-bus
+
diff --git a/ruoyi-modules/ruoyi-wms/src/main/java/org/dromara/wms/controller/WmsInStockBillController.java b/ruoyi-modules/ruoyi-wms/src/main/java/org/dromara/wms/controller/WmsInStockBillController.java
index 4e01efa9..4f5a4cef 100644
--- a/ruoyi-modules/ruoyi-wms/src/main/java/org/dromara/wms/controller/WmsInStockBillController.java
+++ b/ruoyi-modules/ruoyi-wms/src/main/java/org/dromara/wms/controller/WmsInStockBillController.java
@@ -65,7 +65,7 @@ public class WmsInStockBillController extends BaseController {
@SaCheckPermission("wms:inStockBill:query")
@GetMapping("/{inStockBillId}")
public R getInfo(@NotNull(message = "主键不能为空")
- @PathVariable("inStockBillId") Long inStockBillId) {
+ @PathVariable("inStockBillId") Long inStockBillId) {
return R.ok(wmsInStockBillService.queryById(inStockBillId));
}
@@ -115,4 +115,11 @@ public class WmsInStockBillController extends BaseController {
return R.ok(list);
}
+
+ @Log(title = "物料入库", businessType = BusinessType.UPDATE)
+ @RepeatSubmit()
+ @PostMapping("/submitFlowData")
+ public R submitFlowData(@Validated(EditGroup.class) @RequestBody WmsInStockBillBo bo) {
+ return toAjax(wmsInStockBillService.submitFlowData(bo));
+ }
}
diff --git a/ruoyi-modules/ruoyi-wms/src/main/java/org/dromara/wms/domain/WmsInStockDetails.java b/ruoyi-modules/ruoyi-wms/src/main/java/org/dromara/wms/domain/WmsInStockDetails.java
index 0d00f1a8..4491b2ff 100644
--- a/ruoyi-modules/ruoyi-wms/src/main/java/org/dromara/wms/domain/WmsInStockDetails.java
+++ b/ruoyi-modules/ruoyi-wms/src/main/java/org/dromara/wms/domain/WmsInStockDetails.java
@@ -76,9 +76,7 @@ public class WmsInStockDetails extends TenantEntity {
private String delFlag;
@TableField(exist = false)
- /**
- * SAP物料编码
- */
+ /// SAP物料编码
private String materialCode;
@TableField(exist = false)
/**
diff --git a/ruoyi-modules/ruoyi-wms/src/main/java/org/dromara/wms/domain/bo/WmsInStockBillBo.java b/ruoyi-modules/ruoyi-wms/src/main/java/org/dromara/wms/domain/bo/WmsInStockBillBo.java
index 0befb576..ed0f6ca8 100644
--- a/ruoyi-modules/ruoyi-wms/src/main/java/org/dromara/wms/domain/bo/WmsInStockBillBo.java
+++ b/ruoyi-modules/ruoyi-wms/src/main/java/org/dromara/wms/domain/bo/WmsInStockBillBo.java
@@ -1,17 +1,20 @@
package org.dromara.wms.domain.bo;
-import jdk.dynalink.linker.LinkerServices;
-import org.dromara.wms.domain.WmsInStockBill;
-import org.dromara.common.mybatis.core.domain.BaseEntity;
-import org.dromara.common.core.validate.AddGroup;
-import org.dromara.common.core.validate.EditGroup;
+import cn.hutool.core.util.ObjectUtil;
import io.github.linpeilie.annotations.AutoMapper;
+import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.EqualsAndHashCode;
-import jakarta.validation.constraints.*;
+import org.dromara.common.core.validate.EditGroup;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import org.dromara.wms.domain.WmsInStockBill;
import org.dromara.wms.domain.WmsInStockDetails;
+import org.dromara.workflow.api.domain.RemoteFlowInstanceBizExt;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
+import java.util.Objects;
/**
* 物料入库业务对象 wms_in_stock_bill
@@ -27,7 +30,7 @@ public class WmsInStockBillBo extends BaseEntity {
/**
* 入库单ID
*/
- @NotNull(message = "入库单ID不能为空", groups = { EditGroup.class })
+ @NotNull(message = "入库单ID不能为空", groups = {EditGroup.class})
private Long inStockBillId;
/**
@@ -91,4 +94,30 @@ public class WmsInStockBillBo extends BaseEntity {
private String remark;
private List inStockDetailsList;
+
+ /**
+ * 流程变量,前端会提交一个元素{'entity': {业务详情数据对象}}
+ */
+ private Map variables;
+
+ /**
+ * 流程业务扩展信息
+ */
+ private RemoteFlowInstanceBizExt bizExt;
+
+ public Map getVariables() {
+ if (variables == null) {
+ return new HashMap<>(16);
+ }
+ variables.entrySet().removeIf(entry -> Objects.isNull(entry.getValue()));
+ return variables;
+ }
+
+ public RemoteFlowInstanceBizExt getBizExt() {
+ if (ObjectUtil.isNull(bizExt)) {
+ bizExt = new RemoteFlowInstanceBizExt();
+ }
+ return bizExt;
+ }
+
}
diff --git a/ruoyi-modules/ruoyi-wms/src/main/java/org/dromara/wms/domain/vo/WmsInStockDetailsVo.java b/ruoyi-modules/ruoyi-wms/src/main/java/org/dromara/wms/domain/vo/WmsInStockDetailsVo.java
index 3a16a7a8..40f572c6 100644
--- a/ruoyi-modules/ruoyi-wms/src/main/java/org/dromara/wms/domain/vo/WmsInStockDetailsVo.java
+++ b/ruoyi-modules/ruoyi-wms/src/main/java/org/dromara/wms/domain/vo/WmsInStockDetailsVo.java
@@ -3,8 +3,6 @@ package org.dromara.wms.domain.vo;
import org.dromara.wms.domain.WmsInStockDetails;
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
import cn.idev.excel.annotation.ExcelProperty;
-import org.dromara.common.excel.annotation.ExcelDictFormat;
-import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
diff --git a/ruoyi-modules/ruoyi-wms/src/main/java/org/dromara/wms/mapper/WmsInStockBillMapper.java b/ruoyi-modules/ruoyi-wms/src/main/java/org/dromara/wms/mapper/WmsInStockBillMapper.java
index e6de8089..af3abc27 100644
--- a/ruoyi-modules/ruoyi-wms/src/main/java/org/dromara/wms/mapper/WmsInStockBillMapper.java
+++ b/ruoyi-modules/ruoyi-wms/src/main/java/org/dromara/wms/mapper/WmsInStockBillMapper.java
@@ -1,10 +1,5 @@
package org.dromara.wms.mapper;
-import java.util.List;
-import com.github.yulichang.wrapper.MPJLambdaWrapper;
-import com.baomidou.mybatisplus.core.toolkit.Constants;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import org.apache.ibatis.annotations.Param;
import org.dromara.wms.domain.WmsInStockBill;
import org.dromara.wms.domain.vo.WmsInStockBillVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
@@ -16,6 +11,7 @@ import org.springframework.stereotype.Repository;
* @author Yinq
* @date 2025-10-28
*/
+@Repository
public interface WmsInStockBillMapper extends BaseMapperPlus {
int selectCountNowInStore();
diff --git a/ruoyi-modules/ruoyi-wms/src/main/java/org/dromara/wms/service/IWmsInStockBillService.java b/ruoyi-modules/ruoyi-wms/src/main/java/org/dromara/wms/service/IWmsInStockBillService.java
index 984d0dd3..5bffadec 100644
--- a/ruoyi-modules/ruoyi-wms/src/main/java/org/dromara/wms/service/IWmsInStockBillService.java
+++ b/ruoyi-modules/ruoyi-wms/src/main/java/org/dromara/wms/service/IWmsInStockBillService.java
@@ -66,4 +66,6 @@ public interface IWmsInStockBillService {
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection ids, Boolean isValid);
+
+ boolean submitFlowData(WmsInStockBillBo bo);
}
diff --git a/ruoyi-modules/ruoyi-wms/src/main/java/org/dromara/wms/service/impl/WmsInStockBillServiceImpl.java b/ruoyi-modules/ruoyi-wms/src/main/java/org/dromara/wms/service/impl/WmsInStockBillServiceImpl.java
index d618fb52..b9939909 100644
--- a/ruoyi-modules/ruoyi-wms/src/main/java/org/dromara/wms/service/impl/WmsInStockBillServiceImpl.java
+++ b/ruoyi-modules/ruoyi-wms/src/main/java/org/dromara/wms/service/impl/WmsInStockBillServiceImpl.java
@@ -4,12 +4,14 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.toolkit.JoinWrappers;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import lombok.RequiredArgsConstructor;
+import org.apache.dubbo.config.annotation.DubboReference;
import org.dromara.common.core.enums.FormatsType;
import org.dromara.common.core.utils.DateUtils;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.tenant.helper.TenantHelper;
import org.dromara.wms.domain.WmsInStockBill;
import org.dromara.wms.domain.WmsInStockDetails;
import org.dromara.wms.domain.bo.WmsInStockBillBo;
@@ -17,10 +19,14 @@ import org.dromara.wms.domain.vo.WmsInStockBillVo;
import org.dromara.wms.mapper.WmsInStockBillMapper;
import org.dromara.wms.mapper.WmsInStockDetailsMapper;
import org.dromara.wms.service.IWmsInStockBillService;
+import org.dromara.workflow.api.RemoteWorkflowService;
+import org.dromara.workflow.api.domain.RemoteStartProcess;
+import org.dromara.workflow.api.event.ProcessEvent;
+import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Service;
-import java.time.LocalDate;
import java.util.Collection;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -36,6 +42,8 @@ public class WmsInStockBillServiceImpl implements IWmsInStockBillService {
private final WmsInStockBillMapper baseMapper;
private final WmsInStockDetailsMapper wmsInStockDetailsMapper;
+ @DubboReference(timeout = 30000)//超时时间
+ private RemoteWorkflowService remoteWorkflowService;//流程
/**
* 查询物料入库
@@ -108,9 +116,6 @@ public class WmsInStockBillServiceImpl implements IWmsInStockBillService {
} else {
add.setInStockCode("RK" + dateTimeNow + "-" + "001");
}
-
-
- add.setFlowStatus("就绪");
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
Long inStockBillId = add.getInStockBillId();
@@ -118,8 +123,6 @@ public class WmsInStockBillServiceImpl implements IWmsInStockBillService {
// 设置入库单明细的入库单ID
inStockDetailsList.forEach(item -> item.setInStockBillId(inStockBillId));
wmsInStockDetailsMapper.insert(inStockDetailsList);
-
-
}
return flag;
}
@@ -133,16 +136,14 @@ public class WmsInStockBillServiceImpl implements IWmsInStockBillService {
@Override
public Boolean updateByBo(WmsInStockBillBo bo) {
WmsInStockBill update = MapstructUtils.convert(bo, WmsInStockBill.class);
- // validEntityBeforeSave(update);
- return baseMapper.updateById(update) > 0;
- }
+ boolean flag = baseMapper.updateById(update) > 0;
+ if (flag) {
- /**
- * 保存前的数据校验
- */
- /* private void validEntityBeforeSave(WmsInStockBill entity){
- //TODO 做一些数据校验,如唯一约束
- }*/
+ List inStockDetailsList = bo.getInStockDetailsList();
+ wmsInStockDetailsMapper.updateBatchById(inStockDetailsList);
+ }
+ return flag;
+ }
/**
* 校验并批量删除物料入库信息
@@ -158,4 +159,43 @@ public class WmsInStockBillServiceImpl implements IWmsInStockBillService {
}*/
return baseMapper.deleteByIds(ids) > 0;
}
+
+ @Override
+ public boolean submitFlowData(WmsInStockBillBo bo) {
+
+
+ RemoteStartProcess startProcess = new RemoteStartProcess();
+ startProcess.setBusinessId(bo.getInStockBillId().toString());
+ startProcess.setFlowCode("wms_in");
+ // startProcess.setStartUserId(loginUser.getUserId().toString());
+
+ // 设置流程变量
+ Map variables = new HashMap<>();
+ variables.put("inStockBillId", bo.getInStockBillId());
+ variables.put("inStockCode", bo.getInStockCode());
+ variables.put("inStockType", bo.getInStockType());
+ // 可以根据需要添加更多业务变量
+ startProcess.setVariables(variables);
+ startProcess.setBizExt(bo.getBizExt());
+ // 使用正确的方法发起流程
+ boolean flag = remoteWorkflowService.startCompleteTask(startProcess);
+
+ if (flag) {
+ // 更新业务数据的流程状态
+ WmsInStockBill update = new WmsInStockBill();
+ update.setInStockBillId(bo.getInStockBillId());
+ update.setFlowStatus("waiting"); // 流程进行中状态
+ baseMapper.updateById(update);
+ }
+
+ return flag;
+ }
+
+ @EventListener(condition = "#processEvent.flowCode =='wms_in'")
+ public void processHandler(ProcessEvent processEvent) {
+ TenantHelper.dynamic(processEvent.getTenantId(), () -> {
+ System.out.println("当前任务执行了: " + processEvent.toString());
+
+ });
+ }
}
diff --git a/ruoyi-modules/ruoyi-wms/src/main/resources/banner.txt b/ruoyi-modules/ruoyi-wms/src/main/resources/banner.txt
index fbd45f53..0df3673a 100644
--- a/ruoyi-modules/ruoyi-wms/src/main/resources/banner.txt
+++ b/ruoyi-modules/ruoyi-wms/src/main/resources/banner.txt
@@ -1,10 +1,10 @@
Spring Boot Version: ${spring-boot.version}
Spring Application Name: ${spring.application.name}
- _ _
- (_) | |
- _ __ _ _ ___ _ _ _ ______ ___ _ _ ___ | |_ ___ _ __ ___
-| '__|| | | | / _ \ | | | || ||______|/ __|| | | |/ __|| __| / _ \| '_ ` _ \
-| | | |_| || (_) || |_| || | \__ \| |_| |\__ \| |_ | __/| | | | | |
-|_| \__,_| \___/ \__, ||_| |___/ \__, ||___/ \__| \___||_| |_| |_|
- __/ | __/ |
- |___/ |___/
\ No newline at end of file
+ _
+ (_)
+ _ __ _ _ ___ _ _ _ ______
+| '__|| | | | / _ \ | | | || ||______| \\\ -- ///
+| | | |_| || (_) || |_| || | | \\\ ///\\\ ///
+|_| \__,_| \___/ \__, ||_| | \\\ /// \\\ ///
+ __/ | \\\/// \\\///
+ |___/ ----- -----