Browse Source

盘盈入库流程接口开发完成

盘亏出库模块、流程接口开发完成
PC盘库管理测试、选择库位增加编码删除状态修改调试完成
master
God 9 months ago
parent
commit
0e3d9d4cbd
  1. 60
      yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsInventoryProfitinRest.java
  2. 68
      yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsInventoryProfitoutRest.java
  3. 4
      yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouserack/WmsWarehouseRackMapper.xml
  4. 18
      yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbill/WmsInventoryCheckbillMapper.xml
  5. 13
      yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbill/WmsInventoryCheckbillService.java
  6. 4
      yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryprofitin/WmsInventoryProfitinMapper.java
  7. 18
      yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryprofitin/WmsInventoryProfitinMapper.xml
  8. 321
      yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryprofitin/WmsInventoryProfitinService.java
  9. 35
      yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryprofitin/flowable/CompleteInventoryProfitinDto.java
  10. 23
      yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryprofitin/flowable/InventoryProfitinDelegateQuery.java
  11. 18
      yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryprofitin/flowable/InventoryProfitinNodeQuery.java
  12. 24
      yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryprofitin/flowable/InventoryProfitinNodeVo.java
  13. 43
      yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryprofitin/flowable/InventoryProfitinTaskQuery.java
  14. 20
      yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryprofitin/flowable/SubmitInventoryProfitinDto.java
  15. 21
      yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryprofitout/WmsInventoryProfitoutDetailsVo.java
  16. 16
      yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryprofitout/WmsInventoryProfitoutDto.java
  17. 7
      yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryprofitout/WmsInventoryProfitoutMapper.java
  18. 37
      yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryprofitout/WmsInventoryProfitoutMapper.xml
  19. 50
      yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryprofitout/WmsInventoryProfitoutQuery.java
  20. 473
      yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryprofitout/WmsInventoryProfitoutService.java
  21. 54
      yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryprofitout/WmsInventoryProfitoutVo.java
  22. 35
      yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryprofitout/flowable/CompleteInventoryProfitoutDto.java
  23. 23
      yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryprofitout/flowable/InventoryProfitoutDelegateQuery.java
  24. 18
      yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryprofitout/flowable/InventoryProfitoutNodeQuery.java
  25. 24
      yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryprofitout/flowable/InventoryProfitoutNodeVo.java
  26. 43
      yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryprofitout/flowable/InventoryProfitoutTaskQuery.java
  27. 20
      yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryprofitout/flowable/SubmitInventoryProfitoutDto.java
  28. 10
      yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryprofitoutdetail/WmsInventoryProfitoutDetailMapper.java
  29. 10
      yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryprofitoutdetail/WmsInventoryProfitoutDetailService.java
  30. 2
      yxt-wms-biz/src/main/java/com/yxt/wms/feign/flowable/flow/ProcDefEnum.java

60
yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsInventoryProfitinRest.java

@ -25,15 +25,23 @@
*********************************************************/
package com.yxt.wms.apiadmin.inventroy;
import cn.hutool.core.bean.BeanUtil;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
import com.yxt.wms.biz.inventory.wmsinventorycheckbill.flowable.*;
import com.yxt.wms.biz.inventory.wmsinventoryprofitin.*;
import com.yxt.wms.biz.inventory.wmsinventoryprofitin.flowable.*;
import com.yxt.wms.feign.flowable.flow.BusinessVariables;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.openfeign.SpringQueryMap;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.List;
@Api(tags = "盘盈入库申请")
@RestController
@RequestMapping("v1/wmsinventoryprofitin")
@ -69,4 +77,56 @@ public class WmsInventoryProfitinRest {
WmsInventoryProfitinDetailsVo vo = wmsInventoryProfitinService.fetchDetailsVoBySid(sid);
return rb.success().setData(vo);
}
@ApiOperation("提交")
@PostMapping("/submitApply")
public ResultBean submitApply(@Valid @RequestBody SubmitInventoryProfitinDto dto) {
return wmsInventoryProfitinService.submitApply(dto);
}
@ApiOperation(value = "办理(同意)")
@PostMapping("/complete")
public ResultBean complete(@Valid @RequestBody CompleteInventoryProfitinDto query) {
BusinessVariables bv = new BusinessVariables();
BeanUtil.copyProperties(query, bv);
bv.setModelId("");
return wmsInventoryProfitinService.complete(bv);
}
@ApiOperation(value = "获取上一个环节")
@GetMapping(value = "/getPreviousNodesForReject")
ResultBean<List<InventoryProfitinNodeVo>> getPreviousNodesForReject(@Valid @SpringQueryMap InventoryProfitinNodeQuery query) {
return wmsInventoryProfitinService.getPreviousNodesForReject(query);
}
@ApiOperation(value = "获取下一个环节")
@GetMapping(value = "/getNextNodesForSubmit")
ResultBean<List<InventoryProfitinNodeVo>> getNextNodesForSubmit(@Valid @SpringQueryMap InventoryProfitinNodeQuery query) {
return wmsInventoryProfitinService.getNextNodesForSubmit(query);
}
@ApiOperation(value = "驳回任务")
@PostMapping(value = "/reject")
public ResultBean taskReject(@Valid @RequestBody InventoryProfitinTaskQuery query) {
return wmsInventoryProfitinService.taskReject(query);
}
@ApiOperation(value = "撤回流程")
@PostMapping(value = "/revokeProcess")
public ResultBean revokeProcess(@Valid @RequestBody InventoryProfitinTaskQuery query) {
return wmsInventoryProfitinService.revokeProcess(query);
}
@ApiOperation(value = "终止任务")
@PostMapping(value = "/breakProcess")
public ResultBean breakProcess(@Valid @RequestBody InventoryProfitinTaskQuery query) {
return wmsInventoryProfitinService.breakProcess(query);
}
@ApiOperation(value = "加签")
@PostMapping(value = "/delegate")
@ResponseBody
public ResultBean delegate(@RequestBody InventoryProfitinDelegateQuery query) {
return wmsInventoryProfitinService.delegate(query);
}
}

68
yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsInventoryProfitoutRest.java

@ -25,15 +25,23 @@
*********************************************************/
package com.yxt.wms.apiadmin.inventroy;
import cn.hutool.core.bean.BeanUtil;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
import com.yxt.wms.biz.inventory.wmsinventoryprofitin.flowable.*;
import com.yxt.wms.biz.inventory.wmsinventoryprofitout.*;
import com.yxt.wms.biz.inventory.wmsinventoryprofitout.flowable.*;
import com.yxt.wms.feign.flowable.flow.BusinessVariables;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.openfeign.SpringQueryMap;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.List;
@Api(tags = "盘亏出库申请")
@RestController
@RequestMapping("v1/wmsinventoryprofitout")
@ -53,17 +61,13 @@ public class WmsInventoryProfitoutRest {
@ApiOperation("新增或修改")
@PostMapping("/save")
public ResultBean save(@RequestBody WmsInventoryProfitoutDto dto){
ResultBean rb = ResultBean.fireFail();
wmsInventoryProfitoutService.saveOrUpdateDto(dto);
return rb.success();
return wmsInventoryProfitoutService.saveOrUpdateDto(dto);
}
@ApiOperation("根据sid批量删除")
@DeleteMapping("/delBySids")
public ResultBean delBySids(@RequestBody String[] sids){
ResultBean rb = ResultBean.fireFail();
wmsInventoryProfitoutService.delBySids(sids);
return rb.success();
return wmsInventoryProfitoutService.delAll(sids);
}
@ApiOperation("根据SID获取一条记录")
@ -73,4 +77,56 @@ public class WmsInventoryProfitoutRest {
WmsInventoryProfitoutDetailsVo vo = wmsInventoryProfitoutService.fetchDetailsVoBySid(sid);
return rb.success().setData(vo);
}
@ApiOperation("提交")
@PostMapping("/submitApply")
public ResultBean submitApply(@Valid @RequestBody SubmitInventoryProfitoutDto dto) {
return wmsInventoryProfitoutService.submitApply(dto);
}
@ApiOperation(value = "办理(同意)")
@PostMapping("/complete")
public ResultBean complete(@Valid @RequestBody CompleteInventoryProfitoutDto query) {
BusinessVariables bv = new BusinessVariables();
BeanUtil.copyProperties(query, bv);
bv.setModelId("");
return wmsInventoryProfitoutService.complete(bv);
}
@ApiOperation(value = "获取上一个环节")
@GetMapping(value = "/getPreviousNodesForReject")
ResultBean<List<InventoryProfitoutNodeVo>> getPreviousNodesForReject(@Valid @SpringQueryMap InventoryProfitoutNodeQuery query) {
return wmsInventoryProfitoutService.getPreviousNodesForReject(query);
}
@ApiOperation(value = "获取下一个环节")
@GetMapping(value = "/getNextNodesForSubmit")
ResultBean<List<InventoryProfitoutNodeVo>> getNextNodesForSubmit(@Valid @SpringQueryMap InventoryProfitoutNodeQuery query) {
return wmsInventoryProfitoutService.getNextNodesForSubmit(query);
}
@ApiOperation(value = "驳回任务")
@PostMapping(value = "/reject")
public ResultBean taskReject(@Valid @RequestBody InventoryProfitoutTaskQuery query) {
return wmsInventoryProfitoutService.taskReject(query);
}
@ApiOperation(value = "撤回流程")
@PostMapping(value = "/revokeProcess")
public ResultBean revokeProcess(@Valid @RequestBody InventoryProfitoutTaskQuery query) {
return wmsInventoryProfitoutService.revokeProcess(query);
}
@ApiOperation(value = "终止任务")
@PostMapping(value = "/breakProcess")
public ResultBean breakProcess(@Valid @RequestBody InventoryProfitoutTaskQuery query) {
return wmsInventoryProfitoutService.breakProcess(query);
}
@ApiOperation(value = "加签")
@PostMapping(value = "/delegate")
@ResponseBody
public ResultBean delegate(@RequestBody InventoryProfitoutDelegateQuery query) {
return wmsInventoryProfitoutService.delegate(query);
}
}

4
yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouserack/WmsWarehouseRackMapper.xml

@ -51,8 +51,10 @@ where rackCode =#{rackCode} and locationSid =#{locationSid} and isDelete=0
<select id="getAllTypeByAreaSid" resultType="com.yxt.wms.biz.base.wmswarehouserack.WmsWarehouseRackVo">
SELECT
sid,
rackName
rackName,
rackCode
FROM wms_warehouse_rack
WHERE locationSid = #{areaSid}
AND isDelete = 0
</select>
</mapper>

18
yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbill/WmsInventoryCheckbillMapper.xml

@ -86,29 +86,29 @@
realCount * cost AS realAmount,
CASE
state
WHEN 0
THEN '正常'
WHEN 1
THEN '盘盈'
THEN '正常'
WHEN 2
THEN '盘盈'
WHEN 3
THEN '盘亏'
END AS state,
CASE
state
WHEN 0
THEN 0
WHEN 1
THEN profitCount
THEN 0
WHEN 2
THEN profitCount
WHEN 3
THEN loseCount
END AS profitAndLoseCount,
CASE
state
WHEN 0
THEN 0
WHEN 1
THEN profitCount * cost
THEN 0
WHEN 2
THEN profitCount * cost
WHEN 3
THEN loseCount * cost
END AS profitAndLoseAmount,
lossCount,

13
yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbill/WmsInventoryCheckbillService.java

@ -264,7 +264,7 @@ public class WmsInventoryCheckbillService extends MybatisBaseService<WmsInventor
public ResultBean<String> saveOrUpdateDto(WmsInventoryCheckbillDto dto) {
ResultBean rb = ResultBean.fireFail();
String nodeState = baseMapper.checkState(dto.getDeptSid());
if (!"已办结".equals(nodeState)) {
if (StringUtils.isNotBlank(nodeState) && !"已办结".equals(nodeState)) {
return rb.setMsg("存在盘点中数据,无法生成新的盘点单");
}
SysOrganizationVo deptVo = sysOrganizationFeign.fetchBySid(dto.getDeptSid()).getData();
@ -284,15 +284,18 @@ public class WmsInventoryCheckbillService extends MybatisBaseService<WmsInventor
billNo = Rule.getBillNo(billNo, 0);
}
dto.setBillNo(billNo);
String sid = this.insertByDto(dto);
List<WmsInventory> wmsInventories;
if ("01".equals(dto.getCheckTypeKey())) {
List<WmsInventory> wmsInventories = null;
if ("1".equals(dto.getCheckTypeKey())) {
//查询本部门指定库位下,库存数量大0并且是新件的库存
wmsInventories = wmsInventoryService.selByDeptSidAndRackSid(dto.getDeptSid(), dto.getRackSids());
} else {
} else if ("2".equals(dto.getCheckTypeKey())){
//查询本部门下,库存数量大0并且是新件的库存
wmsInventories = wmsInventoryService.selByDeptSid(dto.getDeptSid());
}
if (wmsInventories.size() == 0){
return rb.setMsg("该库位下没有商品库存信息");
}
String sid = this.insertByDto(dto);
for (WmsInventory wmsInventory : wmsInventories) {
WmsInventoryCheckbillDetailDto wmsInventoryCheckbillDetailDto = new WmsInventoryCheckbillDetailDto();
wmsInventoryCheckbillDetailDto.setBillSid(sid);

4
yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryprofitin/WmsInventoryProfitinMapper.java

@ -32,6 +32,8 @@ import com.baomidou.mybatisplus.core.toolkit.Constants;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.Map;
@Mapper
public interface WmsInventoryProfitinMapper extends BaseMapper<WmsInventoryProfitin> {
@ -40,4 +42,6 @@ public interface WmsInventoryProfitinMapper extends BaseMapper<WmsInventoryProfi
String selectNum(String billNo);
int selectBySid(String join);
int updateFlowFiled(Map<String, Object> beanToMap);
}

18
yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryprofitin/WmsInventoryProfitinMapper.xml

@ -23,4 +23,22 @@
WHERE nodeState != '待提交'
and find_in_set(sid, #{list})
</select>
<update id="updateFlowFiled">
UPDATE wms_inventory_profitin
SET nodeState=#{nodeState}, nodeId=#{taskDefKey}
<if test="nodeState == '已办结' or nodeState == '终止'">
, finishTime = NOW()
</if>
<if test="procDefId != null and procDefId != ''">
, procDefId=#{procDefId}
</if>
<if test="procInsId != null and procInsId != ''">
, procInstId=#{procInsId}
</if>
<if test="taskId != null and taskId != ''">
, taskId=#{taskId}
</if>
WHERE sid=#{sid}
</update>
</mapper>

321
yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryprofitin/WmsInventoryProfitinService.java

@ -27,16 +27,29 @@ package com.yxt.wms.biz.inventory.wmsinventoryprofitin;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.google.common.util.concurrent.ThreadFactoryBuilder;
import com.yxt.common.core.result.ResultBean;
import com.yxt.wms.biz.inventory.wmsinventorycheckbill.WmsInventoryCheckbill;
import com.yxt.wms.biz.inventory.wmsinventorycheckbill.flowable.*;
import com.yxt.wms.biz.inventory.wmsinventoryprofitin.flowable.*;
import com.yxt.wms.biz.inventory.wmsinventoryprofitindetail.WmsInventoryProfitinDetailDetailsVo;
import com.yxt.wms.biz.inventory.wmsinventoryprofitindetail.WmsInventoryProfitinDetailDto;
import com.yxt.wms.biz.inventory.wmsinventoryprofitindetail.WmsInventoryProfitinDetailService;
import com.yxt.wms.feign.flowable.flow.BusinessVariables;
import com.yxt.wms.feign.flowable.flow.FlowableFeign;
import com.yxt.wms.feign.flowable.flow.ProcDefEnum;
import com.yxt.wms.feign.flowable.flow.UpdateFlowFieldVo;
import com.yxt.wms.feign.flowable.flow2.FlowDelegateQuery;
import com.yxt.wms.feign.flowable.flow2.FlowFeign;
import com.yxt.wms.feign.flowable.flowtask.FlowTaskFeign;
import com.yxt.wms.feign.flowable.flowtask.FlowTaskVo;
import com.yxt.wms.feign.flowable.flowtask.LatestTaskVo;
import com.yxt.wms.feign.message.MessageFeign;
import com.yxt.wms.feign.message.MessageFlowVo;
import com.yxt.wms.feign.message.MessageFlowableQuery;
import com.yxt.wms.feign.portal.privilege.PrivilegeQuery;
import com.yxt.wms.feign.portal.sysorganization.SysOrganizationFeign;
import com.yxt.wms.feign.portal.sysorganization.SysOrganizationVo;
@ -49,10 +62,13 @@ import com.yxt.common.base.utils.PagerUtil;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.vo.PagerVo;
import org.apache.tomcat.util.threads.ThreadPoolExecutor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.*;
import java.util.concurrent.*;
import java.util.stream.Collectors;
/**
* Project: yxt-wms(盘库) <br/>
@ -235,4 +251,307 @@ public class WmsInventoryProfitinService extends MybatisBaseService<WmsInventory
}
return rb.success();
}
public ResultBean submitApply(SubmitInventoryProfitinDto dto) {
ResultBean rb = ResultBean.fireFail();
WmsInventoryProfitin wmsInventoryProfitin = fetchBySid(dto.getSid());
int r = submitBusinessData(dto, wmsInventoryProfitin);
if (r == 3) {
return rb.setMsg("该申请不存在");
}
if (r == 0) {
return rb.setMsg("操作失败!提交的数据不一致");
}
String businessSid = saveOrUpdateDto(dto).getData();
wmsInventoryProfitin = fetchBySid(businessSid);
//创建BusinessVariables实体对象
BusinessVariables bv = new BusinessVariables();
//流程中的参数赋值、若有网关,则赋值网关中判断的字段。
Map<String, Object> variables = new HashMap<>();
Map<String, Object> appMap = new HashMap<>();
appMap.put("sid", businessSid);
variables.put("app", appMap);
//用户的部门全路径sid
SysOrganizationVo sysOrganization = sysOrganizationFeign.fetchBySid(wmsInventoryProfitin.getDeptSid()).getData();
if (sysOrganization != null) {
bv.setOrgSidPath(sysOrganization.getOrgSidPath());
}
bv.setBusinessSid(businessSid);
bv.setUserSid(dto.getCreateBySid());
bv.setFormVariables(variables);
if (r == 1) {
//ToDo:流程定义id
bv.setModelId(ProcDefEnum.WMSINVENTORYPROFITIN.getProDefId());
ResultBean<UpdateFlowFieldVo> voResultBean = flowFeign.startProcess(bv);
if (!voResultBean.getSuccess()) {
return rb.setMsg(voResultBean.getMsg());
}
UpdateFlowFieldVo ufVo = voResultBean.getData();
updateFlowFiled(BeanUtil.beanToMap(ufVo));
wmsInventoryProfitin = fetchBySid(businessSid);
//==================================添加线程
try {
ThreadFactory namedThreadFactory = new ThreadFactoryBuilder()
.setNameFormat("demo-pool-%d").build();
ExecutorService pool = new ThreadPoolExecutor(2, 100,
0L, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>(1024), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy());
WmsInventoryProfitin finalWmsInventoryProfitin = wmsInventoryProfitin;
Future future1 = pool.submit(() -> {
//极光推送
MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery();
MessageFlowVo messageFlowVo = new MessageFlowVo();
BeanUtil.copyProperties(ufVo, messageFlowVo);
messageFlowableQuery.setUfVo(messageFlowVo);
messageFlowableQuery.setAppMap(appMap);
messageFlowableQuery.setBusinessSid(businessSid);
messageFlowableQuery.setModuleName("盘盈入库申请");
messageFlowableQuery.setMsgContent(finalWmsInventoryProfitin.getCreateByName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批");
messageFlowableQuery.setMsgTitle("盘盈入库申请");
ResultBean<String> stringResultBean = messageFeign.pushMessage(messageFlowableQuery);
});
} catch (Exception e) {
e.printStackTrace();
}
//==================================添加线程
return voResultBean;
}
if (r == 2) {
// ToDo:驳回到发起人后再次提交
if (StringUtils.isBlank(dto.getInstanceId())) {
return rb.setMsg("参数错误:instanceId");
}
bv.setTaskId(wmsInventoryProfitin.getTaskId());
bv.setTaskDefKey(wmsInventoryProfitin.getNodeId());
bv.setComment("重新提交");
bv.setInstanceId(dto.getInstanceId());
return complete(bv);
}
return rb;
}
private int updateFlowFiled(Map<String, Object> beanToMap) {
return baseMapper.updateFlowFiled(beanToMap);
}
private int submitBusinessData(SubmitInventoryProfitinDto dto, WmsInventoryProfitin wmsInventoryProfitin) {
int r = 0;
if (StringUtils.isBlank(dto.getSid())) {
r = 1;
} else {
if (wmsInventoryProfitin != null) {
String businessTaskId = wmsInventoryProfitin.getTaskId();
if (StringUtils.isBlank(businessTaskId) && StringUtils.isBlank(dto.getTaskId())) {
//新提交
r = 1;
} else if (StringUtils.isNotBlank(businessTaskId) && businessTaskId.equals(dto.getTaskId())) {
//二次提交//只有数据一致的时候才能进行下一步
r = 2;
}
} else {
r = 3;
}
}
return r;
}
public ResultBean complete(BusinessVariables bv) {
ResultBean rb = ResultBean.fireFail();
String businessSid = bv.getBusinessSid();
WmsInventoryProfitin wmsInventoryProfitin = fetchBySid(businessSid);
Map<String, Object> variables = new HashMap<>();
Map<String, Object> appMap = new HashMap<>();
appMap.put("sid", businessSid);
variables.put("app", appMap);
bv.setFormVariables(variables);
SysOrganizationVo sysOrganization = sysOrganizationFeign.fetchBySid(wmsInventoryProfitin.getDeptSid()).getData();
if (sysOrganization != null) {
bv.setOrgSidPath(sysOrganization.getOrgSidPath());
}
bv.setModelId(wmsInventoryProfitin.getProcDefId());
if (bv.getTaskId().equals(wmsInventoryProfitin.getTaskId())) {
ResultBean<UpdateFlowFieldVo> resultBean = flowFeign.handleProsess(bv);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
UpdateFlowFieldVo ufVo = resultBean.getData();
updateFlowFiled(BeanUtil.beanToMap(resultBean.getData()));
if ("Event_end".equals(resultBean.getData().getTaskDefKey())) {
} else {
//极光推送
wmsInventoryProfitin = fetchBySid(businessSid);
MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery();
MessageFlowVo messageFlowVo = new MessageFlowVo();
BeanUtil.copyProperties(ufVo, messageFlowVo);
messageFlowVo.setProcDefId(wmsInventoryProfitin.getProcDefId());
messageFlowVo.setProcInsId(wmsInventoryProfitin.getProcInstId());
messageFlowableQuery.setUfVo(messageFlowVo);
messageFlowableQuery.setAppMap(appMap);
messageFlowableQuery.setBusinessSid(businessSid);
messageFlowableQuery.setModuleName("盘盈入库申请");
messageFlowableQuery.setMsgContent(wmsInventoryProfitin.getCreateByName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批");
messageFlowableQuery.setMsgTitle("盘盈入库申请");
ResultBean<String> stringResultBean = messageFeign.pushMessage(messageFlowableQuery);
}
return rb.success().setData(resultBean.getData());
} else {
return rb.setMsg("操作失败!提交的数据不一致");
}
}
public ResultBean<List<InventoryProfitinNodeVo>> getPreviousNodesForReject(InventoryProfitinNodeQuery query) {
ResultBean<List<InventoryProfitinNodeVo>> rb = ResultBean.fireFail();
BusinessVariables bv = new BusinessVariables();
BeanUtil.copyProperties(query, bv);
WmsInventoryProfitin wmsInventoryProfitin = fetchBySid(query.getBusinessSid());
bv.setModelId(wmsInventoryProfitin.getProcDefId());
ResultBean<List<Map<String, Object>>> resultBean = flowTaskFeign.getPreviousNodesForReject(bv);
//判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给TemplateApplyNodeVo
List<InventoryProfitinNodeVo> voList = Optional.ofNullable(resultBean.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), InventoryProfitinNodeVo.class)).collect(Collectors.toList());
return rb.success().setData(voList);
}
public ResultBean<List<InventoryProfitinNodeVo>> getNextNodesForSubmit(InventoryProfitinNodeQuery query) {
ResultBean<List<InventoryProfitinNodeVo>> rb = ResultBean.fireFail();
BusinessVariables bv = new BusinessVariables();
BeanUtil.copyProperties(query, bv);
WmsInventoryProfitin wmsInventoryProfitin = fetchBySid(query.getBusinessSid());
bv.setModelId(wmsInventoryProfitin.getProcDefId());
ResultBean<List<Map<String, Object>>> resultBean = flowTaskFeign.getNextNodesForSubmit(bv);
//判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给TemplateApplyNodeVo
List<InventoryProfitinNodeVo> voList = Optional.ofNullable(resultBean.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), InventoryProfitinNodeVo.class)).collect(Collectors.toList());
return rb.success().setData(voList);
}
public ResultBean taskReject(InventoryProfitinTaskQuery query) {
ResultBean rb = ResultBean.fireFail();
String businessSid = query.getBusinessSid();
WmsInventoryProfitin wmsInventoryProfitin = fetchBySid(businessSid);
if (wmsInventoryProfitin == null) {
return rb.setMsg("该申请不存在");
}
String businessTaskId = wmsInventoryProfitin.getTaskId();
if (StringUtils.isNotBlank(businessTaskId)) {
if (businessTaskId.equals(query.getTaskId())) {
if (StringUtils.isBlank(query.getComment())) {
return rb.setMsg("请填写意见");
}
if (StringUtils.isBlank(query.getUserSid())) {
return rb.setMsg("参数错误:userSid");
}
FlowTaskVo flowTaskVo = new FlowTaskVo();
BeanUtil.copyProperties(query, flowTaskVo);
Map<String, Object> variables = new HashMap<>();
Map<String, Object> appMap = new HashMap<>();
appMap.put("sid", businessSid);
variables.put("app", appMap);
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.taskReject(flowTaskVo);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
UpdateFlowFieldVo ufVo = resultBean.getData();
Map<String, Object> map = BeanUtil.beanToMap(ufVo);
//更新业务中的流程相关的参数
updateFlowFiled(map);
//极光推送
wmsInventoryProfitin = fetchBySid(businessSid);
MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery();
MessageFlowVo messageFlowVo = new MessageFlowVo();
BeanUtil.copyProperties(ufVo, messageFlowVo);
String procId = wmsInventoryProfitin.getProcInstId();
messageFlowVo.setProcInsId(procId);
messageFlowVo.setProcDefId(wmsInventoryProfitin.getProcDefId());
messageFlowableQuery.setUfVo(messageFlowVo);
messageFlowableQuery.setAppMap(appMap);
messageFlowableQuery.setBusinessSid(businessSid);
messageFlowableQuery.setModuleName("盘盈入库申请");
ResultBean<List<LatestTaskVo>> listResultBean = flowTaskFeign.getLatestTasks(procId);
String nextName = listResultBean.getData().get(0).getName_();
String nextNodeUserSids = listResultBean.getData().get(0).getASSIGNEE_();
if ("发起申请".equals(nextName)) {
messageFlowableQuery.setMsgContent("您提交的" + messageFlowableQuery.getModuleName() + "已被驳回,请重新提交");
} else {
messageFlowableQuery.setMsgContent(wmsInventoryProfitin.getCreateByName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批");
}
messageFlowableQuery.setMsgTitle("盘盈入库申请");
ResultBean<String> stringResultBean = messageFeign.pushMessage(messageFlowableQuery);
return rb.success();
}
}
return rb.setMsg("操作失败!提交的数据不一致!");
}
public ResultBean revokeProcess(InventoryProfitinTaskQuery query) {
ResultBean rb = ResultBean.fireFail();
if (StringUtils.isBlank(query.getUserSid())) {
return rb.setMsg("参数错误:userSid");
}
WmsInventoryProfitin wmsInventoryProfitin = fetchBySid(query.getBusinessSid());
String businessTaskId = wmsInventoryProfitin.getTaskId();
if (StringUtils.isNotBlank(businessTaskId)) {
if (businessTaskId.equals(query.getTaskId())) {
FlowTaskVo flowTaskVo = new FlowTaskVo();
BeanUtil.copyProperties(query, flowTaskVo);
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.revokeProcess(flowTaskVo);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
updateFlowFiled(BeanUtil.beanToMap(resultBean.getData()));
return rb.success().setData(resultBean.getData());
}
}
return rb.setMsg("操作失败,提交的数据不一致!");
}
public ResultBean breakProcess(InventoryProfitinTaskQuery query) {
ResultBean rb = ResultBean.fireFail();
if (StringUtils.isBlank(query.getInstanceId())) {
return rb.setMsg("参数错误:instanceId");
}
if (StringUtils.isBlank(query.getUserSid())) {
return rb.setMsg("参数错误:userSid");
}
if (StringUtils.isBlank(query.getComment())) {
return rb.setMsg("请填写意见");
}
WmsInventoryProfitin wmsInventoryProfitin = fetchBySid(query.getBusinessSid());
String businessTaskId = wmsInventoryProfitin.getTaskId();
if (StringUtils.isNotBlank(businessTaskId)) {
if (query.getUserSid().equals(wmsInventoryProfitin.getCreateBySid())) {
FlowTaskVo flowTaskVo = new FlowTaskVo();
BeanUtil.copyProperties(query, flowTaskVo);
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.breakProcess(flowTaskVo);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
Map<String, Object> map = BeanUtil.beanToMap(resultBean.getData());
updateFlowFiled(map);
return rb.success().setData(resultBean.getData());
} else {
if (businessTaskId.equals(query.getTaskId())) {
FlowTaskVo flowTaskVo = new FlowTaskVo();
BeanUtil.copyProperties(query, flowTaskVo);
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.breakProcess(flowTaskVo);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
Map<String, Object> map = BeanUtil.beanToMap(resultBean.getData());
updateFlowFiled(map);
return rb.success().setData(resultBean.getData());
}
}
}
return rb.setMsg("操作失败!提交的数据不一致!");
}
public ResultBean delegate(InventoryProfitinDelegateQuery query) {
ResultBean rb = ResultBean.fireFail();
FlowDelegateQuery delegateQuery = new FlowDelegateQuery();
BeanUtil.copyProperties(query, delegateQuery);
flowFeign.delegate(delegateQuery);
return rb.success();
}
}

35
yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryprofitin/flowable/CompleteInventoryProfitinDto.java

@ -0,0 +1,35 @@
package com.yxt.wms.biz.inventory.wmsinventoryprofitin.flowable;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* @description:
* @author: dimengzhe
* @date: 2024/5/11
**/
@Data
public class CompleteInventoryProfitinDto {
@ApiModelProperty(value = "用户sid")
@NotBlank(message = "参数错误:userSid")
private String userSid;
@ApiModelProperty(value = "用户全路径sid")
private String orgSidPath;
@ApiModelProperty(value = "节点id")
@NotBlank(message = "参数错误:taskDefKey")
private String taskDefKey;
@ApiModelProperty(value = "任务id")
@NotBlank(message = "参数错误:taskId")
private String taskId;
@ApiModelProperty(value = "流程id")
@NotBlank(message = "参数错误:instanceId")
private String instanceId;
@ApiModelProperty(value = "意见")
private String comment;
@ApiModelProperty(value = "业务sid")
@NotBlank(message = "参数错误:businessSid")
private String businessSid;
}

23
yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryprofitin/flowable/InventoryProfitinDelegateQuery.java

@ -0,0 +1,23 @@
package com.yxt.wms.biz.inventory.wmsinventoryprofitin.flowable;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @description:
* @author: dimengzhe
* @date: 2024/5/11
**/
@Data
public class InventoryProfitinDelegateQuery {
private String userSid;
@ApiModelProperty("流程实例id")
private String instanceId;
@ApiModelProperty("任务Id")
private String taskId;
@ApiModelProperty("审批人sid")
private String assignee;
@ApiModelProperty("填写意见")
private String views;
}

18
yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryprofitin/flowable/InventoryProfitinNodeQuery.java

@ -0,0 +1,18 @@
package com.yxt.wms.biz.inventory.wmsinventoryprofitin.flowable;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @description:
* @author: dimengzhe
* @date: 2024/5/11
**/
@Data
public class InventoryProfitinNodeQuery {
@ApiModelProperty(value = "环节定义id")
private String taskDefKey;
@ApiModelProperty(value = "业务sid")
private String businessSid;
}

24
yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryprofitin/flowable/InventoryProfitinNodeVo.java

@ -0,0 +1,24 @@
package com.yxt.wms.biz.inventory.wmsinventoryprofitin.flowable;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* @description:
* @author: dimengzhe
* @date: 2024/5/11
**/
@Data
public class InventoryProfitinNodeVo {
@ApiModelProperty(value = "节点名称")
private String name;
@ApiModelProperty(value = "节点id")
private String id;
@ApiModelProperty(value = "审批组")
private List<String> candidateGroups;
@ApiModelProperty(value = "是否是最后环节")
private String endTask;
}

43
yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryprofitin/flowable/InventoryProfitinTaskQuery.java

@ -0,0 +1,43 @@
package com.yxt.wms.biz.inventory.wmsinventoryprofitin.flowable;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* @description:
* @author: dimengzhe
* @date: 2024/5/11
**/
@Data
public class InventoryProfitinTaskQuery {
/**
* 终止驳回撤回
*/
@ApiModelProperty("任务Id")
@NotBlank(message = "参数错误:taskId")
private String taskId;
/**
* 终止驳回撤回
*/
@ApiModelProperty("业务sid")
@NotBlank(message = "参数错误:businessSid")
private String businessSid;
/**
* 终止驳回
*/
@ApiModelProperty("任务意见")
private String comment;
/**
* 终止撤回驳回
*/
@ApiModelProperty("用户Sid")
private String userSid;
/**
* 终止
*/
@ApiModelProperty("流程实例Id")
private String instanceId;
}

20
yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryprofitin/flowable/SubmitInventoryProfitinDto.java

@ -0,0 +1,20 @@
package com.yxt.wms.biz.inventory.wmsinventoryprofitin.flowable;
import com.yxt.wms.biz.inventory.wmsinventorycheckbill.WmsInventoryCheckbillDto;
import com.yxt.wms.biz.inventory.wmsinventoryprofitin.WmsInventoryProfitinDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @description:
* @author: dimengzhe
* @date: 2024/5/11
**/
@Data
public class SubmitInventoryProfitinDto extends WmsInventoryProfitinDto {
@ApiModelProperty("流程实例id")
private String instanceId;
@ApiModelProperty("任务id")
private String taskId;
}

21
yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryprofitout/WmsInventoryProfitoutDetailsVo.java

@ -30,6 +30,10 @@ import com.yxt.common.core.vo.Vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date;
import java.util.List;
import com.yxt.wms.biz.inventory.wmsinventoryprofitoutdetail.WmsInventoryProfitoutDetailDetailsVo;
import com.yxt.wms.biz.inventory.wmsinventoryprofitoutdetail.WmsInventoryProfitoutDetailDto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ -53,8 +57,15 @@ public class WmsInventoryProfitoutDetailsVo implements Vo {
private String sid; // sid
@ApiModelProperty("单据编号")
@JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
@ApiModelProperty("申请日期")
private Date createTime;
@ApiModelProperty("单据编号")
private String billNo; // 单据编号
@ApiModelProperty("备注")
private String remarks;
@ApiModelProperty("申请人sid")
private String createBySid;
@ApiModelProperty("制单人姓名")
private String createByName; // 制单人姓名
@ApiModelProperty("申请部门sid")
@ -68,9 +79,8 @@ public class WmsInventoryProfitoutDetailsVo implements Vo {
@ApiModelProperty("盘点单号")
private String checkBillNo; // 盘点单号
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
@ApiModelProperty("办结时间")
private Date finishTimeStart; // 办结时间
private Date finishTimeEnd; // 办结时间
@ApiModelProperty("办结时间")
private Date finishTime;
@ApiModelProperty("流程定义的id")
private String procDefId; // 流程定义的id
@ApiModelProperty("环节定义的sid")
@ -85,5 +95,6 @@ public class WmsInventoryProfitoutDetailsVo implements Vo {
private String createOrgName; // 创建组织名称
@ApiModelProperty("创建组织sid")
private String createOrgSid; // 创建组织sid
@ApiModelProperty
private List<WmsInventoryProfitoutDetailDetailsVo> wmsInventoryProfitoutDetailList;
}

16
yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryprofitout/WmsInventoryProfitoutDto.java

@ -30,6 +30,10 @@ import com.yxt.common.core.dto.Dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date;
import java.util.List;
import com.yxt.wms.biz.inventory.wmsinventoryprofitindetail.WmsInventoryProfitinDetailDto;
import com.yxt.wms.biz.inventory.wmsinventoryprofitoutdetail.WmsInventoryProfitoutDetailDto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ -55,6 +59,10 @@ public class WmsInventoryProfitoutDto implements Dto {
@ApiModelProperty("单据编号")
private String billNo; // 单据编号
@ApiModelProperty("备注")
private String remarks;
@ApiModelProperty("申请人sid")
private String createBySid;
@ApiModelProperty("制单人姓名")
private String createByName; // 制单人姓名
@ApiModelProperty("申请部门sid")
@ -68,9 +76,8 @@ public class WmsInventoryProfitoutDto implements Dto {
@ApiModelProperty("盘点单号")
private String checkBillNo; // 盘点单号
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
@ApiModelProperty("办结时间")
private Date finishTimeStart; // 办结时间
private Date finishTimeEnd; // 办结时间
@ApiModelProperty("办结时间")
private Date finishTime;
@ApiModelProperty("流程定义的id")
private String procDefId; // 流程定义的id
@ApiModelProperty("环节定义的sid")
@ -85,5 +92,6 @@ public class WmsInventoryProfitoutDto implements Dto {
private String createOrgName; // 创建组织名称
@ApiModelProperty("创建组织sid")
private String createOrgSid; // 创建组织sid
@ApiModelProperty
private List<WmsInventoryProfitoutDetailDto> wmsInventoryProfitoutDetailList;
}

7
yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryprofitout/WmsInventoryProfitoutMapper.java

@ -32,9 +32,16 @@ import com.baomidou.mybatisplus.core.toolkit.Constants;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.Map;
@Mapper
public interface WmsInventoryProfitoutMapper extends BaseMapper<WmsInventoryProfitout> {
IPage<WmsInventoryProfitoutVo> selectPageVo(IPage<WmsInventoryProfitout> page, @Param(Constants.WRAPPER) Wrapper<WmsInventoryProfitout> qw);
String selectNum(String billNo);
int selectBySid(String join);
int updateFlowFiled(Map<String, Object> beanToMap);
}

37
yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryprofitout/WmsInventoryProfitoutMapper.xml

@ -4,6 +4,41 @@
<!-- <where> ${ew.sqlSegment} </where>-->
<!-- ${ew.customSqlSegment} -->
<select id="selectPageVo" resultType="com.yxt.wms.biz.inventory.wmsinventoryprofitout.WmsInventoryProfitoutVo">
SELECT * FROM wms_inventory_profitout <where> ${ew.sqlSegment} </where>
SELECT * FROM wms_inventory_profitout wip
LEFT JOIN anrui_portal.sys_organization as s ON wip.deptSid = s.sid
<where> ${ew.sqlSegment} </where>
</select>
<select id="selectNum" resultType="java.lang.String">
select RIGHT (billNo, 4)
from wms_inventory_profitout
where billNo LIKE concat(#{billNo}, '%')
order by billNo desc
limit 1
</select>
<select id="selectBySid" resultType="int">
SELECT COUNT(*)
FROM wms_inventory_profitout
WHERE nodeState != '待提交'
and find_in_set(sid, #{list})
</select>
<update id="updateFlowFiled">
UPDATE wms_inventory_profitout
SET nodeState=#{nodeState}, nodeId=#{taskDefKey}
<if test="nodeState == '已办结' or nodeState == '终止'">
, finishTime = NOW()
</if>
<if test="procDefId != null and procDefId != ''">
, procDefId=#{procDefId}
</if>
<if test="procInsId != null and procInsId != ''">
, procInstId=#{procInsId}
</if>
<if test="taskId != null and taskId != ''">
, taskId=#{taskId}
</if>
WHERE sid=#{sid}
</update>
</mapper>

50
yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryprofitout/WmsInventoryProfitoutQuery.java

@ -51,37 +51,23 @@ import lombok.Data;
@ApiModel(value = "盘亏出库申请 查询条件", description = "盘亏出库申请 查询条件")
public class WmsInventoryProfitoutQuery implements Query {
@ApiModelProperty("单据编号")
private String billNo; // 单据编号
@ApiModelProperty("制单人姓名")
private String createByName; // 制单人姓名
@ApiModelProperty("申请部门sid")
private String deptSid; // 申请部门sid
@ApiModelProperty("申请部门名称")
private String deptName; // 申请部门名称
@ApiModelProperty("业务类型")
private String busType; // 业务类型
@ApiModelProperty("盘点单sid")
private String checkBillSid; // 盘点单sid
@ApiModelProperty("盘点单号")
private String checkBillNo; // 盘点单号
@JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
@ApiModelProperty("办结时间")
private String finishTimeStart; // 办结时间
private String finishTimeEnd; // 办结时间
@ApiModelProperty("流程定义的id")
private String procDefId; // 流程定义的id
@ApiModelProperty("环节定义的sid")
private String nodeId; // 环节定义的sid
@ApiModelProperty("流程实例的sid")
private String procInstId; // 流程实例的sid
@ApiModelProperty("流程状态")
private String nodeState; // 流程状态
@ApiModelProperty("任务id")
private String taskId; // 任务id
@ApiModelProperty("创建组织名称")
private String createOrgName; // 创建组织名称
@ApiModelProperty("创建组织sid")
private String createOrgSid; // 创建组织sid
@ApiModelProperty("申请部门名称")
private String deptName;
@ApiModelProperty("申请人")
private String createByName;
@ApiModelProperty("单据编号")
private String billNo;
@ApiModelProperty("申请日期")
private String createTimeStart;
private String createTimeEnd;
@ApiModelProperty("办结日期")
private String finishTimeStart;
private String finishTimeEnd;
@ApiModelProperty("盘点单号")
private String checkBillNo;
private String orgPath;
private String userSid;
private String menuUrl;
}

473
yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryprofitout/WmsInventoryProfitoutService.java

@ -26,41 +26,187 @@
package com.yxt.wms.biz.inventory.wmsinventoryprofitout;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.google.common.util.concurrent.ThreadFactoryBuilder;
import com.yxt.common.core.result.ResultBean;
import com.yxt.wms.biz.inventory.wmsinventoryprofitin.WmsInventoryProfitin;
import com.yxt.wms.biz.inventory.wmsinventoryprofitin.WmsInventoryProfitinVo;
import com.yxt.wms.biz.inventory.wmsinventoryprofitin.flowable.*;
import com.yxt.wms.biz.inventory.wmsinventoryprofitindetail.WmsInventoryProfitinDetailDto;
import com.yxt.wms.biz.inventory.wmsinventoryprofitindetail.WmsInventoryProfitinDetailService;
import com.yxt.wms.biz.inventory.wmsinventoryprofitout.flowable.*;
import com.yxt.wms.biz.inventory.wmsinventoryprofitoutdetail.WmsInventoryProfitoutDetailDetailsVo;
import com.yxt.wms.biz.inventory.wmsinventoryprofitoutdetail.WmsInventoryProfitoutDetailDto;
import com.yxt.wms.biz.inventory.wmsinventoryprofitoutdetail.WmsInventoryProfitoutDetailService;
import com.yxt.wms.feign.flowable.flow.BusinessVariables;
import com.yxt.wms.feign.flowable.flow.FlowableFeign;
import com.yxt.wms.feign.flowable.flow.ProcDefEnum;
import com.yxt.wms.feign.flowable.flow.UpdateFlowFieldVo;
import com.yxt.wms.feign.flowable.flow2.FlowDelegateQuery;
import com.yxt.wms.feign.flowable.flow2.FlowFeign;
import com.yxt.wms.feign.flowable.flowtask.FlowTaskFeign;
import com.yxt.wms.feign.flowable.flowtask.FlowTaskVo;
import com.yxt.wms.feign.flowable.flowtask.LatestTaskVo;
import com.yxt.wms.feign.message.MessageFeign;
import com.yxt.wms.feign.message.MessageFlowVo;
import com.yxt.wms.feign.message.MessageFlowableQuery;
import com.yxt.wms.feign.portal.privilege.PrivilegeQuery;
import com.yxt.wms.feign.portal.sysorganization.SysOrganizationFeign;
import com.yxt.wms.feign.portal.sysorganization.SysOrganizationVo;
import com.yxt.wms.feign.portal.sysstafforg.SysStaffOrgFeign;
import com.yxt.wms.feign.portal.sysuser.SysUserFeign;
import com.yxt.wms.utils.Rule;
import org.apache.commons.lang3.StringUtils;
import com.yxt.common.base.service.MybatisBaseService;
import com.yxt.common.base.utils.PagerUtil;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.vo.PagerVo;
import org.apache.tomcat.util.threads.ThreadPoolExecutor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.*;
import java.util.concurrent.*;
import java.util.stream.Collectors;
@Service
public class WmsInventoryProfitoutService extends MybatisBaseService<WmsInventoryProfitoutMapper, WmsInventoryProfitout> {
@Autowired
private SysOrganizationFeign sysOrganizationFeign;
@Autowired
private SysStaffOrgFeign sysStaffOrgFeign;
@Autowired
private SysUserFeign sysUserFeign;
@Autowired
private FlowableFeign flowableFeign;
@Autowired
private FlowTaskFeign flowTaskFeign;
@Autowired
private FlowFeign flowFeign;
@Autowired
private MessageFeign messageFeign;
@Autowired
private WmsInventoryProfitoutDetailService wmsInventoryProfitoutDetailService;
public PagerVo<WmsInventoryProfitoutVo> listPageVo(PagerQuery<WmsInventoryProfitoutQuery> pq) {
WmsInventoryProfitoutQuery query = pq.getParams();
QueryWrapper<WmsInventoryProfitout> qw = new QueryWrapper<>();
//========================================数据授权开始
if (StringUtils.isNotBlank(query.getMenuUrl())) {
PrivilegeQuery privilegeQuery = new PrivilegeQuery();
privilegeQuery.setOrgPath(query.getOrgPath());
privilegeQuery.setMenuUrl(query.getMenuUrl());
privilegeQuery.setUserSid(query.getUserSid());
ResultBean<String> defaultIdReltBean = sysUserFeign.selectPrivilegeLevel(privilegeQuery);
if (StringUtils.isNotBlank(defaultIdReltBean.getData())) {
//数据权限ID(1集团、2事业部、3分公司、4部门、5个人)
String orgSidPath = query.getOrgPath();
orgSidPath = orgSidPath + "/";
int i1 = orgSidPath.indexOf("/");
int i2 = orgSidPath.indexOf("/", i1 + 1);
int i3 = orgSidPath.indexOf("/", i2 + 1);
int i4 = orgSidPath.indexOf("/", i3 + 1);
String orgLevelKey = defaultIdReltBean.getData();
if ("1".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i1);
qw.like("s.orgSidPath", orgSidPath);
} else if ("2".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i2);
qw.like("s.orgSidPath", orgSidPath);
} else if ("3".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i3);
qw.like("s.orgSidPath", orgSidPath);
} else if ("4".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i4);
qw.like("s.orgSidPath", orgSidPath);
} else if ("5".equals(orgLevelKey)) {
qw.eq("wip.createBySid", query.getUserSid());
} else {
PagerVo<WmsInventoryProfitoutVo> p = new PagerVo<>();
return p;
}
} else {
PagerVo<WmsInventoryProfitoutVo> p = new PagerVo<>();
return p;
}
}
if (StringUtils.isNotBlank(query.getDeptName())) {
qw.like("wip.deptName", query.getDeptName());
}
if (StringUtils.isNotBlank(query.getCreateByName())) {
qw.like("wip.createByName", query.getCreateByName());
}
if (StringUtils.isNotBlank(query.getBillNo())) {
qw.like("wip.billNo", query.getBillNo());
}
if (StringUtils.isNotBlank(query.getCheckBillNo())){
qw.like("wip.checkBillNo",query.getCheckBillNo());
}
String createTimeStart = query.getCreateTimeStart();
String createTimeEnd = query.getCreateTimeEnd();
qw.apply(StringUtils.isNotEmpty(createTimeStart), "date_format (wip.createTime,'%Y-%m-%d') >= date_format('" + createTimeStart + "','%Y-%m-%d')").
apply(StringUtils.isNotEmpty(createTimeEnd), "date_format (wip.createTime,'%Y-%m-%d') <= date_format('" + createTimeEnd + "','%Y-%m-%d')"
);
String finishTimeStart = query.getFinishTimeStart();
String finishTimeEnd = query.getFinishTimeEnd();
qw.apply(StringUtils.isNotEmpty(finishTimeStart), "date_format (wip.finishTime,'%Y-%m-%d') >= date_format('" + finishTimeStart + "','%Y-%m-%d')").
apply(StringUtils.isNotEmpty(finishTimeEnd), "date_format (wip.finishTime,'%Y-%m-%d') <= date_format('" + finishTimeEnd + "','%Y-%m-%d')"
);
IPage<WmsInventoryProfitout> page = PagerUtil.queryToPage(pq);
IPage<WmsInventoryProfitoutVo> pagging = baseMapper.selectPageVo(page, qw);
PagerVo<WmsInventoryProfitoutVo> p = PagerUtil.pageToVo(pagging, null);
return p;
}
public void saveOrUpdateDto(WmsInventoryProfitoutDto dto){
public ResultBean<String> saveOrUpdateDto(WmsInventoryProfitoutDto dto){
ResultBean rb = ResultBean.fireFail();
String dtoSid = dto.getSid();
List<WmsInventoryProfitoutDetailDto> wmsInventoryProfitoutDetailList = dto.getWmsInventoryProfitoutDetailList();
String deptSid = dto.getDeptSid();
SysOrganizationVo deptVo = sysOrganizationFeign.fetchBySid(deptSid).getData();
String createOrgSid = sysStaffOrgFeign.getOrgSidByPath(deptVo.getOrgSidPath()).getData();
SysOrganizationVo organizationVo = sysOrganizationFeign.fetchBySid(createOrgSid).getData();
dto.setCreateOrgSid(createOrgSid);
dto.setCreateOrgName(organizationVo.getName());
if (StringUtils.isBlank(dtoSid)) {
this.insertByDto(dto);
return;
//生成单据编号
String billNo = "";
String date = DateUtil.format(DateUtil.date(), "yyyyMM");
billNo = "PKCK" + organizationVo.getOrgCode() + date;
String i = baseMapper.selectNum(billNo);
if (StringUtils.isNotBlank(i)) {
billNo = Rule.getBillNo(billNo, Integer.valueOf(i).intValue());
} else {
billNo = Rule.getBillNo(billNo, 0);
}
dto.setBillNo(billNo);
String sid = this.insertByDto(dto);
for (WmsInventoryProfitoutDetailDto wmsInventoryProfitoutDetailDto : wmsInventoryProfitoutDetailList) {
wmsInventoryProfitoutDetailDto.setMainSid(sid);
wmsInventoryProfitoutDetailService.insertByDto(wmsInventoryProfitoutDetailDto);
}
return rb.success().setData(sid);
}
this.updateByDto(dto);
wmsInventoryProfitoutDetailService.delByMainSid(dtoSid);
for (WmsInventoryProfitoutDetailDto wmsInventoryProfitoutDetailDto : wmsInventoryProfitoutDetailList) {
wmsInventoryProfitoutDetailDto.setMainSid(dtoSid);
wmsInventoryProfitoutDetailService.insertByDto(wmsInventoryProfitoutDetailDto);
}
return rb.success().setData(dtoSid);
}
public void insertByDto(WmsInventoryProfitoutDto dto){
public String insertByDto(WmsInventoryProfitoutDto dto){
WmsInventoryProfitout entity = new WmsInventoryProfitout();
BeanUtil.copyProperties(dto, entity, "id", "sid");
entity.setNodeState("待提交");
baseMapper.insert(entity);
return entity.getSid();
}
public void updateByDto(WmsInventoryProfitoutDto dto){
@ -77,6 +223,325 @@ public class WmsInventoryProfitoutService extends MybatisBaseService<WmsInventor
WmsInventoryProfitout entity = fetchBySid(sid);
WmsInventoryProfitoutDetailsVo vo = new WmsInventoryProfitoutDetailsVo();
BeanUtil.copyProperties(entity, vo);
List<WmsInventoryProfitoutDetailDetailsVo> wmsInventoryProfitoutDetailDetailsVos = wmsInventoryProfitoutDetailService.selByMainSid(sid);
vo.setWmsInventoryProfitoutDetailList(wmsInventoryProfitoutDetailDetailsVos);
return vo;
}
public ResultBean delAll(String[] sids) {
ResultBean rb = ResultBean.fireFail();
//查询该sid中是否有流程不是待提交的
int count = baseMapper.selectBySid(StringUtils.join(sids, ","));
if (count > 0) {
return rb.setMsg("删除的数据中包含已提交或已办结审批的数据,删除失败");
}
delBySids(sids);
for (String sid : sids) {
wmsInventoryProfitoutDetailService.delByMainSid(sid);
}
return rb.success();
}
public ResultBean submitApply(SubmitInventoryProfitoutDto dto) {
ResultBean rb = ResultBean.fireFail();
WmsInventoryProfitout wmsInventoryProfitout = fetchBySid(dto.getSid());
int r = submitBusinessData(dto, wmsInventoryProfitout);
if (r == 3) {
return rb.setMsg("该申请不存在");
}
if (r == 0) {
return rb.setMsg("操作失败!提交的数据不一致");
}
String businessSid = saveOrUpdateDto(dto).getData();
wmsInventoryProfitout = fetchBySid(businessSid);
//创建BusinessVariables实体对象
BusinessVariables bv = new BusinessVariables();
//流程中的参数赋值、若有网关,则赋值网关中判断的字段。
Map<String, Object> variables = new HashMap<>();
Map<String, Object> appMap = new HashMap<>();
appMap.put("sid", businessSid);
variables.put("app", appMap);
//用户的部门全路径sid
SysOrganizationVo sysOrganization = sysOrganizationFeign.fetchBySid(wmsInventoryProfitout.getDeptSid()).getData();
if (sysOrganization != null) {
bv.setOrgSidPath(sysOrganization.getOrgSidPath());
}
bv.setBusinessSid(businessSid);
bv.setUserSid(dto.getCreateBySid());
bv.setFormVariables(variables);
if (r == 1) {
//ToDo:流程定义id
bv.setModelId(ProcDefEnum.WMSINVENTORYPROFITOUT.getProDefId());
ResultBean<UpdateFlowFieldVo> voResultBean = flowFeign.startProcess(bv);
if (!voResultBean.getSuccess()) {
return rb.setMsg(voResultBean.getMsg());
}
UpdateFlowFieldVo ufVo = voResultBean.getData();
updateFlowFiled(BeanUtil.beanToMap(ufVo));
wmsInventoryProfitout = fetchBySid(businessSid);
//==================================添加线程
try {
ThreadFactory namedThreadFactory = new ThreadFactoryBuilder()
.setNameFormat("demo-pool-%d").build();
ExecutorService pool = new ThreadPoolExecutor(2, 100,
0L, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>(1024), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy());
WmsInventoryProfitout finalWmsInventoryProfitout = wmsInventoryProfitout;
Future future1 = pool.submit(() -> {
//极光推送
MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery();
MessageFlowVo messageFlowVo = new MessageFlowVo();
BeanUtil.copyProperties(ufVo, messageFlowVo);
messageFlowableQuery.setUfVo(messageFlowVo);
messageFlowableQuery.setAppMap(appMap);
messageFlowableQuery.setBusinessSid(businessSid);
messageFlowableQuery.setModuleName("盘亏出库申请");
messageFlowableQuery.setMsgContent(finalWmsInventoryProfitout.getCreateByName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批");
messageFlowableQuery.setMsgTitle("盘亏出库申请");
ResultBean<String> stringResultBean = messageFeign.pushMessage(messageFlowableQuery);
});
} catch (Exception e) {
e.printStackTrace();
}
//==================================添加线程
return voResultBean;
}
if (r == 2) {
// ToDo:驳回到发起人后再次提交
if (StringUtils.isBlank(dto.getInstanceId())) {
return rb.setMsg("参数错误:instanceId");
}
bv.setTaskId(wmsInventoryProfitout.getTaskId());
bv.setTaskDefKey(wmsInventoryProfitout.getNodeId());
bv.setComment("重新提交");
bv.setInstanceId(dto.getInstanceId());
return complete(bv);
}
return rb;
}
private int updateFlowFiled(Map<String, Object> beanToMap) {
return baseMapper.updateFlowFiled(beanToMap);
}
private int submitBusinessData(SubmitInventoryProfitoutDto dto, WmsInventoryProfitout wmsInventoryProfitout) {
int r = 0;
if (StringUtils.isBlank(dto.getSid())) {
r = 1;
} else {
if (wmsInventoryProfitout != null) {
String businessTaskId = wmsInventoryProfitout.getTaskId();
if (StringUtils.isBlank(businessTaskId) && StringUtils.isBlank(dto.getTaskId())) {
//新提交
r = 1;
} else if (StringUtils.isNotBlank(businessTaskId) && businessTaskId.equals(dto.getTaskId())) {
//二次提交//只有数据一致的时候才能进行下一步
r = 2;
}
} else {
r = 3;
}
}
return r;
}
public ResultBean complete(BusinessVariables bv) {
ResultBean rb = ResultBean.fireFail();
String businessSid = bv.getBusinessSid();
WmsInventoryProfitout wmsInventoryProfitout = fetchBySid(businessSid);
Map<String, Object> variables = new HashMap<>();
Map<String, Object> appMap = new HashMap<>();
appMap.put("sid", businessSid);
variables.put("app", appMap);
bv.setFormVariables(variables);
SysOrganizationVo sysOrganization = sysOrganizationFeign.fetchBySid(wmsInventoryProfitout.getDeptSid()).getData();
if (sysOrganization != null) {
bv.setOrgSidPath(sysOrganization.getOrgSidPath());
}
bv.setModelId(wmsInventoryProfitout.getProcDefId());
if (bv.getTaskId().equals(wmsInventoryProfitout.getTaskId())) {
ResultBean<UpdateFlowFieldVo> resultBean = flowFeign.handleProsess(bv);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
UpdateFlowFieldVo ufVo = resultBean.getData();
updateFlowFiled(BeanUtil.beanToMap(resultBean.getData()));
if ("Event_end".equals(resultBean.getData().getTaskDefKey())) {
} else {
//极光推送
wmsInventoryProfitout = fetchBySid(businessSid);
MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery();
MessageFlowVo messageFlowVo = new MessageFlowVo();
BeanUtil.copyProperties(ufVo, messageFlowVo);
messageFlowVo.setProcDefId(wmsInventoryProfitout.getProcDefId());
messageFlowVo.setProcInsId(wmsInventoryProfitout.getProcInstId());
messageFlowableQuery.setUfVo(messageFlowVo);
messageFlowableQuery.setAppMap(appMap);
messageFlowableQuery.setBusinessSid(businessSid);
messageFlowableQuery.setModuleName("盘亏出库申请");
messageFlowableQuery.setMsgContent(wmsInventoryProfitout.getCreateByName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批");
messageFlowableQuery.setMsgTitle("盘亏出库申请");
ResultBean<String> stringResultBean = messageFeign.pushMessage(messageFlowableQuery);
}
return rb.success().setData(resultBean.getData());
} else {
return rb.setMsg("操作失败!提交的数据不一致");
}
}
public ResultBean<List<InventoryProfitoutNodeVo>> getPreviousNodesForReject(InventoryProfitoutNodeQuery query) {
ResultBean<List<InventoryProfitoutNodeVo>> rb = ResultBean.fireFail();
BusinessVariables bv = new BusinessVariables();
BeanUtil.copyProperties(query, bv);
WmsInventoryProfitout wmsInventoryProfitout = fetchBySid(query.getBusinessSid());
bv.setModelId(wmsInventoryProfitout.getProcDefId());
ResultBean<List<Map<String, Object>>> resultBean = flowTaskFeign.getPreviousNodesForReject(bv);
//判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给TemplateApplyNodeVo
List<InventoryProfitoutNodeVo> voList = Optional.ofNullable(resultBean.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), InventoryProfitoutNodeVo.class)).collect(Collectors.toList());
return rb.success().setData(voList);
}
public ResultBean<List<InventoryProfitoutNodeVo>> getNextNodesForSubmit(InventoryProfitoutNodeQuery query) {
ResultBean<List<InventoryProfitoutNodeVo>> rb = ResultBean.fireFail();
BusinessVariables bv = new BusinessVariables();
BeanUtil.copyProperties(query, bv);
WmsInventoryProfitout wmsInventoryProfitout = fetchBySid(query.getBusinessSid());
bv.setModelId(wmsInventoryProfitout.getProcDefId());
ResultBean<List<Map<String, Object>>> resultBean = flowTaskFeign.getNextNodesForSubmit(bv);
//判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给TemplateApplyNodeVo
List<InventoryProfitoutNodeVo> voList = Optional.ofNullable(resultBean.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), InventoryProfitoutNodeVo.class)).collect(Collectors.toList());
return rb.success().setData(voList);
}
public ResultBean taskReject(InventoryProfitoutTaskQuery query) {
ResultBean rb = ResultBean.fireFail();
String businessSid = query.getBusinessSid();
WmsInventoryProfitout wmsInventoryProfitout = fetchBySid(businessSid);
if (wmsInventoryProfitout == null) {
return rb.setMsg("该申请不存在");
}
String businessTaskId = wmsInventoryProfitout.getTaskId();
if (StringUtils.isNotBlank(businessTaskId)) {
if (businessTaskId.equals(query.getTaskId())) {
if (StringUtils.isBlank(query.getComment())) {
return rb.setMsg("请填写意见");
}
if (StringUtils.isBlank(query.getUserSid())) {
return rb.setMsg("参数错误:userSid");
}
FlowTaskVo flowTaskVo = new FlowTaskVo();
BeanUtil.copyProperties(query, flowTaskVo);
Map<String, Object> variables = new HashMap<>();
Map<String, Object> appMap = new HashMap<>();
appMap.put("sid", businessSid);
variables.put("app", appMap);
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.taskReject(flowTaskVo);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
UpdateFlowFieldVo ufVo = resultBean.getData();
Map<String, Object> map = BeanUtil.beanToMap(ufVo);
//更新业务中的流程相关的参数
updateFlowFiled(map);
//极光推送
wmsInventoryProfitout = fetchBySid(businessSid);
MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery();
MessageFlowVo messageFlowVo = new MessageFlowVo();
BeanUtil.copyProperties(ufVo, messageFlowVo);
String procId = wmsInventoryProfitout.getProcInstId();
messageFlowVo.setProcInsId(procId);
messageFlowVo.setProcDefId(wmsInventoryProfitout.getProcDefId());
messageFlowableQuery.setUfVo(messageFlowVo);
messageFlowableQuery.setAppMap(appMap);
messageFlowableQuery.setBusinessSid(businessSid);
messageFlowableQuery.setModuleName("盘亏出库申请");
ResultBean<List<LatestTaskVo>> listResultBean = flowTaskFeign.getLatestTasks(procId);
String nextName = listResultBean.getData().get(0).getName_();
String nextNodeUserSids = listResultBean.getData().get(0).getASSIGNEE_();
if ("发起申请".equals(nextName)) {
messageFlowableQuery.setMsgContent("您提交的" + messageFlowableQuery.getModuleName() + "已被驳回,请重新提交");
} else {
messageFlowableQuery.setMsgContent(wmsInventoryProfitout.getCreateByName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批");
}
messageFlowableQuery.setMsgTitle("盘亏出库申请");
ResultBean<String> stringResultBean = messageFeign.pushMessage(messageFlowableQuery);
return rb.success();
}
}
return rb.setMsg("操作失败!提交的数据不一致!");
}
public ResultBean revokeProcess(InventoryProfitoutTaskQuery query) {
ResultBean rb = ResultBean.fireFail();
if (StringUtils.isBlank(query.getUserSid())) {
return rb.setMsg("参数错误:userSid");
}
WmsInventoryProfitout wmsInventoryProfitout = fetchBySid(query.getBusinessSid());
String businessTaskId = wmsInventoryProfitout.getTaskId();
if (StringUtils.isNotBlank(businessTaskId)) {
if (businessTaskId.equals(query.getTaskId())) {
FlowTaskVo flowTaskVo = new FlowTaskVo();
BeanUtil.copyProperties(query, flowTaskVo);
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.revokeProcess(flowTaskVo);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
updateFlowFiled(BeanUtil.beanToMap(resultBean.getData()));
return rb.success().setData(resultBean.getData());
}
}
return rb.setMsg("操作失败,提交的数据不一致!");
}
public ResultBean breakProcess(InventoryProfitoutTaskQuery query) {
ResultBean rb = ResultBean.fireFail();
if (StringUtils.isBlank(query.getInstanceId())) {
return rb.setMsg("参数错误:instanceId");
}
if (StringUtils.isBlank(query.getUserSid())) {
return rb.setMsg("参数错误:userSid");
}
if (StringUtils.isBlank(query.getComment())) {
return rb.setMsg("请填写意见");
}
WmsInventoryProfitout wmsInventoryProfitout = fetchBySid(query.getBusinessSid());
String businessTaskId = wmsInventoryProfitout.getTaskId();
if (StringUtils.isNotBlank(businessTaskId)) {
if (query.getUserSid().equals(wmsInventoryProfitout.getCreateBySid())) {
FlowTaskVo flowTaskVo = new FlowTaskVo();
BeanUtil.copyProperties(query, flowTaskVo);
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.breakProcess(flowTaskVo);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
Map<String, Object> map = BeanUtil.beanToMap(resultBean.getData());
updateFlowFiled(map);
return rb.success().setData(resultBean.getData());
} else {
if (businessTaskId.equals(query.getTaskId())) {
FlowTaskVo flowTaskVo = new FlowTaskVo();
BeanUtil.copyProperties(query, flowTaskVo);
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.breakProcess(flowTaskVo);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
Map<String, Object> map = BeanUtil.beanToMap(resultBean.getData());
updateFlowFiled(map);
return rb.success().setData(resultBean.getData());
}
}
}
return rb.setMsg("操作失败!提交的数据不一致!");
}
public ResultBean delegate(InventoryProfitoutDelegateQuery query) {
ResultBean rb = ResultBean.fireFail();
FlowDelegateQuery delegateQuery = new FlowDelegateQuery();
BeanUtil.copyProperties(query, delegateQuery);
flowFeign.delegate(delegateQuery);
return rb.success();
}
}

54
yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryprofitout/WmsInventoryProfitoutVo.java

@ -53,37 +53,27 @@ public class WmsInventoryProfitoutVo implements Vo {
private String sid; // sid
@ApiModelProperty("单据编号")
private String billNo; // 单据编号
@ApiModelProperty("制单人姓名")
private String createByName; // 制单人姓名
@ApiModelProperty("申请部门sid")
private String deptSid; // 申请部门sid
@ApiModelProperty("申请部门名称")
private String deptName; // 申请部门名称
@ApiModelProperty("业务类型")
private String busType; // 业务类型
@ApiModelProperty("盘点单sid")
private String checkBillSid; // 盘点单sid
@ApiModelProperty("盘点单号")
private String checkBillNo; // 盘点单号
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
@ApiModelProperty("办结时间")
private Date finishTimeStart; // 办结时间
private Date finishTimeEnd; // 办结时间
@ApiModelProperty("流程定义的id")
private String procDefId; // 流程定义的id
@ApiModelProperty("环节定义的sid")
private String nodeId; // 环节定义的sid
@ApiModelProperty("流程实例的sid")
private String procInstId; // 流程实例的sid
@ApiModelProperty("流程状态")
private String nodeState; // 流程状态
@ApiModelProperty("任务id")
private String taskId; // 任务id
@ApiModelProperty("创建组织名称")
private String createOrgName; // 创建组织名称
@ApiModelProperty("创建组织sid")
private String createOrgSid; // 创建组织sid
@ApiModelProperty("流程状态")
private String nodeState;
@ApiModelProperty("单据编号")
private String billNo;
@ApiModelProperty("申请部门名称")
private String deptName;
@ApiModelProperty("制单人姓名")
private String createByName;
@ApiModelProperty("申请日期")
@JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
private Date createTime;
@JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
@ApiModelProperty("办结日期")
private Date finishTime;
@ApiModelProperty("盘点单号")
private String checkBillNo;
@ApiModelProperty("业务类型")
private String busType;
@ApiModelProperty("流程定义的id")
private String procDefId;
@ApiModelProperty("流程实例的sid")
private String procInstId;
}

35
yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryprofitout/flowable/CompleteInventoryProfitoutDto.java

@ -0,0 +1,35 @@
package com.yxt.wms.biz.inventory.wmsinventoryprofitout.flowable;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* @description:
* @author: dimengzhe
* @date: 2024/5/11
**/
@Data
public class CompleteInventoryProfitoutDto {
@ApiModelProperty(value = "用户sid")
@NotBlank(message = "参数错误:userSid")
private String userSid;
@ApiModelProperty(value = "用户全路径sid")
private String orgSidPath;
@ApiModelProperty(value = "节点id")
@NotBlank(message = "参数错误:taskDefKey")
private String taskDefKey;
@ApiModelProperty(value = "任务id")
@NotBlank(message = "参数错误:taskId")
private String taskId;
@ApiModelProperty(value = "流程id")
@NotBlank(message = "参数错误:instanceId")
private String instanceId;
@ApiModelProperty(value = "意见")
private String comment;
@ApiModelProperty(value = "业务sid")
@NotBlank(message = "参数错误:businessSid")
private String businessSid;
}

23
yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryprofitout/flowable/InventoryProfitoutDelegateQuery.java

@ -0,0 +1,23 @@
package com.yxt.wms.biz.inventory.wmsinventoryprofitout.flowable;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @description:
* @author: dimengzhe
* @date: 2024/5/11
**/
@Data
public class InventoryProfitoutDelegateQuery {
private String userSid;
@ApiModelProperty("流程实例id")
private String instanceId;
@ApiModelProperty("任务Id")
private String taskId;
@ApiModelProperty("审批人sid")
private String assignee;
@ApiModelProperty("填写意见")
private String views;
}

18
yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryprofitout/flowable/InventoryProfitoutNodeQuery.java

@ -0,0 +1,18 @@
package com.yxt.wms.biz.inventory.wmsinventoryprofitout.flowable;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @description:
* @author: dimengzhe
* @date: 2024/5/11
**/
@Data
public class InventoryProfitoutNodeQuery {
@ApiModelProperty(value = "环节定义id")
private String taskDefKey;
@ApiModelProperty(value = "业务sid")
private String businessSid;
}

24
yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryprofitout/flowable/InventoryProfitoutNodeVo.java

@ -0,0 +1,24 @@
package com.yxt.wms.biz.inventory.wmsinventoryprofitout.flowable;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* @description:
* @author: dimengzhe
* @date: 2024/5/11
**/
@Data
public class InventoryProfitoutNodeVo {
@ApiModelProperty(value = "节点名称")
private String name;
@ApiModelProperty(value = "节点id")
private String id;
@ApiModelProperty(value = "审批组")
private List<String> candidateGroups;
@ApiModelProperty(value = "是否是最后环节")
private String endTask;
}

43
yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryprofitout/flowable/InventoryProfitoutTaskQuery.java

@ -0,0 +1,43 @@
package com.yxt.wms.biz.inventory.wmsinventoryprofitout.flowable;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* @description:
* @author: dimengzhe
* @date: 2024/5/11
**/
@Data
public class InventoryProfitoutTaskQuery {
/**
* 终止驳回撤回
*/
@ApiModelProperty("任务Id")
@NotBlank(message = "参数错误:taskId")
private String taskId;
/**
* 终止驳回撤回
*/
@ApiModelProperty("业务sid")
@NotBlank(message = "参数错误:businessSid")
private String businessSid;
/**
* 终止驳回
*/
@ApiModelProperty("任务意见")
private String comment;
/**
* 终止撤回驳回
*/
@ApiModelProperty("用户Sid")
private String userSid;
/**
* 终止
*/
@ApiModelProperty("流程实例Id")
private String instanceId;
}

20
yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryprofitout/flowable/SubmitInventoryProfitoutDto.java

@ -0,0 +1,20 @@
package com.yxt.wms.biz.inventory.wmsinventoryprofitout.flowable;
import com.yxt.wms.biz.inventory.wmsinventoryprofitin.WmsInventoryProfitinDto;
import com.yxt.wms.biz.inventory.wmsinventoryprofitout.WmsInventoryProfitoutDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @description:
* @author: dimengzhe
* @date: 2024/5/11
**/
@Data
public class SubmitInventoryProfitoutDto extends WmsInventoryProfitoutDto {
@ApiModelProperty("流程实例id")
private String instanceId;
@ApiModelProperty("任务id")
private String taskId;
}

10
yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryprofitoutdetail/WmsInventoryProfitoutDetailMapper.java

@ -26,7 +26,12 @@
package com.yxt.wms.biz.inventory.wmsinventoryprofitoutdetail;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yxt.wms.biz.inventory.wmsinventoryprofitindetail.WmsInventoryProfitinDetailDetailsVo;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import java.util.List;
/**
* Project: yxt-wms(盘库) <br/>
@ -44,4 +49,9 @@ import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface WmsInventoryProfitoutDetailMapper extends BaseMapper<WmsInventoryProfitoutDetail> {
@Delete("delete from wms_inventory_profitout_detail where mainSid = #{mainSid}")
void delByMainSid(String mainSid);
@Select("select * from wms_inventory_profitout_detail where mainSid = #{mainSid}")
List<WmsInventoryProfitoutDetailDetailsVo> selByMainSid(String mainSid);
}

10
yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryprofitoutdetail/WmsInventoryProfitoutDetailService.java

@ -30,6 +30,8 @@ import com.yxt.common.base.service.MybatisBaseService;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* Project: yxt-wms(盘库) <br/>
* File: WmsInventoryProfitoutDetailService.java <br/>
@ -58,4 +60,12 @@ public class WmsInventoryProfitoutDetailService extends MybatisBaseService<WmsIn
BeanUtil.copyProperties(entity, vo);
return vo;
}
public void delByMainSid(String mainSid) {
baseMapper.delByMainSid(mainSid);
}
public List<WmsInventoryProfitoutDetailDetailsVo> selByMainSid(String mainSid) {
return baseMapper.selByMainSid(mainSid);
}
}

2
yxt-wms-biz/src/main/java/com/yxt/wms/feign/flowable/flow/ProcDefEnum.java

@ -8,6 +8,8 @@ public enum ProcDefEnum {
/***************************正式流程id***********************************/
WMSINVENCHECKREPORT("盘点报告审批", ""),
WMSINVENTORYPROFITIN("盘盈入库申请", ""),
WMSINVENTORYPROFITOUT("盘亏出库申请", ""),
;

Loading…
Cancel
Save