Browse Source

Merge remote-tracking branch 'origin/master'

master
yunuo970428 4 months ago
parent
commit
9bef1b0cf5
  1. 34
      anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/flow3/Flow3Feign.java
  2. 12
      anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/flow3/Flow3Feignback.java
  3. 6
      anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flow3/Flow3Rest.java
  4. 25
      anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flow3/Flow3Service.java
  5. 2
      anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flowtask/FlowTaskMapper.java
  6. 4
      anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flowtask/FlowTaskMapper.xml
  7. 61
      anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flowtask/FlowTaskService.java
  8. 11
      anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmspecialrebate/ScmSpecialRebateFeign.java
  9. 11
      anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmspecialrebate/ScmSpecialRebateFeignFallback.java
  10. 10
      anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehrebate/ScmVehRebateFeign.java
  11. 10
      anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehrebate/ScmVehRebateFeignFallback.java
  12. 4
      anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmspecialrebate/ScmSpecialRebateMapper.java
  13. 22
      anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmspecialrebate/ScmSpecialRebateMapper.xml
  14. 14
      anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmspecialrebate/ScmSpecialRebateRest.java
  15. 150
      anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmspecialrebate/ScmSpecialRebateService.java
  16. 4
      anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehrebate/ScmVehRebateMapper.java
  17. 28
      anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehrebate/ScmVehRebateMapper.xml
  18. 14
      anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehrebate/ScmVehRebateRest.java
  19. 177
      anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehrebate/ScmVehRebateService.java
  20. 23
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/as/storechange/AppStoreChangeDto.java
  21. 29
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/as/storechange/AppStoreChangeFeign.java
  22. 24
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/as/storechange/AppStoreChangeScanVo.java
  23. 24
      anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/as/firstshelves/AppFirstShelvesService.java
  24. 52
      anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/as/storechange/AppStoreChangeRest.java
  25. 210
      anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/as/storechange/AppStoreChangeService.java
  26. 66
      anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/wmsInventory/WmsInventory.java
  27. 10
      anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/wmsInventory/WmsInventoryFeign.java
  28. 8
      yxt-base-biz/src/main/java/com/yxt/base/apiadmin/base/BaseGoodsSpuRest.java
  29. 4
      yxt-base-biz/src/main/java/com/yxt/base/biz/base/basegoodsspu/BaseGoodsSpuMapper.java
  30. 5
      yxt-base-biz/src/main/java/com/yxt/base/biz/base/basegoodsspu/BaseGoodsSpuMapper.xml
  31. 52
      yxt-base-biz/src/main/java/com/yxt/base/biz/base/basegoodsspu/BaseGoodsSpuService.java
  32. 27
      yxt-base-biz/src/main/java/com/yxt/base/biz/base/basegoodsspu/YxtBaseFormCommon.java
  33. 91
      yxt-oa/src/main/java/com/yxt/anrui/oa/api/AdAllocateAssetApplyRest.java
  34. 92
      yxt-oa/src/main/java/com/yxt/anrui/oa/api/AdPurchaseAssetApplyRest.java
  35. 66
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adallocateassetapply/AdAllocateAssetApply.java
  36. 38
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adallocateassetapply/AdAllocateAssetApplyDetailVo.java
  37. 85
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adallocateassetapply/AdAllocateAssetApplyDto.java
  38. 37
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adallocateassetapply/AdAllocateAssetApplyMapper.java
  39. 38
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adallocateassetapply/AdAllocateAssetApplyMapper.xml
  40. 339
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adallocateassetapply/AdAllocateAssetApplyService.java
  41. 85
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adallocateassetapply/AdAllocateAssetApplyVo.java
  42. 60
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adallocateassetdetails/AdAllocateAssetDetails.java
  43. 69
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adallocateassetdetails/AdAllocateAssetDetailsDto.java
  44. 41
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adallocateassetdetails/AdAllocateAssetDetailsMapper.java
  45. 9
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adallocateassetdetails/AdAllocateAssetDetailsMapper.xml
  46. 83
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adallocateassetdetails/AdAllocateAssetDetailsService.java
  47. 71
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adallocateassetdetails/AdAllocateAssetDetailsVo.java
  48. 66
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adallocateassetdetails/AdAllocateAssetListDetailsVo.java
  49. 55
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adpurchaseassetapply/AdPurchaseAssetApply.java
  50. 34
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adpurchaseassetapply/AdPurchaseAssetApplyDetailVo.java
  51. 80
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adpurchaseassetapply/AdPurchaseAssetApplyDto.java
  52. 37
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adpurchaseassetapply/AdPurchaseAssetApplyMapper.java
  53. 36
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adpurchaseassetapply/AdPurchaseAssetApplyMapper.xml
  54. 335
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adpurchaseassetapply/AdPurchaseAssetApplyService.java
  55. 73
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adpurchaseassetapply/AdPurchaseAssetApplyVo.java
  56. 60
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adpurchaseassetdetails/AdPurchaseAssetDetails.java
  57. 65
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adpurchaseassetdetails/AdPurchaseAssetDetailsDto.java
  58. 41
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adpurchaseassetdetails/AdPurchaseAssetDetailsMapper.java
  59. 9
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adpurchaseassetdetails/AdPurchaseAssetDetailsMapper.xml
  60. 83
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adpurchaseassetdetails/AdPurchaseAssetDetailsService.java
  61. 72
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adpurchaseassetdetails/AdPurchaseAssetDetailsVo.java
  62. 69
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adpurchaseassetdetails/AdPurchaseAssetListDetailsVo.java
  63. 2
      yxt-oa/src/main/java/com/yxt/anrui/oa/feign/file/OaFileEnum.java
  64. 4
      yxt-oa/src/main/java/com/yxt/anrui/oa/feign/flowable/flow/ProcDefEnum.java
  65. 24
      yxt-oa/src/main/java/com/yxt/anrui/oa/feign/flowable/flow3/Flow3Feign.java
  66. 13
      yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsH5Rest.java
  67. 22
      yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsInventoryRest.java
  68. 11
      yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryMapper.java
  69. 211
      yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryMapper.xml
  70. 99
      yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryService.java
  71. 48
      yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/appH5/GoodsTwoListVo.java
  72. 28
      yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/appH5/GoodsTwoQuery.java
  73. 41
      yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/appH5/GoodsTwoVo.java

34
anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/flow3/Flow3Feign.java

@ -0,0 +1,34 @@
package com.yxt.anrui.flowable.api.flow3;
import com.yxt.anrui.flowable.api.flow.UpdateFlowFieldVo;
import com.yxt.anrui.flowable.api.flow2.FlowFeignback;
import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables;
import com.yxt.common.core.result.ResultBean;
import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.ResponseBody;
/**
* @description:
* @author: dimengzhe
* @date: 2025/2/12
**/
@FeignClient(
contextId = "anrui-flowable-Flow3",
name = "anrui-flowable",
path = "v3/flow",
fallback = Flow3Feignback.class)
public interface Flow3Feign {
@ApiOperation(value = "启动流程")
@PostMapping(value = "/startProcess")
@ResponseBody
ResultBean<UpdateFlowFieldVo> startProcess(@RequestBody BusinessVariables dto);
@ApiOperation(value = "处理流程")
@PostMapping(value = "/handleProsess")
@ResponseBody
ResultBean<UpdateFlowFieldVo> handleProsess(@RequestBody BusinessVariables bv);
}

12
anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/flow3/Flow3Feignback.java

@ -0,0 +1,12 @@
package com.yxt.anrui.flowable.api.flow3;
import org.springframework.stereotype.Component;
/**
* @description:
* @author: dimengzhe
* @date: 2025/2/12
**/
@Component
public class Flow3Feignback {
}

6
anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flow3/Flow3Rest.java

@ -3,6 +3,8 @@ package com.yxt.anrui.flowable.biz.flow3;
import com.alibaba.fastjson.JSONObject;
import com.google.common.util.concurrent.ThreadFactoryBuilder;
import com.yxt.anrui.flowable.api.flow.UpdateFlowFieldVo;
import com.yxt.anrui.flowable.api.flow2.FlowFeign;
import com.yxt.anrui.flowable.api.flow3.Flow3Feign;
import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables;
import com.yxt.common.base.utils.StringUtils;
import com.yxt.common.core.result.ResultBean;
@ -26,13 +28,14 @@ import java.util.concurrent.*;
**/
@RestController
@RequestMapping("v3/flow")
public class Flow3Rest {
public class Flow3Rest implements Flow3Feign {
Logger log = LoggerFactory.getLogger(Flow3Rest.class);
@Autowired
private Flow3Service flowService;
@PostMapping("/startProcess")
@Override
public ResultBean<UpdateFlowFieldVo> startProcess(@RequestBody BusinessVariables bv) {
ResultBean<UpdateFlowFieldVo> rb = ResultBean.fireFail();
//获取表单中的参数
@ -54,6 +57,7 @@ public class Flow3Rest {
}
@PostMapping("/handleProsess")
@Override
public ResultBean<UpdateFlowFieldVo> handleProsess(@RequestBody BusinessVariables bv) {
ResultBean<UpdateFlowFieldVo> rb = ResultBean.fireFail();
ResultBean<UpdateFlowFieldVo> updateFlowFieldVoResultBean = flowService.handleProsess(bv, true);

25
anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flow3/Flow3Service.java

@ -106,13 +106,11 @@ public class Flow3Service extends MybatisBaseService<FlowMapper, Flowable> {
// 获取传入的变量
Map<String, Object> variables = bv.getFormVariables();
Map<String, Object> variablesSeconds = bv.getFormVariables();
String nextNodeUserSids = "";
String nextNodeUserSids = bv.getNextNodeUserSids();
List<String> userSidForNextNode = new ArrayList<>();
if (StringUtils.isBlank(nextNodeUserSids)) {
userSidForNextNode = getNextNodeUser(bv).getData();
variables.put("approvers", userSidForNextNode);
} else {
nextNodeUserSids = bv.getNextNodeUserSids();
}
@ -155,21 +153,30 @@ public class Flow3Service extends MybatisBaseService<FlowMapper, Flowable> {
for (int i = 0; i < tasks.size(); i++) {
Task task2 = tasks.get(i);
String isMultiInstanceTask = isMultiInstanceTask(task2);
id_ = task2.getId();
task_def_key_ = task2.getTaskDefinitionKey();
name_ = task2.getName();
if ("会签任务".equals(isMultiInstanceTask) || "或签任务".equals(isMultiInstanceTask)) {
String approver = getApproverForTask(userSidForNextNode, i);
approver = change(approver, bv.getInstanceId());
taskService.claim(task2.getId(), approver);
} else {
nextNodeUserSids = userSidForNextNode.get(0);
//查询下一环节是否有转办并添加评论
nextNodeUserSids = change(nextNodeUserSids, processInstance.getProcessInstanceId());
taskService.setAssignee(id_, nextNodeUserSids);
taskService.setVariablesLocal(id_, variables);
}
id_ = task2.getId();
task_def_key_ = task2.getTaskDefinitionKey();
name_ = task2.getName();
}
} else {
Task task2 = tasks.get(0);
id_ = task2.getId();
task_def_key_ = task2.getTaskDefinitionKey();
name_ = task2.getName();
//查询下一环节是否有转办并添加评论
nextNodeUserSids = change(nextNodeUserSids, processInstance.getProcessInstanceId());
taskService.setAssignee(id_, nextNodeUserSids);
taskService.setVariablesLocal(id_, variables);
}
//提交前传入下一环节待办人
@ -234,7 +241,7 @@ public class Flow3Service extends MybatisBaseService<FlowMapper, Flowable> {
nextUserSid = ProcDefEnum.DEFAUL_TADMIN_SID.getProDefId();
adminContains = true;
} else {
if(!listResultBean.getData().isEmpty()){
if(listResultBean.getData() != null){
userSidForNextNode = listResultBean.getData();
formVariables.put("approvers", listResultBean.getData());
}
@ -277,7 +284,9 @@ public class Flow3Service extends MybatisBaseService<FlowMapper, Flowable> {
Task task2 = tasks.get(i);
isMultiInstanceTask = isMultiInstanceTask(task2);
if ("会签任务".equals(isMultiInstanceTask) || "或签任务".equals(isMultiInstanceTask)) {
taskService.claim(task2.getId(), userSidForNextNode.get(i)); // 由候选人认领任务
String nextUserSidNext = userSidForNextNode.get(i);
nextUserSidNext = change(nextUserSidNext, bv.getInstanceId());
taskService.claim(task2.getId(), nextUserSidNext); // 由候选人认领任务
isMultiInstanceTaskNext = true;
} else {

2
anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flowtask/FlowTaskMapper.java

@ -44,4 +44,6 @@ public interface FlowTaskMapper extends BaseMapper<FlowTask> {
Map<String, Object> getTaskByDefKey(@Param("procId")String processInstanceId, @Param("taskId")String id);
Map<String, Object> getActHiVarinstForOrgPath(@Param("taskId")String taskId);
List<String> selectAssignee(@Param("taskDefKey") String taskDefKey, @Param("procInsId") String procInsId);
}

4
anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flowtask/FlowTaskMapper.xml

@ -277,4 +277,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
WHERE
ahv.task_id_= #{taskId} and ahv.name_="orgPath" order by ahv.id_ desc limit 0,1
</select>
<select id="selectAssignee" resultType="java.lang.String">
SELECT ASSIGNEE_ FROM ACT_HI_TASKINST where PROC_INST_ID_ = #{procInsId} AND TASK_DEF_KEY_ = #{taskDefKey} and END_TIME_ is null ORDER BY START_TIME_ DESC
</select>
</mapper>

61
anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flowtask/FlowTaskService.java

@ -920,7 +920,7 @@ public class FlowTaskService extends MybatisBaseService<FlowTaskMapper, FlowTask
long time = start_time_.getTime();
Date date = new Date(time);
flowTask.setCreateTime(date);
flowTask.setAssigneeSid(histTask.get("ASSIGNEE_") == null ? "" : histTask.get("ASSIGNEE_").toString());
/*flowTask.setAssigneeSid(histTask.get("ASSIGNEE_") == null ? "" : histTask.get("ASSIGNEE_").toString());
if (histTask.get("ASSIGNEE_") != null && StringUtils.isNotBlank(histTask.get("ASSIGNEE_").toString())) {
ResultBean<List<SysUserVo>> assignee_ = sysUserFeign.fetchBySids(histTask.get("ASSIGNEE_").toString());
StringBuilder userName = new StringBuilder();
@ -931,7 +931,8 @@ public class FlowTaskService extends MybatisBaseService<FlowTaskMapper, FlowTask
String userName_str = "";
userName_str = userName.substring(0, userName.length() - 1);
flowTask.setAssigneeName(userName_str);
}
}*/
flowTask.setHasRevokeButton(userSid.equals(flowTask.getAssigneeSid()) ? true : false);
flowTask.setProcDefId(histTask.get("PROC_DEF_ID_") == null ? "" : histTask.get("PROC_DEF_ID_").toString());
flowTask.setTaskDefKey(histTask.get("taskDefKey") == null ? "" : histTask.get("taskDefKey").toString());
@ -941,6 +942,22 @@ public class FlowTaskService extends MybatisBaseService<FlowTaskMapper, FlowTask
flowTask.setProcDefVersion(histTask.get("PROC_DEF_VERSION_") == null ? 0 : Integer.parseInt(histTask.get("PROC_DEF_VERSION_").toString()));
flowTask.setProcInsId(histTask.get("PROC_INST_ID_").toString());
flowTask.setHisProcInsId(histTask.get("PROC_INST_ID_").toString());
//--2025-02-12添加开始
List<String> ASSIGNEE_List = baseMapper.selectAssignee(flowTask.getTaskDefKey(),flowTask.getProcInsId());
if(!ASSIGNEE_List.isEmpty()){
StringBuilder userName = new StringBuilder();
for (String assignee : ASSIGNEE_List) {
ResultBean<List<SysUserVo>> assignee_ = sysUserFeign.fetchBySids(assignee);
List<SysUserVo> data1 = assignee_.getData();
for (SysUserVo data : data1) {
userName.append(data.getName()).append(",");
}
}
String userName_str = "";
userName_str = userName.substring(0, userName.length() - 1);
flowTask.setAssigneeName(userName_str);
}
//===2025-02-12添加结束
ResultBean<SysUserVo> sysUserVoResultBean = sysUserFeign.fetchBySid(histTask.get("START_USER_ID_").toString());
flowTask.setStartUserSid(sysUserVoResultBean.getData().getSid());
flowTask.setStartUserName(sysUserVoResultBean.getData().getName());
@ -1053,7 +1070,7 @@ public class FlowTaskService extends MybatisBaseService<FlowTaskMapper, FlowTask
Date date = new Date(time);
flowTask.setCreateTime(date);
flowTask.setProcessCreateTime(new Date(processCreateTime1));
flowTask.setAssigneeSid(histTask.get("ASSIGNEE_") == null ? "" : histTask.get("ASSIGNEE_").toString());
/* flowTask.setAssigneeSid(histTask.get("ASSIGNEE_") == null ? "" : histTask.get("ASSIGNEE_").toString());
if (histTask.get("ASSIGNEE_") != null && StringUtils.isNotBlank(histTask.get("ASSIGNEE_").toString())) {
ResultBean<List<SysUserVo>> assignee_ = sysUserFeign.fetchBySids(histTask.get("ASSIGNEE_").toString());
StringBuilder userName = new StringBuilder();
@ -1064,7 +1081,7 @@ public class FlowTaskService extends MybatisBaseService<FlowTaskMapper, FlowTask
String userName_str = "";
userName_str = userName.substring(0, userName.length() - 1);
flowTask.setAssigneeName(userName_str);
}
}*/
flowTask.setHasRevokeButton(userSid.equals(flowTask.getAssigneeSid()) ? true : false);
flowTask.setProcDefId(histTask.get("PROC_DEF_ID_") == null ? "" : histTask.get("PROC_DEF_ID_").toString());
@ -1076,6 +1093,22 @@ public class FlowTaskService extends MybatisBaseService<FlowTaskMapper, FlowTask
flowTask.setProcDefVersion(histTask.get("PROC_DEF_VERSION_") == null ? 0 : Integer.parseInt(histTask.get("PROC_DEF_VERSION_").toString()));
flowTask.setProcInsId(histTask.get("PROC_INST_ID_").toString());
flowTask.setHisProcInsId(histTask.get("PROC_INST_ID_").toString());
//--2025-02-12添加开始
List<String> ASSIGNEE_List = baseMapper.selectAssignee(flowTask.getTaskDefKey(),flowTask.getProcInsId());
if(!ASSIGNEE_List.isEmpty()){
StringBuilder userName = new StringBuilder();
for (String assignee : ASSIGNEE_List) {
ResultBean<List<SysUserVo>> assignee_ = sysUserFeign.fetchBySids(assignee);
List<SysUserVo> data1 = assignee_.getData();
for (SysUserVo data : data1) {
userName.append(data.getName()).append(",");
}
}
String userName_str = "";
userName_str = userName.substring(0, userName.length() - 1);
flowTask.setAssigneeName(userName_str);
}
//===2025-02-12添加结束
ResultBean<SysUserVo> sysUserVoResultBean = sysUserFeign.fetchBySid(histTask.get("START_USER_ID_").toString());
flowTask.setStartUserSid(sysUserVoResultBean.getData().getSid());
flowTask.setStartUserName(sysUserVoResultBean.getData().getName());
@ -1175,7 +1208,7 @@ public class FlowTaskService extends MybatisBaseService<FlowTaskMapper, FlowTask
Date date = new Date(time);
flowTask.setCreateTime(date);
flowTask.setProcessCreateTime(new Date(processCreateTime1));
flowTask.setAssigneeSid(histTask.get("ASSIGNEE_") == null ? "" : histTask.get("ASSIGNEE_").toString());
/*flowTask.setAssigneeSid(histTask.get("ASSIGNEE_") == null ? "" : histTask.get("ASSIGNEE_").toString());
if (histTask.get("ASSIGNEE_") != null && StringUtils.isNotBlank(histTask.get("ASSIGNEE_").toString())) {
ResultBean<List<SysUserVo>> assignee_ = sysUserFeign.fetchBySids(histTask.get("ASSIGNEE_").toString());
StringBuilder userName = new StringBuilder();
@ -1186,7 +1219,7 @@ public class FlowTaskService extends MybatisBaseService<FlowTaskMapper, FlowTask
String userName_str = "";
userName_str = userName.substring(0, userName.length() - 1);
flowTask.setAssigneeName(userName_str);
}
}*/
flowTask.setHasRevokeButton(userSid.equals(flowTask.getAssigneeSid()) ? true : false);
flowTask.setProcDefId(histTask.get("PROC_DEF_ID_") == null ? "" : histTask.get("PROC_DEF_ID_").toString());
@ -1198,6 +1231,22 @@ public class FlowTaskService extends MybatisBaseService<FlowTaskMapper, FlowTask
flowTask.setProcDefVersion(histTask.get("PROC_DEF_VERSION_") == null ? 0 : Integer.parseInt(histTask.get("PROC_DEF_VERSION_").toString()));
flowTask.setProcInsId(histTask.get("PROC_INST_ID_").toString());
flowTask.setHisProcInsId(histTask.get("PROC_INST_ID_").toString());
//--2025-02-12添加开始
List<String> ASSIGNEE_List = baseMapper.selectAssignee(flowTask.getTaskDefKey(),flowTask.getProcInsId());
if(!ASSIGNEE_List.isEmpty()){
StringBuilder userName = new StringBuilder();
for (String assignee : ASSIGNEE_List) {
ResultBean<List<SysUserVo>> assignee_ = sysUserFeign.fetchBySids(assignee);
List<SysUserVo> data1 = assignee_.getData();
for (SysUserVo data : data1) {
userName.append(data.getName()).append(",");
}
}
String userName_str = "";
userName_str = userName.substring(0, userName.length() - 1);
flowTask.setAssigneeName(userName_str);
}
//===2025-02-12添加结束
ResultBean<SysUserVo> sysUserVoResultBean = sysUserFeign.fetchBySid(histTask.get("START_USER_ID_").toString());
flowTask.setStartUserSid(sysUserVoResultBean.getData().getSid());
flowTask.setStartUserName(sysUserVoResultBean.getData().getName());

11
anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmspecialrebate/ScmSpecialRebateFeign.java

@ -37,6 +37,7 @@ import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.text.ParseException;
import java.util.List;
@Api(tags = "专项返利表")
@FeignClient(
@ -51,6 +52,11 @@ public interface ScmSpecialRebateFeign {
@ResponseBody
public ResultBean<PagerVo<ScmSpecialRebateVo>> listPage(@RequestBody PagerQuery<ScmSpecialRebateQuery> pq);
@ApiOperation("根据条件分页查询数据的列表")
@PostMapping("/listAll")
@ResponseBody
public ResultBean<List<ScmSpecialRebateVo>> listAll(@RequestBody ScmSpecialRebateQuery query);
@ApiOperation("新增或修改")
@PostMapping("/save")
@ResponseBody
@ -81,6 +87,11 @@ public interface ScmSpecialRebateFeign {
@ResponseBody
public ResultBean<PagerVo<ScmSpecialRebateVo>> checkApplyGetSpecialRebate(@RequestBody PagerQuery<ScmSpecialRebateQuery> pq);
@ApiOperation("专项返利核对申请选择待核对专项返利信息")
@PostMapping("/checkApplyGetSpecialRebateAll")
@ResponseBody
public ResultBean<List<ScmSpecialRebateVo>> checkApplyGetSpecialRebateAll(@RequestBody ScmSpecialRebateQuery query);
@ApiOperation("专项返利核对申请选择已上传专项返利信息")
@PostMapping("/checkApplyGetAlreadyUploadSpecialRebate")
@ResponseBody

11
anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmspecialrebate/ScmSpecialRebateFeignFallback.java

@ -34,6 +34,7 @@ import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.text.ParseException;
import java.util.List;
/**
* Project: anrui-scm(专项返利管理) <br/>
@ -57,6 +58,11 @@ public class ScmSpecialRebateFeignFallback implements ScmSpecialRebateFeign {
return rb.setMsg("接口anrui-scm/scmspecialrebate/listPage无法访问");
}
@Override
public ResultBean<List<ScmSpecialRebateVo>> listAll(ScmSpecialRebateQuery query) {
return null;
}
@Override
public ResultBean save(ScmSpecialRebateDto dto){
return ResultBean.fireFail().setMsg("接口anrui-scm/scmspecialrebate/save无法访问");
@ -88,6 +94,11 @@ public class ScmSpecialRebateFeignFallback implements ScmSpecialRebateFeign {
return null;
}
@Override
public ResultBean<List<ScmSpecialRebateVo>> checkApplyGetSpecialRebateAll(ScmSpecialRebateQuery query) {
return null;
}
@Override
public ResultBean<PagerVo<ScmSpecialRebateVo>> checkApplyGetAlreadyUploadSpecialRebate(PagerQuery<ScmSpecialRebateQuery> pq) {
return null;

10
anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehrebate/ScmVehRebateFeign.java

@ -67,6 +67,11 @@ public interface ScmVehRebateFeign {
@ResponseBody
public ResultBean<PagerVo<ScmVehRebateVo>> listPage(@RequestBody PagerQuery<ScmVehRebateQuery> pq);
@ApiOperation("根据条件分页查询数据的列表")
@PostMapping("/listAll")
@ResponseBody
public ResultBean<List<ScmVehRebateVo>> listAll(@RequestBody ScmVehRebateQuery query);
@ApiOperation("单车返利未预提申请选择单车返利信息")
@PostMapping("/withApplyGetVehRebate")
@ResponseBody
@ -77,6 +82,11 @@ public interface ScmVehRebateFeign {
@ResponseBody
public ResultBean<PagerVo<ScmVehRebateVo>> checkApplyGetVehRebate(@RequestBody PagerQuery<ScmVehRebateQuery> pq);
@ApiOperation("单车返利核对申请选择待核对单车返利信息")
@PostMapping("/checkApplyGetVehRebateAll")
@ResponseBody
public ResultBean<List<ScmVehRebateVo>> checkApplyGetVehRebateAll(@RequestBody ScmVehRebateQuery query);
@ApiOperation("一次导出")
@PostMapping("/excelListOne")
public void excelListOne(@RequestBody ScmVehRebateQuery scmVehRebateQuery);

10
anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehrebate/ScmVehRebateFeignFallback.java

@ -58,6 +58,11 @@ public class ScmVehRebateFeignFallback implements ScmVehRebateFeign {
return rb.setMsg("接口anrui-scm/scmvehrebate/listPage无法访问");
}
@Override
public ResultBean<List<ScmVehRebateVo>> listAll(ScmVehRebateQuery query) {
return null;
}
@Override
public ResultBean<PagerVo<ScmVehRebateVo>> withApplyGetVehRebate(PagerQuery<ScmVehRebateQuery> pq) {
return null;
@ -68,6 +73,11 @@ public class ScmVehRebateFeignFallback implements ScmVehRebateFeign {
return null;
}
@Override
public ResultBean<List<ScmVehRebateVo>> checkApplyGetVehRebateAll(ScmVehRebateQuery query) {
return null;
}
@Override
public void excelListOne(ScmVehRebateQuery scmVehRebateQuery) {

4
anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmspecialrebate/ScmSpecialRebateMapper.java

@ -85,4 +85,8 @@ public interface ScmSpecialRebateMapper extends BaseMapper<ScmSpecialRebate> {
void updateAdjustmentState(@Param("sid") String sid, @Param("adjustmentState") int adjustmentState);
List<ScmSpecialRebateExcelVo> excelList(@Param(Constants.WRAPPER) QueryWrapper<ScmSpecialRebate> qw);
List<ScmSpecialRebateVo> checkApplyGetSpecialRebateAll(@Param(Constants.WRAPPER) QueryWrapper<ScmSpecialRebate> qw);
List<ScmSpecialRebateVo> listAll(@Param(Constants.WRAPPER) QueryWrapper<ScmSpecialRebate> qw);
}

22
anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmspecialrebate/ScmSpecialRebateMapper.xml

@ -151,4 +151,26 @@
${ew.sqlSegment}
</where>
</select>
<select id="checkApplyGetSpecialRebateAll" resultType="com.yxt.anrui.scm.api.scmspecialrebate.ScmSpecialRebateVo">
SELECT *,
expectItureCost + expectTreatCost + expectSuppCost AS expectCost,
expectItureCost + expectTreatCost + expectSuppCost AS withholdCost,
onceItureCost + onceTreatCost + onceSuppCost + secondItureCost + secondTreatCost + secondSuppCost AS money
FROM scm_special_rebate
<where>
${ew.sqlSegment}
</where>
</select>
<select id="listAll" resultType="com.yxt.anrui.scm.api.scmspecialrebate.ScmSpecialRebateVo">
SELECT *,
expectItureCost + expectTreatCost + expectSuppCost AS expectCost,
expectItureCost + expectTreatCost + expectSuppCost AS withholdCost,
onceItureCost + onceTreatCost + onceSuppCost + secondItureCost + secondTreatCost + secondSuppCost AS money
FROM scm_special_rebate
<where>
${ew.sqlSegment}
</where>
</select>
</mapper>

14
anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmspecialrebate/ScmSpecialRebateRest.java

@ -73,6 +73,13 @@ public class ScmSpecialRebateRest implements ScmSpecialRebateFeign {
return rb.success().setData(pv);
}
@Override
public ResultBean<List<ScmSpecialRebateVo>> listAll(ScmSpecialRebateQuery query) {
ResultBean rb = ResultBean.fireFail();
List<ScmSpecialRebateVo> scmSpecialRebateVoList = scmSpecialRebateService.listAll(query);
return rb.success().setData(scmSpecialRebateVoList);
}
@ApiOperation("导出")
@PostMapping("/excelList")
public void excelList(@RequestBody ScmSpecialRebateQuery query) {
@ -147,6 +154,13 @@ public class ScmSpecialRebateRest implements ScmSpecialRebateFeign {
return rb.success().setData(pv);
}
@Override
public ResultBean<List<ScmSpecialRebateVo>> checkApplyGetSpecialRebateAll(ScmSpecialRebateQuery query) {
ResultBean rb = ResultBean.fireFail();
List<ScmSpecialRebateVo> scmSpecialRebateVoList = scmSpecialRebateService.checkApplyGetSpecialRebateAll(query);
return rb.success().setData(scmSpecialRebateVoList);
}
@Override
public ResultBean<PagerVo<ScmSpecialRebateVo>> checkApplyGetAlreadyUploadSpecialRebate(PagerQuery<ScmSpecialRebateQuery> pq) {
ResultBean rb = ResultBean.fireFail();

150
anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmspecialrebate/ScmSpecialRebateService.java

@ -150,6 +150,76 @@ public class ScmSpecialRebateService extends MybatisBaseService<ScmSpecialRebate
return p;
}
public List<ScmSpecialRebateVo> listAll(ScmSpecialRebateQuery query) {
QueryWrapper<ScmSpecialRebate> qw = new QueryWrapper<>();
//========================================数据授权开始
if (StringUtils.isNotBlank(query.getMenuUrl())) {
PrivilegeQuery privilegeQuery = new PrivilegeQuery();
privilegeQuery.setOrgPath(query.getOrgPath());
privilegeQuery.setMenuUrl(query.getMenuUrl());
privilegeQuery.setMenuSid(query.getMenuSid());
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("orgPath", orgSidPath);
} else if ("2".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i2);
qw.like("orgPath", orgSidPath);
} else if ("3".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i3);
qw.like("orgPath", orgSidPath);
} else if ("4".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i4);
qw.like("orgPath", orgSidPath);
} else if ("5".equals(orgLevelKey)) {
qw.eq("createBySid", query.getUserSid());
} else {
List<ScmSpecialRebateVo> p = new ArrayList<>();
return p;
}
} else {
List<ScmSpecialRebateVo> p = new ArrayList<>();
return p;
}
}
if (StringUtils.isNotBlank(query.getCreateOrgName())) {
qw.like("createOrgName", query.getCreateOrgName());
}
if (StringUtils.isNotBlank(query.getBrandName())) {
qw.like("brandName", query.getBrandName());
}
if (StringUtils.isNotBlank(query.getPurchaseSystemName())) {
qw.like("purchaseSystemName", query.getPurchaseSystemName());
}
if (StringUtils.isNotBlank(query.getRebateTypeKey())) {
qw.eq("rebateTypeKey", query.getRebateTypeKey());
}
if (StringUtils.isNotBlank(query.getRebateName())) {
qw.like("rebateName", query.getRebateName());
}
if (StringUtils.isNotBlank(query.getState())) {
qw.eq("state", query.getState());
}
String createStartTime = query.getCreateStartTime();
String createEndTime = query.getCreateEndTime();
qw.apply(StringUtils.isNotBlank(createStartTime), "date_format (createTime,'%Y-%m-%d') >= date_format('" + createStartTime + "','%Y-%m-%d')").
apply(StringUtils.isNotBlank(createEndTime), "date_format (createTime,'%Y-%m-%d') <= date_format('" + createEndTime + "','%Y-%m-%d')"
);
qw.orderByDesc("createTime");
List<ScmSpecialRebateVo> scmSpecialRebateVoList = baseMapper.listAll(qw);
return scmSpecialRebateVoList;
}
public ResultBean saveOrUpdateDto(ScmSpecialRebateDto dto) {
ResultBean rb = ResultBean.fireFail();
String dtoSid = dto.getSid();
@ -318,6 +388,86 @@ public class ScmSpecialRebateService extends MybatisBaseService<ScmSpecialRebate
return p;
}
public List<ScmSpecialRebateVo> checkApplyGetSpecialRebateAll(ScmSpecialRebateQuery query) {
QueryWrapper<ScmSpecialRebate> qw = new QueryWrapper<>();
//========================================数据授权开始
if (StringUtils.isNotBlank(query.getMenuUrl())) {
PrivilegeQuery privilegeQuery = new PrivilegeQuery();
privilegeQuery.setOrgPath(query.getOrgPath());
privilegeQuery.setMenuUrl(query.getMenuUrl());
privilegeQuery.setMenuSid(query.getMenuSid());
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("orgPath", orgSidPath);
} else if ("2".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i2);
qw.like("orgPath", orgSidPath);
} else if ("3".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i3);
qw.like("orgPath", orgSidPath);
} else if ("4".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i4);
qw.like("orgPath", orgSidPath);
} else if ("5".equals(orgLevelKey)) {
qw.eq("createBySid", query.getUserSid());
} else {
List<ScmSpecialRebateVo> p = new ArrayList<>();
return p;
}
} else {
List<ScmSpecialRebateVo> p = new ArrayList<>();
return p;
}
}
if (StringUtils.isNotBlank(query.getCreateOrgName())) {
qw.like("createOrgName", query.getCreateOrgName());
}
if (StringUtils.isNotBlank(query.getBrandName())) {
qw.like("brandName", query.getBrandName());
}
if (StringUtils.isNotBlank(query.getPurchaseSystemName())) {
qw.like("purchaseSystemName", query.getPurchaseSystemName());
}
if (StringUtils.isNotBlank(query.getRebateTypeKey())) {
qw.eq("rebateTypeKey", query.getRebateTypeKey());
}
if (StringUtils.isNotBlank(query.getRebateName())) {
qw.like("rebateName", query.getRebateName());
}
if (StringUtils.isNotBlank(query.getOnceCheckState())) {
qw.eq("onceCheckState", query.getOnceCheckState());
}
String createStartTime = query.getCreateStartTime();
String createEndTime = query.getCreateEndTime();
qw.apply(StringUtils.isNotBlank(createStartTime), "date_format (createTime,'%Y-%m-%d') >= date_format('" + createStartTime + "','%Y-%m-%d')").
apply(StringUtils.isNotBlank(createEndTime), "date_format (createTime,'%Y-%m-%d') <= date_format('" + createEndTime + "','%Y-%m-%d')"
);
qw.eq("state", 2);
qw.eq("adjustmentState", 0);
qw.orderByDesc("createTime");
List<ScmSpecialRebateVo> scmSpecialRebateVoList = baseMapper.checkApplyGetSpecialRebateAll(qw);
for (ScmSpecialRebateVo record : scmSpecialRebateVoList) {
//上传状态:未上传
if (StringUtils.isBlank(record.getUploadDate())) {
record.setUploadState("0");
} else {//上传状态:已上传
record.setUploadState("1");
}
}
return scmSpecialRebateVoList;
}
public PagerVo<ScmSpecialRebateVo> checkApplyGetAlreadyUploadSpecialRebate(PagerQuery<ScmSpecialRebateQuery> pq) {
ScmSpecialRebateQuery query = pq.getParams();
QueryWrapper<ScmSpecialRebate> qw = new QueryWrapper<>();

4
anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehrebate/ScmVehRebateMapper.java

@ -83,4 +83,8 @@ public interface ScmVehRebateMapper extends BaseMapper<ScmVehRebate> {
void delByVehSid(String vehSid);
List<ScmVehRebateExcelVo> excelList(@Param(Constants.WRAPPER) QueryWrapper<ScmVehRebate> qw);
List<ScmVehRebateVo> checkApplyGetVehRebateAll(@Param(Constants.WRAPPER) QueryWrapper<ScmVehRebate> qw);
List<ScmVehRebateVo> listAll(@Param(Constants.WRAPPER) QueryWrapper<ScmVehRebate> qw);
}

28
anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehrebate/ScmVehRebateMapper.xml

@ -131,4 +131,32 @@
${ew.sqlSegment}
</where>
</select>
<select id="checkApplyGetVehRebateAll" resultType="com.yxt.anrui.scm.api.scmvehrebate.ScmVehRebateVo">
SELECT
*,
sid AS vehRebateSid,
expectTreatCost + expectSuppCost AS expectCost,
expectTreatCost + expectSuppCost AS withholdCost,
onceTreatCost + onceSuppCost + secondTreatCost + secondSuppCost AS money
FROM
scm_veh_rebate
<where>
${ew.sqlSegment}
</where>
</select>
<select id="listAll" resultType="com.yxt.anrui.scm.api.scmvehrebate.ScmVehRebateVo">
SELECT
*,
sid AS vehRebateSid,
expectTreatCost + expectSuppCost AS expectCost,
expectTreatCost + expectSuppCost AS withholdCost,
onceTreatCost + onceSuppCost + secondTreatCost + secondSuppCost AS money
FROM
scm_veh_rebate
<where>
${ew.sqlSegment}
</where>
</select>
</mapper>

14
anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehrebate/ScmVehRebateRest.java

@ -79,6 +79,13 @@ public class ScmVehRebateRest implements ScmVehRebateFeign {
return rb.success().setData(pv);
}
@Override
public ResultBean<List<ScmVehRebateVo>> listAll(ScmVehRebateQuery query) {
ResultBean rb = ResultBean.fireFail();
List<ScmVehRebateVo> scmVehRebateVoList = scmVehRebateService.listAll(query);
return rb.success().setData(scmVehRebateVoList);
}
@ApiOperation("导出")
@PostMapping("/excelList")
public void excelList(@RequestBody ScmVehRebateQuery query) {
@ -109,6 +116,13 @@ public class ScmVehRebateRest implements ScmVehRebateFeign {
return rb.success().setData(pv);
}
@Override
public ResultBean<List<ScmVehRebateVo>> checkApplyGetVehRebateAll(ScmVehRebateQuery query) {
ResultBean rb = ResultBean.fireFail();
List<ScmVehRebateVo> scmVehRebateVoList = scmVehRebateService.checkApplyGetVehRebateAll(query);
return rb.success().setData(scmVehRebateVoList);
}
@Override
public void excelListOne(ScmVehRebateQuery scmVehRebateQuery) {
//得到所有要导出的数据

177
anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehrebate/ScmVehRebateService.java

@ -66,19 +66,6 @@ import java.net.URLEncoder;
import java.util.*;
import java.util.regex.Pattern;
/**
* Project: anrui-scm(单车返利) <br/>
* File: ScmVehRebateService.java <br/>
* Class: com.yxt.anrui.scm.biz.scmvehrebate.ScmVehRebateService <br/>
* Description: 单车返利表 业务逻辑. <br/>
* Copyright: Copyright (c) 2011 <br/>
* Company: https://gitee.com/liuzp315 <br/>
* Makedate: 2022-08-24 09:01:54 <br/>
*
* @author liupopo
* @version 1.0
* @since 1.0
*/
@Service
public class ScmVehRebateService extends MybatisBaseService<ScmVehRebateMapper, ScmVehRebate> {
@ -179,6 +166,87 @@ public class ScmVehRebateService extends MybatisBaseService<ScmVehRebateMapper,
return p;
}
public List<ScmVehRebateVo> listAll(ScmVehRebateQuery query) {
QueryWrapper<ScmVehRebate> qw = new QueryWrapper<>();
//========================================数据授权开始
if (StringUtils.isNotBlank(query.getMenuUrl())) {
PrivilegeQuery privilegeQuery = new PrivilegeQuery();
privilegeQuery.setOrgPath(query.getOrgPath());
privilegeQuery.setMenuUrl(query.getMenuUrl());
privilegeQuery.setMenuSid(query.getMenuSid());
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("orgPath", orgSidPath);
} else if ("2".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i2);
qw.like("orgPath", orgSidPath);
} else if ("3".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i3);
qw.like("orgPath", orgSidPath);
} else if ("4".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i4);
qw.like("orgPath", orgSidPath);
} else if ("5".equals(orgLevelKey)) {
qw.eq("createBySid", query.getUserSid());
} else {
List<ScmVehRebateVo> p = new ArrayList<>();
return p;
}
} else {
List<ScmVehRebateVo> p = new ArrayList<>();
return p;
}
}
if (StringUtils.isNotBlank(query.getBrandName())) {
qw.like("brandName", query.getBrandName());
}
if (StringUtils.isNotBlank(query.getVehModelName())) {
qw.like("vehModelName", query.getVehModelName());
}
if (StringUtils.isNotBlank(query.getVinNo())) {
qw.like("vinNo", query.getVinNo());
}
if (StringUtils.isNotBlank(query.getRebateTypeKey())) {
qw.eq("rebateTypeKey", query.getRebateTypeKey());
}
if (StringUtils.isNotBlank(query.getRebateName())) {
qw.like("rebateName", query.getRebateName());
}
if (StringUtils.isNotBlank(query.getState())) {
qw.eq("state", query.getState());
}
if (StringUtils.isNotBlank(query.getUseOrgName())) {
qw.like("useOrgName", query.getUseOrgName());
}
if (StringUtils.isNotBlank(query.getPurchaseSystemName())) {
qw.like("purchaseSystemName", query.getPurchaseSystemName());
}
String createStartTime = query.getCreateStartTime();
String createEndTime = query.getCreateEndTime();
qw.apply(StringUtils.isNotBlank(createStartTime), "date_format (createTime,'%Y-%m-%d') >= date_format('" + createStartTime + "','%Y-%m-%d')").
apply(StringUtils.isNotBlank(createEndTime), "date_format (createTime,'%Y-%m-%d') <= date_format('" + createEndTime + "','%Y-%m-%d')"
);
qw.orderByDesc("createTime");
List<ScmVehRebateVo> scmVehRebateVoList = baseMapper.listAll(qw);
for (ScmVehRebateVo record : scmVehRebateVoList) {
if ("001".equals(record.getCalculationModeKey())){
record.setCalculationStandard(record.getCalculationStandard() + "%");
}
}
return scmVehRebateVoList;
}
public PagerVo<ScmVehRebateVo> withApplyGetVehRebate(PagerQuery<ScmVehRebateQuery> pq) {
ScmVehRebateQuery query = pq.getParams();
QueryWrapper<ScmVehRebate> qw = new QueryWrapper<>();
@ -302,6 +370,89 @@ public class ScmVehRebateService extends MybatisBaseService<ScmVehRebateMapper,
return p;
}
public List<ScmVehRebateVo> checkApplyGetVehRebateAll(ScmVehRebateQuery query) {
QueryWrapper<ScmVehRebate> qw = new QueryWrapper<>();
//========================================数据授权开始
if (StringUtils.isNotBlank(query.getMenuUrl())) {
PrivilegeQuery privilegeQuery = new PrivilegeQuery();
privilegeQuery.setOrgPath(query.getOrgPath());
privilegeQuery.setMenuUrl(query.getMenuUrl());
privilegeQuery.setMenuSid(query.getMenuSid());
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("orgPath", orgSidPath);
} else if ("2".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i2);
qw.like("orgPath", orgSidPath);
} else if ("3".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i3);
qw.like("orgPath", orgSidPath);
} else if ("4".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i4);
qw.like("orgPath", orgSidPath);
} else if ("5".equals(orgLevelKey)) {
qw.eq("createBySid", query.getUserSid());
} else {
List<ScmVehRebateVo> p = new ArrayList<>();
return p;
}
} else {
List<ScmVehRebateVo> p = new ArrayList<>();
return p;
}
}
if (StringUtils.isNotBlank(query.getBrandName())) {
qw.like("brandName", query.getBrandName());
}
if (StringUtils.isNotBlank(query.getVehModelName())) {
qw.like("vehModelName", query.getVehModelName());
}
if (StringUtils.isNotBlank(query.getVinNo())) {
qw.like("vinNo", query.getVinNo());
}
if (StringUtils.isNotBlank(query.getRebateTypeValue())) {
qw.like("rebateTypeValue", query.getRebateTypeValue());
}
if (StringUtils.isNotBlank(query.getRebateName())) {
qw.like("rebateName", query.getRebateName());
}
if (StringUtils.isNotBlank(query.getPurchaseSystemName())) {
qw.like("purchaseSystemName", query.getPurchaseSystemName());
}
if (StringUtils.isNotBlank(query.getUseOrgName())) {
qw.like("useOrgName", query.getUseOrgName());
}
String createStartTime = query.getCreateStartTime();
String createEndTime = query.getCreateEndTime();
qw.apply(StringUtils.isNotBlank(createStartTime), "date_format (createTime,'%Y-%m-%d') >= date_format('" + createStartTime + "','%Y-%m-%d')").
apply(StringUtils.isNotBlank(createEndTime), "date_format (createTime,'%Y-%m-%d') <= date_format('" + createEndTime + "','%Y-%m-%d')"
);
qw.eq("state", 2);
qw.eq("adjustmentState", 0);
qw.orderByDesc("createTime");
List<ScmVehRebateVo> scmVehRebateVoList = baseMapper.checkApplyGetVehRebateAll(qw);
for (ScmVehRebateVo record : scmVehRebateVoList) {
//上传状态:未上传
if (StringUtils.isBlank(record.getUploadDate())) {
record.setUploadState("0");
} else {//上传状态:已上传
record.setUploadState("1");
}
}
return scmVehRebateVoList;
}
public List<OneExcelVo> excelListOne(ScmVehRebateQuery query) {
QueryWrapper<ScmVehRebate> qw = new QueryWrapper<>();
//========================================数据授权开始

23
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/as/storechange/AppStoreChangeDto.java

@ -0,0 +1,23 @@
package com.yxt.anrui.terminal.api.as.storechange;
import com.yxt.anrui.terminal.api.as.firstshelves.AppFirstShelvesGoodsDto;
import com.yxt.common.core.dto.Dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
@Data
public class AppStoreChangeDto implements Dto {
@ApiModelProperty("库存sid")
private String sid;
@ApiModelProperty("移位数量")
private String count;
@ApiModelProperty("移位仓库")
private String houseInfo2;
@ApiModelProperty("移位库位编码")
private String houseCode2;
@ApiModelProperty("移位仓库")
private String store;
}

29
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/as/storechange/AppStoreChangeFeign.java

@ -0,0 +1,29 @@
package com.yxt.anrui.terminal.api.as.storechange;
import com.yxt.common.core.result.ResultBean;
import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;
/**
* @Author
* @Date
* @Description
*/
@FeignClient(
contextId = "terminal-AppStoreChange",
name = "anrui-terminal",
path = "v1/storeChange")
public interface AppStoreChangeFeign {
@ApiOperation("标签扫描")
@GetMapping("/scan")
@ResponseBody
public ResultBean<AppStoreChangeScanVo> scan(@RequestParam("content") String content, @RequestParam("type") String type, @RequestParam("orgPath") String orgPath, @RequestParam(value = "storeSid", required = false) String storeSid);
@ApiOperation("保存")
@PostMapping("/save")
@ResponseBody
public ResultBean save(@RequestBody AppStoreChangeDto dto);
}

24
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/as/storechange/AppStoreChangeScanVo.java

@ -0,0 +1,24 @@
package com.yxt.anrui.terminal.api.as.storechange;
import com.yxt.common.core.vo.Vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
@Data
public class AppStoreChangeScanVo implements Vo {
@ApiModelProperty("0商品码,1库位码")
private String type;
@ApiModelProperty("商品sid")
private String sid;
@ApiModelProperty("商品下的库存表里的sid集合")
private List<String> storeSids;
@ApiModelProperty("库位码")
private String houseCode;
@ApiModelProperty("库区名+库位名")
private String houseName;
@ApiModelProperty("仓库地址")
private String houseAddress;
}

24
anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/as/firstshelves/AppFirstShelvesService.java

@ -26,6 +26,8 @@
package com.yxt.anrui.terminal.biz.as.firstshelves;
import cn.hutool.core.date.DateUtil;
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationFeign;
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationVo;
import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgFeign;
import com.yxt.anrui.terminal.api.as.firstshelves.*;
import com.yxt.anrui.terminal.fegin.wmsInventory.WmsInventoryFeign;
@ -43,9 +45,11 @@ import com.yxt.common.core.vo.PagerVo;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@Service
@ -61,6 +65,8 @@ public class AppFirstShelvesService {
private WmsInitialDetailFeign wmsInitialDetailFeign;
@Autowired
private SysStaffOrgFeign sysStaffOrgFeign;
@Autowired
private SysOrganizationFeign sysOrganizationFeign;
public ResultBean<AppFirstShelvesVo> list(PagerQuery<AppFirstShelvesQuery> pagerQuery) {
ResultBean rb = ResultBean.fireFail();
@ -157,9 +163,19 @@ public class AppFirstShelvesService {
List<AppFirstShelvesGoodsDto> goodsList = dto.getGoodsList();
WmsInventorySaveDto wmsInventorySaveDto = new WmsInventorySaveDto();
wmsInventorySaveDto.setCreateBySid(dto.getUserSid());
String useOrgSid = sysStaffOrgFeign.getOrgSidByPath(dto.getOrgPath()).getData();
wmsInventorySaveDto.setCreateOrgSid(useOrgSid);
wmsInventorySaveDto.setUseOrgSid(useOrgSid);
String createOrgSid = sysStaffOrgFeign.getOrgSidByPath(dto.getOrgPath()).getData();
wmsInventorySaveDto.setCreateOrgSid(createOrgSid);
String deptSid = "";
List<String> split = Arrays.asList(dto.getOrgPath().split("/"));
if (split.size() > 1) {
//获取本级sid获取本级部门信息
SysOrganizationVo sysOrganization1 = sysOrganizationFeign.fetchBySid(split.get(split.size() - 1)).getData();
deptSid = sysOrganization1.getSid();
} else {
SysOrganizationVo sysOrganization = sysOrganizationFeign.fetchBySid(split.get(0)).getData();
deptSid = sysOrganization.getSid();
}
wmsInventorySaveDto.setUseOrgSid(deptSid);
wmsInventorySaveDto.setFirstInDate(DateUtil.today());
for (AppFirstShelvesGoodsDto appFirstShelvesGoodsDto : goodsList) {
WmsGoodsTag wmsGoodsTag = wmsGoodsTagFeign.selectByGoodsId(appFirstShelvesGoodsDto.getGoodsID()).getData();
@ -180,7 +196,7 @@ public class AppFirstShelvesService {
wmsInventorySaveDto.setWarehouseSid(wmsHouseInfoVo.getWarehouseSid());
wmsInventorySaveDto.setWarehouseName(wmsHouseInfoVo.getWarehouseName());
wmsInventorySaveDto.setWarehouseRackSid(wmsHouseInfoVo.getWarehouseRackSid());
wmsInventorySaveDto.setWarehouseRackCode(appFirstShelvesGoodsDto.getHouseCode());
wmsInventorySaveDto.setWarehouseRackCode(wmsHouseInfoVo.getWarehouseRackCode());
wmsInventoryFeign.saveWmsInventory(wmsInventorySaveDto).getData();
}
return rb.success();

52
anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/as/storechange/AppStoreChangeRest.java

@ -0,0 +1,52 @@
/*********************************************************
*********************************************************
******************** *******************
************* ************
******* _oo0oo_ *******
*** o8888888o ***
* 88" . "88 *
* (| -_- |) *
* 0\ = /0 *
* ___/`---'\___ *
* .' \\| |// '. *
* / \\||| : |||// \ *
* / _||||| -:- |||||- \ *
* | | \\\ - /// | | *
* | \_| ''\---/'' |_/ | *
* \ .-\__ '-' ___/-. / *
* ___'. .' /--.--\ `. .'___ *
* ."" '< `.___\_<|>_/___.' >' "". *
* | | : `- \`.;`\ _ /`;.`/ - ` : | | *
* \ \ `_. \_ __\ /__ _/ .-` / / *
* =====`-.____`.___ \_____/___.-`___.-'===== *
* `=---=' *
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *
*********__佛祖保佑__永无BUG__验收通过__钞票多多__*********
*********************************************************/
package com.yxt.anrui.terminal.biz.as.storechange;
import com.yxt.anrui.terminal.api.as.storechange.AppStoreChangeDto;
import com.yxt.anrui.terminal.api.as.storechange.AppStoreChangeFeign;
import com.yxt.anrui.terminal.api.as.storechange.AppStoreChangeScanVo;
import com.yxt.common.core.result.ResultBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("v1/storeChange")
public class AppStoreChangeRest implements AppStoreChangeFeign {
@Autowired
private AppStoreChangeService appStoreChangeService;
@Override
public ResultBean<AppStoreChangeScanVo> scan(String content, String type, String orgPath, String storeSid) {
return appStoreChangeService.scan(content, type, orgPath, storeSid);
}
@Override
public ResultBean save(AppStoreChangeDto dto) {
return null;
}
}

210
anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/as/storechange/AppStoreChangeService.java

@ -0,0 +1,210 @@
/*********************************************************
*********************************************************
******************** *******************
************* ************
******* _oo0oo_ *******
*** o8888888o ***
* 88" . "88 *
* (| -_- |) *
* 0\ = /0 *
* ___/`---'\___ *
* .' \\| |// '. *
* / \\||| : |||// \ *
* / _||||| -:- |||||- \ *
* | | \\\ - /// | | *
* | \_| ''\---/'' |_/ | *
* \ .-\__ '-' ___/-. / *
* ___'. .' /--.--\ `. .'___ *
* ."" '< `.___\_<|>_/___.' >' "". *
* | | : `- \`.;`\ _ /`;.`/ - ` : | | *
* \ \ `_. \_ __\ /__ _/ .-` / / *
* =====`-.____`.___ \_____/___.-`___.-'===== *
* `=---=' *
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *
*********__佛祖保佑__永无BUG__验收通过__钞票多多__*********
*********************************************************/
package com.yxt.anrui.terminal.biz.as.storechange;
import cn.hutool.core.date.DateUtil;
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationFeign;
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationVo;
import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgFeign;
import com.yxt.anrui.terminal.api.as.firstshelves.*;
import com.yxt.anrui.terminal.api.as.storechange.AppStoreChangeScanVo;
import com.yxt.anrui.terminal.fegin.wmsInventory.WmsInventory;
import com.yxt.anrui.terminal.fegin.wmsInventory.WmsInventoryFeign;
import com.yxt.anrui.terminal.fegin.wmsInventory.WmsInventorySaveDto;
import com.yxt.anrui.terminal.fegin.wmsgoodstag.GoodsTagListQuery;
import com.yxt.anrui.terminal.fegin.wmsgoodstag.WmsGoodsTag;
import com.yxt.anrui.terminal.fegin.wmsgoodstag.WmsGoodsTagFeign;
import com.yxt.anrui.terminal.fegin.wmsinitialdetail.WmsInitialDetail;
import com.yxt.anrui.terminal.fegin.wmsinitialdetail.WmsInitialDetailFeign;
import com.yxt.anrui.terminal.fegin.wmswarehouserack.WmsHouseInfoVo;
import com.yxt.anrui.terminal.fegin.wmswarehouserack.WmsWarehouseRackFeign;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
@Service
public class AppStoreChangeService {
@Resource
private WmsGoodsTagFeign wmsGoodsTagFeign;
@Resource
private WmsWarehouseRackFeign wmsWarehouseRackFeign;
@Resource
private WmsInventoryFeign wmsInventoryFeign;
@Resource
private WmsInitialDetailFeign wmsInitialDetailFeign;
@Autowired
private SysStaffOrgFeign sysStaffOrgFeign;
@Autowired
private SysOrganizationFeign sysOrganizationFeign;
public ResultBean<AppFirstShelvesVo> list(PagerQuery<AppFirstShelvesQuery> pagerQuery) {
ResultBean rb = ResultBean.fireFail();
PagerQuery<GoodsTagListQuery> pagerQuery1 = new PagerQuery<>();
GoodsTagListQuery params = new GoodsTagListQuery();
AppFirstShelvesQuery params1 = pagerQuery.getParams();
params.setUserSid(params1.getUserSid());
params.setOrgPath(params1.getOrgPath());
params.setMenuSid(params1.getMenuSid());
params.setName(params1.getName());
pagerQuery1.setParams(params);
pagerQuery1.setSize(1000);
PagerVo<WmsGoodsTag> data = wmsGoodsTagFeign.goodsTagList(pagerQuery1).getData();
AppFirstShelvesVo appFirstShelvesVo = new AppFirstShelvesVo();
List<AppFirstShelvesGoodsVo> goods = new ArrayList<>();
List<WmsGoodsTag> list = data.getRecords();
for (WmsGoodsTag wmsGoodsTag : list) {
AppFirstShelvesGoodsVo appFirstShelvesGoodsVo = new AppFirstShelvesGoodsVo();
appFirstShelvesGoodsVo.setSid(wmsGoodsTag.getSid());
appFirstShelvesGoodsVo.setName(wmsGoodsTag.getGoodsSkuTitle());
appFirstShelvesGoodsVo.set_id(wmsGoodsTag.getGoodsID());
appFirstShelvesGoodsVo.setNum(wmsGoodsTag.getGoodsCount());
appFirstShelvesGoodsVo.setUnit(wmsGoodsTag.getUnit());
appFirstShelvesGoodsVo.setSpecs(wmsGoodsTag.getGoodsSkuOwnSpec());
goods.add(appFirstShelvesGoodsVo);
}
appFirstShelvesVo.setGoods(goods);
return rb.success().setData(appFirstShelvesVo);
}
public ResultBean<AppStoreChangeScanVo> scan(String content, String type, String orgPath, String storeSid) {
ResultBean rb = ResultBean.fireFail();
String deptSid = "";
if (StringUtils.isNotBlank(orgPath)) {
List<String> split = Arrays.asList(orgPath.split("/"));
if (split.size() > 1) {
//获取本级sid获取本级部门信息
SysOrganizationVo sysOrganization1 = sysOrganizationFeign.fetchBySid(split.get(split.size() - 1)).getData();
deptSid = sysOrganization1.getSid();
} else {
SysOrganizationVo sysOrganization = sysOrganizationFeign.fetchBySid(split.get(0)).getData();
deptSid = sysOrganization.getSid();
}
}
AppStoreChangeScanVo appStoreChangeScanVo = new AppStoreChangeScanVo();
if ("0".equals(type)) {//商品码
if (content.contains("#")) {
return rb.setMsg("请扫描商品码");
}
if (StringUtils.isBlank(storeSid)) {
List<WmsInventory> wmsInventoryList = wmsInventoryFeign.selByGoodsIDAndUseOrgSid(content, deptSid).getData();
if (wmsInventoryList == null) {
return rb.setMsg("当前商品不可移位");
}
appStoreChangeScanVo.setType(type);
appStoreChangeScanVo.setSid(wmsInventoryList.get(0).getGoodsSpuSid());
appStoreChangeScanVo.setStoreSids(wmsInventoryList.stream().map(WmsInventory::getWarehouseSid).collect(Collectors.toList()));
} else {
List<WmsInventory> wmsInventoryList = wmsInventoryFeign.selByGoodsIDAndUseOrgSidAndWarehouseSid(content, deptSid, storeSid).getData();
if (wmsInventoryList == null) {
return rb.setMsg("当前商品不可移位");
}
appStoreChangeScanVo.setType(type);
appStoreChangeScanVo.setSid(wmsInventoryList.get(0).getGoodsSpuSid());
appStoreChangeScanVo.setStoreSids(wmsInventoryList.stream().map(WmsInventory::getWarehouseSid).collect(Collectors.toList()));
}
} else if ("1".equals(type)) {//库位码
if (!content.contains("#")) {
return rb.setMsg("请扫描库位码");
}
String[] split = content.split("#");
String houseCode = split[0];
ResultBean<WmsHouseInfoVo> wmsHouseInfoVoResultBean = wmsWarehouseRackFeign.selHouseInfoByFullCode(houseCode);
if (wmsHouseInfoVoResultBean.getSuccess()) {
WmsHouseInfoVo houseInfoVo = wmsHouseInfoVoResultBean.getData();
if (null != houseInfoVo) {
String houseName = "";
String areaName = "";
String rackName = "";
String zoneName = "";
if (StringUtils.isNotBlank(houseInfoVo.getWarehouseName())) {
houseName = houseInfoVo.getWarehouseName();
}
if (StringUtils.isNotBlank(houseInfoVo.getWareAreaName())) {
areaName = houseInfoVo.getWareAreaName();
}
if (StringUtils.isNotBlank(houseInfoVo.getWarehouseRackName())) {
rackName = houseInfoVo.getWarehouseRackName();
}
if (StringUtils.isNotBlank(houseInfoVo.getWarehouseZoneName())) {
zoneName = houseInfoVo.getWarehouseZoneName();
}
appStoreChangeScanVo.setHouseName(houseName + "-" + zoneName + "-" + areaName);
appStoreChangeScanVo.setHouseAddress(houseInfoVo.getWarehouseRackCode());
appStoreChangeScanVo.setHouseCode(houseCode);
appStoreChangeScanVo.setType(type);
} else {
return rb.setMsg("扫描库位码为空");
}
}
}
return rb.success().setData(appStoreChangeScanVo);
}
public ResultBean save(AppFirstShelvesDto dto) {
ResultBean rb = ResultBean.fireFail();
List<AppFirstShelvesGoodsDto> goodsList = dto.getGoodsList();
WmsInventorySaveDto wmsInventorySaveDto = new WmsInventorySaveDto();
wmsInventorySaveDto.setCreateBySid(dto.getUserSid());
String useOrgSid = sysStaffOrgFeign.getOrgSidByPath(dto.getOrgPath()).getData();
wmsInventorySaveDto.setCreateOrgSid(useOrgSid);
wmsInventorySaveDto.setUseOrgSid(useOrgSid);
wmsInventorySaveDto.setFirstInDate(DateUtil.today());
for (AppFirstShelvesGoodsDto appFirstShelvesGoodsDto : goodsList) {
WmsGoodsTag wmsGoodsTag = wmsGoodsTagFeign.selectByGoodsId(appFirstShelvesGoodsDto.getGoodsID()).getData();
WmsInitialDetail wmsInitialDetail = wmsInitialDetailFeign.selBySid(wmsGoodsTag.getBillDetailSid()).getData();
WmsHouseInfoVo wmsHouseInfoVo = wmsWarehouseRackFeign.selHouseInfoByFullCode(appFirstShelvesGoodsDto.getHouseCode()).getData();
wmsInventorySaveDto.setGoodsSpuSid(wmsGoodsTag.getGoodsSpuSid());
wmsInventorySaveDto.setGoodsSpuName(wmsGoodsTag.getGoodsSpuName());
wmsInventorySaveDto.setGoodsSkuSid(wmsGoodsTag.getGoodsSkuSid());
wmsInventorySaveDto.setGoodsSkuTitle(wmsGoodsTag.getGoodsSkuTitle());
wmsInventorySaveDto.setGoodsSkuCode(wmsGoodsTag.getGoodsSkuCode());
wmsInventorySaveDto.setGoodsSkuOwnSpec(wmsGoodsTag.getGoodsSkuOwnSpec());
wmsInventorySaveDto.setUnit(wmsGoodsTag.getUnit());
wmsInventorySaveDto.setCount(appFirstShelvesGoodsDto.getCount());
wmsInventorySaveDto.setGoodsID(appFirstShelvesGoodsDto.getGoodsID());
wmsInventorySaveDto.setManufacturerSid(wmsInitialDetail.getManufacturerSid());
wmsInventorySaveDto.setManufacturerName(wmsInitialDetail.getManufacturerName());
wmsInventorySaveDto.setFirstInDate(DateUtil.formatDate(wmsInitialDetail.getFirstInDate()));
wmsInventorySaveDto.setWarehouseSid(wmsHouseInfoVo.getWarehouseSid());
wmsInventorySaveDto.setWarehouseName(wmsHouseInfoVo.getWarehouseName());
wmsInventorySaveDto.setWarehouseRackSid(wmsHouseInfoVo.getWarehouseRackSid());
wmsInventorySaveDto.setWarehouseRackCode(appFirstShelvesGoodsDto.getHouseCode());
wmsInventoryFeign.saveWmsInventory(wmsInventorySaveDto).getData();
}
return rb.success();
}
}

66
anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/wmsInventory/WmsInventory.java

@ -0,0 +1,66 @@
package com.yxt.anrui.terminal.fegin.wmsInventory;
import com.yxt.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
@Data
public class WmsInventory extends BaseEntity {
@ApiModelProperty("批次号")
private String batchNumber;
@ApiModelProperty("商品ID(唯一编码,入库时生成,生成规则为商品编码+YYMMdd+4位流水)")
private String goodsID;
@ApiModelProperty("商品基础信息sid")
private String goodsSpuSid;
@ApiModelProperty("商品名称")
private String goodsSpuName;
@ApiModelProperty("商品Skusid")
private String goodsSkuSid;
@ApiModelProperty("商品Sku名称")
private String goodsSkuTitle;
@ApiModelProperty("商品编码(图号)")
private String goodsSkuCode;
@ApiModelProperty("规格型号")
private String goodsSkuOwnSpec;
@ApiModelProperty("计量单位")
private String unit;
@ApiModelProperty("现有量")
private BigDecimal count;
@ApiModelProperty("分配量(锁定数量,出库申请通过,但未实际出库)")
private BigDecimal allocateCount;
@ApiModelProperty("拣货量")
private BigDecimal pickCount;
@ApiModelProperty("冻结量")
private BigDecimal freezeCount;
@ApiModelProperty("入库单价")
private BigDecimal cost;
@ApiModelProperty("税率")
private BigDecimal taxRate;
@ApiModelProperty("仓库sid")
private String warehouseSid;
@ApiModelProperty("仓库名称")
private String warehouseName;
@ApiModelProperty("库位sid")
private String warehouseRackSid;
@ApiModelProperty("库位编码")
private String warehouseRackCode;
@ApiModelProperty("首次入库日期-计算库龄的依据")
private Date firstInDate;
@ApiModelProperty("创建组织sid")
private String createOrgSid;
@ApiModelProperty("使用组织sid")
private String useOrgSid;
@ApiModelProperty("厂家订单号")
private String manufactorBillNo;
@ApiModelProperty("厂家sid")
private String manufacturerSid; // 库位sid
@ApiModelProperty("厂家名称")
private String manufacturerName; // 库位编号
@ApiModelProperty("客户/供应商sid,出库是为客户,入库时为供应商")
private String supplierSid;
@ApiModelProperty("客户/供应商名称")
private String supplierName;
}

10
anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/wmsInventory/WmsInventoryFeign.java

@ -12,6 +12,8 @@ import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
/**
* @description: 商品基础信息
* @author: fzz
@ -39,4 +41,12 @@ public interface WmsInventoryFeign {
@ApiOperation("保存商品库存")
@PostMapping("/saveWmsInventory")
ResultBean saveWmsInventory(@RequestBody WmsInventorySaveDto dto);
@ApiOperation("根据商品ID和部门sid查询")
@PostMapping("/selByGoodsIDAndUseOrgSid")
ResultBean<List<WmsInventory>> selByGoodsIDAndUseOrgSid(@RequestParam("goodsID") String goodsID, @RequestParam("useOrgSid") String useOrgSid);
@ApiOperation("根据商品ID和部门sid和仓库sid查询")
@PostMapping("/selByGoodsIDAndUseOrgSidAndWarehouseSid")
ResultBean<List<WmsInventory>> selByGoodsIDAndUseOrgSidAndWarehouseSid(@RequestParam("goodsID") String goodsID, @RequestParam("useOrgSid") String useOrgSid, @RequestParam("warehouseSid") String warehouseSid);
}

8
yxt-base-biz/src/main/java/com/yxt/base/apiadmin/base/BaseGoodsSpuRest.java

@ -9,6 +9,8 @@ import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* @author wangpengfei
* @date 2024/3/7 16:58
@ -119,4 +121,10 @@ public class BaseGoodsSpuRest {
return baseGoodsSpuService.goodsListPage(pq);
}
@ApiOperation("固定资产采购查询行政商品信息")
@GetMapping("/selPurchaseAssetInfo")
public ResultBean<List<YxtBaseFormCommon>> selPurchaseAssetInfo(@RequestParam("orgPath") String orgPath) {
return baseGoodsSpuService.selPurchaseAssetInfo(orgPath);
}
}

4
yxt-base-biz/src/main/java/com/yxt/base/biz/base/basegoodsspu/BaseGoodsSpuMapper.java

@ -7,6 +7,8 @@ import com.baomidou.mybatisplus.core.toolkit.Constants;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @author wangpengfei
* @date 2024/2/26 13:40
@ -26,4 +28,6 @@ public interface BaseGoodsSpuMapper extends BaseMapper<BaseGoodsSpu> {
BaseGoodsSpu checkForUpdate(@Param("goodsCode")String goodsCode,@Param("useOrgSid") String useOrgSid, @Param("sid")String sid);
int selByCodeAndDept(@Param("code") String code,@Param("deptSid") String deptSid);
List<BaseGoodsSpu> selPurchaseAssetInfo(@Param("useOrgSid") String useOrgSid);
}

5
yxt-base-biz/src/main/java/com/yxt/base/biz/base/basegoodsspu/BaseGoodsSpuMapper.xml

@ -99,4 +99,9 @@ WHERE
WHERE goodsCode = #{code}
AND useOrgSid = #{deptSid}
</select>
<select id="selPurchaseAssetInfo" resultType="com.yxt.base.biz.base.basegoodsspu.BaseGoodsSpu">
SELECT *
FROM base_goods_spu
WHERE useOrgSid = #{useOrgSid} and goodsClassKey = '003' and isDelete = 0
</select>
</mapper>

52
yxt-base-biz/src/main/java/com/yxt/base/biz/base/basegoodsspu/BaseGoodsSpuService.java

@ -23,6 +23,7 @@ import com.yxt.base.biz.base.basemanufacturer.BaseManufacturer;
import com.yxt.base.biz.base.basemanufacturer.BaseManufacturerService;
import com.yxt.base.feign.portal.privilege.PrivilegeQuery;
import com.yxt.base.feign.portal.sysorganization.SysOrganizationFeign;
import com.yxt.base.feign.portal.sysorganization.SysOrganizationVo;
import com.yxt.base.feign.portal.sysstafforg.SysStaffOrgFeign;
import com.yxt.base.feign.portal.sysuser.SysUserFeign;
import com.yxt.base.utils.PinYinUtils;
@ -37,10 +38,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.*;
/**
* @author wangpengfei
@ -587,4 +585,50 @@ public class BaseGoodsSpuService extends MybatisBaseService<BaseGoodsSpuMapper,
int i = baseMapper.selByCodeAndDept(code, deptSid);
return rb.success().setData(i);
}
public ResultBean<List<YxtBaseFormCommon>> selPurchaseAssetInfo(String orgPath) {
ResultBean rb = ResultBean.fireFail();
List<YxtBaseFormCommon> list = new ArrayList<>();
String useOrgSid = "";
if (StringUtils.isNotBlank(orgPath)) {
List<String> split = Arrays.asList(orgPath.split("/"));
if (split.size() > 1) {
//获取本级sid获取本级部门信息
SysOrganizationVo sysOrganization1 = sysOrganizationFeign.fetchBySid(split.get(split.size() - 1)).getData();
useOrgSid = sysOrganization1.getSid();
} else {
SysOrganizationVo sysOrganization = sysOrganizationFeign.fetchBySid(split.get(0)).getData();
useOrgSid = sysOrganization.getSid();
}
}
List<BaseGoodsSpu> goodsSpus = baseMapper.selPurchaseAssetInfo(useOrgSid);
if (!goodsSpus.isEmpty()) {
goodsSpus.stream().forEach(details -> {
YxtBaseFormCommon formCommon = new YxtBaseFormCommon();
formCommon.setId(details.getSid());
formCommon.setDictValue(details.getGoodsCode());
Map<String, Object> extra = new HashMap<>();
if (StringUtils.isNotBlank(details.getSid())) {
extra.put("goodsSpuSid", details.getSid());
}
if (StringUtils.isNotBlank(details.getGoodsName())) {
extra.put("goodsSpuName", details.getGoodsName());
}
//商品sku
BaseGoodsSku skuUpdate = baseGoodsSkuService.getOneBySpuSid(details.getSid());
if (null != skuUpdate) {
if (StringUtils.isNotBlank(skuUpdate.getIndexes())) {
extra.put("goodsSkuOwnSpec", skuUpdate.getIndexes());
}
}
if (StringUtils.isNotBlank(details.getGoodsUnitName())) {
extra.put("unit", details.getGoodsUnitName());
}
formCommon.setExtra(extra);
list.add(formCommon);
});
}
return rb.success().setData(list);
}
}

27
yxt-base-biz/src/main/java/com/yxt/base/biz/base/basegoodsspu/YxtBaseFormCommon.java

@ -0,0 +1,27 @@
package com.yxt.base.biz.base.basegoodsspu;
import lombok.Data;
import java.util.Map;
/**
* @description:
* @author: dimengzhe
* @date: 2025/1/16
**/
@Data
public class YxtBaseFormCommon {
private String id;
private String dictValue;
private Map<String, Object> extra;
// 静态方法,直接通过方法创建对象并赋值
public static YxtBaseFormCommon of(String id, String dictValue) {
YxtBaseFormCommon formCommon = new YxtBaseFormCommon();
formCommon.setId(id);
formCommon.setDictValue(dictValue);
return formCommon;
}
}

91
yxt-oa/src/main/java/com/yxt/anrui/oa/api/AdAllocateAssetApplyRest.java

@ -0,0 +1,91 @@
package com.yxt.anrui.oa.api;
import com.yxt.anrui.oa.biz.adallocateassetapply.AdAllocateAssetApplyDetailVo;
import com.yxt.anrui.oa.biz.adallocateassetapply.AdAllocateAssetApplyDto;
import com.yxt.anrui.oa.biz.adallocateassetapply.AdAllocateAssetApplyService;
import com.yxt.anrui.oa.biz.adallocateassetapply.AdAllocateAssetApplyVo;
import com.yxt.anrui.oa.biz.oaform.flowable.CompleteDto;
import com.yxt.anrui.oa.biz.oaform.flowable.NodeQuery;
import com.yxt.anrui.oa.biz.oaform.flowable.TaskDto;
import com.yxt.common.core.result.ResultBean;
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;
@RestController
@RequestMapping("v1/AdAllocateAssetApply")
public class AdAllocateAssetApplyRest {
@Autowired
private AdAllocateAssetApplyService adAllocateAssetApplyService;
@ApiOperation("初始化(新增或修改)")
@GetMapping({"/getInit", "/getInit/{sid}"})
public ResultBean<AdAllocateAssetApplyVo> getInit(
@PathVariable(value = "sid", required = false) String sid,
@RequestParam(value = "userSid", required = false) String userSid,
@RequestParam(value = "orgPath", required = false) String orgPath) {
ResultBean<AdAllocateAssetApplyVo> rb = ResultBean.fireFail();
if (sid == null || sid.isEmpty()) {
// 执行新增初始化
if (userSid == null || orgPath == null) {
return rb.setMsg("userSid和orgPath不能为空");
}
return adAllocateAssetApplyService.getSaveInit(userSid, orgPath);
} else {
// 执行修改初始化
return adAllocateAssetApplyService.getUpdateInit(sid);
}
}
@ApiOperation("新增或修改")
@PostMapping("/save")
public ResultBean save(@RequestBody AdAllocateAssetApplyDto dto) {
return adAllocateAssetApplyService.saveOrUpdateDto(dto);
}
@ApiOperation("根据sid批量删除")
@DeleteMapping("/delBySids")
public ResultBean delBySids(@RequestBody String[] sids) {
ResultBean rb = ResultBean.fireFail();
adAllocateAssetApplyService.delAll(sids);
return rb.success();
}
@ApiOperation("详情")
@GetMapping("/details/{sid}")
ResultBean<AdAllocateAssetApplyDetailVo> details(@PathVariable("sid") String sid
, @RequestParam(value = "application", required = false) String application) {
return adAllocateAssetApplyService.details(sid,application);
}
@ApiOperation("提交审批流程")
@PostMapping("/submit")
public ResultBean submit(@RequestBody @Valid AdAllocateAssetApplyDto dto) {
return adAllocateAssetApplyService.submit(dto);
}
@ApiOperation(value = "办理(同意)")
@PutMapping("/complete")
public ResultBean complete(@Valid @RequestBody CompleteDto dto) {
return adAllocateAssetApplyService.complete(dto);
}
@ApiOperation(value = "驳回任务")
@PutMapping(value = "/reject")
public ResultBean reject(@Valid @RequestBody TaskDto dto) {
return adAllocateAssetApplyService.reject(dto);
}
@ApiOperation("获取流程操作标题")
@GetMapping("/getFlowOperateTitle")
@ResponseBody
ResultBean<String> getFlowOperateTitle(@SpringQueryMap NodeQuery query) {
return adAllocateAssetApplyService.getFlowOperateTitle(query);
}
}

92
yxt-oa/src/main/java/com/yxt/anrui/oa/api/AdPurchaseAssetApplyRest.java

@ -0,0 +1,92 @@
package com.yxt.anrui.oa.api;
import com.yxt.anrui.oa.biz.adpurchaseassetapply.AdPurchaseAssetApplyDetailVo;
import com.yxt.anrui.oa.biz.adpurchaseassetapply.AdPurchaseAssetApplyDto;
import com.yxt.anrui.oa.biz.adpurchaseassetapply.AdPurchaseAssetApplyService;
import com.yxt.anrui.oa.biz.adpurchaseassetapply.AdPurchaseAssetApplyVo;
import com.yxt.anrui.oa.biz.oaform.flowable.CompleteDto;
import com.yxt.anrui.oa.biz.oaform.flowable.NodeQuery;
import com.yxt.anrui.oa.biz.oaform.flowable.TaskDto;
import com.yxt.common.core.result.ResultBean;
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;
@RestController
@RequestMapping("v1/AdPurchaseAssetApply")
public class AdPurchaseAssetApplyRest {
@Autowired
private AdPurchaseAssetApplyService adPurchaseAssetApplyService;
@ApiOperation("初始化(新增或修改)")
@GetMapping({"/getInit", "/getInit/{sid}"})
public ResultBean<AdPurchaseAssetApplyVo> getInit(
@PathVariable(value = "sid", required = false) String sid,
@RequestParam(value = "userSid", required = false) String userSid,
@RequestParam(value = "orgPath", required = false) String orgPath) {
ResultBean<AdPurchaseAssetApplyVo> rb = ResultBean.fireFail();
if (sid == null || sid.isEmpty()) {
// 执行新增初始化
if (userSid == null || orgPath == null) {
return rb.setMsg("userSid和orgPath不能为空");
}
return adPurchaseAssetApplyService.getSaveInit(userSid, orgPath);
} else {
// 执行修改初始化
return adPurchaseAssetApplyService.getUpdateInit(sid);
}
}
@ApiOperation("新增或修改")
@PostMapping("/save")
public ResultBean save(@RequestBody AdPurchaseAssetApplyDto dto) {
return adPurchaseAssetApplyService.saveOrUpdateDto(dto);
}
@ApiOperation("根据sid批量删除")
@DeleteMapping("/delBySids")
public ResultBean delBySids(@RequestBody String[] sids) {
ResultBean rb = ResultBean.fireFail();
adPurchaseAssetApplyService.delAll(sids);
return rb.success();
}
@ApiOperation("详情")
@GetMapping("/details/{sid}")
ResultBean<AdPurchaseAssetApplyDetailVo> details(@PathVariable("sid") String sid
, @RequestParam(value = "application", required = false) String application) {
return adPurchaseAssetApplyService.details(sid,application);
}
@ApiOperation("提交审批流程")
@PostMapping("/submit")
public ResultBean submit(@RequestBody @Valid AdPurchaseAssetApplyDto dto) {
return adPurchaseAssetApplyService.submit(dto);
}
@ApiOperation(value = "办理(同意)")
@PutMapping("/complete")
public ResultBean complete(@Valid @RequestBody CompleteDto dto) {
return adPurchaseAssetApplyService.complete(dto);
}
@ApiOperation(value = "驳回任务")
@PutMapping(value = "/reject")
public ResultBean reject(@Valid @RequestBody TaskDto dto) {
return adPurchaseAssetApplyService.reject(dto);
}
@ApiOperation("获取流程操作标题")
@GetMapping("/getFlowOperateTitle")
@ResponseBody
ResultBean<String> getFlowOperateTitle(@SpringQueryMap NodeQuery query) {
return adPurchaseAssetApplyService.getFlowOperateTitle(query);
}
}

66
yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adallocateassetapply/AdAllocateAssetApply.java

@ -0,0 +1,66 @@
/*********************************************************
*********************************************************
******************** *******************
************* ************
******* _oo0oo_ *******
*** o8888888o ***
* 88" . "88 *
* (| -_- |) *
* 0\ = /0 *
* ___/`---'\___ *
* .' \\| |// '. *
* / \\||| : |||// \ *
* / _||||| -:- |||||- \ *
* | | \\\ - /// | | *
* | \_| ''\---/'' |_/ | *
* \ .-\__ '-' ___/-. / *
* ___'. .' /--.--\ `. .'___ *
* ."" '< `.___\_<|>_/___.' >' "". *
* | | : `- \`.;`\ _ /`;.`/ - ` : | | *
* \ \ `_. \_ __\ /__ _/ .-` / / *
* =====`-.____`.___ \_____/___.-`___.-'===== *
* `=---=' *
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *
*********__佛祖保佑__永无BUG__验收通过__钞票多多__*********
*********************************************************/
package com.yxt.anrui.oa.biz.adallocateassetapply;
import com.baomidou.mybatisplus.annotation.TableName;
import com.yxt.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
@Data
@ApiModel(value = "固定资产调拨", description = "固定资产调拨")
@TableName("ad_allocate_asset_apply")
public class AdAllocateAssetApply extends BaseEntity {
private static final long serialVersionUID = 1L;
@ApiModelProperty("基础表单sid")
private String formSid; // 基础表单sid
@ApiModelProperty("固定资产类别key")
private String assetTypeKey; // 固定资产类别key
@ApiModelProperty("固定资产类别value")
private String assetTypeValue; // 固定资产类别value
@ApiModelProperty("调拨类别key")
private String allocateKey; // 调拨类别key
@ApiModelProperty("调拨类别value")
private String allocateValue; // 调拨类别value
@ApiModelProperty("调入部门sid")
private String intoDeptSid; // 调入部门sid
@ApiModelProperty("调入部门")
private String intoDept; // 调入部门
@ApiModelProperty("调出部门sid")
private String pullDeptSid; // 调出部门sid
@ApiModelProperty("调出部门")
private String pullDept; // 调出部门
@ApiModelProperty("调拨事由")
private String allocateReason; // 调拨事由
@ApiModelProperty("调拨资产金额合计")
private BigDecimal totalAmount; // 调拨资产金额合计
}

38
yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adallocateassetapply/AdAllocateAssetApplyDetailVo.java

@ -0,0 +1,38 @@
package com.yxt.anrui.oa.biz.adallocateassetapply;
import com.yxt.anrui.oa.biz.adallocateassetdetails.AdAllocateAssetListDetailsVo;
import com.yxt.anrui.oa.biz.oaform.OaFormCommonVo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
/**
* @description:
* @author: dimengzhe
* @date: 2025/1/21
**/
@Data
public class AdAllocateAssetApplyDetailVo extends OaFormCommonVo {
@ApiModelProperty("固定资产类别value")
private String assetTypeValue; // 固定资产类别value
@ApiModelProperty("调拨类别value")
private String allocateValue; // 调拨类别value
@ApiModelProperty("调入部门")
private String intoDept; // 调入部门
@ApiModelProperty("调出部门")
private String pullDept; // 调出部门
@ApiModelProperty("调拨事由")
private String allocateReason; // 调拨事由
@ApiModelProperty("调拨资产金额合计")
private String totalAmount; // 调拨资产金额合计
@ApiModelProperty("图片")
private List<String> files = new ArrayList<>();
@ApiModelProperty("附件")
private List<String> appes = new ArrayList<>();
private List<AdAllocateAssetListDetailsVo> list = new ArrayList<>();
}

85
yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adallocateassetapply/AdAllocateAssetApplyDto.java

@ -0,0 +1,85 @@
/*********************************************************
*********************************************************
******************** *******************
************* ************
******* _oo0oo_ *******
*** o8888888o ***
* 88" . "88 *
* (| -_- |) *
* 0\ = /0 *
* ___/`---'\___ *
* .' \\| |// '. *
* / \\||| : |||// \ *
* / _||||| -:- |||||- \ *
* | | \\\ - /// | | *
* | \_| ''\---/'' |_/ | *
* \ .-\__ '-' ___/-. / *
* ___'. .' /--.--\ `. .'___ *
* ."" '< `.___\_<|>_/___.' >' "". *
* | | : `- \`.;`\ _ /`;.`/ - ` : | | *
* \ \ `_. \_ __\ /__ _/ .-` / / *
* =====`-.____`.___ \_____/___.-`___.-'===== *
* `=---=' *
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *
*********__佛祖保佑__永无BUG__验收通过__钞票多多__*********
*********************************************************/
package com.yxt.anrui.oa.biz.adallocateassetapply;
import com.yxt.anrui.oa.biz.adallocateassetdetails.AdAllocateAssetDetailsDto;
import com.yxt.anrui.oa.biz.oaform.FormCommon;
import com.yxt.anrui.oa.biz.oaform.OaFormDto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
/**
* @author liupopo
* @version 1.0
* @since 1.0
*/
@Data
@ApiModel(value = "固定资产调拨 数据传输对象", description = "固定资产调拨 数据传输对象")
public class AdAllocateAssetApplyDto extends OaFormDto {
private FormCommon allocateObj;
@ApiModelProperty("调拨类别key")
private String allocateKey; // 调拨类别key
@ApiModelProperty("调拨类别value")
private String allocateValue; // 调拨类别value
private FormCommon assetTypeObj;
@ApiModelProperty("固定资产类别key")
private String assetTypeKey; // 固定资产类别key
@ApiModelProperty("固定资产类别value")
private String assetTypeValue; // 固定资产类别value
private FormCommon intoDeptObj;
@ApiModelProperty("调入部门sid")
private String intoDeptSid; // 调入部门sid
@ApiModelProperty("调入部门")
private String intoDept; // 调入部门
private FormCommon pullDeptObj;
@ApiModelProperty("调出部门sid")
private String pullDeptSid; // 调出部门sid
@ApiModelProperty("调出部门")
private String pullDept; // 调出部门
@ApiModelProperty("调拨事由")
private String allocateReason; // 调拨事由
@ApiModelProperty("调拨资产金额合计")
private String totalAmount; // 调拨资产金额合计
@ApiModelProperty("图片")
private List<String> files = new ArrayList<>();
@ApiModelProperty("附件")
private List<String> appes = new ArrayList<>();
private List<AdAllocateAssetDetailsDto> list = new ArrayList<>();
}

37
yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adallocateassetapply/AdAllocateAssetApplyMapper.java

@ -0,0 +1,37 @@
/*********************************************************
*********************************************************
******************** *******************
************* ************
******* _oo0oo_ *******
*** o8888888o ***
* 88" . "88 *
* (| -_- |) *
* 0\ = /0 *
* ___/`---'\___ *
* .' \\| |// '. *
* / \\||| : |||// \ *
* / _||||| -:- |||||- \ *
* | | \\\ - /// | | *
* | \_| ''\---/'' |_/ | *
* \ .-\__ '-' ___/-. / *
* ___'. .' /--.--\ `. .'___ *
* ."" '< `.___\_<|>_/___.' >' "". *
* | | : `- \`.;`\ _ /`;.`/ - ` : | | *
* \ \ `_. \_ __\ /__ _/ .-` / / *
* =====`-.____`.___ \_____/___.-`___.-'===== *
* `=---=' *
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *
*********__佛祖保佑__永无BUG__验收通过__钞票多多__*********
*********************************************************/
package com.yxt.anrui.oa.biz.adallocateassetapply;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface AdAllocateAssetApplyMapper extends BaseMapper<AdAllocateAssetApply> {
int selectBySid(String join);
AdAllocateAssetApplyDetailVo details(String sid);
}

38
yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adallocateassetapply/AdAllocateAssetApplyMapper.xml

@ -0,0 +1,38 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yxt.anrui.oa.biz.adallocateassetapply.AdAllocateAssetApplyMapper">
<!-- <where> ${ew.sqlSegment} </where>-->
<!-- ${ew.customSqlSegment} -->
<select id="selectBySid" resultType="int">
SELECT COUNT(*)
FROM ad_allocate_asset_apply ae
left join oa_form ofm on ae.formSid = ofm.sid
WHERE ofm.nodeState != '待提交'
and find_in_set(oa.sid, #{list})
</select>
<select id="details" resultMap="detailMap">
select allocateReason, sid,assetTypeValue,allocateValue,totalAmount,intoDept,pullDept
from ad_allocate_asset_apply
where sid = #{sid}
</select>
<resultMap id="detailMap" type="com.yxt.anrui.oa.biz.adallocateassetapply.AdAllocateAssetApplyDetailVo">
<result column="allocateReason" property="allocateReason"/>
<result column="assetTypeValue" property="assetTypeValue"/>
<result column="allocateValue" property="allocateValue"/>
<result column="intoDept" property="intoDept"/>
<result column="pullDept" property="pullDept"/>
<result column="totalAmount" property="totalAmount"/>
<collection property="list" ofType="com.yxt.anrui.oa.biz.adallocateassetdetails.AdAllocateAssetListDetailsVo"
select="selectList" column="sid">
</collection>
</resultMap>
<select id="selectList" resultType="com.yxt.anrui.oa.biz.adpurchaseassetdetails.AdPurchaseAssetListDetailsVo">
select *
from ad_allocate_asset_details
where mainSid = #{sid}
</select>
</mapper>

339
yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adallocateassetapply/AdAllocateAssetApplyService.java

@ -0,0 +1,339 @@
/*********************************************************
*********************************************************
******************** *******************
************* ************
******* _oo0oo_ *******
*** o8888888o ***
* 88" . "88 *
* (| -_- |) *
* 0\ = /0 *
* ___/`---'\___ *
* .' \\| |// '. *
* / \\||| : |||// \ *
* / _||||| -:- |||||- \ *
* | | \\\ - /// | | *
* | \_| ''\---/'' |_/ | *
* \ .-\__ '-' ___/-. / *
* ___'. .' /--.--\ `. .'___ *
* ."" '< `.___\_<|>_/___.' >' "". *
* | | : `- \`.;`\ _ /`;.`/ - ` : | | *
* \ \ `_. \_ __\ /__ _/ .-` / / *
* =====`-.____`.___ \_____/___.-`___.-'===== *
* `=---=' *
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *
*********__佛祖保佑__永无BUG__验收通过__钞票多多__*********
*********************************************************/
package com.yxt.anrui.oa.biz.adallocateassetapply;
import cn.hutool.core.bean.BeanUtil;
import com.yxt.anrui.oa.biz.adallocateassetdetails.AdAllocateAssetDetailsDto;
import com.yxt.anrui.oa.biz.adallocateassetdetails.AdAllocateAssetDetailsService;
import com.yxt.anrui.oa.biz.adallocateassetdetails.AdAllocateAssetDetailsVo;
import com.yxt.anrui.oa.biz.oaappendix.OaAppendixService;
import com.yxt.anrui.oa.biz.oaform.*;
import com.yxt.anrui.oa.biz.oaform.flowable.*;
import com.yxt.anrui.oa.feign.file.OaFileEnum;
import com.yxt.anrui.oa.feign.flowable.flow.ProcDefEnum;
import com.yxt.anrui.oa.feign.portal.sysorganization.SysOrganizationFeign;
import com.yxt.anrui.oa.feign.portal.sysorganization.SysOrganizationVo;
import com.yxt.common.base.service.MybatisBaseService;
import com.yxt.common.core.result.ResultBean;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Service
public class AdAllocateAssetApplyService extends MybatisBaseService<AdAllocateAssetApplyMapper, AdAllocateAssetApply> {
@Autowired
private OaAppendixService oaAppendixService;
@Autowired
private OaFormService oaFormService;
@Autowired
private AdAllocateAssetDetailsService adAllocateAssetDetailsService;
@Autowired
private SysOrganizationFeign sysOrganizationFeign;
public ResultBean<AdAllocateAssetApplyVo> getSaveInit(String userSid, String orgPath) {
ResultBean<AdAllocateAssetApplyVo> rb = ResultBean.fireFail();
AdAllocateAssetApplyVo adAllocateAssetApplyVo = new AdAllocateAssetApplyVo();
adAllocateAssetApplyVo.setCreateBySid(userSid);
adAllocateAssetApplyVo.setOrgSidPath(orgPath);
return rb.success().setData(adAllocateAssetApplyVo);
}
public ResultBean<AdAllocateAssetApplyVo> getUpdateInit(String sid) {
ResultBean<AdAllocateAssetApplyVo> rb = ResultBean.fireFail();
AdAllocateAssetApplyVo adAllocateAssetApplyVo = new AdAllocateAssetApplyVo();
AdAllocateAssetApply adAllocateAssetApply = fetchBySid(sid);
if (adAllocateAssetApply == null) {
return rb.setMsg("该申请不存在");
}
OaForm oaForm = oaFormService.fetchBySid(sid);
adAllocateAssetApplyVo.setTaskId(oaForm.getTaskId());
adAllocateAssetApplyVo.setProcInsId(oaForm.getProcInstId());
//根据部门sid获取orgPath并赋值
SysOrganizationVo organizationVo = sysOrganizationFeign.fetchBySid(oaForm.getDeptSid()).getData();
String orgSidPath = organizationVo.getOrgSidPath();
adAllocateAssetApplyVo.setOrgSidPath(orgSidPath);
adAllocateAssetApplyVo.setCreateBySid(oaForm.getCreateBySid());
BeanUtil.copyProperties(adAllocateAssetApply, adAllocateAssetApplyVo);
FormCommon assetTypeObj = FormCommon.of(adAllocateAssetApply.getAssetTypeKey(), adAllocateAssetApply.getAssetTypeValue());
adAllocateAssetApplyVo.setAssetTypeObj(assetTypeObj);
FormCommon allocateObj = FormCommon.of(adAllocateAssetApply.getAllocateKey(), adAllocateAssetApply.getAllocateValue());
adAllocateAssetApplyVo.setAllocateObj(allocateObj);
FormCommon intoDeptObj = FormCommon.of(adAllocateAssetApply.getIntoDeptSid(), adAllocateAssetApply.getIntoDept());
adAllocateAssetApplyVo.setIntoDeptObj(intoDeptObj);
FormCommon pullDeptObj = FormCommon.of(adAllocateAssetApply.getPullDeptSid(), adAllocateAssetApply.getPullDept());
adAllocateAssetApplyVo.setPullDeptObj(pullDeptObj);
List<AdAllocateAssetDetailsVo> list = adAllocateAssetDetailsService.getUpdateInit(sid);
list.removeAll(Collections.singleton(null));
if (!list.isEmpty()) {
list.stream().forEach(details -> {
FormCommon assetObj = new FormCommon();
assetObj.setId(details.getInventorySid());
assetObj.setDictValue(details.getGoodsID());
Map<String, Object> extra = new HashMap<>();
if (StringUtils.isNotBlank(details.getGoodsSpuName())) {
extra.put("goodsSpuName",details.getGoodsSpuName());
}
if (StringUtils.isNotBlank(details.getGoodsSkuOwnSpec())) {
extra.put("goodsSkuOwnSpec",details.getGoodsSkuOwnSpec());
}
if (StringUtils.isNotBlank(details.getGoodsSkuCode())) {
extra.put("goodsSkuCode",details.getGoodsSkuCode());
}
assetObj.setExtra(extra);
details.setAssetObj(assetObj);
});
}
List<String> files = oaAppendixService.selectByLinkSid(sid, "图片");
adAllocateAssetApplyVo.setFiles(files);
List<String> appes = oaAppendixService.selectByLinkSid(sid, "文件");
adAllocateAssetApplyVo.setAppes(appes);
adAllocateAssetApplyVo.setList(list);
adAllocateAssetApplyVo.setSid(sid);
return rb.success().setData(adAllocateAssetApplyVo);
}
public ResultBean<String> saveOrUpdateDto(AdAllocateAssetApplyDto dto) {
ResultBean<String> rb = ResultBean.fireFail();
String sid = dto.getSid();
List<String> files = dto.getFiles();
List<String> appes = dto.getAppes();
List<AdAllocateAssetDetailsDto> list = dto.getList();
if (StringUtils.isBlank(sid)) {
// 新建操作
AdAllocateAssetApply entity = new AdAllocateAssetApply();
BeanUtil.copyProperties(dto, entity, "sid");
dto.setBillNo("GDZCDBSQ");
dto.setSid(entity.getSid());
ResultBean<String> resultBean = oaFormService.saveOaForm(dto);
if (!resultBean.getSuccess()) {
return rb;
}
entity.setFormSid(resultBean.getData());
baseMapper.insert(entity);
sid = entity.getSid();
} else {
// 更新操作
AdAllocateAssetApply entity = fetchBySid(sid);
BeanUtil.copyProperties(dto, entity, "id", "sid");
baseMapper.updateById(entity);
}
adAllocateAssetDetailsService.saveDetails(list, sid);
// 处理附件
saveFiles(sid, files, OaFileEnum.ADALLOCATEASSETAPPLY.getAttachType(), "图片");
saveFiles(sid, appes, OaFileEnum.ADALLOCATEASSETAPPLY.getAttachType(), "文件");
return rb.success().setData(sid);
}
// 保存文件
private void saveFiles(String sid, List<String> files, String attachType, String fileType) {
files.removeAll(Collections.singleton(null));
oaAppendixService.saveFile(sid, files, attachType, fileType);
}
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);
return rb.success();
}
public ResultBean<AdAllocateAssetApplyDetailVo> details(String sid, String application) {
ResultBean<AdAllocateAssetApplyDetailVo> rb = ResultBean.fireFail();
AdAllocateAssetApplyDetailVo adAllocateAssetApplyDetailVo = baseMapper.details(sid);
if (adAllocateAssetApplyDetailVo == null) {
return rb.setMsg("该申请不存在");
}
List<String> files = oaAppendixService.selectByLinkSid(sid, "图片");
List<String> appes = oaAppendixService.selectByLinkSid(sid, "文件");
adAllocateAssetApplyDetailVo.setFiles(files);
adAllocateAssetApplyDetailVo.setAppes(appes);
//基础字段赋值
BeanUtil.copyProperties(oaFormService.getDetails(sid), adAllocateAssetApplyDetailVo);
return rb.success().setData(adAllocateAssetApplyDetailVo);
}
/**
* 提交
*
* @param dto
* @return
*/
public ResultBean submit(AdAllocateAssetApplyDto dto) {
ResultBean rb = ResultBean.fireFail();
ResultBean<String> stringResultBean = saveOrUpdateDto(dto);
if (!stringResultBean.getSuccess()) {
return rb.setMsg(stringResultBean.getData());
}
String businessSid = stringResultBean.getData();
SubmitDto submitDto = new SubmitDto();
submitDto.setUserSid(dto.getCreateBySid());
submitDto.setBusinessSid(businessSid);
Map<String, Object> formVariables = new HashMap<>();
formVariables = getMap(formVariables, businessSid);
submitDto.setFormVariables(formVariables);
submitDto.setProcDefId(ProcDefEnum.HIHIREAPPLY.getProDefId());
submitDto.setNextTaskId(dto.getTaskId());
submitDto.setRule(OaFormRuleEnum.DIRECTLY_UNDER.getRule());
return oaFormService.submit(submitDto);
}
/**
* 办理同意
*
* @param dto
* @return
*/
public ResultBean complete(CompleteDto dto) {
Map<String, Object> formVariables = dto.getFormVariables();
formVariables = getMap(formVariables, dto.getBusinessSid());
dto.setFormVariables(formVariables);
BusinessVariablesDto businessVariablesDto = new BusinessVariablesDto();
BeanUtil.copyProperties(dto, businessVariablesDto);
return oaFormService.complete(businessVariablesDto);
}
/**
* 驳回
*
* @param dto
* @return
*/
public ResultBean reject(TaskDto dto) {
Map<String, Object> formVariables = dto.getFormVariables();
formVariables = getMap(formVariables, dto.getBusinessSid());
dto.setFormVariables(formVariables);
return oaFormService.reject(dto);
}
public ResultBean<String> getFlowOperateTitle(NodeQuery query) {
// 默认失败返回
ResultBean<String> rb = ResultBean.fireFail();
// 获取next值和formVariables
int next = query.getNext();
// 获取并更新formVariables
Map<String, Object> formVariables = getMap(query.getFormVariables(), query.getBusinessSid());
query.setFormVariables(formVariables);
// 校验next参数是否有效(只允许0或1)
if (next != 0 && next != 1) {
return rb.setMsg("参数错误:next"); // 如果next不是0或1,返回错误信息
}
// 获取节点名称
String data = getNodeName(query, next);
// 如果data为null,表示未获取到有效的节点信息
if (data == null) {
return rb.setMsg("没有获取到节点信息"); // 返回错误消息
}
// 返回成功的结果和获取到的节点名称
return rb.success().setData(data);
}
/**
* 网关参数组成
*
* @param formVariables
* @param sid
* @return
*/
public Map<String, Object> getMap(Map<String, Object> formVariables, String sid) {
Map<String, Object> appMap = new HashMap<>();
appMap.put("sid", sid);
/*appMap.put("editUrl", "approval/#/pages/EditOnboradingApplyActivity?sid=" + sid);
appMap.put("detailUrl", "approval/#/pages/DetailOnboradingApplyActivity?sid=" + sid);
appMap.put("flowOperateUrl", "oa/v1/HrHireApply/getFlowOperateTitle");
appMap.put("agreeUrl", "oa/v1/HrHireApply/complete");
appMap.put("stopUrl", "oa/v1/oaform/breakProcess");
appMap.put("rejectUrl", "oa/v1/HrHireApply/reject");
appMap.put("recallUrl", "oa/v1/oaform/revokeProcess");
appMap.put("signUrl", "oa/v1/oaform/delegate");
appMap.put("transferUrl", "oa/v1/oaform/assignTask");*/
appMap.put(OaFormUrlEnum.HRHIREAPPLY_EDIT.getType(), OaFormUrlEnum.HRHIREAPPLY_EDIT.getUrl() + "?sid=" + sid);
appMap.put(OaFormUrlEnum.HRHIREAPPLY_DETAIL.getType(), OaFormUrlEnum.HRHIREAPPLY_DETAIL.getUrl() + "?sid=" + sid);
appMap.put(OaFormUrlEnum.HRHIREAPPLY_FLOWOPERATEURL.getType(), OaFormUrlEnum.HRHIREAPPLY_FLOWOPERATEURL.getUrl());
appMap.put(OaFormUrlEnum.HRHIREAPPLY_AGREEURL.getType(), OaFormUrlEnum.HRHIREAPPLY_AGREEURL.getUrl());
appMap.put(OaFormUrlEnum.STOPURL.getType(), OaFormUrlEnum.STOPURL.getUrl());
appMap.put(OaFormUrlEnum.HRHIREAPPLY_REJECTURL.getType(), OaFormUrlEnum.HRHIREAPPLY_REJECTURL.getUrl());
appMap.put(OaFormUrlEnum.RECALLURL.getType(), OaFormUrlEnum.RECALLURL.getUrl());
appMap.put(OaFormUrlEnum.SIGNURL.getType(), OaFormUrlEnum.SIGNURL.getUrl());
appMap.put(OaFormUrlEnum.TRANSFERURL.getType(), OaFormUrlEnum.TRANSFERURL.getUrl());
formVariables.put("app", appMap);
//根据组织查询是否是分公司
OaForm oaForm = oaFormService.fetchBySid(sid);
AdAllocateAssetApply adExpatriatesApply = fetchBySid(sid);
SysOrganizationVo sysOrganization = sysOrganizationFeign.fetchBySid(oaForm.getUseOrgSid()).getData();
//是否是分公司
formVariables.put("isTrue", sysOrganization.getIsDept() == 0);
return formVariables;
}
/**
* 根据next的值获取前一个节点或下一个节点的名称
*
* @param query 包含查询所需参数的NodeQuery对象
* @param next 参数0表示上一环节1表示下一环节
* @return 节点名称如果失败则返回null
*/
private String getNodeName(NodeQuery query, int next) {
// 根据next值选择相应的服务方法获取节点信息
ResultBean<List<NodeVo>> resultBean = (next == 0)
? oaFormService.getPreviousNodesForReject(query) // 获取上一环节的节点
: oaFormService.getNextNodesForSubmit(query); // 获取下一环节的节点
// 如果服务调用成功
if (resultBean.getSuccess()) {
// 清除结果列表中的null值,避免空节点
resultBean.getData().removeAll(Collections.singleton(null));
// 如果结果列表非空,返回第一个节点的名称
if (!resultBean.getData().isEmpty()) {
return resultBean.getData().get(0).getName();
}
} else {
// 如果服务调用失败,返回null
return null;
}
// 如果结果为空,返回null
return null;
}
}

85
yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adallocateassetapply/AdAllocateAssetApplyVo.java

@ -0,0 +1,85 @@
/*********************************************************
*********************************************************
******************** *******************
************* ************
******* _oo0oo_ *******
*** o8888888o ***
* 88" . "88 *
* (| -_- |) *
* 0\ = /0 *
* ___/`---'\___ *
* .' \\| |// '. *
* / \\||| : |||// \ *
* / _||||| -:- |||||- \ *
* | | \\\ - /// | | *
* | \_| ''\---/'' |_/ | *
* \ .-\__ '-' ___/-. / *
* ___'. .' /--.--\ `. .'___ *
* ."" '< `.___\_<|>_/___.' >' "". *
* | | : `- \`.;`\ _ /`;.`/ - ` : | | *
* \ \ `_. \_ __\ /__ _/ .-` / / *
* =====`-.____`.___ \_____/___.-`___.-'===== *
* `=---=' *
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *
*********__佛祖保佑__永无BUG__验收通过__钞票多多__*********
*********************************************************/
package com.yxt.anrui.oa.biz.adallocateassetapply;
import com.yxt.anrui.oa.biz.adallocateassetdetails.AdAllocateAssetDetailsVo;
import com.yxt.anrui.oa.biz.oaform.FormCommon;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
@Data
public class AdAllocateAssetApplyVo {
private String sid;
/* private String userSid;
private String orgPath;*/
private String orgSidPath;
private String createBySid;
private FormCommon allocateObj;
@ApiModelProperty("调拨类别key")
private String allocateKey; // 调拨类别key
@ApiModelProperty("调拨类别value")
private String allocateValue; // 调拨类别value
private FormCommon assetTypeObj;
@ApiModelProperty("固定资产类别key")
private String assetTypeKey; // 固定资产类别key
@ApiModelProperty("固定资产类别value")
private String assetTypeValue; // 固定资产类别value
private FormCommon intoDeptObj;
@ApiModelProperty("调入部门sid")
private String intoDeptSid; // 调入部门sid
@ApiModelProperty("调入部门")
private String intoDept; // 调入部门
private FormCommon pullDeptObj;
@ApiModelProperty("调出部门sid")
private String pullDeptSid; // 调出部门sid
@ApiModelProperty("调出部门")
private String pullDept; // 调出部门
@ApiModelProperty("调拨事由")
private String allocateReason; // 调拨事由
@ApiModelProperty("调拨资产金额合计")
private String totalAmount; // 调拨资产金额合计
@ApiModelProperty("图片")
private List<String> files = new ArrayList<>();
@ApiModelProperty("附件")
private List<String> appes = new ArrayList<>();
private List<AdAllocateAssetDetailsVo> list = new ArrayList<>();
private String taskId;
@ApiModelProperty("流程实例id")
private String procInsId;
}

60
yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adallocateassetdetails/AdAllocateAssetDetails.java

@ -0,0 +1,60 @@
/*********************************************************
*********************************************************
******************** *******************
************* ************
******* _oo0oo_ *******
*** o8888888o ***
* 88" . "88 *
* (| -_- |) *
* 0\ = /0 *
* ___/`---'\___ *
* .' \\| |// '. *
* / \\||| : |||// \ *
* / _||||| -:- |||||- \ *
* | | \\\ - /// | | *
* | \_| ''\---/'' |_/ | *
* \ .-\__ '-' ___/-. / *
* ___'. .' /--.--\ `. .'___ *
* ."" '< `.___\_<|>_/___.' >' "". *
* | | : `- \`.;`\ _ /`;.`/ - ` : | | *
* \ \ `_. \_ __\ /__ _/ .-` / / *
* =====`-.____`.___ \_____/___.-`___.-'===== *
* `=---=' *
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *
*********__佛祖保佑__永无BUG__验收通过__钞票多多__*********
*********************************************************/
package com.yxt.anrui.oa.biz.adallocateassetdetails;
import com.baomidou.mybatisplus.annotation.TableName;
import com.yxt.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
@Data
@ApiModel(value = "固定资产调拨列表", description = "固定资产调拨")
@TableName("ad_allocate_asset_details")
public class AdAllocateAssetDetails extends BaseEntity {
private static final long serialVersionUID = 1L;
@ApiModelProperty("申请sid")
private String mainSid; // 申请sid
@ApiModelProperty("库存sid")
private String inventorySid; // 库存sid
@ApiModelProperty("固定资产ID")
private String goodsID; // 固定资产ID
@ApiModelProperty("固定资产编号")
private String goodsSkuCode; // 固定资产编号
@ApiModelProperty("固定资产名称")
private String goodsSpuName; // 固定资产名称
@ApiModelProperty("规格型号")
private String goodsSkuOwnSpec; // 规格型号
@ApiModelProperty("固定资产情况说明")
private String goodsShows; // 固定资产情况说明
@ApiModelProperty("固定资产净值")
private BigDecimal goodsWorth; // 固定资产净值
}

69
yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adallocateassetdetails/AdAllocateAssetDetailsDto.java

@ -0,0 +1,69 @@
/*********************************************************
*********************************************************
******************** *******************
************* ************
******* _oo0oo_ *******
*** o8888888o ***
* 88" . "88 *
* (| -_- |) *
* 0\ = /0 *
* ___/`---'\___ *
* .' \\| |// '. *
* / \\||| : |||// \ *
* / _||||| -:- |||||- \ *
* | | \\\ - /// | | *
* | \_| ''\---/'' |_/ | *
* \ .-\__ '-' ___/-. / *
* ___'. .' /--.--\ `. .'___ *
* ."" '< `.___\_<|>_/___.' >' "". *
* | | : `- \`.;`\ _ /`;.`/ - ` : | | *
* \ \ `_. \_ __\ /__ _/ .-` / / *
* =====`-.____`.___ \_____/___.-`___.-'===== *
* `=---=' *
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *
*********__佛祖保佑__永无BUG__验收通过__钞票多多__*********
*********************************************************/
package com.yxt.anrui.oa.biz.adallocateassetdetails;
import com.yxt.anrui.oa.biz.oaform.FormCommon;
import com.yxt.common.core.vo.Vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* Project: yxt-oa(认定人员) <br/>
* File: AdExpatriatesDetailVo.java <br/>
* Class: com.yxt.anrui.oa.api.adexpatriatesdetail.AdExpatriatesDetailVo <br/>
* Description: 驻外人员认定列表 视图数据对象. <br/>
* Copyright: Copyright (c) 2011 <br/>
* Company: https://gitee.com/liuzp315 <br/>
* Makedate: 2025-01-20 15:35:08 <br/>
*
* @author liupopo
* @version 1.0
* @since 1.0
*/
@Data
@ApiModel(value = "固定资产列表 视图数据对象", description = "固定资产列表 视图数据对象")
public class AdAllocateAssetDetailsDto implements Vo {
@ApiModelProperty("固定资产")
private FormCommon assetObj;
@ApiModelProperty("库存sid")
private String inventorySid; // 库存sid
@ApiModelProperty("固定资产ID")
private String goodsID; // 固定资产ID
@ApiModelProperty("固定资产编号")
private String goodsSkuCode; // 固定资产编号
@ApiModelProperty("固定资产名称")
private String goodsSpuName; // 固定资产名称
@ApiModelProperty("规格型号")
private String goodsSkuOwnSpec; // 规格型号
@ApiModelProperty("固定资产情况说明")
private String goodsShows; // 固定资产情况说明
@ApiModelProperty("固定资产净值")
private String goodsWorth; // 固定资产净值
}

41
yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adallocateassetdetails/AdAllocateAssetDetailsMapper.java

@ -0,0 +1,41 @@
/*********************************************************
*********************************************************
******************** *******************
************* ************
******* _oo0oo_ *******
*** o8888888o ***
* 88" . "88 *
* (| -_- |) *
* 0\ = /0 *
* ___/`---'\___ *
* .' \\| |// '. *
* / \\||| : |||// \ *
* / _||||| -:- |||||- \ *
* | | \\\ - /// | | *
* | \_| ''\---/'' |_/ | *
* \ .-\__ '-' ___/-. / *
* ___'. .' /--.--\ `. .'___ *
* ."" '< `.___\_<|>_/___.' >' "". *
* | | : `- \`.;`\ _ /`;.`/ - ` : | | *
* \ \ `_. \_ __\ /__ _/ .-` / / *
* =====`-.____`.___ \_____/___.-`___.-'===== *
* `=---=' *
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *
*********__佛祖保佑__永无BUG__验收通过__钞票多多__*********
*********************************************************/
package com.yxt.anrui.oa.biz.adallocateassetdetails;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import java.util.List;
@Mapper
public interface AdAllocateAssetDetailsMapper extends BaseMapper<AdAllocateAssetDetails> {
@Select("select * from ad_allocate_asset_details where mainSid = #{mainSid}")
List<AdAllocateAssetDetails> selectByMainSid(String mainSid);
List<AdAllocateAssetDetailsVo> getUpdateInit(String sid);
}

9
yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adallocateassetdetails/AdAllocateAssetDetailsMapper.xml

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yxt.anrui.oa.biz.adallocateassetdetails.AdAllocateAssetDetailsMapper">
<select id="getUpdateInit" resultType="com.yxt.anrui.oa.biz.adallocateassetdetails.AdAllocateAssetDetailsVo">
select *
from ad_allocate_asset_details
where mainSid = #{sid}
</select>
</mapper>

83
yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adallocateassetdetails/AdAllocateAssetDetailsService.java

@ -0,0 +1,83 @@
/*********************************************************
*********************************************************
******************** *******************
************* ************
******* _oo0oo_ *******
*** o8888888o ***
* 88" . "88 *
* (| -_- |) *
* 0\ = /0 *
* ___/`---'\___ *
* .' \\| |// '. *
* / \\||| : |||// \ *
* / _||||| -:- |||||- \ *
* | | \\\ - /// | | *
* | \_| ''\---/'' |_/ | *
* \ .-\__ '-' ___/-. / *
* ___'. .' /--.--\ `. .'___ *
* ."" '< `.___\_<|>_/___.' >' "". *
* | | : `- \`.;`\ _ /`;.`/ - ` : | | *
* \ \ `_. \_ __\ /__ _/ .-` / / *
* =====`-.____`.___ \_____/___.-`___.-'===== *
* `=---=' *
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *
*********__佛祖保佑__永无BUG__验收通过__钞票多多__*********
*********************************************************/
package com.yxt.anrui.oa.biz.adallocateassetdetails;
import cn.hutool.core.bean.BeanUtil;
import com.yxt.anrui.oa.biz.oaform.FormCommon;
import com.yxt.common.base.service.MybatisBaseService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import java.util.Collections;
import java.util.List;
import java.util.Map;
@Service
public class AdAllocateAssetDetailsService extends MybatisBaseService<AdAllocateAssetDetailsMapper, AdAllocateAssetDetails> {
public void saveDetails(List<AdAllocateAssetDetailsDto> list, String sid) {
//根据sid查询明细并删除
List<AdAllocateAssetDetails> list2 = baseMapper.selectByMainSid(sid);
list2.removeAll(Collections.singleton(null));
if (!list2.isEmpty()) {
list2.stream().forEach(v -> {
deleteBySid(v.getSid());
});
}
list.removeAll(Collections.singleton(null));
if (!list.isEmpty()) {
list.stream().forEach(details -> {
AdAllocateAssetDetails adAllocateAssetDetails = new AdAllocateAssetDetails();
BeanUtil.copyProperties(details, adAllocateAssetDetails);
adAllocateAssetDetails.setMainSid(sid);
FormCommon assetObj = details.getAssetObj();
adAllocateAssetDetails.setGoodsID(assetObj.getDictValue());
adAllocateAssetDetails.setInventorySid(assetObj.getId());
Map<String, Object> extra = assetObj.getExtra();
if (null != extra) {
for (Map.Entry <String,Object> entry : extra.entrySet()) {
if (StringUtils.isNotBlank((String)entry.getValue())) {
if (entry.getKey().equals("goodsSpuName")) {
adAllocateAssetDetails.setGoodsSpuName((String)entry.getValue());
}
if (entry.getKey().equals("goodsSkuOwnSpec")) {
adAllocateAssetDetails.setGoodsSkuOwnSpec((String)entry.getValue());
}
if (entry.getKey().equals("goodsSkuCode")) {
adAllocateAssetDetails.setGoodsSkuCode((String)entry.getValue());
}
}
}
}
baseMapper.insert(adAllocateAssetDetails);
});
}
}
public List<AdAllocateAssetDetailsVo> getUpdateInit(String sid) {
return baseMapper.getUpdateInit(sid);
}
}

71
yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adallocateassetdetails/AdAllocateAssetDetailsVo.java

@ -0,0 +1,71 @@
/*********************************************************
*********************************************************
******************** *******************
************* ************
******* _oo0oo_ *******
*** o8888888o ***
* 88" . "88 *
* (| -_- |) *
* 0\ = /0 *
* ___/`---'\___ *
* .' \\| |// '. *
* / \\||| : |||// \ *
* / _||||| -:- |||||- \ *
* | | \\\ - /// | | *
* | \_| ''\---/'' |_/ | *
* \ .-\__ '-' ___/-. / *
* ___'. .' /--.--\ `. .'___ *
* ."" '< `.___\_<|>_/___.' >' "". *
* | | : `- \`.;`\ _ /`;.`/ - ` : | | *
* \ \ `_. \_ __\ /__ _/ .-` / / *
* =====`-.____`.___ \_____/___.-`___.-'===== *
* `=---=' *
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *
*********__佛祖保佑__永无BUG__验收通过__钞票多多__*********
*********************************************************/
package com.yxt.anrui.oa.biz.adallocateassetdetails;
import com.yxt.anrui.oa.biz.oaform.FormCommon;
import com.yxt.common.core.vo.Vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* Project: yxt-oa(认定人员) <br/>
* File: AdExpatriatesDetailVo.java <br/>
* Class: com.yxt.anrui.oa.api.adexpatriatesdetail.AdExpatriatesDetailVo <br/>
* Description: 驻外人员认定列表 视图数据对象. <br/>
* Copyright: Copyright (c) 2011 <br/>
* Company: https://gitee.com/liuzp315 <br/>
* Makedate: 2025-01-20 15:35:08 <br/>
*
* @author liupopo
* @version 1.0
* @since 1.0
*/
@Data
@ApiModel(value = "固定资产列表 视图数据对象", description = "固定资产列表 视图数据对象")
public class AdAllocateAssetDetailsVo implements Vo {
private String sid;
@ApiModelProperty("固定资产")
private FormCommon assetObj;
@ApiModelProperty("库存sid")
private String inventorySid; // 库存sid
@ApiModelProperty("固定资产ID")
private String goodsID; // 固定资产ID
@ApiModelProperty("固定资产编号")
private String goodsSkuCode; // 固定资产编号
@ApiModelProperty("固定资产名称")
private String goodsSpuName; // 固定资产名称
@ApiModelProperty("规格型号")
private String goodsSkuOwnSpec; // 规格型号
@ApiModelProperty("固定资产情况说明")
private String goodsShows; // 固定资产情况说明
@ApiModelProperty("固定资产净值")
private String goodsWorth; // 固定资产净值
}

66
yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adallocateassetdetails/AdAllocateAssetListDetailsVo.java

@ -0,0 +1,66 @@
/*********************************************************
*********************************************************
******************** *******************
************* ************
******* _oo0oo_ *******
*** o8888888o ***
* 88" . "88 *
* (| -_- |) *
* 0\ = /0 *
* ___/`---'\___ *
* .' \\| |// '. *
* / \\||| : |||// \ *
* / _||||| -:- |||||- \ *
* | | \\\ - /// | | *
* | \_| ''\---/'' |_/ | *
* \ .-\__ '-' ___/-. / *
* ___'. .' /--.--\ `. .'___ *
* ."" '< `.___\_<|>_/___.' >' "". *
* | | : `- \`.;`\ _ /`;.`/ - ` : | | *
* \ \ `_. \_ __\ /__ _/ .-` / / *
* =====`-.____`.___ \_____/___.-`___.-'===== *
* `=---=' *
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *
*********__佛祖保佑__永无BUG__验收通过__钞票多多__*********
*********************************************************/
package com.yxt.anrui.oa.biz.adallocateassetdetails;
import com.yxt.common.core.vo.Vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* Project: yxt-oa(认定人员) <br/>
* File: AdExpatriatesDetailVo.java <br/>
* Class: com.yxt.anrui.oa.api.adexpatriatesdetail.AdExpatriatesDetailVo <br/>
* Description: 驻外人员认定列表 视图数据对象. <br/>
* Copyright: Copyright (c) 2011 <br/>
* Company: https://gitee.com/liuzp315 <br/>
* Makedate: 2025-01-20 15:35:08 <br/>
*
* @author liupopo
* @version 1.0
* @since 1.0
*/
@Data
@ApiModel(value = "固定资产列表 视图数据对象", description = "固定资产列表 视图数据对象")
public class AdAllocateAssetListDetailsVo implements Vo {
private String sid;
@ApiModelProperty("固定资产ID")
private String goodsID; // 固定资产ID
@ApiModelProperty("固定资产编号")
private String goodsSkuCode; // 固定资产编号
@ApiModelProperty("固定资产名称")
private String goodsSpuName; // 固定资产名称
@ApiModelProperty("规格型号")
private String goodsSkuOwnSpec; // 规格型号
@ApiModelProperty("固定资产情况说明")
private String goodsShows; // 固定资产情况说明
@ApiModelProperty("固定资产净值")
private String goodsWorth; // 固定资产净值
}

55
yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adpurchaseassetapply/AdPurchaseAssetApply.java

@ -0,0 +1,55 @@
/*********************************************************
*********************************************************
******************** *******************
************* ************
******* _oo0oo_ *******
*** o8888888o ***
* 88" . "88 *
* (| -_- |) *
* 0\ = /0 *
* ___/`---'\___ *
* .' \\| |// '. *
* / \\||| : |||// \ *
* / _||||| -:- |||||- \ *
* | | \\\ - /// | | *
* | \_| ''\---/'' |_/ | *
* \ .-\__ '-' ___/-. / *
* ___'. .' /--.--\ `. .'___ *
* ."" '< `.___\_<|>_/___.' >' "". *
* | | : `- \`.;`\ _ /`;.`/ - ` : | | *
* \ \ `_. \_ __\ /__ _/ .-` / / *
* =====`-.____`.___ \_____/___.-`___.-'===== *
* `=---=' *
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *
*********__佛祖保佑__永无BUG__验收通过__钞票多多__*********
*********************************************************/
package com.yxt.anrui.oa.biz.adpurchaseassetapply;
import com.baomidou.mybatisplus.annotation.TableName;
import com.yxt.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
@Data
@ApiModel(value = "固定资产采购", description = "固定资产采购")
@TableName("ad_purchase_asset_apply")
public class AdPurchaseAssetApply extends BaseEntity {
private static final long serialVersionUID = 1L;
@ApiModelProperty("基础表单sid")
private String formSid; // 基础表单sid
@ApiModelProperty("关联审批sid列表,英文逗号分隔")
private String linkFormSids; // 关联审批sid列表,英文逗号分隔
@ApiModelProperty("固定资产类别key")
private String assetTypeKey; // 固定资产类别key
@ApiModelProperty("固定资产类别value")
private String assetTypeValue; // 固定资产类别value
@ApiModelProperty("是否有服务站机器设备(1是,0否)")
private String isStationKey; // 是否有服务站机器设备(1是,0否)
private String isStationValue; // 是否有服务站机器设备(1是,0否)
@ApiModelProperty("合计采购金额")
private BigDecimal totalAmount; // 合计采购金额
}

34
yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adpurchaseassetapply/AdPurchaseAssetApplyDetailVo.java

@ -0,0 +1,34 @@
package com.yxt.anrui.oa.biz.adpurchaseassetapply;
import com.yxt.anrui.oa.biz.adpurchaseassetdetails.AdPurchaseAssetListDetailsVo;
import com.yxt.anrui.oa.biz.oaform.OaFormCommonVo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
/**
* @description:
* @author: dimengzhe
* @date: 2025/1/21
**/
@Data
public class AdPurchaseAssetApplyDetailVo extends OaFormCommonVo {
@ApiModelProperty("固定资产类别value")
private String assetTypeValue; // 固定资产类别value
private String isStationValue; // 是否有服务站机器设备(1是,0否)
@ApiModelProperty("备注")
private String remarks;
@ApiModelProperty("合计采购金额")
private String totalAmount; // 合计采购金额
@ApiModelProperty("图片")
private List<String> files = new ArrayList<>();
@ApiModelProperty("附件")
private List<String> appes = new ArrayList<>();
private List<AdPurchaseAssetListDetailsVo> list = new ArrayList<>();
}

80
yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adpurchaseassetapply/AdPurchaseAssetApplyDto.java

@ -0,0 +1,80 @@
/*********************************************************
*********************************************************
******************** *******************
************* ************
******* _oo0oo_ *******
*** o8888888o ***
* 88" . "88 *
* (| -_- |) *
* 0\ = /0 *
* ___/`---'\___ *
* .' \\| |// '. *
* / \\||| : |||// \ *
* / _||||| -:- |||||- \ *
* | | \\\ - /// | | *
* | \_| ''\---/'' |_/ | *
* \ .-\__ '-' ___/-. / *
* ___'. .' /--.--\ `. .'___ *
* ."" '< `.___\_<|>_/___.' >' "". *
* | | : `- \`.;`\ _ /`;.`/ - ` : | | *
* \ \ `_. \_ __\ /__ _/ .-` / / *
* =====`-.____`.___ \_____/___.-`___.-'===== *
* `=---=' *
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *
*********__佛祖保佑__永无BUG__验收通过__钞票多多__*********
*********************************************************/
package com.yxt.anrui.oa.biz.adpurchaseassetapply;
import com.yxt.anrui.oa.biz.adpurchaseassetdetails.AdPurchaseAssetDetailsDto;
import com.yxt.anrui.oa.biz.oaform.FormCommon;
import com.yxt.anrui.oa.biz.oaform.OaFormDto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
/**
* Project: oa(驻外人员认定申请) <br/>
* File: AdExpatriatesApplyDto.java <br/>
* Class: com.yxt.anrui.oa.api.adexpatriatesapply.AdExpatriatesApplyDto <br/>
* Description: 驻外人员认定申请 数据传输对象. <br/>
* Copyright: Copyright (c) 2011 <br/>
* Company: https://gitee.com/liuzp315 <br/>
* Makedate: 2025-01-16 15:22:53 <br/>
*
* @author liupopo
* @version 1.0
* @since 1.0
*/
@Data
@ApiModel(value = "驻外人员认定申请 数据传输对象", description = "驻外人员认定申请 数据传输对象")
public class AdPurchaseAssetApplyDto extends OaFormDto {
private FormCommon assetTypeObj;
@ApiModelProperty("固定资产类别key")
private String assetTypeKey; // 固定资产类别key
@ApiModelProperty("固定资产类别value")
private String assetTypeValue; // 固定资产类别value
private FormCommon isStationObj;
@ApiModelProperty("是否有服务站机器设备(1是,0否)")
private String isStationKey; // 是否有服务站机器设备(1是,0否)
private String isStationValue; // 是否有服务站机器设备(1是,0否)
@ApiModelProperty("备注")
private String remarks;
@ApiModelProperty("合计采购金额")
private String totalAmount; // 合计采购金额
@ApiModelProperty("图片")
private List<String> files = new ArrayList<>();
@ApiModelProperty("附件")
private List<String> appes = new ArrayList<>();
private List<AdPurchaseAssetDetailsDto> list = new ArrayList<>();
}

37
yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adpurchaseassetapply/AdPurchaseAssetApplyMapper.java

@ -0,0 +1,37 @@
/*********************************************************
*********************************************************
******************** *******************
************* ************
******* _oo0oo_ *******
*** o8888888o ***
* 88" . "88 *
* (| -_- |) *
* 0\ = /0 *
* ___/`---'\___ *
* .' \\| |// '. *
* / \\||| : |||// \ *
* / _||||| -:- |||||- \ *
* | | \\\ - /// | | *
* | \_| ''\---/'' |_/ | *
* \ .-\__ '-' ___/-. / *
* ___'. .' /--.--\ `. .'___ *
* ."" '< `.___\_<|>_/___.' >' "". *
* | | : `- \`.;`\ _ /`;.`/ - ` : | | *
* \ \ `_. \_ __\ /__ _/ .-` / / *
* =====`-.____`.___ \_____/___.-`___.-'===== *
* `=---=' *
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *
*********__佛祖保佑__永无BUG__验收通过__钞票多多__*********
*********************************************************/
package com.yxt.anrui.oa.biz.adpurchaseassetapply;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface AdPurchaseAssetApplyMapper extends BaseMapper<AdPurchaseAssetApply> {
int selectBySid(String join);
AdPurchaseAssetApplyDetailVo details(String sid);
}

36
yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adpurchaseassetapply/AdPurchaseAssetApplyMapper.xml

@ -0,0 +1,36 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yxt.anrui.oa.biz.adpurchaseassetapply.AdPurchaseAssetApplyMapper">
<!-- <where> ${ew.sqlSegment} </where>-->
<!-- ${ew.customSqlSegment} -->
<select id="selectBySid" resultType="int">
SELECT COUNT(*)
FROM ad_purchase_asset_apply ae
left join oa_form ofm on ae.formSid = ofm.sid
WHERE ofm.nodeState != '待提交'
and find_in_set(oa.sid, #{list})
</select>
<select id="details" resultMap="detailMap">
select remarks, sid,assetTypeValue,isStationValue,totalAmount
from ad_purchase_asset_apply
where sid = #{sid}
</select>
<resultMap id="detailMap" type="com.yxt.anrui.oa.biz.adpurchaseassetapply.AdPurchaseAssetApplyDetailVo">
<result column="remarks" property="remarks"/>
<result column="assetTypeValue" property="assetTypeValue"/>
<result column="isStationValue" property="isStationValue"/>
<result column="totalAmount" property="totalAmount"/>
<collection property="list" ofType="com.yxt.anrui.oa.biz.adpurchaseassetdetails.AdPurchaseAssetListDetailsVo"
select="selectList" column="sid">
</collection>
</resultMap>
<select id="selectList" resultType="com.yxt.anrui.oa.biz.adpurchaseassetdetails.AdPurchaseAssetListDetailsVo">
select *
from ad_purchase_asset_details
where mainSid = #{sid}
</select>
</mapper>

335
yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adpurchaseassetapply/AdPurchaseAssetApplyService.java

@ -0,0 +1,335 @@
/*********************************************************
*********************************************************
******************** *******************
************* ************
******* _oo0oo_ *******
*** o8888888o ***
* 88" . "88 *
* (| -_- |) *
* 0\ = /0 *
* ___/`---'\___ *
* .' \\| |// '. *
* / \\||| : |||// \ *
* / _||||| -:- |||||- \ *
* | | \\\ - /// | | *
* | \_| ''\---/'' |_/ | *
* \ .-\__ '-' ___/-. / *
* ___'. .' /--.--\ `. .'___ *
* ."" '< `.___\_<|>_/___.' >' "". *
* | | : `- \`.;`\ _ /`;.`/ - ` : | | *
* \ \ `_. \_ __\ /__ _/ .-` / / *
* =====`-.____`.___ \_____/___.-`___.-'===== *
* `=---=' *
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *
*********__佛祖保佑__永无BUG__验收通过__钞票多多__*********
*********************************************************/
package com.yxt.anrui.oa.biz.adpurchaseassetapply;
import cn.hutool.core.bean.BeanUtil;
import com.yxt.anrui.oa.biz.adpurchaseassetdetails.AdPurchaseAssetDetailsDto;
import com.yxt.anrui.oa.biz.adpurchaseassetdetails.AdPurchaseAssetDetailsService;
import com.yxt.anrui.oa.biz.adpurchaseassetdetails.AdPurchaseAssetDetailsVo;
import com.yxt.anrui.oa.biz.oaappendix.OaAppendixService;
import com.yxt.anrui.oa.biz.oaform.*;
import com.yxt.anrui.oa.biz.oaform.flowable.*;
import com.yxt.anrui.oa.feign.file.OaFileEnum;
import com.yxt.anrui.oa.feign.flowable.flow.ProcDefEnum;
import com.yxt.anrui.oa.feign.portal.sysorganization.SysOrganizationFeign;
import com.yxt.anrui.oa.feign.portal.sysorganization.SysOrganizationVo;
import com.yxt.common.base.service.MybatisBaseService;
import com.yxt.common.core.result.ResultBean;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Service
public class AdPurchaseAssetApplyService extends MybatisBaseService<AdPurchaseAssetApplyMapper, AdPurchaseAssetApply> {
@Autowired
private OaAppendixService oaAppendixService;
@Autowired
private OaFormService oaFormService;
@Autowired
private AdPurchaseAssetDetailsService adPurchaseAssetDetailsService;
@Autowired
private SysOrganizationFeign sysOrganizationFeign;
public ResultBean<AdPurchaseAssetApplyVo> getSaveInit(String userSid, String orgPath) {
ResultBean<AdPurchaseAssetApplyVo> rb = ResultBean.fireFail();
AdPurchaseAssetApplyVo adPurchaseAssetApplyVo = new AdPurchaseAssetApplyVo();
adPurchaseAssetApplyVo.setCreateBySid(userSid);
adPurchaseAssetApplyVo.setOrgSidPath(orgPath);
return rb.success().setData(adPurchaseAssetApplyVo);
}
public ResultBean<AdPurchaseAssetApplyVo> getUpdateInit(String sid) {
ResultBean<AdPurchaseAssetApplyVo> rb = ResultBean.fireFail();
AdPurchaseAssetApplyVo adPurchaseAssetApplyVo = new AdPurchaseAssetApplyVo();
AdPurchaseAssetApply adPurchaseAssetApply = fetchBySid(sid);
if (adPurchaseAssetApply == null) {
return rb.setMsg("该申请不存在");
}
OaForm oaForm = oaFormService.fetchBySid(sid);
adPurchaseAssetApplyVo.setTaskId(oaForm.getTaskId());
adPurchaseAssetApplyVo.setProcInsId(oaForm.getProcInstId());
//根据部门sid获取orgPath并赋值
SysOrganizationVo organizationVo = sysOrganizationFeign.fetchBySid(oaForm.getDeptSid()).getData();
String orgSidPath = organizationVo.getOrgSidPath();
adPurchaseAssetApplyVo.setOrgSidPath(orgSidPath);
adPurchaseAssetApplyVo.setCreateBySid(oaForm.getCreateBySid());
BeanUtil.copyProperties(adPurchaseAssetApply, adPurchaseAssetApplyVo);
FormCommon assetTypeObj = FormCommon.of(adPurchaseAssetApply.getAssetTypeKey(), adPurchaseAssetApply.getAssetTypeValue());
adPurchaseAssetApplyVo.setAssetTypeObj(assetTypeObj);
FormCommon isStationObj = FormCommon.of(adPurchaseAssetApply.getIsStationKey(), adPurchaseAssetApply.getIsStationValue());
adPurchaseAssetApplyVo.setIsStationObj(isStationObj);
List<AdPurchaseAssetDetailsVo> list = adPurchaseAssetDetailsService.getUpdateInit(sid);
list.removeAll(Collections.singleton(null));
if (!list.isEmpty()) {
list.stream().forEach(details -> {
FormCommon assetObj = new FormCommon();
assetObj.setId(details.getGoodsSpuSid());
assetObj.setDictValue(details.getGoodsSkuCode());
Map<String, Object> extra = new HashMap<>();
if (StringUtils.isNotBlank(details.getGoodsSpuName())) {
extra.put("goodsSpuName",details.getGoodsSpuName());
}
if (StringUtils.isNotBlank(details.getGoodsSkuOwnSpec())) {
extra.put("goodsSkuOwnSpec",details.getGoodsSkuOwnSpec());
}
if (StringUtils.isNotBlank(details.getUnit())) {
extra.put("unit",details.getUnit());
}
assetObj.setExtra(extra);
details.setAssetObj(assetObj);
});
}
List<String> files = oaAppendixService.selectByLinkSid(sid, "图片");
adPurchaseAssetApplyVo.setFiles(files);
List<String> appes = oaAppendixService.selectByLinkSid(sid, "文件");
adPurchaseAssetApplyVo.setAppes(appes);
adPurchaseAssetApplyVo.setList(list);
adPurchaseAssetApplyVo.setSid(sid);
return rb.success().setData(adPurchaseAssetApplyVo);
}
public ResultBean<String> saveOrUpdateDto(AdPurchaseAssetApplyDto dto) {
ResultBean<String> rb = ResultBean.fireFail();
String sid = dto.getSid();
List<String> files = dto.getFiles();
List<String> appes = dto.getAppes();
List<AdPurchaseAssetDetailsDto> list = dto.getList();
if (StringUtils.isBlank(sid)) {
// 新建操作
AdPurchaseAssetApply entity = new AdPurchaseAssetApply();
BeanUtil.copyProperties(dto, entity, "sid");
dto.setBillNo("GDZCCGSQ");
dto.setSid(entity.getSid());
ResultBean<String> resultBean = oaFormService.saveOaForm(dto);
if (!resultBean.getSuccess()) {
return rb;
}
entity.setFormSid(resultBean.getData());
baseMapper.insert(entity);
sid = entity.getSid();
} else {
// 更新操作
AdPurchaseAssetApply entity = fetchBySid(sid);
BeanUtil.copyProperties(dto, entity, "id", "sid");
baseMapper.updateById(entity);
}
adPurchaseAssetDetailsService.saveDetails(list, sid);
// 处理附件
saveFiles(sid, files, OaFileEnum.ADPURCHASEASSETAPPLY.getAttachType(), "图片");
saveFiles(sid, appes, OaFileEnum.ADPURCHASEASSETAPPLY.getAttachType(), "文件");
return rb.success().setData(sid);
}
// 保存文件
private void saveFiles(String sid, List<String> files, String attachType, String fileType) {
files.removeAll(Collections.singleton(null));
oaAppendixService.saveFile(sid, files, attachType, fileType);
}
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);
return rb.success();
}
public ResultBean<AdPurchaseAssetApplyDetailVo> details(String sid, String application) {
ResultBean<AdPurchaseAssetApplyDetailVo> rb = ResultBean.fireFail();
AdPurchaseAssetApplyDetailVo adPurchaseAssetApplyDetailVo = baseMapper.details(sid);
if (adPurchaseAssetApplyDetailVo == null) {
return rb.setMsg("该申请不存在");
}
List<String> files = oaAppendixService.selectByLinkSid(sid, "图片");
List<String> appes = oaAppendixService.selectByLinkSid(sid, "文件");
adPurchaseAssetApplyDetailVo.setFiles(files);
adPurchaseAssetApplyDetailVo.setAppes(appes);
//基础字段赋值
BeanUtil.copyProperties(oaFormService.getDetails(sid), adPurchaseAssetApplyDetailVo);
return rb.success().setData(adPurchaseAssetApplyDetailVo);
}
/**
* 提交
*
* @param dto
* @return
*/
public ResultBean submit(AdPurchaseAssetApplyDto dto) {
ResultBean rb = ResultBean.fireFail();
ResultBean<String> stringResultBean = saveOrUpdateDto(dto);
if (!stringResultBean.getSuccess()) {
return rb.setMsg(stringResultBean.getData());
}
String businessSid = stringResultBean.getData();
SubmitDto submitDto = new SubmitDto();
submitDto.setUserSid(dto.getCreateBySid());
submitDto.setBusinessSid(businessSid);
Map<String, Object> formVariables = new HashMap<>();
formVariables = getMap(formVariables, businessSid);
submitDto.setFormVariables(formVariables);
submitDto.setProcDefId(ProcDefEnum.HIHIREAPPLY.getProDefId());
submitDto.setNextTaskId(dto.getTaskId());
submitDto.setRule(OaFormRuleEnum.DIRECTLY_UNDER.getRule());
return oaFormService.submit(submitDto);
}
/**
* 办理同意
*
* @param dto
* @return
*/
public ResultBean complete(CompleteDto dto) {
Map<String, Object> formVariables = dto.getFormVariables();
formVariables = getMap(formVariables, dto.getBusinessSid());
dto.setFormVariables(formVariables);
BusinessVariablesDto businessVariablesDto = new BusinessVariablesDto();
BeanUtil.copyProperties(dto, businessVariablesDto);
return oaFormService.complete(businessVariablesDto);
}
/**
* 驳回
*
* @param dto
* @return
*/
public ResultBean reject(TaskDto dto) {
Map<String, Object> formVariables = dto.getFormVariables();
formVariables = getMap(formVariables, dto.getBusinessSid());
dto.setFormVariables(formVariables);
return oaFormService.reject(dto);
}
public ResultBean<String> getFlowOperateTitle(NodeQuery query) {
// 默认失败返回
ResultBean<String> rb = ResultBean.fireFail();
// 获取next值和formVariables
int next = query.getNext();
// 获取并更新formVariables
Map<String, Object> formVariables = getMap(query.getFormVariables(), query.getBusinessSid());
query.setFormVariables(formVariables);
// 校验next参数是否有效(只允许0或1)
if (next != 0 && next != 1) {
return rb.setMsg("参数错误:next"); // 如果next不是0或1,返回错误信息
}
// 获取节点名称
String data = getNodeName(query, next);
// 如果data为null,表示未获取到有效的节点信息
if (data == null) {
return rb.setMsg("没有获取到节点信息"); // 返回错误消息
}
// 返回成功的结果和获取到的节点名称
return rb.success().setData(data);
}
/**
* 网关参数组成
*
* @param formVariables
* @param sid
* @return
*/
public Map<String, Object> getMap(Map<String, Object> formVariables, String sid) {
Map<String, Object> appMap = new HashMap<>();
appMap.put("sid", sid);
/*appMap.put("editUrl", "approval/#/pages/EditOnboradingApplyActivity?sid=" + sid);
appMap.put("detailUrl", "approval/#/pages/DetailOnboradingApplyActivity?sid=" + sid);
appMap.put("flowOperateUrl", "oa/v1/HrHireApply/getFlowOperateTitle");
appMap.put("agreeUrl", "oa/v1/HrHireApply/complete");
appMap.put("stopUrl", "oa/v1/oaform/breakProcess");
appMap.put("rejectUrl", "oa/v1/HrHireApply/reject");
appMap.put("recallUrl", "oa/v1/oaform/revokeProcess");
appMap.put("signUrl", "oa/v1/oaform/delegate");
appMap.put("transferUrl", "oa/v1/oaform/assignTask");*/
appMap.put(OaFormUrlEnum.HRHIREAPPLY_EDIT.getType(), OaFormUrlEnum.HRHIREAPPLY_EDIT.getUrl() + "?sid=" + sid);
appMap.put(OaFormUrlEnum.HRHIREAPPLY_DETAIL.getType(), OaFormUrlEnum.HRHIREAPPLY_DETAIL.getUrl() + "?sid=" + sid);
appMap.put(OaFormUrlEnum.HRHIREAPPLY_FLOWOPERATEURL.getType(), OaFormUrlEnum.HRHIREAPPLY_FLOWOPERATEURL.getUrl());
appMap.put(OaFormUrlEnum.HRHIREAPPLY_AGREEURL.getType(), OaFormUrlEnum.HRHIREAPPLY_AGREEURL.getUrl());
appMap.put(OaFormUrlEnum.STOPURL.getType(), OaFormUrlEnum.STOPURL.getUrl());
appMap.put(OaFormUrlEnum.HRHIREAPPLY_REJECTURL.getType(), OaFormUrlEnum.HRHIREAPPLY_REJECTURL.getUrl());
appMap.put(OaFormUrlEnum.RECALLURL.getType(), OaFormUrlEnum.RECALLURL.getUrl());
appMap.put(OaFormUrlEnum.SIGNURL.getType(), OaFormUrlEnum.SIGNURL.getUrl());
appMap.put(OaFormUrlEnum.TRANSFERURL.getType(), OaFormUrlEnum.TRANSFERURL.getUrl());
formVariables.put("app", appMap);
//根据组织查询是否是分公司
OaForm oaForm = oaFormService.fetchBySid(sid);
AdPurchaseAssetApply adExpatriatesApply = fetchBySid(sid);
SysOrganizationVo sysOrganization = sysOrganizationFeign.fetchBySid(oaForm.getUseOrgSid()).getData();
//是否是分公司
formVariables.put("isTrue", sysOrganization.getIsDept() == 0);
return formVariables;
}
/**
* 根据next的值获取前一个节点或下一个节点的名称
*
* @param query 包含查询所需参数的NodeQuery对象
* @param next 参数0表示上一环节1表示下一环节
* @return 节点名称如果失败则返回null
*/
private String getNodeName(NodeQuery query, int next) {
// 根据next值选择相应的服务方法获取节点信息
ResultBean<List<NodeVo>> resultBean = (next == 0)
? oaFormService.getPreviousNodesForReject(query) // 获取上一环节的节点
: oaFormService.getNextNodesForSubmit(query); // 获取下一环节的节点
// 如果服务调用成功
if (resultBean.getSuccess()) {
// 清除结果列表中的null值,避免空节点
resultBean.getData().removeAll(Collections.singleton(null));
// 如果结果列表非空,返回第一个节点的名称
if (!resultBean.getData().isEmpty()) {
return resultBean.getData().get(0).getName();
}
} else {
// 如果服务调用失败,返回null
return null;
}
// 如果结果为空,返回null
return null;
}
}

73
yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adpurchaseassetapply/AdPurchaseAssetApplyVo.java

@ -0,0 +1,73 @@
/*********************************************************
*********************************************************
******************** *******************
************* ************
******* _oo0oo_ *******
*** o8888888o ***
* 88" . "88 *
* (| -_- |) *
* 0\ = /0 *
* ___/`---'\___ *
* .' \\| |// '. *
* / \\||| : |||// \ *
* / _||||| -:- |||||- \ *
* | | \\\ - /// | | *
* | \_| ''\---/'' |_/ | *
* \ .-\__ '-' ___/-. / *
* ___'. .' /--.--\ `. .'___ *
* ."" '< `.___\_<|>_/___.' >' "". *
* | | : `- \`.;`\ _ /`;.`/ - ` : | | *
* \ \ `_. \_ __\ /__ _/ .-` / / *
* =====`-.____`.___ \_____/___.-`___.-'===== *
* `=---=' *
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *
*********__佛祖保佑__永无BUG__验收通过__钞票多多__*********
*********************************************************/
package com.yxt.anrui.oa.biz.adpurchaseassetapply;
import com.yxt.anrui.oa.biz.adpurchaseassetdetails.AdPurchaseAssetDetailsVo;
import com.yxt.anrui.oa.biz.oaform.FormCommon;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
@Data
public class AdPurchaseAssetApplyVo {
private String sid;
/* private String userSid;
private String orgPath;*/
private String orgSidPath;
private String createBySid;
private FormCommon assetTypeObj;
@ApiModelProperty("固定资产类别key")
private String assetTypeKey; // 固定资产类别key
@ApiModelProperty("固定资产类别value")
private String assetTypeValue; // 固定资产类别value
private FormCommon isStationObj;
@ApiModelProperty("是否有服务站机器设备(1是,0否)")
private String isStationKey; // 是否有服务站机器设备(1是,0否)
private String isStationValue; // 是否有服务站机器设备(1是,0否)
@ApiModelProperty("备注")
private String remarks;
@ApiModelProperty("合计采购金额")
private String totalAmount; // 合计采购金额
@ApiModelProperty("图片")
private List<String> files = new ArrayList<>();
@ApiModelProperty("附件")
private List<String> appes = new ArrayList<>();
private List<AdPurchaseAssetDetailsVo> list = new ArrayList<>();
private String taskId;
@ApiModelProperty("流程实例id")
private String procInsId;
}

60
yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adpurchaseassetdetails/AdPurchaseAssetDetails.java

@ -0,0 +1,60 @@
/*********************************************************
*********************************************************
******************** *******************
************* ************
******* _oo0oo_ *******
*** o8888888o ***
* 88" . "88 *
* (| -_- |) *
* 0\ = /0 *
* ___/`---'\___ *
* .' \\| |// '. *
* / \\||| : |||// \ *
* / _||||| -:- |||||- \ *
* | | \\\ - /// | | *
* | \_| ''\---/'' |_/ | *
* \ .-\__ '-' ___/-. / *
* ___'. .' /--.--\ `. .'___ *
* ."" '< `.___\_<|>_/___.' >' "". *
* | | : `- \`.;`\ _ /`;.`/ - ` : | | *
* \ \ `_. \_ __\ /__ _/ .-` / / *
* =====`-.____`.___ \_____/___.-`___.-'===== *
* `=---=' *
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *
*********__佛祖保佑__永无BUG__验收通过__钞票多多__*********
*********************************************************/
package com.yxt.anrui.oa.biz.adpurchaseassetdetails;
import com.baomidou.mybatisplus.annotation.TableName;
import com.yxt.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
@Data
@ApiModel(value = "固定资产采购列表", description = "固定资产采购")
@TableName("ad_purchase_asset_details")
public class AdPurchaseAssetDetails extends BaseEntity {
private static final long serialVersionUID = 1L;
@ApiModelProperty("申请sid")
private String mainSid; // 申请sid
@ApiModelProperty("固定资产基础信息sid")
private String goodsSpuSid; // 固定资产基础信息sid
@ApiModelProperty("固定资产编号")
private String goodsSkuCode; // 固定资产编号
@ApiModelProperty("固定资产名称")
private String goodsSpuName; // 固定资产名称
@ApiModelProperty("规格型号")
private String goodsSkuOwnSpec; // 规格型号
@ApiModelProperty("单位")
private String unit; // 单位
@ApiModelProperty("预计采购单价")
private BigDecimal cost; // 预计采购单价
@ApiModelProperty("预计采购数量")
private BigDecimal estimateCount; // 预计采购数量
@ApiModelProperty("预计采购金额")
private BigDecimal estimateMoney; // 预计采购金额
}

65
yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adpurchaseassetdetails/AdPurchaseAssetDetailsDto.java

@ -0,0 +1,65 @@
/*********************************************************
*********************************************************
******************** *******************
************* ************
******* _oo0oo_ *******
*** o8888888o ***
* 88" . "88 *
* (| -_- |) *
* 0\ = /0 *
* ___/`---'\___ *
* .' \\| |// '. *
* / \\||| : |||// \ *
* / _||||| -:- |||||- \ *
* | | \\\ - /// | | *
* | \_| ''\---/'' |_/ | *
* \ .-\__ '-' ___/-. / *
* ___'. .' /--.--\ `. .'___ *
* ."" '< `.___\_<|>_/___.' >' "". *
* | | : `- \`.;`\ _ /`;.`/ - ` : | | *
* \ \ `_. \_ __\ /__ _/ .-` / / *
* =====`-.____`.___ \_____/___.-`___.-'===== *
* `=---=' *
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *
*********__佛祖保佑__永无BUG__验收通过__钞票多多__*********
*********************************************************/
package com.yxt.anrui.oa.biz.adpurchaseassetdetails;
import com.yxt.anrui.oa.biz.oaform.FormCommon;
import com.yxt.common.core.vo.Vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author liupopo
* @version 1.0
* @since 1.0
*/
@Data
@ApiModel(value = "固定资产列表 视图数据对象", description = "固定资产列表 视图数据对象")
public class AdPurchaseAssetDetailsDto implements Vo {
@ApiModelProperty("固定资产")
private FormCommon assetObj;
@ApiModelProperty("固定资产基础信息sid")
private String goodsSpuSid; // 固定资产基础信息sid
@ApiModelProperty("固定资产编号")
private String goodsSkuCode; // 固定资产编号
@ApiModelProperty("固定资产名称")
private String goodsSpuName; // 固定资产名称
@ApiModelProperty("规格型号")
private String goodsSkuOwnSpec; // 规格型号
@ApiModelProperty("单位")
private String unit; // 单位
@ApiModelProperty("预计采购单价")
private String cost; // 预计采购单价
@ApiModelProperty("预计采购数量")
private String estimateCount; // 预计采购数量
@ApiModelProperty("预计采购金额")
private String estimateMoney; // 预计采购金额
}

41
yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adpurchaseassetdetails/AdPurchaseAssetDetailsMapper.java

@ -0,0 +1,41 @@
/*********************************************************
*********************************************************
******************** *******************
************* ************
******* _oo0oo_ *******
*** o8888888o ***
* 88" . "88 *
* (| -_- |) *
* 0\ = /0 *
* ___/`---'\___ *
* .' \\| |// '. *
* / \\||| : |||// \ *
* / _||||| -:- |||||- \ *
* | | \\\ - /// | | *
* | \_| ''\---/'' |_/ | *
* \ .-\__ '-' ___/-. / *
* ___'. .' /--.--\ `. .'___ *
* ."" '< `.___\_<|>_/___.' >' "". *
* | | : `- \`.;`\ _ /`;.`/ - ` : | | *
* \ \ `_. \_ __\ /__ _/ .-` / / *
* =====`-.____`.___ \_____/___.-`___.-'===== *
* `=---=' *
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *
*********__佛祖保佑__永无BUG__验收通过__钞票多多__*********
*********************************************************/
package com.yxt.anrui.oa.biz.adpurchaseassetdetails;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import java.util.List;
@Mapper
public interface AdPurchaseAssetDetailsMapper extends BaseMapper<AdPurchaseAssetDetails> {
@Select("select * from ad_purchase_asset_details where mainSid = #{mainSid}")
List<AdPurchaseAssetDetails> selectByMainSid(String mainSid);
List<AdPurchaseAssetDetailsVo> getUpdateInit(String sid);
}

9
yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adpurchaseassetdetails/AdPurchaseAssetDetailsMapper.xml

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yxt.anrui.oa.biz.adpurchaseassetdetails.AdPurchaseAssetDetailsMapper">
<select id="getUpdateInit" resultType="com.yxt.anrui.oa.biz.adpurchaseassetdetails.AdPurchaseAssetDetailsVo">
select *
from ad_purchase_asset_details
where mainSid = #{sid}
</select>
</mapper>

83
yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adpurchaseassetdetails/AdPurchaseAssetDetailsService.java

@ -0,0 +1,83 @@
/*********************************************************
*********************************************************
******************** *******************
************* ************
******* _oo0oo_ *******
*** o8888888o ***
* 88" . "88 *
* (| -_- |) *
* 0\ = /0 *
* ___/`---'\___ *
* .' \\| |// '. *
* / \\||| : |||// \ *
* / _||||| -:- |||||- \ *
* | | \\\ - /// | | *
* | \_| ''\---/'' |_/ | *
* \ .-\__ '-' ___/-. / *
* ___'. .' /--.--\ `. .'___ *
* ."" '< `.___\_<|>_/___.' >' "". *
* | | : `- \`.;`\ _ /`;.`/ - ` : | | *
* \ \ `_. \_ __\ /__ _/ .-` / / *
* =====`-.____`.___ \_____/___.-`___.-'===== *
* `=---=' *
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *
*********__佛祖保佑__永无BUG__验收通过__钞票多多__*********
*********************************************************/
package com.yxt.anrui.oa.biz.adpurchaseassetdetails;
import cn.hutool.core.bean.BeanUtil;
import com.yxt.anrui.oa.biz.oaform.FormCommon;
import com.yxt.common.base.service.MybatisBaseService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import java.util.Collections;
import java.util.List;
import java.util.Map;
@Service
public class AdPurchaseAssetDetailsService extends MybatisBaseService<AdPurchaseAssetDetailsMapper, AdPurchaseAssetDetails> {
public void saveDetails(List<AdPurchaseAssetDetailsDto> list, String sid) {
//根据sid查询明细并删除
List<AdPurchaseAssetDetails> list2 = baseMapper.selectByMainSid(sid);
list2.removeAll(Collections.singleton(null));
if (!list2.isEmpty()) {
list2.stream().forEach(v -> {
deleteBySid(v.getSid());
});
}
list.removeAll(Collections.singleton(null));
if (!list.isEmpty()) {
list.stream().forEach(details -> {
AdPurchaseAssetDetails adPurchaseAssetDetails = new AdPurchaseAssetDetails();
BeanUtil.copyProperties(details, adPurchaseAssetDetails);
adPurchaseAssetDetails.setMainSid(sid);
FormCommon assetObj = details.getAssetObj();
adPurchaseAssetDetails.setGoodsSkuCode(assetObj.getDictValue());
adPurchaseAssetDetails.setGoodsSpuSid(assetObj.getId());
Map<String, Object> extra = assetObj.getExtra();
if (null != extra) {
for (Map.Entry <String,Object> entry : extra.entrySet()) {
if (StringUtils.isNotBlank((String)entry.getValue())) {
if (entry.getKey().equals("goodsSpuName")) {
adPurchaseAssetDetails.setGoodsSpuName((String)entry.getValue());
}
if (entry.getKey().equals("goodsSkuOwnSpec")) {
adPurchaseAssetDetails.setGoodsSkuOwnSpec((String)entry.getValue());
}
if (entry.getKey().equals("unit")) {
adPurchaseAssetDetails.setUnit((String)entry.getValue());
}
}
}
}
baseMapper.insert(adPurchaseAssetDetails);
});
}
}
public List<AdPurchaseAssetDetailsVo> getUpdateInit(String sid) {
return baseMapper.getUpdateInit(sid);
}
}

72
yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adpurchaseassetdetails/AdPurchaseAssetDetailsVo.java

@ -0,0 +1,72 @@
/*********************************************************
*********************************************************
******************** *******************
************* ************
******* _oo0oo_ *******
*** o8888888o ***
* 88" . "88 *
* (| -_- |) *
* 0\ = /0 *
* ___/`---'\___ *
* .' \\| |// '. *
* / \\||| : |||// \ *
* / _||||| -:- |||||- \ *
* | | \\\ - /// | | *
* | \_| ''\---/'' |_/ | *
* \ .-\__ '-' ___/-. / *
* ___'. .' /--.--\ `. .'___ *
* ."" '< `.___\_<|>_/___.' >' "". *
* | | : `- \`.;`\ _ /`;.`/ - ` : | | *
* \ \ `_. \_ __\ /__ _/ .-` / / *
* =====`-.____`.___ \_____/___.-`___.-'===== *
* `=---=' *
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *
*********__佛祖保佑__永无BUG__验收通过__钞票多多__*********
*********************************************************/
package com.yxt.anrui.oa.biz.adpurchaseassetdetails;
import com.yxt.anrui.oa.biz.oaform.FormCommon;
import com.yxt.common.core.vo.Vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* Project: yxt-oa(认定人员) <br/>
* File: AdExpatriatesDetailVo.java <br/>
* Class: com.yxt.anrui.oa.api.adexpatriatesdetail.AdExpatriatesDetailVo <br/>
* Description: 驻外人员认定列表 视图数据对象. <br/>
* Copyright: Copyright (c) 2011 <br/>
* Company: https://gitee.com/liuzp315 <br/>
* Makedate: 2025-01-20 15:35:08 <br/>
*
* @author liupopo
* @version 1.0
* @since 1.0
*/
@Data
@ApiModel(value = "固定资产列表 视图数据对象", description = "固定资产列表 视图数据对象")
public class AdPurchaseAssetDetailsVo implements Vo {
private String sid;
@ApiModelProperty("固定资产")
private FormCommon assetObj;
@ApiModelProperty("固定资产基础信息sid")
private String goodsSpuSid; // 固定资产基础信息sid
@ApiModelProperty("固定资产编号")
private String goodsSkuCode; // 固定资产编号
@ApiModelProperty("固定资产名称")
private String goodsSpuName; // 固定资产名称
@ApiModelProperty("规格型号")
private String goodsSkuOwnSpec; // 规格型号
@ApiModelProperty("单位")
private String unit; // 单位
@ApiModelProperty("预计采购单价")
private String cost; // 预计采购单价
@ApiModelProperty("预计采购数量")
private String estimateCount; // 预计采购数量
@ApiModelProperty("预计采购金额")
private String estimateMoney; // 预计采购金额
}

69
yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adpurchaseassetdetails/AdPurchaseAssetListDetailsVo.java

@ -0,0 +1,69 @@
/*********************************************************
*********************************************************
******************** *******************
************* ************
******* _oo0oo_ *******
*** o8888888o ***
* 88" . "88 *
* (| -_- |) *
* 0\ = /0 *
* ___/`---'\___ *
* .' \\| |// '. *
* / \\||| : |||// \ *
* / _||||| -:- |||||- \ *
* | | \\\ - /// | | *
* | \_| ''\---/'' |_/ | *
* \ .-\__ '-' ___/-. / *
* ___'. .' /--.--\ `. .'___ *
* ."" '< `.___\_<|>_/___.' >' "". *
* | | : `- \`.;`\ _ /`;.`/ - ` : | | *
* \ \ `_. \_ __\ /__ _/ .-` / / *
* =====`-.____`.___ \_____/___.-`___.-'===== *
* `=---=' *
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *
*********__佛祖保佑__永无BUG__验收通过__钞票多多__*********
*********************************************************/
package com.yxt.anrui.oa.biz.adpurchaseassetdetails;
import com.yxt.common.core.vo.Vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* Project: yxt-oa(认定人员) <br/>
* File: AdExpatriatesDetailVo.java <br/>
* Class: com.yxt.anrui.oa.api.adexpatriatesdetail.AdExpatriatesDetailVo <br/>
* Description: 驻外人员认定列表 视图数据对象. <br/>
* Copyright: Copyright (c) 2011 <br/>
* Company: https://gitee.com/liuzp315 <br/>
* Makedate: 2025-01-20 15:35:08 <br/>
*
* @author liupopo
* @version 1.0
* @since 1.0
*/
@Data
@ApiModel(value = "固定资产列表 视图数据对象", description = "固定资产列表 视图数据对象")
public class AdPurchaseAssetListDetailsVo implements Vo {
private String sid;
@ApiModelProperty("固定资产编号")
private String goodsSkuCode; // 固定资产编号
@ApiModelProperty("固定资产名称")
private String goodsSpuName; // 固定资产名称
@ApiModelProperty("规格型号")
private String goodsSkuOwnSpec; // 规格型号
@ApiModelProperty("单位")
private String unit; // 单位
@ApiModelProperty("预计采购单价")
private String cost; // 预计采购单价
@ApiModelProperty("预计采购数量")
private String estimateCount; // 预计采购数量
@ApiModelProperty("预计采购金额")
private String estimateMoney; // 预计采购金额
}

2
yxt-oa/src/main/java/com/yxt/anrui/oa/feign/file/OaFileEnum.java

@ -11,6 +11,8 @@ public enum OaFileEnum {
OAMENDAPPLY("002", "补卡申请附件"),
ADEXPATRIATESAPPLY("003", "驻外人员认定附件"),
HIHIREAPPLY("004", "招聘需求附件"),
ADPURCHASEASSETAPPLY("005", "固定资产采购附件"),
ADALLOCATEASSETAPPLY("006", "固定资产调拨附件"),
;

4
yxt-oa/src/main/java/com/yxt/anrui/oa/feign/flowable/flow/ProcDefEnum.java

@ -11,6 +11,10 @@ public enum ProcDefEnum {
OAMENDAPPLY("补卡申请", "process_9suucr96:1:16072504"),
HIHIREAPPLY("招聘需求", "process_zy0m4jrp:1:16802504"),
BGYPLYAPPLY("办公用品领用", ""),
GDZCCG_GS_APPLY("公司固定资产采购申请", ""),
GDZCCG_ZX_APPLY("中心固定资产采购申请", ""),
GDZCDB_GS_APPLY("公司固定资产调拨申请", ""),
GDZCDB_ZX_APPLY("中心固定资产调拨申请", ""),
;

24
yxt-oa/src/main/java/com/yxt/anrui/oa/feign/flowable/flow3/Flow3Feign.java

@ -0,0 +1,24 @@
package com.yxt.anrui.oa.feign.flowable.flow3;
import com.yxt.anrui.oa.feign.flowable.flow.BusinessVariables;
import com.yxt.anrui.oa.feign.flowable.flow.UpdateFlowFieldVo;
import com.yxt.anrui.oa.feign.flowable.flow2.FlowDelegateQuery;
import com.yxt.common.core.result.ResultBean;
import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.ResponseBody;
@FeignClient(
contextId = "anrui-flowable-Flow3",
name = "anrui-flowable",
path = "v3/flow")
public interface Flow3Feign {
@ApiOperation(value = "启动流程")
@PostMapping(value = "/startProcess2")
@ResponseBody
ResultBean<UpdateFlowFieldVo> startProcess2(@RequestBody BusinessVariables dto);
}

13
yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsH5Rest.java

@ -5,6 +5,8 @@ import com.yxt.common.core.result.ResultBean;
import com.yxt.wms.biz.inventory.wmsgoodstag.app.AppTagInit;
import com.yxt.wms.biz.inventory.wmsinventory.WmsInventoryService;
import com.yxt.wms.biz.inventory.wmsinventory.appH5.GoodsTagH5Vo;
import com.yxt.wms.biz.inventory.wmsinventory.appH5.GoodsTwoQuery;
import com.yxt.wms.biz.inventory.wmsinventory.appH5.GoodsTwoVo;
import com.yxt.wms.biz.inventory.wmsinventory.appH5.HouseRackH5Vo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@ -50,6 +52,17 @@ public class WmsH5Rest {
return rb.success().setData(vo);
}
@PostMapping("goods2")
@ApiOperation("扫描商品标签看详情")
ResultBean<GoodsTwoVo> goods2(@RequestBody GoodsTwoQuery query) {
ResultBean rb = ResultBean.fireFail();
GoodsTwoVo vo = wmsInventoryService.goods2(query);
if (null == vo) {
return rb.fail().setMsg("商品不存在");
}
return rb.success().setData(vo);
}
@GetMapping("h5/{qrCode}")
@ApiOperation("扫描商品标签看详情")
ResultBean<String> h5Code(@PathVariable("qrCode") String qrCode) {

22
yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsInventoryRest.java

@ -38,7 +38,6 @@ public class WmsInventoryRest {
HttpServletResponse response;
@ApiOperation("根据goodsID获取数据")
@GetMapping("/getListByGoodsID")
public ResultBean<List<WmsInventory>> getListByGoodsID(@RequestParam("goodsID") String goodsID) {
@ -58,6 +57,9 @@ public class WmsInventoryRest {
@PostMapping("/listPage")
public ResultBean<PagerVo<WmsInventoryVo>> listPage(@RequestBody PagerQuery<WmsInventoryQuery> pq) {
ResultBean<PagerVo<WmsInventoryVo>> rb = ResultBean.fireFail();
WmsInventoryQuery params = pq.getParams();
params.setType("配件库");
pq.setParams(params);
PagerVo<WmsInventoryVo> pv = wmsInventoryService.listPage(pq);
return rb.success().setData(pv);
}
@ -123,6 +125,7 @@ public class WmsInventoryRest {
@ApiOperation(value = "导出")
public void exportExcel(@RequestBody WmsInventoryQuery query) {
//得到所有要导出的数据
query.setType("配件库");
List<WmsInventoryVoExcelVo> exportVoList = wmsInventoryService.listExcel(query);
//定义导出的excel名字
String excelName = "库存列表";
@ -253,7 +256,9 @@ public class WmsInventoryRest {
@PostMapping("/selBillNoAndCode")
ResultBean<List<WmsInventoryReturnFactSelectList>> selBillNoAndCode(@RequestParam("sourceBillNo") String sourceBillNo, @RequestParam("goodsSkuCode") String goodsSkuCode, @RequestParam("deptSid") String deptSid) {
return wmsInventoryService.selBillNoAndCode(sourceBillNo, goodsSkuCode, deptSid);
};
}
;
@ApiOperation("根据Sid获取库存实体")
@PostMapping("/fetchEntityBySid")
@ -307,6 +312,19 @@ public class WmsInventoryRest {
public ResultBean<String> selCountByGoodsID(@RequestParam("goodsID") String goodsID) {
return wmsInventoryService.selCountByGoodsID(goodsID);
}
@ApiOperation("根据商品ID和部门sid查询")
@PostMapping("/selByGoodsIDAndUseOrgSid")
ResultBean<List<WmsInventory>> selByGoodsIDAndUseOrgSid(@RequestParam("goodsID") String goodsID, @RequestParam("useOrgSid") String useOrgSid) {
return wmsInventoryService.selByGoodsIDAndUseOrgSid(goodsID, useOrgSid);
}
@ApiOperation("根据商品ID和部门sid和仓库sid查询")
@PostMapping("/selByGoodsIDAndUseOrgSidAndWarehouseSid")
ResultBean<List<WmsInventory>> selByGoodsIDAndUseOrgSidAndWarehouseSid(@RequestParam("goodsID") String goodsID, @RequestParam("useOrgSid") String useOrgSid, @RequestParam("warehouseSid") String warehouseSid) {
return wmsInventoryService.selByGoodsIDAndUseOrgSidAndWarehouseSid(goodsID, useOrgSid, warehouseSid);
}
//----------------------------- 报表 -----------------------------
@ApiOperation("滞销品查询")
@PostMapping("/deadStockList")

11
yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryMapper.java

@ -108,4 +108,15 @@ public interface WmsInventoryMapper extends BaseMapper<WmsInventory> {
@Select("select count from wms_inventory where goodsID = #{goodsID}")
String selCountByGoodsID(String goodsID);
@Select("select * from wms_inventory where goodsID = #{goodsID} and useOrgSid = #{useOrgSid}")
List<WmsInventory> selByGoodsIDAndUseOrgSid(@Param("goodsID") String goodsID, @Param("useOrgSid") String useOrgSid);
@Select("select * from wms_inventory where goodsID = #{goodsID} and useOrgSid = #{useOrgSid} and warehouseSid = #{warehouseSid}")
List<WmsInventory> selByGoodsIDAndUseOrgSidAndWarehouseSid(@Param("goodsID") String goodsID, @Param("useOrgSid") String useOrgSid, @Param("warehouseSid") String warehouseSid);
@Select("select * from wms_inventory where goodsSpuSid = #{spuSid} and useOrgSid = #{useOrgSid}")
List<WmsInventory> selBySpuSidAndUseOrgSid(@Param("spuSid") String spuSid, @Param("useOrgSid") String useOrgSid);
List<WmsInventory> selBySpuSidAndUseOrgSidWarehouseSid(@Param("spuSid") String spuSid, @Param("useOrgSid") String useOrgSid, @Param("warehouseSid") String warehouseSid, @Param("sids") List<String> sids);
}

211
yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryMapper.xml

@ -131,10 +131,28 @@
</select>
<select id="listExcel" resultType="com.yxt.wms.biz.inventory.wmsinventory.WmsInventoryVoExcelVo">
select a.*,
(@rank := @rank + 1) rankNo
from (SELECT @rank := 0) t,
SELECT
(@rank := @rank + 1) rankNo,
a.goodsID,
a.sid,
a.goodsSpuName,
a.goodsSkuCode,
a.goodsSkuOwnSpec,
a.unit,
a.supplierName,
a.manufacturerName,
a.warehouseName,
a.warehouseRackCode,
a.count,
a.cost,
a.taxRate tax,
DATE_FORMAT( a.firstInDate, '%Y-%m-%d' ) AS firstInDate,
DATEDIFF(NOW(), DATE_FORMAT( a.firstInDate, '%Y-%m-%d' )) dateAge
FROM
wms_inventory a
LEFT JOIN anrui_portal.sys_organization as s ON a.useOrgSid = s.sid
LEFT JOIN wms_warehouse_info as i ON a.warehouseSid = i.sid,
(SELECT @rank := 0) t
<where>
${ew.sqlSegment}
</where>
@ -209,7 +227,9 @@
DATEDIFF(NOW(), w.firstInDate) as age
FROM wms_inventory as w,
( SELECT @rank := 0 ) t
<where>${ew.sqlSegment}</where>
<where>
${ew.sqlSegment}
</where>
</select>
<select id="selectInvenBySkuSid" resultType="com.yxt.wms.biz.inventory.wmsinventory.WmsGoodsInventoryVo">
@ -237,7 +257,7 @@
wi.cost as salesPrice
FROM wms_inventory wi
LEFT JOIN wms_warehouse_area wwa
ON wi.`warehouseRackSid` = wwa.`sid`
ON wi.warehouseRackSid = wwa.sid
<where>
${ew.sqlSegment}
</where>
@ -323,77 +343,72 @@
</where>
</select>
<select id="getListByGoodsID" resultType="com.yxt.wms.biz.inventory.wmsinventory.WmsInventory">
select * from wms_inventory wi where wi.goodsID =#{goodsID} and wi.count > 0
select *
from wms_inventory wi
where wi.goodsID = #{goodsID}
and wi.count > 0
</select>
<select id="selGoodsListForScanRackTag"
resultType="com.yxt.wms.biz.inventory.wmsinventory.appH5.HouseRackListVo">
SELECT
wi.goodsID,
SELECT wi.goodsID,
b.supplierName provider,
wi.goodsSpuName goodsName,
wi.goodsSkuCode numId,
wi.count num,
CONCAT( ( date_format ( wi.firstInDate, '%Y-%m-%d' )), ' (库龄)',( DATEDIFF( NOW(), wi.firstInDate )), '天' ) inboundTime
FROM
wms_inventory AS wi
CONCAT((date_format(wi.firstInDate, '%Y-%m-%d')), ' (库龄)', (DATEDIFF(NOW(), wi.firstInDate)),
'天') inboundTime
FROM wms_inventory AS wi
LEFT JOIN wms_goods_tag AS t ON wi.goodsID = t.goodsID
LEFT JOIN wms_receipt_bill AS b ON t.billSid = b.sid
WHERE
wi.warehouseRackSid = #{houseRackSid}
WHERE wi.warehouseRackSid = #{houseRackSid}
</select>
<select id="selGoodsH5Vo" resultType="com.yxt.wms.biz.inventory.wmsinventory.appH5.GoodsTagH5Vo">
SELECT
wi.goodsID,
SELECT wi.goodsID,
b.supplierName provider,
wi.goodsSpuName goodsName,
wi.goodsSkuCode numId,
wi.unit,
wi.goodsSkuOwnSpec,
CONCAT( ( date_format ( wi.firstInDate, '%Y-%m-%d' )), ' (库龄)',( DATEDIFF( NOW(), wi.firstInDate )), '天' ) inboundTime
FROM
wms_inventory AS wi
CONCAT((date_format(wi.firstInDate, '%Y-%m-%d')), ' (库龄)', (DATEDIFF(NOW(), wi.firstInDate)),
'天') inboundTime
FROM wms_inventory AS wi
LEFT JOIN wms_goods_tag AS t ON wi.goodsID = t.goodsID
LEFT JOIN wms_receipt_bill AS b ON t.billSid = b.sid
WHERE
wi.goodsID = #{goodsID}
ORDER BY
wi.firstInDate ASC
LIMIT 1
WHERE wi.goodsID = #{goodsID}
ORDER BY wi.firstInDate ASC LIMIT 1
</select>
<select id="selGoodsListForScanGoodsTag"
resultType="com.yxt.wms.biz.inventory.wmsinventory.appH5.GoodsListTagH5Vo">
SELECT
wi.count num,
SELECT wi.count num,
r.rackCode houseAddress,
CONCAT(i.warehouseName, '-', a.areaName) houseName
FROM
wms_inventory AS wi
FROM wms_inventory AS wi
LEFT JOIN wms_warehouse_info AS i ON wi.warehouseSid = i.sid
LEFT JOIN wms_warehouse_rack AS r ON wi.warehouseRackSid = r.sid
LEFT JOIN wms_warehouse_area AS a ON r.locationSid = a.sid
WHERE
wi.goodsID = #{goodsID}
WHERE wi.goodsID = #{goodsID}
</select>
<select id="selByDeptSid" resultType="com.yxt.wms.biz.inventory.wmsinventory.WmsInventory">
SELECT wi.*
FROM wms_inventory wi
LEFT JOIN wms_warehouse_info wwi
ON wi.`warehouseSid` = wwi.`sid`
ON wi.warehouseSid = wwi.sid
WHERE wi.count > 0
AND wwi.`useOrgSid` = #{deptSid}
AND wwi.useOrgSid = #{deptSid}
AND wwi.warehouseTypeKey = '01'
AND RIGHT(wi.`goodsID`,2) != '-O'
AND RIGHT (wi.goodsID
, 2) != '-O'
</select>
<select id="selByDeptSidAndRackSid" resultType="com.yxt.wms.biz.inventory.wmsinventory.WmsInventory">
SELECT wi.*
FROM wms_inventory wi
LEFT JOIN wms_warehouse_info wwi
ON wi.`warehouseSid` = wwi.`sid`
ON wi.warehouseSid = wwi.sid
WHERE wi.count > 0
AND wwi.`useOrgSid` = #{deptSid}
AND RIGHT(wi.`goodsID`,2) != '-O'
AND wwi.useOrgSid = #{deptSid}
AND RIGHT(wi.goodsID,2) != '-O'
AND wwi.warehouseTypeKey = '01'
AND wi.warehouseRackSid in
<foreach item="rackSid" collection="rackSids" open="(" separator="," close=")">
@ -408,15 +423,15 @@
w.supplierSid,
w.supplierName,
wa.sid AS warehouseAreaSid,
wa.`areaName` AS warehouseArea,
wa.areaName AS warehouseArea,
p.sid AS manufactorBillSid
FROM wms_inventory w
LEFT JOIN yxt_pms.pms_purchase_bill p
ON w.manufactorBillNo = p.manufacturersOrderNumber
LEFT JOIN wms_warehouse_rack wr
ON w.`warehouseRackSid` = wr.`sid`
ON w.warehouseRackSid = wr.sid
LEFT JOIN wms_warehouse_area wa
ON wr.`locationSid` = wa.`sid`
ON wr.locationSid = wa.sid
<where>
${ew.sqlSegment}
</where>
@ -424,8 +439,8 @@
<select id="fittingsInventory" resultType="com.yxt.wms.biz.inventory.wmsinventory.FittingsInventoryVo">
SELECT * FROM (
SELECT
so.`name` useOrgName,
s.`name` deptName,
so.name useOrgName,
s.name deptName,
wi.goodsSpuName,
wi.goodsSkuCode,
wi.goodsSkuOwnSpec,
@ -564,8 +579,7 @@
</select>
<select id="selBillNoAndCode" resultType="com.yxt.wms.biz.inventory.wmsinventory.WmsInventoryReturnFactSelectList">
SELECT
wi.goodsID,
SELECT wi.goodsID,
wi.goodsSpuSid,
wi.goodsSpuName,
wi.goodsSkuSid,
@ -582,8 +596,7 @@
wi.warehouseRackSid,
wr.rackName AS warehouseRackName,
wi.count
FROM
wms_inventory wi
FROM wms_inventory wi
LEFT JOIN wms_warehouse_rack wr
ON wi.warehouseRackSid = wr.sid
LEFT JOIN wms_warehouse_area wa
@ -605,10 +618,10 @@
SELECT wi.*
FROM wms_inventory wi
LEFT JOIN wms_warehouse_info wwi
ON wi.`warehouseSid` = wwi.`sid`
ON wi.warehouseSid = wwi.sid
WHERE wi.count > 0
AND wwi.`useOrgSid` = #{deptSid}
AND RIGHT(wi.`goodsID`,2) = '-O'
AND wwi.useOrgSid = #{deptSid}
AND RIGHT(wi.goodsID,2) = '-O'
AND wwi.warehouseTypeKey = '02'
AND wi.warehouseRackSid in
<foreach item="rackSid" collection="rackSids" open="(" separator="," close=")">
@ -620,14 +633,17 @@
SELECT wi.*
FROM wms_inventory wi
LEFT JOIN wms_warehouse_info wwi
ON wi.`warehouseSid` = wwi.`sid`
ON wi.warehouseSid = wwi.sid
WHERE wi.count > 0
AND wwi.`useOrgSid` = #{deptSid}
AND wwi.useOrgSid = #{deptSid}
AND wwi.warehouseTypeKey = '02'
AND RIGHT(wi.`goodsID`,2) = '-O'
AND RIGHT (wi.goodsID
, 2) = '-O'
</select>
<select id="selbyGoodsId" resultType="com.yxt.wms.biz.inventory.wmsinventory.WmsInventory">
SELECT * FROM wms_inventory WHERE goodsID =#{goodsID}
SELECT *
FROM wms_inventory
WHERE goodsID = #{goodsID}
</select>
<select id="otherOutGoodsListPage"
@ -658,17 +674,28 @@
SELECT * FROM
(SELECT
s.orgSidPath,
so.`name` useOrgName,
s.`name` deptName,
so.name useOrgName,
s.name deptName,
i.goodsSpuName,
i.goodsSkuCode,
i.manufacturerName,
i.supplierName,
IFNULL(SUM(`count`),0) `count`,
DATEDIFF(NOW(),(SELECT MIN(wi.firstInDate) FROM wms_inventory as wi WHERE wi.count > 0 and wi.useOrgSid = i.useOrgSid and wi.goodsSkuCode = i.goodsSkuCode and wi.manufacturerSid = i.manufacturerSid and wi.supplierSid = i.supplierSid)) inventoryAge,
date_format ((SELECT MAX(r.createTime) FROM wms_inventory_record as r LEFT JOIN wms_inventory as wi on r.inventorySid = wi.sid WHERE wi.useOrgSid = i.useOrgSid and wi.goodsSkuCode = i.goodsSkuCode and wi.manufacturerSid = i.manufacturerSid and wi.supplierSid = i.supplierSid and r.busTypeValue = '销售出库'),'%Y-%m-%d') salesTime,
DATEDIFF(NOW(),(date_format ((SELECT MAX(r.createTime) FROM wms_inventory_record as r LEFT JOIN wms_inventory as wi on r.inventorySid = wi.sid WHERE wi.useOrgSid = i.useOrgSid and wi.goodsSkuCode = i.goodsSkuCode and wi.manufacturerSid = i.manufacturerSid and wi.supplierSid = i.supplierSid and r.busTypeValue = '销售出库'),'%Y-%m-%d'))) noSalesDays,
date_format ((SELECT MAX(r.createTime) FROM wms_inventory_record as r LEFT JOIN wms_inventory as wi on r.inventorySid = wi.sid WHERE wi.useOrgSid = i.useOrgSid and wi.goodsSkuCode = i.goodsSkuCode and wi.manufacturerSid = i.manufacturerSid and wi.supplierSid = i.supplierSid and r.billType = '1'),'%Y-%m-%d') storageTime,
IFNULL(SUM(count),0) count,
DATEDIFF(NOW(),(SELECT MIN(wi.firstInDate) FROM wms_inventory as wi WHERE wi.count > 0 and wi.useOrgSid =
i.useOrgSid and wi.goodsSkuCode = i.goodsSkuCode and wi.manufacturerSid = i.manufacturerSid and wi.supplierSid =
i.supplierSid)) inventoryAge,
date_format ((SELECT MAX(r.createTime) FROM wms_inventory_record as r LEFT JOIN wms_inventory as wi on
r.inventorySid = wi.sid WHERE wi.useOrgSid = i.useOrgSid and wi.goodsSkuCode = i.goodsSkuCode and
wi.manufacturerSid = i.manufacturerSid and wi.supplierSid = i.supplierSid and r.busTypeValue =
'销售出库'),'%Y-%m-%d') salesTime,
DATEDIFF(NOW(),(date_format ((SELECT MAX(r.createTime) FROM wms_inventory_record as r LEFT JOIN wms_inventory as
wi on r.inventorySid = wi.sid WHERE wi.useOrgSid = i.useOrgSid and wi.goodsSkuCode = i.goodsSkuCode and
wi.manufacturerSid = i.manufacturerSid and wi.supplierSid = i.supplierSid and r.busTypeValue =
'销售出库'),'%Y-%m-%d'))) noSalesDays,
date_format ((SELECT MAX(r.createTime) FROM wms_inventory_record as r LEFT JOIN wms_inventory as wi on
r.inventorySid = wi.sid WHERE wi.useOrgSid = i.useOrgSid and wi.goodsSkuCode = i.goodsSkuCode and
wi.manufacturerSid = i.manufacturerSid and wi.supplierSid = i.supplierSid and r.billType = '1'),'%Y-%m-%d')
storageTime,
SUM(IFNULL(i.cost,0) * IFNULL(i.count,0)) totalCost,
FORMAT((SUM(IFNULL(i.cost,0) * IFNULL(i.count,0))/IFNULL(SUM(count),0)),2) avgPrice
FROM
@ -683,19 +710,15 @@
</select>
<select id="selByGoodsIdAndRackSid" resultType="java.lang.String">
SELECT
sid
FROM
wms_inventory
SELECT sid
FROM wms_inventory
WHERE goodsID = #{goodsID}
AND warehouseRackSid = #{warehouseRackSid}
</select>
<select id="compute" resultType="java.math.BigDecimal">
SELECT
IFNULL(SUM(COUNT * cost) / SUM(COUNT), 0) AS total
FROM
wms_inventory
SELECT IFNULL(SUM(COUNT * cost) / SUM(COUNT), 0) AS total
FROM wms_inventory
WHERE goodsSkuSid = #{skuSid}
AND COUNT > 0
</select>
@ -704,7 +727,7 @@
SELECT wi.*
FROM wms_inventory wi
LEFT JOIN wms_warehouse_info wwi
ON wi.`warehouseSid` = wwi.`sid`
ON wi.warehouseSid = wwi.sid
WHERE wi.count > 0
AND wwi.useOrgSid = #{deptSid}
AND wwi.warehouseTypeKey = '03'
@ -729,14 +752,14 @@
(SELECT
i.goodsID,
s.orgSidPath,
so.`name` useOrgName,
s.`name` deptName,
so.name useOrgName,
s.name deptName,
i.goodsSpuName,
i.goodsSkuCode,
i.goodsSkuOwnSpec,
i.unit,
IFNULL(SUM(`count`),0) `count`,
IFNULL(i.cost,0) `cost`,
IFNULL(SUM(count),0) count,
IFNULL(i.cost,0) cost,
SUM(IFNULL(i.cost,0) * IFNULL(i.count,0)) costTotal,
(SELECT IFNULL(salesPrice,0) FROM yxt_base.base_goods_sku_extend as sku WHERE sku.sid = i.goodsSkuSid) price,
i.warehouseName,
@ -744,10 +767,21 @@
i.warehouseRackCode,
i.manufacturerName,
i.supplierName,
(SELECT MIN(wi.firstInDate) FROM wms_inventory as wi WHERE wi.count > 0 and wi.useOrgSid = i.useOrgSid and wi.goodsSkuCode = i.goodsSkuCode and wi.manufacturerSid = i.manufacturerSid and wi.supplierSid = i.supplierSid AND wi.warehouseRackCode = i.warehouseRackCode) firstInDate,
date_format ((SELECT MAX(r.createTime) FROM wms_inventory_record as r LEFT JOIN wms_inventory as wi on r.inventorySid = wi.sid WHERE wi.useOrgSid = i.useOrgSid AND wi.warehouseRackCode = i.warehouseRackCode and wi.goodsSkuCode = i.goodsSkuCode and wi.manufacturerSid = i.manufacturerSid and wi.supplierSid = i.supplierSid and r.billType = '1'),'%Y-%m-%d') storageTime, -- 最近一次入库时间
date_format ((SELECT MAX(r.createTime) FROM wms_inventory_record as r LEFT JOIN wms_inventory as wi on r.inventorySid = wi.sid WHERE wi.useOrgSid = i.useOrgSid AND wi.warehouseRackCode = i.warehouseRackCode and wi.goodsSkuCode = i.goodsSkuCode and wi.manufacturerSid = i.manufacturerSid and wi.supplierSid = i.supplierSid and r.busTypeValue = '销售出库'),'%Y-%m-%d') salesTime, -- 最近一次销售日期
DATEDIFF(NOW(),date_format ((SELECT MAX(r.createTime) FROM wms_inventory_record as r LEFT JOIN wms_inventory as wi on r.inventorySid = wi.sid WHERE wi.useOrgSid = i.useOrgSid AND wi.warehouseRackCode = i.warehouseRackCode and wi.goodsSkuCode = i.goodsSkuCode and wi.manufacturerSid = i.manufacturerSid and wi.supplierSid = i.supplierSid and r.billType = '1'),'%Y-%m-%d')) inventoryAge,
(SELECT MIN(wi.firstInDate) FROM wms_inventory as wi WHERE wi.count > 0 and wi.useOrgSid = i.useOrgSid and
wi.goodsSkuCode = i.goodsSkuCode and wi.manufacturerSid = i.manufacturerSid and wi.supplierSid = i.supplierSid
AND wi.warehouseRackCode = i.warehouseRackCode) firstInDate,
date_format ((SELECT MAX(r.createTime) FROM wms_inventory_record as r LEFT JOIN wms_inventory as wi on
r.inventorySid = wi.sid WHERE wi.useOrgSid = i.useOrgSid AND wi.warehouseRackCode = i.warehouseRackCode and
wi.goodsSkuCode = i.goodsSkuCode and wi.manufacturerSid = i.manufacturerSid and wi.supplierSid = i.supplierSid
and r.billType = '1'),'%Y-%m-%d') storageTime, -- 最近一次入库时间
date_format ((SELECT MAX(r.createTime) FROM wms_inventory_record as r LEFT JOIN wms_inventory as wi on
r.inventorySid = wi.sid WHERE wi.useOrgSid = i.useOrgSid AND wi.warehouseRackCode = i.warehouseRackCode and
wi.goodsSkuCode = i.goodsSkuCode and wi.manufacturerSid = i.manufacturerSid and wi.supplierSid = i.supplierSid
and r.busTypeValue = '销售出库'),'%Y-%m-%d') salesTime, -- 最近一次销售日期
DATEDIFF(NOW(),date_format ((SELECT MAX(r.createTime) FROM wms_inventory_record as r LEFT JOIN wms_inventory as
wi on r.inventorySid = wi.sid WHERE wi.useOrgSid = i.useOrgSid AND wi.warehouseRackCode = i.warehouseRackCode
and wi.goodsSkuCode = i.goodsSkuCode and wi.manufacturerSid = i.manufacturerSid and wi.supplierSid =
i.supplierSid and r.billType = '1'),'%Y-%m-%d')) inventoryAge,
i.manufactorBillNo,
pb.payTypeValue procurementMethod,
pb.purchaseTypeValue,
@ -760,14 +794,35 @@
LEFT JOIN wms_warehouse_area as wa ON wa.sid = ra.locationSid
LEFT JOIN yxt_pms.pms_purchase_bill as pb ON pb.manufacturersOrderNumber = i.manufactorBillNo
WHERE i.count > 0
GROUP BY i.goodsID,i.goodsSkuSid,i.goodsSkuCode,i.useOrgSid,i.manufacturerSid,i.supplierSid,i.warehouseRackCode,i.manufactorBillNo) m
GROUP BY
i.goodsID,i.goodsSkuSid,i.goodsSkuCode,i.useOrgSid,i.manufacturerSid,i.supplierSid,i.warehouseRackCode,i.manufactorBillNo)
m
<where>
${ew.sqlSegment}
</where>
</select>
<select id="selOaInventoryList" resultType="com.yxt.wms.biz.inventory.wmsinventory.WmsInventory">
select wi.* from wms_inventory as wi
select wi.*
from wms_inventory as wi
LEFT JOIN wms_warehouse_info wwi on wi.warehouseSid = wwi.sid
where wi.count > 0 and wi.useOrgSid =#{useOrgSid} and wwi.warehouseTypeValue =#{warehouseTypeValue}
where wi.count > 0
and wi.useOrgSid = #{useOrgSid}
and wwi.warehouseTypeValue = #{warehouseTypeValue}
</select>
<select id="selBySpuSidAndUseOrgSidWarehouseSid" resultType="com.yxt.wms.biz.inventory.wmsinventory.WmsInventory">
SELECT
*
FROM
wms_inventory
WHERE goodsSpuSid = #{spuSid}
AND useOrgSid = #{useOrgSid}
AND warehouseSid = #{warehouseSid}
<if test="sids != null and sids.size() != 0">
AND sid NOT IN
<foreach collection="sids" item="item" index="index" open="(" separator="," close=")">
#{item}
</foreach>
</if>
</select>
</mapper>

99
yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryService.java

@ -2,6 +2,7 @@ package com.yxt.wms.biz.inventory.wmsinventory;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yxt.common.base.service.MybatisBaseService;
@ -12,10 +13,7 @@ import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
import com.yxt.wms.biz.base.wmswarehouserack.WmsHouseInfoVo;
import com.yxt.wms.biz.base.wmswarehouserack.WmsWarehouseRackService;
import com.yxt.wms.biz.inventory.wmsinventory.appH5.GoodsListTagH5Vo;
import com.yxt.wms.biz.inventory.wmsinventory.appH5.GoodsTagH5Vo;
import com.yxt.wms.biz.inventory.wmsinventory.appH5.HouseRackH5Vo;
import com.yxt.wms.biz.inventory.wmsinventory.appH5.HouseRackListVo;
import com.yxt.wms.biz.inventory.wmsinventory.appH5.*;
import com.yxt.wms.biz.inventory.wmsinventory.appInventory.*;
import com.yxt.wms.biz.inventory.wmsinventory.report.DeadStockQuery;
import com.yxt.wms.biz.inventory.wmsinventory.report.DeadStockVo;
@ -59,6 +57,7 @@ public class WmsInventoryService extends MybatisBaseService<WmsInventoryMapper,
private SysUserFeign sysUserFeign;
@Autowired
private BaseGoodsSkuExtendFeign baseGoodsSkuExtendFeign;
public PagerVo<WmsInventoryVo> listPage(PagerQuery<WmsInventoryQuery> pq) {
WmsInventoryQuery query = pq.getParams();
QueryWrapper<WmsInventory> qw = new QueryWrapper<>();
@ -126,13 +125,12 @@ public class WmsInventoryService extends MybatisBaseService<WmsInventoryMapper,
apply(StringUtils.isNotBlank(query.getFirstInEndDate()), "date_format (a.firstInDate,'%Y-%m-%d') <= date_format('" + query.getFirstInEndDate() + "','%Y-%m-%d')"
);
if (StringUtils.isNotBlank(query.getDateAge())) {
qw.apply("DATEDIFF(NOW(), DATE_FORMAT( a.firstInDate, '%Y-%m-%d' )) <" + query.getDateAge());
qw.apply("DATEDIFF(NOW(), DATE_FORMAT( a.firstInDate, '%Y-%m-%d' )) >" + query.getDateAge());
}
if (StringUtils.isNotBlank(query.getType())) {
if (query.getType().equals("拆件库")) {
qw.eq("i.warehouseTypeValue", "拆件库");
}
qw.eq("i.warehouseTypeValue", query.getType());
}
qw.notLike("a.goodsID","-O");
IPage<WmsInventory> page = PagerUtil.queryToPage(pq);
IPage<WmsInventoryVo> pagging = baseMapper.listPage(page, qw);
PagerVo<WmsInventoryVo> p = PagerUtil.pageToVo(pagging, null);
@ -204,13 +202,12 @@ public class WmsInventoryService extends MybatisBaseService<WmsInventoryMapper,
apply(StringUtils.isNotBlank(query.getFirstInEndDate()), "date_format (a.firstInDate,'%Y-%m-%d') <= date_format('" + query.getFirstInEndDate() + "','%Y-%m-%d')"
);
if (StringUtils.isNotBlank(query.getDateAge())) {
qw.apply("DATEDIFF(NOW(), DATE_FORMAT( a.firstInDate, '%Y-%m-%d' )) <" + query.getDateAge());
qw.apply("DATEDIFF(NOW(), DATE_FORMAT( a.firstInDate, '%Y-%m-%d' )) >" + query.getDateAge());
}
if (StringUtils.isNotBlank(query.getType())) {
if (query.getType().equals("拆件库")) {
qw.eq("i.warehouseTypeValue", "拆件库");
}
qw.eq("i.warehouseTypeValue", query.getType());
}
qw.notLike("a.goodsID","-O");
List<WmsInventoryVoExcelVo> list = baseMapper.listExcel(qw);
list.removeAll(Collections.singleton(null));
return list;
@ -739,6 +736,72 @@ public class WmsInventoryService extends MybatisBaseService<WmsInventoryMapper,
return vo;
}
public GoodsTwoVo goods2(GoodsTwoQuery query) {
GoodsTwoVo goodsTwoVo = new GoodsTwoVo();
String deptSid = "";
List<String> split = Arrays.asList(query.getOrgPath().split("/"));
if (split.size() > 1) {
//获取本级sid获取本级部门信息
SysOrganizationVo sysOrganization1 = sysOrganizationFeign.fetchBySid(split.get(split.size() - 1)).getData();
deptSid = sysOrganization1.getSid();
} else {
SysOrganizationVo sysOrganization = sysOrganizationFeign.fetchBySid(split.get(0)).getData();
deptSid = sysOrganization.getSid();
}
if (StringUtils.isBlank(query.getStoreSid())) {
List<WmsInventory> wmsInventoryList = baseMapper.selBySpuSidAndUseOrgSid(query.getSid(), deptSid);
goodsTwoVo.setGoodsName(wmsInventoryList.get(0).getGoodsSkuTitle());
goodsTwoVo.setNumId(wmsInventoryList.get(0).getGoodsSkuCode());
goodsTwoVo.setProvider(wmsInventoryList.get(0).getSupplierName());
goodsTwoVo.setInboundTime(DateUtil.formatDate(wmsInventoryList.get(0).getFirstInDate()));
goodsTwoVo.setGoodsSkuOwnSpec(wmsInventoryList.get(0).getGoodsSkuOwnSpec());
goodsTwoVo.setUnit(wmsInventoryList.get(0).getUnit());
List<GoodsTwoListVo> list = new ArrayList<>();
for (WmsInventory wmsInventory : wmsInventoryList) {
GoodsTwoListVo goodsTwoListVo = new GoodsTwoListVo();
goodsTwoListVo.setSid(wmsInventory.getSid());
goodsTwoListVo.setGoodsName(wmsInventory.getGoodsSkuTitle());
goodsTwoListVo.setNumId(wmsInventory.getGoodsSkuCode());
goodsTwoListVo.setStore(wmsInventory.getWarehouseName());
goodsTwoListVo.setStoreSid(wmsInventory.getWarehouseSid());
goodsTwoListVo.setCount(wmsInventory.getCount().toString());
goodsTwoListVo.setMaxCount(wmsInventory.getCount().toString());
goodsTwoListVo.setHouseInfo("保内-" + wmsInventory.getWarehouseName() + " " + wmsInventory.getWarehouseRackCode());
if (wmsInventory.getCount().compareTo(BigDecimal.ONE) == 0) {
goodsTwoListVo.setForbid(true);
}
list.add(goodsTwoListVo);
}
goodsTwoVo.setList(list);
return goodsTwoVo;
}
List<WmsInventory> wmsInventoryList = baseMapper.selBySpuSidAndUseOrgSidWarehouseSid(query.getSid(), deptSid, query.getStoreSid(), query.getSids());
goodsTwoVo.setGoodsName(wmsInventoryList.get(0).getGoodsSkuTitle());
goodsTwoVo.setNumId(wmsInventoryList.get(0).getGoodsSkuCode());
goodsTwoVo.setProvider(wmsInventoryList.get(0).getSupplierName());
goodsTwoVo.setInboundTime(DateUtil.formatDate(wmsInventoryList.get(0).getFirstInDate()));
goodsTwoVo.setGoodsSkuOwnSpec(wmsInventoryList.get(0).getGoodsSkuOwnSpec());
goodsTwoVo.setUnit(wmsInventoryList.get(0).getUnit());
List<GoodsTwoListVo> list = new ArrayList<>();
for (WmsInventory wmsInventory : wmsInventoryList) {
GoodsTwoListVo goodsTwoListVo = new GoodsTwoListVo();
goodsTwoListVo.setSid(wmsInventory.getSid());
goodsTwoListVo.setGoodsName(wmsInventory.getGoodsSkuTitle());
goodsTwoListVo.setNumId(wmsInventory.getGoodsSkuCode());
goodsTwoListVo.setStore(wmsInventory.getWarehouseName());
goodsTwoListVo.setStoreSid(wmsInventory.getWarehouseSid());
goodsTwoListVo.setCount(wmsInventory.getCount().toString());
goodsTwoListVo.setMaxCount(wmsInventory.getCount().toString());
goodsTwoListVo.setHouseInfo("保内-" + wmsInventory.getWarehouseName() + " " + wmsInventory.getWarehouseRackCode());
if (wmsInventory.getCount().compareTo(BigDecimal.ONE) == 0) {
goodsTwoListVo.setForbid(true);
}
list.add(goodsTwoListVo);
}
goodsTwoVo.setList(list);
return goodsTwoVo;
}
public List<WmsInventory> selByDeptSid(String deptSid) {
return baseMapper.selByDeptSid(deptSid);
}
@ -1342,4 +1405,16 @@ public class WmsInventoryService extends MybatisBaseService<WmsInventoryMapper,
String count = baseMapper.selCountByGoodsID(goodsID);
return rb.success().setData(count);
}
public ResultBean<List<WmsInventory>> selByGoodsIDAndUseOrgSid(String goodsID, String useOrgSid) {
ResultBean rb = ResultBean.fireFail();
List<WmsInventory> wmsInventoryList = baseMapper.selByGoodsIDAndUseOrgSid(goodsID, useOrgSid);
return rb.success().setData(wmsInventoryList);
}
public ResultBean<List<WmsInventory>> selByGoodsIDAndUseOrgSidAndWarehouseSid(String goodsID, String useOrgSid, String warehouseSid) {
ResultBean rb = ResultBean.fireFail();
List<WmsInventory> wmsInventoryList = baseMapper.selByGoodsIDAndUseOrgSidAndWarehouseSid(goodsID, useOrgSid, warehouseSid);
return rb.success().setData(wmsInventoryList);
}
}

48
yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/appH5/GoodsTwoListVo.java

@ -0,0 +1,48 @@
package com.yxt.wms.biz.inventory.wmsinventory.appH5;
import lombok.Data;
import java.util.List;
/**
* @author Fan
* @description
* @date 2024/6/26 10:40
*/
@Data
public class GoodsTwoListVo {
private String sid;
/**
* 商品名称
*/
private String goodsName;
/**
* 图号
*/
private String numId;
/**
* 仓库
*/
private String store;
/**
* 仓库sid
*/
private String storeSid;
/**
* 可调数量
*/
private String count;
/**
* 最大可调数量
*/
private String maxCount;
/**
* 格式例保内-仓库 库位编码
*/
private String houseInfo;
/**
* 是否禁止修改(maxCount=1 true)
*/
private Boolean forbid = false;
}

28
yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/appH5/GoodsTwoQuery.java

@ -0,0 +1,28 @@
package com.yxt.wms.biz.inventory.wmsinventory.appH5;
import lombok.Data;
import java.util.List;
/**
* @author Fan
* @description
* @date 2024/6/26 10:40
*/
@Data
public class GoodsTwoQuery {
private String orgPath;
/**
* 商品sid
*/
private String sid;
/**
* 需要去重的库存sid
*/
private List<String> sids;
/**
* 仓库sid
*/
private String storeSid;
}

41
yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/appH5/GoodsTwoVo.java

@ -0,0 +1,41 @@
package com.yxt.wms.biz.inventory.wmsinventory.appH5;
import lombok.Data;
import java.util.List;
/**
* @author Fan
* @description
* @date 2024/6/26 10:40
*/
@Data
public class GoodsTwoVo {
/**
* 商品名称
*/
private String goodsName;
/**
* 图号
*/
private String numId;
/**
* 供应商
*/
private String provider;
/**
* 首次入库日期
*/
private String inboundTime;
/**
* 规格
*/
private String goodsSkuOwnSpec;
/**
* 计量单位
*/
private String unit;
private List<GoodsTwoListVo> list;
}
Loading…
Cancel
Save