Browse Source

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	yxt-oa/src/main/java/com/yxt/anrui/oa/feign/flowable/flow/ProcDefEnum.java
master
wangpengfei 3 months ago
parent
commit
176a026214
  1. 16
      anrui-buscenter/anrui-finmanage-ui/src/views/anruifinmanagement/chunafukuan/chunafukuanguanli/cashier.vue
  2. 24
      anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flow3/Flow3Service.java
  3. 1
      anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flowtask/FlowTaskMapper.java
  4. 29
      anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flowtask/FlowTaskMapper.xml
  5. 130
      anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flowtask/FlowTaskService.java
  6. 107
      anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/flow/FlowableRest.java
  7. 17
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/as/firstshelves/AppFirstShelvesDto.java
  8. 35
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/as/firstshelves/AppFirstShelvesFeign.java
  9. 12
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/as/firstshelves/AppFirstShelvesGoodsDto.java
  10. 32
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/as/firstshelves/AppFirstShelvesGoodsVo.java
  11. 13
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/as/firstshelves/AppFirstShelvesQuery.java
  12. 26
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/as/firstshelves/AppFirstShelvesScanVo.java
  13. 13
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/as/firstshelves/AppFirstShelvesVo.java
  14. 2
      anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/TerminalApplication.java
  15. 57
      anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/as/firstshelves/AppFirstShelvesRest.java
  16. 188
      anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/as/firstshelves/AppFirstShelvesService.java
  17. 8
      anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/wmsInventory/WmsInventoryFeign.java
  18. 61
      anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/wmsInventory/WmsInventorySaveDto.java
  19. 18
      anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/wmsgoodstag/GoodsTagListQuery.java
  20. 45
      anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/wmsgoodstag/WmsGoodsTag.java
  21. 30
      anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/wmsgoodstag/WmsGoodsTagFeign.java
  22. 91
      anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/wmsinitialdetail/WmsInitialDetail.java
  23. 27
      anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/wmsinitialdetail/WmsInitialDetailFeign.java
  24. 174
      yxt-as/src/main/java/com/yxt/anrui/as/biz/astechtitleapply/AsTechTitleApplyRest.java
  25. 8
      yxt-base-biz/src/main/java/com/yxt/base/apiadmin/base/BaseGoodsSkuExtendRest.java
  26. 4
      yxt-base-biz/src/main/java/com/yxt/base/biz/base/basegoodsskuextend/BaseGoodsSkuExtendMapper.java
  27. 14
      yxt-base-biz/src/main/java/com/yxt/base/biz/base/basegoodsskuextend/BaseGoodsSkuExtendService.java
  28. 92
      yxt-oa/src/main/java/com/yxt/anrui/oa/api/AdOfficeSuppliesApplyRest.java
  29. 54
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adbeverageacceptanceapply/AdBeverageAcceptanceApply.java
  30. 41
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adbeverageacceptanceapply/AdBeverageAcceptanceApplyDetailVo.java
  31. 59
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adbeverageacceptanceapply/AdBeverageAcceptanceApplyDto.java
  32. 37
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adbeverageacceptanceapply/AdBeverageAcceptanceApplyMapper.java
  33. 39
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adbeverageacceptanceapply/AdBeverageAcceptanceApplyMapper.xml
  34. 343
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adbeverageacceptanceapply/AdBeverageAcceptanceApplyService.java
  35. 53
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adbeverageacceptanceapply/AdBeverageAcceptanceApplyVo.java
  36. 77
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adbeverageacceptancedetail/AdBeverageAcceptanceDetail.java
  37. 70
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adbeverageacceptancedetail/AdBeverageAcceptanceDetailDto.java
  38. 66
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adbeverageacceptancedetail/AdBeverageAcceptanceDetailListDetailVo.java
  39. 41
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adbeverageacceptancedetail/AdBeverageAcceptanceDetailMapper.java
  40. 9
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adbeverageacceptancedetail/AdBeverageAcceptanceDetailMapper.xml
  41. 87
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adbeverageacceptancedetail/AdBeverageAcceptanceDetailService.java
  42. 67
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adbeverageacceptancedetail/AdBeverageAcceptanceDetailVo.java
  43. 44
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adofficesuppliesapply/AdOfficeSuppliesApply.java
  44. 23
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adofficesuppliesapply/AdOfficeSuppliesApplyDetailVo.java
  45. 59
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adofficesuppliesapply/AdOfficeSuppliesApplyDto.java
  46. 37
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adofficesuppliesapply/AdOfficeSuppliesApplyMapper.java
  47. 39
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adofficesuppliesapply/AdOfficeSuppliesApplyMapper.xml
  48. 343
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adofficesuppliesapply/AdOfficeSuppliesApplyService.java
  49. 53
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adofficesuppliesapply/AdOfficeSuppliesApplyVo.java
  50. 73
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adofficesuppliesdetail/AdOfficeSuppliesDetail.java
  51. 70
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adofficesuppliesdetail/AdOfficeSuppliesDetailDto.java
  52. 41
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adofficesuppliesdetail/AdOfficeSuppliesDetailMapper.java
  53. 9
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adofficesuppliesdetail/AdOfficeSuppliesDetailMapper.xml
  54. 87
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adofficesuppliesdetail/AdOfficeSuppliesDetailService.java
  55. 67
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adofficesuppliesdetail/AdOfficeSuppliesDetailVo.java
  56. 1
      yxt-oa/src/main/java/com/yxt/anrui/oa/feign/flowable/flow/ProcDefEnum.java
  57. 8
      yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsGoodsTagRest.java
  58. 10
      yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsInitialDetailRest.java
  59. 136
      yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsInitialRest.java
  60. 22
      yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsInventoryRest.java
  61. 6
      yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsShelfBillRest.java
  62. 2
      yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsgoodstag/WmsGoodsTagMapper.java
  63. 16
      yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsgoodstag/WmsGoodsTagMapper.xml
  64. 60
      yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsgoodstag/WmsGoodsTagService.java
  65. 2
      yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinitialdetail/WmsInitialDetail.java
  66. 1
      yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinitialdetail/WmsInitialDetailMapper.java
  67. 242
      yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinitialdetail/WmsInitialDetailService.java
  68. 27
      yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/FormCommon.java
  69. 6
      yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryMapper.java
  70. 5
      yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryMapper.xml
  71. 61
      yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryService.java
  72. 2
      yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldinventory/WmsOldInventoryMapper.xml
  73. 2
      yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldinventory/WmsOldInventoryService.java
  74. 22
      yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbill/WmsShelfBillService.java
  75. 4
      yxt-wms-biz/src/main/java/com/yxt/wms/feign/base/basegoodsskuextend/BaseGoodsSkuExtendFeign.java

16
anrui-buscenter/anrui-finmanage-ui/src/views/anruifinmanagement/chunafukuan/chunafukuanguanli/cashier.vue

@ -578,8 +578,6 @@ export default {
})
} else {
this.formobj.payCode = ''
this.formobj.receiveBankAccount = ''
this.formobj.receiveBank = ''
this.receiveBankAccount_list = []
}
},
@ -656,7 +654,7 @@ export default {
this.formobj.receiveCompany = row.receiveCompany
this.formobj.receiveBankAccount = row.receiveBankAccount
this.formobj.receiveBank = row.receiveBank
this.changerRceiveCompany(this.formobj.receiveCompany)
this.formobj.payCode = row.payCode
this.formobj.payWayValue = row.payWayValue
this.changePayWay(row.payWayValue)
const aa = []
@ -689,8 +687,10 @@ export default {
},
handlePayment() {
if (this.formobj.payCode === '' || this.formobj.payCode === null || this.formobj.payCode === undefined) {
this.$message({ showClose: true, type: 'error', message: '请先刷新浏览器页面后再进行操作' })
return
const choose = this.receiveCompany_list.filter((item) => item.name === this.formobj.receiveCompany)
if (choose !== null && choose.length > 0) {
this.formobj.payCode = choose[0].payCode
}
}
this.formobj.sids = this.sids
this.submitdisabled = true
@ -709,8 +709,10 @@ export default {
},
handlePass() {
if (this.formobj.payCode === '' || this.formobj.payCode === null || this.formobj.payCode === undefined) {
this.$message({ showClose: true, type: 'error', message: '请先刷新浏览器页面后再进行操作' })
return
const choose = this.receiveCompany_list.filter((item) => item.name === this.formobj.receiveCompany)
if (choose !== null && choose.length > 0) {
this.formobj.payCode = choose[0].payCode
}
}
this.formobj.sids = this.sids
this.formobj.name = window.sessionStorage.getItem('name')

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

@ -234,8 +234,10 @@ public class Flow3Service extends MybatisBaseService<FlowMapper, Flowable> {
nextUserSid = ProcDefEnum.DEFAUL_TADMIN_SID.getProDefId();
adminContains = true;
} else {
userSidForNextNode = listResultBean.getData();
formVariables.put("approvers", listResultBean.getData());
if(!listResultBean.getData().isEmpty()){
userSidForNextNode = listResultBean.getData();
formVariables.put("approvers", listResultBean.getData());
}
}
} else {
//若下一环节用户与系统管理员一致,则自动审批
@ -279,6 +281,7 @@ public class Flow3Service extends MybatisBaseService<FlowMapper, Flowable> {
isMultiInstanceTaskNext = true;
} else {
nextUserSid = userSidForNextNode.get(0);
//查询下一环节用户是否有转办人
nextUserSid = change(nextUserSid, bv.getInstanceId());
taskService.setAssignee(task2.getId(), nextUserSid);//将下一环节用户放入流程中
@ -296,6 +299,12 @@ public class Flow3Service extends MybatisBaseService<FlowMapper, Flowable> {
}
}else{//会签
Task task2 = tasks.get(0);
vo.setTaskId(task2.getId());
nodeState = task2.getName();
taskDefKey = task2.getTaskDefinitionKey();
}
if (!isMultiInstanceTaskNext) {
//获取该流程所有要走的环节节点
@ -874,10 +883,19 @@ public class Flow3Service extends MybatisBaseService<FlowMapper, Flowable> {
if (sysUserVos == null || sysUserVos.size() < 1) {
log.error("下一环节无用户填充管理员用户");
return rb;
}else{
StringBuilder nextNodeUserSids = new StringBuilder();
for (SysUserVo su : sysUserVos) {
nextNodeUserSids.append(su.getSid()).append(",");
}
//符合条件的用户的sid,拼接的字符串
nextNodeUserSids_ = nextNodeUserSids.toString();
nextNodeUserSids_ = nextNodeUserSids_.substring(0, nextNodeUserSids_.length() - 1);
}
} else {
if (sysUserVos == null || sysUserVos.size() < 1) {
continue;
// continue;
nextNodeUserSids_ = ProcDefEnum.DEFAUL_TADMIN_SID.getProDefId();
} else {
StringBuilder nextNodeUserSids = new StringBuilder();
for (SysUserVo su : sysUserVos) {

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

@ -31,6 +31,7 @@ public interface FlowTaskMapper extends BaseMapper<FlowTask> {
List<Map<String,Object>> finishedList1(Map<String, Object> map);
int finishedListCount(Map<String, Object> map);
int finishedListCountOA(Map<String, Object> map);
/**
* 根据流程实例的id查询最新的待办环节

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

@ -200,6 +200,35 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</where>
</select>
<select id="finishedListCountOA" parameterType="java.util.Map" resultType="int">
SELECT COUNT(DISTINCT ahpi.PROC_INST_ID_)
FROM ACT_HI_PROCINST ahpi
INNER JOIN ( SELECT PROC_INST_ID_ FROM ACT_HI_TASKINST WHERE ASSIGNEE_ =#{userSid} AND END_TIME_ IS NOT NULL ) temp ON ahpi.PROC_INST_ID_ = temp.PROC_INST_ID_
LEFT JOIN ACT_HI_TASKINST ahti ON ahti.PROC_INST_ID_ = temp.PROC_INST_ID_
INNER JOIN `ACT_HI_VARINST` A0 ON ahpi.PROC_INST_ID_ = A0.PROC_INST_ID_
LEFT JOIN ACT_RE_PROCDEF arpd ON ahpi.PROC_DEF_ID_ = arpd.ID_
<where>
<!-- <if test="proDefName != null and proDefName != ''">
AND arpd.NAME_ LIKE concat('%',#{proDefName},'%')
</if>-->
<if test="startDate != null and startDate != ''">
AND ahpi.START_TIME_ <![CDATA[ >= ]]> #{startDate}
</if>
<if test="endDate != null and endDate != ''">
AND ahpi.START_TIME_ <![CDATA[ <= ]]> #{endDate}
</if>
<if test="names != null and names != ''">
and (A0.NAME_ = 'orderNames' and A0.TEXT_ LIKE concat('%',#{names},'%') or arpd.NAME_ LIKE concat('%',#{proDefName},'%'))
</if>
<if test="startUserSid != null and startUserSid != ''">
and A0.NAME_ = 'INITIATOR' and A0.TEXT_ LIKE concat('%',#{startUserSid},'%')
</if>
<if test="category != null and category != ''">
and arpd.CATEGORY_ LIKE concat('%',#{category},'%')
</if>
</where>
</select>
<select id="getLatestTasks" resultType="com.yxt.anrui.flowable.api.flowtask.LatestTaskVo">
SELECT

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

@ -302,6 +302,131 @@ public class FlowTaskService extends MybatisBaseService<FlowTaskMapper, FlowTask
* @return
*/
public ResultBean<FlowRecordVo> businessFlowRecord(String procInsId) {
long startTimes = System.currentTimeMillis(); // 记录开始时间
ResultBean<FlowRecordVo> rb = ResultBean.fireFail();
FlowRecordVo flowRecordVo = new FlowRecordVo();
if (StringUtils.isNotBlank(procInsId)) {
// 批量获取所有历史任务实例
List<HistoricActivityInstance> list = historyService
.createHistoricActivityInstanceQuery()
.processInstanceId(procInsId)
.list();
// 批量获取所有历史任务实例的变量
List<HistoricTaskInstance> historicTasks = historyService.createHistoricTaskInstanceQuery()
.processInstanceId(procInsId)
.includeProcessVariables()
.list();
Map<String, HistoricTaskInstance> taskInstanceMap = historicTasks.stream()
.collect(Collectors.toMap(HistoricTaskInstance::getId, task -> task));
// 获取流程实例信息
Map<String, String> processInstance = processService.getProcessInstanceById(procInsId);
// 预收集所有审批人的 ID,避免多个网络请求
Set<String> assigneeIds = list.stream()
.map(HistoricActivityInstance::getAssignee)
.filter(StringUtils::isNotBlank)
.collect(Collectors.toSet());
// 将 Set<String> 转换为以逗号分隔的字符串
String assigneeIdsStr = String.join(",", assigneeIds);
// 远程调用批量查询用户信息
Map<String, SysUserVo> userMap = sysUserFeign.fetchBySids(assigneeIdsStr).getData().stream()
.collect(Collectors.toMap(SysUserVo::getSid, user -> user));
// 直接查询所有流程实例评论
List<Comment> commentList = taskService.getProcessInstanceComments(procInsId);
commentList.sort(Comparator.comparing(Comment::getTime));
// 预初始化 hisFlowList,确保它始终为非 null
List<FlowTask> hisFlowList = new ArrayList<>();
// 使用一个线程安全的集合来存储结果
List<FlowTask> finalHisFlowList = Collections.synchronizedList(hisFlowList);
// 使用 parallelStream 前先进行 null 检查和过滤
hisFlowList = list.parallelStream()
.filter(histIns -> histIns != null && histIns.getTaskId() != null) // 过滤掉 histIns 或 histIns.getTaskId() 为 null 的元素
.map(histIns -> {
FlowTask flowTask = new FlowTask();
flowTask.setTaskId(histIns.getTaskId());
flowTask.setTaskName(histIns.getActivityName());
flowTask.setTaskDefKey(histIns.getActivityId());
flowTask.setProcDefId(histIns.getProcessDefinitionId());
// 获取任务变量
HistoricTaskInstance historicTaskInstance = taskInstanceMap.get(histIns.getTaskId());
flowTask.setProcVars(historicTaskInstance != null ? historicTaskInstance.getProcessVariables() : Collections.emptyMap());
// 设置开始和结束时间
flowTask.setCreateTime(histIns.getStartTime());
flowTask.setFinishTime(histIns.getEndTime());
// 判断流程是否结束
flowTask.setProcessEndTime(processInstance.get("END_TIME_") == null ? "" : "end");
// 处理审批人员
if (StringUtils.isNotBlank(histIns.getAssignee()) && userMap.containsKey(histIns.getAssignee())) {
SysUserVo user = userMap.get(histIns.getAssignee());
if (user != null) {
TaskUserInfo taskUserInfo = new TaskUserInfo();
taskUserInfo.setAssigneeName(user.getName());
taskUserInfo.setAssigneeSid(user.getSid());
taskUserInfo.setAssigneeHeadImage(fileUploadComponent.getUrlPrefix() + user.getHeadImage());
flowTask.setTaskUserInfos(Collections.singletonList(taskUserInfo));
}
}
// 处理意见评论内容
if (commentList != null && !commentList.isEmpty()) {
commentList.stream()
.filter(comment -> histIns.getTaskId().equals(comment.getTaskId()))
.forEach(comment -> {
String type = comment.getType();
FlowCommentDto build = flowableService.selectComment(type, histIns.getTaskId(), histIns.getProcessInstanceId(), comment.getId());
if ("4".equals(type)) { // 加签审批意见
FlowTask flowTask1 = new FlowTask();
String userSid = comment.getUserId();
SysUserVo user = userMap.get(userSid);
TaskUserInfo taskUserInfo = new TaskUserInfo();
taskUserInfo.setAssigneeName(user != null ? user.getName() : "");
taskUserInfo.setAssigneeSid(userSid);
taskUserInfo.setAssigneeHeadImage(user != null ? fileUploadComponent.getUrlPrefix() + user.getHeadImage() : "");
flowTask1.setTaskName("加签审批意见");
flowTask1.setFinishTime(comment.getTime());
flowTask1.setCreateTime(comment.getTime());
flowTask1.setTaskUserInfos(Collections.singletonList(taskUserInfo));
flowTask1.setComment(build);
flowTask1.setProcDefId(flowTask.getProcDefId());
flowTask1.setProcVars(flowTask.getProcVars());
flowTask1.setTaskDefKey(histIns.getActivityId());
finalHisFlowList.add(flowTask1);
} else {
flowTask.setComment(build);
}
});
}
return flowTask;
}).collect(Collectors.toList());
flowRecordVo.setFlowList(hisFlowList);
}
log.info("flowRecordVo:{}", JSONObject.toJSONString(flowRecordVo));
long endTime = System.currentTimeMillis();
log.info("流程记录接口耗时 {} ms", endTime - startTimes);
return rb.success().setData(flowRecordVo);
}
/**
* 流程历史流转记录
*
* @param procInsId 流程实例Id
* @return
*/
public ResultBean<FlowRecordVo> businessFlowRecordOld(String procInsId) {
ResultBean<FlowRecordVo> rb = ResultBean.fireFail();
FlowRecordVo flowRecordVo = new FlowRecordVo();
if (StringUtils.isNotBlank(procInsId)) {
@ -418,6 +543,7 @@ public class FlowTaskService extends MybatisBaseService<FlowTaskMapper, FlowTask
return rb.success().setData(flowRecordVo);
}
/**
* 获取流程执行过程
*
@ -1011,13 +1137,13 @@ public class FlowTaskService extends MybatisBaseService<FlowTaskMapper, FlowTask
}
ll.add(mapss);
}
paraMap.put("category","OA");
paraMap.put("category", "OA");
paraMap.put("userSid", userSid);
paraMap.put("list", ll);
paraMap.put("page", (pageNum - 1) * pageSize);
paraMap.put("size", pageSize);
List<Map<String, Object>> maps = baseMapper.finishedList1(paraMap);
int count = baseMapper.finishedListCount(paraMap);
int count = baseMapper.finishedListCountOA(paraMap);
List<FlowTaskDto> hisTaskList = new ArrayList();
for (Map<String, Object> histTask : maps) {
FlowTaskDto flowTask = new FlowTaskDto();

107
anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/flow/FlowableRest.java

@ -56,6 +56,7 @@ import org.springframework.web.bind.annotation.RestController;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.CompletableFuture;
import java.util.stream.Collectors;
/**
@ -165,10 +166,114 @@ public class FlowableRest implements FlowableFeign {
@Override
public ResultBean<List<PCHistTaskListAndCommentList>> flowRecordAndComment(String procInsId, String deployId) {
// 并行调用外部服务
CompletableFuture<ResultBean<com.yxt.anrui.flowable.api.flowtask.FlowRecordVo>> flowRecordFuture =
CompletableFuture.supplyAsync(() -> flowableService.flowRecord(procInsId, deployId));
CompletableFuture<ResultBean<List<ProcessCommentVo>>> commentListFuture =
CompletableFuture.supplyAsync(() -> getCommentList(procInsId, deployId));
// 并行执行 flowTaskFeign.yuyanTest 查询
CompletableFuture<ResultBean<List<Map<String, Object>>>> flowTaskFuture =
CompletableFuture.supplyAsync(() -> {
ResultBean<List<Map<String, Object>>> listResultBean = ResultBean.fireFail();
// 获取流转记录和查询条件
ResultBean<com.yxt.anrui.flowable.api.flowtask.FlowRecordVo> flowRecordVoResultBean = flowRecordFuture.join();
List<com.yxt.anrui.flowable.api.flowtask.FlowTask> flowList1 = flowRecordVoResultBean.getData().getFlowList();
if (!flowList1.isEmpty()) {
com.yxt.anrui.flowable.api.flowtask.FlowTask appFlowableRecordVo = flowList1.get(flowList1.size() - 1);
if (!"Event_end".equals(appFlowableRecordVo.getTaskDefKey())) {
String proDefId = appFlowableRecordVo.getProcDefId();
Map<String, Object> map = (Map<String, Object>) appFlowableRecordVo.getProcVars();
FlowableQuery flowableQuery = new FlowableQuery();
flowableQuery.setModelId(proDefId);
flowableQuery.setTaskDefKey(appFlowableRecordVo.getTaskDefKey());
flowableQuery.setMap(map);
return flowTaskFeign.yuyanTest(flowableQuery);
}
}
return listResultBean.success().setData(new ArrayList<>());
});
// 等待外部服务调用完成
ResultBean<com.yxt.anrui.flowable.api.flowtask.FlowRecordVo> flowRecordVoResultBean = flowRecordFuture.join();
ResultBean<List<ProcessCommentVo>> commentList = commentListFuture.join();
ResultBean<List<Map<String, Object>>> flowTaskResultBean = flowTaskFuture.join();
List<PCHistTaskListAndCommentList> flowList = new ArrayList<>();
List<com.yxt.anrui.flowable.api.flowtask.FlowTask> flowList1 = flowRecordVoResultBean.getData().getFlowList();
// 处理流转记录
flowList1.forEach(f -> {
PCHistTaskListAndCommentList a = new PCHistTaskListAndCommentList();
a.setTime(f.getFinishTime() == null ? new Date() : f.getFinishTime());
Map<String, Object> stringObjectMap = BeanUtil.beanToMap(f);
stringObjectMap.put("finishTime", DateUtil.format(f.getFinishTime(), "yyyy-MM-dd HH:mm:ss"));
stringObjectMap.put("createTime", DateUtil.format(f.getCreateTime(), "yyyy-MM-dd HH:mm:ss"));
a.setFlowableRecordVo(stringObjectMap);
a.setState("0");
List<com.yxt.anrui.flowable.api.flowtask.TaskUserInfo> taskUserInfos = f.getTaskUserInfos();
if (taskUserInfos != null) {
taskUserInfos.removeAll(Collections.singleton(null));
if (!taskUserInfos.isEmpty()) {
if (taskUserInfos.size() == 1) {
com.yxt.anrui.flowable.api.flowtask.TaskUserInfo appUserVo = taskUserInfos.get(0);
if ("admin".equals(appUserVo.getAssigneeName())) {
return; // 如果是admin,跳过该条记录
}
}
}
}
flowList.add(a);
});
// 处理评论记录
commentList.getData().forEach(f -> {
PCHistTaskListAndCommentList a = new PCHistTaskListAndCommentList();
a.setTime(f.getCreateTime());
f.setTitle(f.getTaskUserInfo().getAssigneeName() + "添加了评论");
Map<String, Object> stringObjectMap = BeanUtil.beanToMap(f);
a.setProcessCommentVo(stringObjectMap);
a.setState("1");
flowList.add(a);
});
// 处理额外的流转记录
flowTaskResultBean.getData().forEach(f -> {
PCHistTaskListAndCommentList a = new PCHistTaskListAndCommentList();
Map<String, Object> stringObjectMap = BeanUtil.beanToMap(f);
stringObjectMap.put("taskName", f.get("nodeName").toString());
stringObjectMap.put("finishTime", null);
stringObjectMap.put("createTime", "");
stringObjectMap.put("taskUserInfos", new ArrayList<>());
a.setFlowableRecordVo(stringObjectMap);
a.setState("3");
flowList.add(a);
});
// 合并排序:先按时间排序
flowList.sort(Comparator.nullsLast(Comparator.comparing(PCHistTaskListAndCommentList::getTime, Comparator.nullsLast(Comparator.naturalOrder()))));
// 返回结果
ResultBean<List<PCHistTaskListAndCommentList>> resultBean = new ResultBean<List<PCHistTaskListAndCommentList>>().success();
resultBean.setData(flowList);
return resultBean;
}
public ResultBean<List<PCHistTaskListAndCommentList>> flowRecordAndCommentOld(String procInsId, String deployId) {
ResultBean<com.yxt.anrui.flowable.api.flowtask.FlowRecordVo> flowRecordVoResultBean = flowableService.flowRecord(procInsId, deployId);
com.yxt.anrui.flowable.api.flowtask.FlowRecordVo flowRecordVo = flowRecordVoResultBean.getData();
List<PCHistTaskListAndCommentList> flowList = new ArrayList<>();
//流转记录
//流转记录
List<com.yxt.anrui.flowable.api.flowtask.FlowTask> flowList1 = flowRecordVo.getFlowList();
flowList1.forEach(f->{
PCHistTaskListAndCommentList a=new PCHistTaskListAndCommentList();

17
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/as/firstshelves/AppFirstShelvesDto.java

@ -0,0 +1,17 @@
package com.yxt.anrui.terminal.api.as.firstshelves;
import com.yxt.common.core.dto.Dto;
import com.yxt.common.core.vo.Vo;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
@Data
public class AppFirstShelvesDto implements Dto {
private String userSid;
private String orgPath;
private List<AppFirstShelvesGoodsDto> goodsList;
}

35
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/as/firstshelves/AppFirstShelvesFeign.java

@ -0,0 +1,35 @@
package com.yxt.anrui.terminal.api.as.firstshelves;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;
/**
* @Author
* @Date
* @Description
*/
@FeignClient(
contextId = "terminal-AppFirstShelves",
name = "anrui-terminal",
path = "v1/firstshelves")
public interface AppFirstShelvesFeign {
@PostMapping("/list")
@ApiOperation("打印商品标签列表")
ResultBean<AppFirstShelvesVo> list(@RequestBody PagerQuery<AppFirstShelvesQuery> pagerQuery);
@ApiOperation("标签扫描")
@GetMapping("/scan")
@ResponseBody
public ResultBean<AppFirstShelvesScanVo> scan(@RequestParam("content") String content, @RequestParam("type") String type, @RequestParam("orgPath") String orgPath);
@ApiOperation("上架保存")
@PostMapping("/save")
@ResponseBody
public ResultBean save(@RequestBody AppFirstShelvesDto dto);
}

12
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/as/firstshelves/AppFirstShelvesGoodsDto.java

@ -0,0 +1,12 @@
package com.yxt.anrui.terminal.api.as.firstshelves;
import com.yxt.common.core.dto.Dto;
import lombok.Data;
@Data
public class AppFirstShelvesGoodsDto implements Dto {
private String goodsID;
private String houseCode;
private String count;
}

32
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/as/firstshelves/AppFirstShelvesGoodsVo.java

@ -0,0 +1,32 @@
package com.yxt.anrui.terminal.api.as.firstshelves;
import com.yxt.common.core.vo.Vo;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class AppFirstShelvesGoodsVo implements Vo {
private String sid;
/**
* 商品名称
*/
private String name;
/**
* 商品id
*/
private String _id;
/**
* 数量
*/
private BigDecimal num;
/**
* 单位
*/
private String unit;
/**
* 规格
*/
private String specs;
}

13
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/as/firstshelves/AppFirstShelvesQuery.java

@ -0,0 +1,13 @@
package com.yxt.anrui.terminal.api.as.firstshelves;
import com.yxt.common.core.query.Query;
import lombok.Data;
@Data
public class AppFirstShelvesQuery implements Query {
private String menuSid;
private String userSid;
private String orgPath;
private String name;
}

26
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/as/firstshelves/AppFirstShelvesScanVo.java

@ -0,0 +1,26 @@
package com.yxt.anrui.terminal.api.as.firstshelves;
import com.yxt.common.core.vo.Vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class AppFirstShelvesScanVo implements Vo {
@ApiModelProperty("0商品码,1库位码")
private String type;
@ApiModelProperty("商品名称")
private String goodsName;
@ApiModelProperty("商品id")
private String goodsID;
@ApiModelProperty("商品最大可上架数量")
private String goodsMax;
@ApiModelProperty("库位码")
private String houseCode;
@ApiModelProperty("库区名+库位名")
private String houseName;
@ApiModelProperty("仓库地址")
private String houseAddress;
}

13
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/as/firstshelves/AppFirstShelvesVo.java

@ -0,0 +1,13 @@
package com.yxt.anrui.terminal.api.as.firstshelves;
import com.yxt.common.core.vo.Vo;
import lombok.Data;
import java.util.List;
@Data
public class AppFirstShelvesVo implements Vo {
private Integer pages = 1;
private List<AppFirstShelvesGoodsVo> goods;
}

2
anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/TerminalApplication.java

@ -15,7 +15,7 @@ import org.springframework.cloud.openfeign.EnableFeignClients;
"com.yxt.anrui.terminal",
"com.yxt.common.base.config"
},exclude = {DataSourceAutoConfiguration.class})
@EnableFeignClients(basePackages = {"com.yxt.anrui.portal", "com.yxt.anrui.crm", "com.yxt.anrui.base", "com.yxt.anrui.riskcenter","com.yxt.anrui.flowable","com.yxt.anrui.buscenter","com.yxt.anrui.scm","com.yxt.anrui.fin", "com.yxt.anrui.terminal.fegin.wmsinventorycheckbill","com.yxt.anrui.terminal.fegin.wmsinventoryprofitin","com.yxt.anrui.terminal.fegin.wmsinventoryprofitout","com.yxt.anrui.terminal.fegin.basegoodssku","com.yxt.anrui.terminal.fegin.basesupplierinfo","com.yxt.anrui.terminal.fegin.wmsInventory","com.yxt.anrui.terminal.fegin.asbusrepairbill","com.yxt.anrui.terminal.fegin.pmspurchasebill","com.yxt.anrui.terminal.fegin.pmspurchasebackbill","com.yxt.anrui.terminal.fegin.smspricestrategybill","com.yxt.anrui.terminal.fegin.astechtitleapply","com.yxt.anrui.terminal.fegin.asserviceaccommapply","com.yxt.anrui.terminal.fegin.asbusclaiminvoicebill","com.yxt.anrui.terminal.fegin.wmsinventoryallocatebill","com.yxt.anrui.terminal.fegin.asoldpartreturnapply","com.yxt.anrui.terminal.fegin.asoldparthandleapply","com.yxt.anrui.terminal.fegin.asbwdiffapply","com.yxt.anrui.terminal.fegin.asbwinvoiceapply","com.yxt.anrui.terminal.fegin.ashosesuppapply","com.yxt.anrui.terminal.fegin.asbusclaimcheckapply","com.yxt.anrui.terminal.fegin.asoldparts","com.yxt.anrui.terminal.fegin.wmsoldregister","com.yxt.anrui.terminal.fegin.asbusrepairinventorybill","com.yxt.anrui.terminal.fegin.wmsoldinventory","com.yxt.anrui.terminal.fegin.wmswarehouserack","com.yxt.anrui.terminal.fegin.asbusrepairinventorybilldetail","com.yxt.anrui.terminal.fegin.wmsinventoryrecord","com.yxt.anrui.terminal.fegin.asstandrecordapply","com.yxt.anrui.terminal.fegin.wmsotheroutapply","com.yxt.anrui.terminal.fegin.oaleaveapply","com.yxt.anrui.terminal.fegin.oamendapply"})
@EnableFeignClients(basePackages = {"com.yxt.anrui.portal", "com.yxt.anrui.crm", "com.yxt.anrui.base", "com.yxt.anrui.riskcenter","com.yxt.anrui.flowable","com.yxt.anrui.buscenter","com.yxt.anrui.scm","com.yxt.anrui.fin", "com.yxt.anrui.terminal.fegin.wmsinventorycheckbill","com.yxt.anrui.terminal.fegin.wmsinventoryprofitin","com.yxt.anrui.terminal.fegin.wmsinventoryprofitout","com.yxt.anrui.terminal.fegin.basegoodssku","com.yxt.anrui.terminal.fegin.basesupplierinfo","com.yxt.anrui.terminal.fegin.wmsInventory","com.yxt.anrui.terminal.fegin.asbusrepairbill","com.yxt.anrui.terminal.fegin.pmspurchasebill","com.yxt.anrui.terminal.fegin.pmspurchasebackbill","com.yxt.anrui.terminal.fegin.smspricestrategybill","com.yxt.anrui.terminal.fegin.astechtitleapply","com.yxt.anrui.terminal.fegin.asserviceaccommapply","com.yxt.anrui.terminal.fegin.asbusclaiminvoicebill","com.yxt.anrui.terminal.fegin.wmsinventoryallocatebill","com.yxt.anrui.terminal.fegin.asoldpartreturnapply","com.yxt.anrui.terminal.fegin.asoldparthandleapply","com.yxt.anrui.terminal.fegin.asbwdiffapply","com.yxt.anrui.terminal.fegin.asbwinvoiceapply","com.yxt.anrui.terminal.fegin.ashosesuppapply","com.yxt.anrui.terminal.fegin.asbusclaimcheckapply","com.yxt.anrui.terminal.fegin.asoldparts","com.yxt.anrui.terminal.fegin.wmsoldregister","com.yxt.anrui.terminal.fegin.asbusrepairinventorybill","com.yxt.anrui.terminal.fegin.wmsoldinventory","com.yxt.anrui.terminal.fegin.wmswarehouserack","com.yxt.anrui.terminal.fegin.asbusrepairinventorybilldetail","com.yxt.anrui.terminal.fegin.wmsinventoryrecord","com.yxt.anrui.terminal.fegin.asstandrecordapply","com.yxt.anrui.terminal.fegin.wmsotheroutapply","com.yxt.anrui.terminal.fegin.oaleaveapply","com.yxt.anrui.terminal.fegin.oamendapply","com.yxt.anrui.terminal.fegin.wmsgoodstag","com.yxt.anrui.terminal.fegin.wmsinitialdetail"})
public class TerminalApplication {
public static void main(String[] args) {

57
anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/as/firstshelves/AppFirstShelvesRest.java

@ -0,0 +1,57 @@
/*********************************************************
*********************************************************
******************** *******************
************* ************
******* _oo0oo_ *******
*** o8888888o ***
* 88" . "88 *
* (| -_- |) *
* 0\ = /0 *
* ___/`---'\___ *
* .' \\| |// '. *
* / \\||| : |||// \ *
* / _||||| -:- |||||- \ *
* | | \\\ - /// | | *
* | \_| ''\---/'' |_/ | *
* \ .-\__ '-' ___/-. / *
* ___'. .' /--.--\ `. .'___ *
* ."" '< `.___\_<|>_/___.' >' "". *
* | | : `- \`.;`\ _ /`;.`/ - ` : | | *
* \ \ `_. \_ __\ /__ _/ .-` / / *
* =====`-.____`.___ \_____/___.-`___.-'===== *
* `=---=' *
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *
*********__佛祖保佑__永无BUG__验收通过__钞票多多__*********
*********************************************************/
package com.yxt.anrui.terminal.biz.as.firstshelves;
import com.yxt.anrui.terminal.api.as.firstshelves.*;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("v1/firstshelves")
public class AppFirstShelvesRest implements AppFirstShelvesFeign {
@Autowired
private AppFirstShelvesService appFirstShelvesService;
@Override
public ResultBean<AppFirstShelvesVo> list(PagerQuery<AppFirstShelvesQuery> pagerQuery) {
return appFirstShelvesService.list(pagerQuery);
}
@Override
public ResultBean<AppFirstShelvesScanVo> scan(String content, String type, String orgPath) {
return appFirstShelvesService.scan(content, type, orgPath);
}
@Override
public ResultBean save(AppFirstShelvesDto dto) {
return appFirstShelvesService.save(dto);
}
}

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

@ -0,0 +1,188 @@
/*********************************************************
*********************************************************
******************** *******************
************* ************
******* _oo0oo_ *******
*** o8888888o ***
* 88" . "88 *
* (| -_- |) *
* 0\ = /0 *
* ___/`---'\___ *
* .' \\| |// '. *
* / \\||| : |||// \ *
* / _||||| -:- |||||- \ *
* | | \\\ - /// | | *
* | \_| ''\---/'' |_/ | *
* \ .-\__ '-' ___/-. / *
* ___'. .' /--.--\ `. .'___ *
* ."" '< `.___\_<|>_/___.' >' "". *
* | | : `- \`.;`\ _ /`;.`/ - ` : | | *
* \ \ `_. \_ __\ /__ _/ .-` / / *
* =====`-.____`.___ \_____/___.-`___.-'===== *
* `=---=' *
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *
*********__佛祖保佑__永无BUG__验收通过__钞票多多__*********
*********************************************************/
package com.yxt.anrui.terminal.biz.as.firstshelves;
import cn.hutool.core.date.DateUtil;
import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgFeign;
import com.yxt.anrui.terminal.api.as.firstshelves.*;
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.List;
@Service
public class AppFirstShelvesService {
@Resource
private WmsGoodsTagFeign wmsGoodsTagFeign;
@Resource
private WmsWarehouseRackFeign wmsWarehouseRackFeign;
@Resource
private WmsInventoryFeign wmsInventoryFeign;
@Resource
private WmsInitialDetailFeign wmsInitialDetailFeign;
@Autowired
private SysStaffOrgFeign sysStaffOrgFeign;
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<AppFirstShelvesScanVo> scan(String content, String type, String orgPath) {
ResultBean rb = ResultBean.fireFail();
AppFirstShelvesScanVo appFirstShelvesScanVo = new AppFirstShelvesScanVo();
if ("0".equals(type)) {//商品码
if (content.contains("#")) {
return rb.setMsg("请扫描商品码");
}
String count = wmsInventoryFeign.selCountByGoodsID(content).getData();
BigDecimal num = null;
if (StringUtils.isNotBlank(count)){
num = new BigDecimal(count);
}else {
num = new BigDecimal("0");
}
WmsGoodsTag wmsGoodsTag = wmsGoodsTagFeign.selectByGoodsId(content).getData();
BigDecimal chae = wmsGoodsTag.getGoodsCount().subtract(num);
if (chae.compareTo(BigDecimal.ZERO) == 0){
return rb.setMsg("该商品已全部入库");
}
appFirstShelvesScanVo.setType(type);
appFirstShelvesScanVo.setGoodsID(content);
appFirstShelvesScanVo.setGoodsName(wmsGoodsTag.getGoodsSkuTitle());
appFirstShelvesScanVo.setGoodsMax(chae.setScale(0,BigDecimal.ROUND_DOWN).toString());
} 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();
}
appFirstShelvesScanVo.setHouseName(houseName + "-" + zoneName + "-" + areaName);
appFirstShelvesScanVo.setHouseAddress(houseInfoVo.getWarehouseRackCode());
appFirstShelvesScanVo.setHouseCode(houseCode);
appFirstShelvesScanVo.setType(type);
} else {
return rb.setMsg("扫描库位码为空");
}
}
}
return rb.success().setData(appFirstShelvesScanVo);
}
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();
}
}

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

@ -31,4 +31,12 @@ public interface WmsInventoryFeign {
@ApiOperation("app旧件库存查询")
@PostMapping("/appOldStorage")
public ResultBean<PagerVo<OldStorageVo>> appOldStorage(@RequestBody PagerQuery<InventorySearchQuery> pq);
@ApiOperation("根据商品ID查询库存数量")
@PostMapping("/selCountByGoodsID")
public ResultBean<String> selCountByGoodsID(@RequestParam("goodsID") String goodsID);
@ApiOperation("保存商品库存")
@PostMapping("/saveWmsInventory")
ResultBean saveWmsInventory(@RequestBody WmsInventorySaveDto dto);
}

61
anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/wmsInventory/WmsInventorySaveDto.java

@ -0,0 +1,61 @@
package com.yxt.anrui.terminal.fegin.wmsInventory;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @description:
* @author: dimengzhe
* @date: 2024/4/19
**/
@Data
public class WmsInventorySaveDto {
private String sid;
@ApiModelProperty("创建者sid")
private String createBySid;
@ApiModelProperty("批次号(入库日期+生产日期,如240320-240109)")
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 String count;
@ApiModelProperty("分配量")
private String allocateCount;
@ApiModelProperty("拣货量")
private String pickCount;
@ApiModelProperty("冻结量")
private String freezeCount;
@ApiModelProperty("仓库sid")
private String warehouseSid;
@ApiModelProperty("仓库名称")
private String warehouseName;
@ApiModelProperty("库位sid")
private String warehouseRackSid;
@ApiModelProperty("库位编码")
private String warehouseRackCode;
@ApiModelProperty("厂家sid")
private String manufacturerSid;
@ApiModelProperty("厂家名称")
private String manufacturerName;
@ApiModelProperty("首次入库日期")
private String firstInDate;
@ApiModelProperty("创建组织sid")
private String createOrgSid;
@ApiModelProperty("使用组织sid")
private String useOrgSid;
}

18
anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/wmsgoodstag/GoodsTagListQuery.java

@ -0,0 +1,18 @@
package com.yxt.anrui.terminal.fegin.wmsgoodstag;
import com.yxt.common.core.query.Query;
import lombok.Data;
/**
* @author Fan
* @description
* @date 2024/6/24 15:02
*/
@Data
public class GoodsTagListQuery implements Query {
private String menuSid;
private String userSid;
private String orgPath;
private String name;
}

45
anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/wmsgoodstag/WmsGoodsTag.java

@ -0,0 +1,45 @@
package com.yxt.anrui.terminal.fegin.wmsgoodstag;
import com.yxt.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
/**
* @author Fan
* @description
* @date 2024/5/30 13:36
*/
@Data
public class WmsGoodsTag extends BaseEntity {
@ApiModelProperty("单据sid(收货单sid)")
private String billSid;
@ApiModelProperty("单据明细sid")
private String billDetailSid;
@ApiModelProperty("批次号(入库日期+有效日期,如240320-241009)")
private String batchNumber;
@ApiModelProperty("商品ID")
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 goodsCount;
@ApiModelProperty("标签图片地址")
private String tagPicUrl;
@ApiModelProperty("打印次数")
private Integer printCount;
}

30
anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/wmsgoodstag/WmsGoodsTagFeign.java

@ -0,0 +1,30 @@
package com.yxt.anrui.terminal.fegin.wmsgoodstag;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
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.RequestParam;
/**
* @Author
* @Date
* @Description
*/
@FeignClient(
contextId = "terminal-WmsGoodsTag",
name = "yxt-wms",
path = "/apiadmin/WmsTagPrint")
public interface WmsGoodsTagFeign {
@PostMapping("goodsTagList")
@ApiOperation("商品标签列表")
ResultBean<PagerVo<WmsGoodsTag>> goodsTagList(@RequestBody PagerQuery<GoodsTagListQuery> pagerQuery);
@ApiOperation("根据商品ID查询标签信息")
@PostMapping("/selectByGoodsId")
public ResultBean<WmsGoodsTag> selectByGoodsId(@RequestParam("oldGoodsId") String oldGoodsId);
}

91
anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/wmsinitialdetail/WmsInitialDetail.java

@ -0,0 +1,91 @@
/*********************************************************
*********************************************************
******************** *******************
************* ************
******* _oo0oo_ *******
*** o8888888o ***
* 88" . "88 *
* (| -_- |) *
* 0\ = /0 *
* ___/`---'\___ *
* .' \\| |// '. *
* / \\||| : |||// \ *
* / _||||| -:- |||||- \ *
* | | \\\ - /// | | *
* | \_| ''\---/'' |_/ | *
* \ .-\__ '-' ___/-. / *
* ___'. .' /--.--\ `. .'___ *
* ."" '< `.___\_<|>_/___.' >' "". *
* | | : `- \`.;`\ _ /`;.`/ - ` : | | *
* \ \ `_. \_ __\ /__ _/ .-` / / *
* =====`-.____`.___ \_____/___.-`___.-'===== *
* `=---=' *
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *
*********__佛祖保佑__永无BUG__验收通过__钞票多多__*********
*********************************************************/
package com.yxt.anrui.terminal.fegin.wmsinitialdetail;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yxt.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
@Data
@ApiModel(value = "期初上架-明细", description = "期初上架-明细")
public class WmsInitialDetail extends BaseEntity {
private static final long serialVersionUID = 1L;
@ApiModelProperty("单据sid")
private String billSid; // 单据sid
@ApiModelProperty("商品spuSid")
private String goodsSpuSid; // 商品spuSid
@ApiModelProperty("商品spu名称")
private String goodsSpuName; // 商品spu名称
@ApiModelProperty("商品skuSid")
private String goodsSkuSid; // 商品skuSid
@ApiModelProperty("商品sku名称")
private String goodsSkuTitle; // 商品Sku名称
@ApiModelProperty("图号")
private String goodsSkuCode; // 图号
@ApiModelProperty("规格型号")
private String goodsSkuOwnSpec; // 规格型号
@ApiModelProperty("单位")
private String unit; // 单位
@ApiModelProperty("数量")
private BigDecimal num; // 数量
@ApiModelProperty("品牌sid")
private String brandSid; // 品牌sid
@ApiModelProperty("品牌名称")
private String brandName; // 品牌名称
@ApiModelProperty("厂家sid")
private String manufacturerSid; // 厂家sid
@ApiModelProperty("厂家名称")
private String manufacturerName; // 厂家名称
@ApiModelProperty("供应商名称")
private String supplierName; // 供应商名称
@ApiModelProperty("销售指导价")
private BigDecimal saleGuidePrice; // 销售指导价
@ApiModelProperty("入库单价")
private BigDecimal inCost; // 入库单价
@ApiModelProperty("税率")
private String taxRate; // 税率
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@ApiModelProperty("首次入库日期")
private Date firstInDate; // 首次入库日期
@ApiModelProperty("商品类别sid")
private String goodsTypeSid; // 商品类别sid
@ApiModelProperty("商品类别编码")
private String goodsTypeCode; // 商品类别编码
@ApiModelProperty("商品类别名称")
private String goodsTypeName; // 商品类别名称
@ApiModelProperty("已上架数量")
private BigDecimal listNum; // 已上架数量
@ApiModelProperty("是否为一物一码")
private Integer isYwym;
@ApiModelProperty("是否已上传商品标签")
private Integer isScbq;
}

27
anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/fegin/wmsinitialdetail/WmsInitialDetailFeign.java

@ -0,0 +1,27 @@
package com.yxt.anrui.terminal.fegin.wmsinitialdetail;
import com.yxt.anrui.terminal.fegin.wmsoldinventory.WmsOldGroundConfirmApp;
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.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
/**
* @Author
* @Date
* @Description
*/
@FeignClient(
contextId = "terminal-WmsInitialDetail",
name = "yxt-wms",
path = "v1/wmsinitialdetail")
public interface WmsInitialDetailFeign {
@PostMapping("/selBySid")
@ResponseBody
@ApiOperation(value = "根据sid查询")
public ResultBean<WmsInitialDetail> selBySid(@RequestParam("sid") String sid);
}

174
yxt-as/src/main/java/com/yxt/anrui/as/biz/astechtitleapply/AsTechTitleApplyRest.java

@ -64,94 +64,94 @@ import java.util.List;
@RequestMapping("v1/astechtitleapply")
public class AsTechTitleApplyRest {
@Autowired
private AsTechTitleApplyService asTechTitleApplyService;
@ApiOperation("根据条件分页查询数据的列表")
@PostMapping("/listPage")
public ResultBean<PagerVo<AsTechTitleApplyVo>> listPage(@RequestBody PagerQuery<AsTechTitleApplyQuery> pq){
ResultBean rb = ResultBean.fireFail();
PagerVo<AsTechTitleApplyVo> pv = asTechTitleApplyService.listPageVo(pq);
return rb.success().setData(pv);
}
@ApiOperation("新增或修改")
@PostMapping("/save")
public ResultBean save(@RequestBody AsTechTitleApplyDto dto){
return asTechTitleApplyService.saveOrUpdateDto(dto);
}
@ApiOperation("根据sid批量删除")
@Autowired
private AsTechTitleApplyService asTechTitleApplyService;
@ApiOperation("根据条件分页查询数据的列表")
@PostMapping("/listPage")
public ResultBean<PagerVo<AsTechTitleApplyVo>> listPage(@RequestBody PagerQuery<AsTechTitleApplyQuery> pq) {
ResultBean rb = ResultBean.fireFail();
PagerVo<AsTechTitleApplyVo> pv = asTechTitleApplyService.listPageVo(pq);
return rb.success().setData(pv);
}
@ApiOperation("新增或修改")
@PostMapping("/save")
public ResultBean save(@RequestBody AsTechTitleApplyDto dto) {
return asTechTitleApplyService.saveOrUpdateDto(dto);
}
@ApiOperation("根据sid批量删除")
@DeleteMapping("/delBySids")
public ResultBean delBySids(@RequestBody String[] sids){
return asTechTitleApplyService.delAll(sids);
}
public ResultBean delBySids(@RequestBody String[] sids) {
return asTechTitleApplyService.delAll(sids);
}
@ApiOperation("根据SID获取一条记录")
@ApiOperation("根据SID获取一条记录")
@GetMapping("/fetchDetailsBySid/{sid}")
public ResultBean<AsTechTitleApplyDetailsVo> fetchDetailsBySid(@PathVariable("sid") String sid){
ResultBean rb = ResultBean.fireFail();
AsTechTitleApplyDetailsVo vo = asTechTitleApplyService.fetchDetailsVoBySid(sid);
return rb.success().setData(vo);
}
@ApiOperation("初始化")
@PostMapping("/init")
public ResultBean<AsTechTitleApplyDetailsVo> init(@RequestBody String[] techSids){
ResultBean rb = ResultBean.fireFail();
AsTechTitleApplyDetailsVo vo = asTechTitleApplyService.init(techSids);
return rb.success().setData(vo);
}
@ApiOperation("提交")
@PostMapping("/submitApply")
public ResultBean submitApply(@Valid @RequestBody SubmitTechTitleApplyDto dto) {
return asTechTitleApplyService.submitApply(dto);
}
@ApiOperation(value = "办理(同意)")
@PostMapping("/complete")
public ResultBean complete(@Valid @RequestBody CompleteTechTitleApplyDto query) {
BusinessVariables bv = new BusinessVariables();
BeanUtil.copyProperties(query, bv);
bv.setModelId("");
return asTechTitleApplyService.complete(bv);
}
@ApiOperation(value = "获取上一个环节")
@GetMapping(value = "/getPreviousNodesForReject")
ResultBean<List<TechTitleApplyNodeVo>> getPreviousNodesForReject(@Valid @SpringQueryMap TechTitleApplyNodeQuery query) {
return asTechTitleApplyService.getPreviousNodesForReject(query);
}
@ApiOperation(value = "获取下一个环节")
@GetMapping(value = "/getNextNodesForSubmit")
ResultBean<List<TechTitleApplyNodeVo>> getNextNodesForSubmit(@Valid @SpringQueryMap TechTitleApplyNodeQuery query) {
return asTechTitleApplyService.getNextNodesForSubmit(query);
}
@ApiOperation(value = "驳回任务")
@PostMapping(value = "/reject")
public ResultBean taskReject(@Valid @RequestBody TechTitleApplyTaskQuery query) {
return asTechTitleApplyService.taskReject(query);
}
@ApiOperation(value = "撤回流程")
@PostMapping(value = "/revokeProcess")
public ResultBean revokeProcess(@Valid @RequestBody TechTitleApplyTaskQuery query) {
return asTechTitleApplyService.revokeProcess(query);
}
@ApiOperation(value = "终止任务")
@PostMapping(value = "/breakProcess")
public ResultBean breakProcess(@Valid @RequestBody TechTitleApplyTaskQuery query) {
return asTechTitleApplyService.breakProcess(query);
}
@ApiOperation(value = "加签")
@PostMapping(value = "/delegate")
@ResponseBody
public ResultBean delegate(@RequestBody TechTitleApplyDelegateQuery query) {
return asTechTitleApplyService.delegate(query);
}
public ResultBean<AsTechTitleApplyDetailsVo> fetchDetailsBySid(@PathVariable("sid") String sid) {
ResultBean rb = ResultBean.fireFail();
AsTechTitleApplyDetailsVo vo = asTechTitleApplyService.fetchDetailsVoBySid(sid);
return rb.success().setData(vo);
}
@ApiOperation("初始化")
@PostMapping("/init")
public ResultBean<AsTechTitleApplyDetailsVo> init(@RequestBody String[] techSids) {
ResultBean rb = ResultBean.fireFail();
AsTechTitleApplyDetailsVo vo = asTechTitleApplyService.init(techSids);
return rb.success().setData(vo);
}
@ApiOperation("提交")
@PostMapping("/submitApply")
public ResultBean submitApply(@Valid @RequestBody SubmitTechTitleApplyDto dto) {
return asTechTitleApplyService.submitApply(dto);
}
@ApiOperation(value = "办理(同意)")
@PostMapping("/complete")
public ResultBean complete(@Valid @RequestBody CompleteTechTitleApplyDto query) {
BusinessVariables bv = new BusinessVariables();
BeanUtil.copyProperties(query, bv);
bv.setModelId("");
return asTechTitleApplyService.complete(bv);
}
@ApiOperation(value = "获取上一个环节")
@GetMapping(value = "/getPreviousNodesForReject")
ResultBean<List<TechTitleApplyNodeVo>> getPreviousNodesForReject(@Valid @SpringQueryMap TechTitleApplyNodeQuery query) {
return asTechTitleApplyService.getPreviousNodesForReject(query);
}
@ApiOperation(value = "获取下一个环节")
@GetMapping(value = "/getNextNodesForSubmit")
ResultBean<List<TechTitleApplyNodeVo>> getNextNodesForSubmit(@Valid @SpringQueryMap TechTitleApplyNodeQuery query) {
return asTechTitleApplyService.getNextNodesForSubmit(query);
}
@ApiOperation(value = "驳回任务")
@PostMapping(value = "/reject")
public ResultBean taskReject(@Valid @RequestBody TechTitleApplyTaskQuery query) {
return asTechTitleApplyService.taskReject(query);
}
@ApiOperation(value = "撤回流程")
@PostMapping(value = "/revokeProcess")
public ResultBean revokeProcess(@Valid @RequestBody TechTitleApplyTaskQuery query) {
return asTechTitleApplyService.revokeProcess(query);
}
@ApiOperation(value = "终止任务")
@PostMapping(value = "/breakProcess")
public ResultBean breakProcess(@Valid @RequestBody TechTitleApplyTaskQuery query) {
return asTechTitleApplyService.breakProcess(query);
}
@ApiOperation(value = "加签")
@PostMapping(value = "/delegate")
@ResponseBody
public ResultBean delegate(@RequestBody TechTitleApplyDelegateQuery query) {
return asTechTitleApplyService.delegate(query);
}
}

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

@ -59,4 +59,12 @@ public class BaseGoodsSkuExtendRest {
ResultBean updateSalesPrice(@RequestParam("skuSid") String skuSid,@RequestParam("salesPrice") String salesPrice){
return baseGoodsSkuExtendService.updateSalesPrice(skuSid,salesPrice);
}
@ApiOperation("根据skuSid查询销售单价")
@PostMapping("/selSalesPrice")
ResultBean<String> selSalesPrice(@RequestParam("skuSid") String skuSid){
ResultBean rb = ResultBean.fireFail();
String price = baseGoodsSkuExtendService.selSalesPrice(skuSid);
return rb.success().setData(price);
}
}

4
yxt-base-biz/src/main/java/com/yxt/base/biz/base/basegoodsskuextend/BaseGoodsSkuExtendMapper.java

@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
/**
@ -23,4 +24,7 @@ public interface BaseGoodsSkuExtendMapper extends BaseMapper<BaseGoodsSkuExtend>
@Update("update base_goods_sku_extend set salesPrice = #{salesPrice} where goodsSkuSid = #{skuSid}")
void updateSalesPrice(@Param("skuSid") String skuSid, @Param("salesPrice") String salesPrice);
@Select("select salesPrice from base_goods_sku_extend where goodsSkuSid = #{skuSid}")
String selSalesPrice(@Param("skuSid") String skuSid);
}

14
yxt-base-biz/src/main/java/com/yxt/base/biz/base/basegoodsskuextend/BaseGoodsSkuExtendService.java

@ -4,7 +4,10 @@ import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateTime;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yxt.base.biz.base.basegoodssku.BaseGoodsSku;
import com.yxt.base.biz.base.basebrandinfo.BaseBrandInfoService;
import com.yxt.base.biz.base.basegoodsspudetail.BaseGoodsSpuDetailService;
import com.yxt.base.biz.base.basegoodstype.BaseGoodsTypeService;
import com.yxt.base.biz.base.basemanufacturer.BaseManufacturerService;
import com.yxt.common.base.config.component.FileUploadComponent;
import com.yxt.common.base.service.MybatisBaseService;
import com.yxt.common.base.utils.PagerUtil;
@ -12,15 +15,10 @@ import com.yxt.common.base.utils.StringUtils;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
import com.yxt.base.biz.base.basebrandinfo.BaseBrandInfoService;
import com.yxt.base.biz.base.basegoodsspudetail.BaseGoodsSpuDetailService;
import com.yxt.base.biz.base.basegoodstype.BaseGoodsTypeService;
import com.yxt.base.biz.base.basemanufacturer.BaseManufacturerService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.text.SimpleDateFormat;
import java.util.Collections;
import java.util.Date;
import java.util.List;
@ -146,4 +144,8 @@ public class BaseGoodsSkuExtendService extends MybatisBaseService<BaseGoodsSkuEx
baseMapper.updateSalesPrice(skuSid, salesPrice);
return rb.success();
}
public String selSalesPrice(String skuSid) {
return baseMapper.selSalesPrice(skuSid);
}
}

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

@ -0,0 +1,92 @@
package com.yxt.anrui.oa.api;
import com.yxt.anrui.oa.biz.adofficesuppliesapply.AdOfficeSuppliesApplyDetailVo;
import com.yxt.anrui.oa.biz.adofficesuppliesapply.AdOfficeSuppliesApplyDto;
import com.yxt.anrui.oa.biz.adofficesuppliesapply.AdOfficeSuppliesApplyService;
import com.yxt.anrui.oa.biz.adofficesuppliesapply.AdOfficeSuppliesApplyVo;
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.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.openfeign.SpringQueryMap;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
@Api(tags = "办公用品领用申请")
@RestController
@RequestMapping("v1/AdOfficeSuppliesApply")
public class AdOfficeSuppliesApplyRest {
@Autowired
private AdOfficeSuppliesApplyService adOfficeSuppliesApplyService;
@ApiOperation("初始化(新增或修改)")
@GetMapping({"/getInit", "/getInit/{sid}"})
public ResultBean<AdOfficeSuppliesApplyVo> getInit(
@PathVariable(value = "sid", required = false) String sid,
@RequestParam(value = "userSid", required = false) String userSid,
@RequestParam(value = "orgPath", required = false) String orgPath) {
ResultBean<AdOfficeSuppliesApplyVo> rb = ResultBean.fireFail();
if (sid == null || sid.isEmpty()) {
// 执行新增初始化
if (userSid == null || orgPath == null) {
return rb.setMsg("userSid和orgPath不能为空");
}
return adOfficeSuppliesApplyService.getSaveInit(userSid, orgPath);
} else {
// 执行修改初始化
return adOfficeSuppliesApplyService.getUpdateInit(sid);
}
}
@ApiOperation("新增或修改")
@PostMapping("/save")
public ResultBean save(@RequestBody AdOfficeSuppliesApplyDto dto) {
return adOfficeSuppliesApplyService.saveOrUpdateDto(dto);
}
@ApiOperation("详情")
@GetMapping("/details/{sid}")
ResultBean<AdOfficeSuppliesApplyDetailVo> details(@PathVariable("sid") String sid
, @RequestParam(value = "application", required = false) String application) {
return adOfficeSuppliesApplyService.details(sid,application);
}
@ApiOperation("根据sid批量删除")
@DeleteMapping("/delBySids")
public ResultBean delBySids(@RequestBody String[] sids) {
ResultBean rb = ResultBean.fireFail();
adOfficeSuppliesApplyService.delAll(sids);
return rb.success();
}
@ApiOperation("提交审批流程")
@PostMapping("/submit")
public ResultBean submit(@RequestBody AdOfficeSuppliesApplyDto dto) {
return adOfficeSuppliesApplyService.submit(dto);
}
@ApiOperation(value = "办理(同意)")
@PutMapping("/complete")
public ResultBean complete(@Valid @RequestBody CompleteDto dto) {
return adOfficeSuppliesApplyService.complete(dto);
}
@ApiOperation(value = "驳回任务")
@PutMapping(value = "/reject")
public ResultBean reject(@Valid @RequestBody TaskDto dto) {
return adOfficeSuppliesApplyService.reject(dto);
}
@ApiOperation("获取流程操作标题")
@GetMapping("/getFlowOperateTitle")
@ResponseBody
ResultBean<String> getFlowOperateTitle(@SpringQueryMap NodeQuery query) {
return adOfficeSuppliesApplyService.getFlowOperateTitle(query);
}
}

54
yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adbeverageacceptanceapply/AdBeverageAcceptanceApply.java

@ -0,0 +1,54 @@
/*********************************************************
*********************************************************
******************** *******************
************* ************
******* _oo0oo_ *******
*** o8888888o ***
* 88" . "88 *
* (| -_- |) *
* 0\ = /0 *
* ___/`---'\___ *
* .' \\| |// '. *
* / \\||| : |||// \ *
* / _||||| -:- |||||- \ *
* | | \\\ - /// | | *
* | \_| ''\---/'' |_/ | *
* \ .-\__ '-' ___/-. / *
* ___'. .' /--.--\ `. .'___ *
* ."" '< `.___\_<|>_/___.' >' "". *
* | | : `- \`.;`\ _ /`;.`/ - ` : | | *
* \ \ `_. \_ __\ /__ _/ .-` / / *
* =====`-.____`.___ \_____/___.-`___.-'===== *
* `=---=' *
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *
*********__佛祖保佑__永无BUG__验收通过__钞票多多__*********
*********************************************************/
package com.yxt.anrui.oa.biz.adbeverageacceptanceapply;
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;
@Data
@ApiModel(value = "集团用酒领用申请", description = "集团用酒领用申请")
@TableName("ad_beverage_acceptance_apply")
public class AdBeverageAcceptanceApply extends BaseEntity {
private static final long serialVersionUID = 1L;
@ApiModelProperty("基础表单sid")
private String formSid; // 基础表单sid
@ApiModelProperty("关联审批sid列表,英文逗号分隔")
private String linkFormSids; // 关联审批sid列表,英文逗号分隔
@ApiModelProperty("用途分类key")
private String useTypeKey; // 用途分类key
@ApiModelProperty("用途分类value")
private String useTypeValue; // 用途分类value
@ApiModelProperty("费用承担部门sid")
private String feesDeptSid; // 费用承担部门sid
@ApiModelProperty("费用承担部门")
private String feesDept; // 费用承担部门
@ApiModelProperty("具体用途")
private String specificUses; // 具体用途
}

41
yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adbeverageacceptanceapply/AdBeverageAcceptanceApplyDetailVo.java

@ -0,0 +1,41 @@
package com.yxt.anrui.oa.biz.adbeverageacceptanceapply;
import com.yxt.anrui.oa.biz.oaform.FormCommon;
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 AdBeverageAcceptanceApplyDetailVo extends OaFormCommonVo {
@ApiModelProperty("备注")
private String remarks;
@ApiModelProperty("用途分类key")
private String useTypeKey; // 用途分类key
@ApiModelProperty("用途分类value")
private String useTypeValue; // 用途分类value
@ApiModelProperty("费用承担部门sid")
private String feesDeptSid; // 费用承担部门sid
@ApiModelProperty("费用承担部门")
private String feesDept; // 费用承担部门
@ApiModelProperty("具体用途")
private String specificUses; // 具体用途
@ApiModelProperty("费用承担部门obj")
private FormCommon feesDeptObj; // 费用承担部门obj
@ApiModelProperty("用途分类obj")
private FormCommon useTypeObj; // 用途分类obj
@ApiModelProperty("图片")
private List<String> files = new ArrayList<>();
@ApiModelProperty("附件")
private List<String> appes = new ArrayList<>();
private List<FormCommon> list = new ArrayList<>(); //酒品明细
}

59
yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adbeverageacceptanceapply/AdBeverageAcceptanceApplyDto.java

@ -0,0 +1,59 @@
/*********************************************************
*********************************************************
******************** *******************
************* ************
******* _oo0oo_ *******
*** o8888888o ***
* 88" . "88 *
* (| -_- |) *
* 0\ = /0 *
* ___/`---'\___ *
* .' \\| |// '. *
* / \\||| : |||// \ *
* / _||||| -:- |||||- \ *
* | | \\\ - /// | | *
* | \_| ''\---/'' |_/ | *
* \ .-\__ '-' ___/-. / *
* ___'. .' /--.--\ `. .'___ *
* ."" '< `.___\_<|>_/___.' >' "". *
* | | : `- \`.;`\ _ /`;.`/ - ` : | | *
* \ \ `_. \_ __\ /__ _/ .-` / / *
* =====`-.____`.___ \_____/___.-`___.-'===== *
* `=---=' *
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *
*********__佛祖保佑__永无BUG__验收通过__钞票多多__*********
*********************************************************/
package com.yxt.anrui.oa.biz.adbeverageacceptanceapply;
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 AdBeverageAcceptanceApplyDto extends OaFormDto {
@ApiModelProperty("备注")
private String remarks;
private List<FormCommon> list = new ArrayList<>();
}

37
yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adbeverageacceptanceapply/AdBeverageAcceptanceApplyMapper.java

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

39
yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adbeverageacceptanceapply/AdBeverageAcceptanceApplyMapper.xml

@ -0,0 +1,39 @@
<?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.adofficesuppliesapply.AdOfficeSuppliesApplyMapper">
<!-- <where> ${ew.sqlSegment} </where>-->
<!-- ${ew.customSqlSegment} -->
<select id="selectBySid" resultType="int">
SELECT COUNT(*)
FROM ad_office_supplies_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
from ad_office_supplies_apply
where sid = #{sid}
</select>
<resultMap id="detailMap" type="com.yxt.anrui.oa.biz.adexpatriatesapply.AdExpatriatesApplyDetailVo">
<result column="remarks" property="remarks"/>
<collection property="list" ofType="com.yxt.anrui.oa.biz.adexpatriatesdetail.AdExpatriatesListDetailVo"
select="selectList" column="sid">
</collection>
</resultMap>
<select id="selectList" resultType="com.yxt.anrui.oa.biz.adexpatriatesdetail.AdExpatriatesListDetailVo">
select sid,
expatriatesName expatriatesValue,
expatriatesDeptName deptValue,
expatriatesPostName jobValue,
expatriatesHomeAddress,
expatriatesWorkAddress,
expatriatesDate
from ad_expatriates_detail
where mainSid = #{sid}
</select>
</mapper>

343
yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adbeverageacceptanceapply/AdBeverageAcceptanceApplyService.java

@ -0,0 +1,343 @@
/*********************************************************
*********************************************************
******************** *******************
************* ************
******* _oo0oo_ *******
*** o8888888o ***
* 88" . "88 *
* (| -_- |) *
* 0\ = /0 *
* ___/`---'\___ *
* .' \\| |// '. *
* / \\||| : |||// \ *
* / _||||| -:- |||||- \ *
* | | \\\ - /// | | *
* | \_| ''\---/'' |_/ | *
* \ .-\__ '-' ___/-. / *
* ___'. .' /--.--\ `. .'___ *
* ."" '< `.___\_<|>_/___.' >' "". *
* | | : `- \`.;`\ _ /`;.`/ - ` : | | *
* \ \ `_. \_ __\ /__ _/ .-` / / *
* =====`-.____`.___ \_____/___.-`___.-'===== *
* `=---=' *
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *
*********__佛祖保佑__永无BUG__验收通过__钞票多多__*********
*********************************************************/
package com.yxt.anrui.oa.biz.adbeverageacceptanceapply;
import cn.hutool.core.bean.BeanUtil;
import com.yxt.anrui.oa.biz.adofficesuppliesdetail.AdOfficeSuppliesDetailService;
import com.yxt.anrui.oa.biz.adofficesuppliesdetail.AdOfficeSuppliesDetailVo;
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.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.*;
@Service
public class AdBeverageAcceptanceApplyService extends MybatisBaseService<AdBeverageAcceptanceApplyMapper, AdBeverageAcceptanceApply> {
@Autowired
private OaAppendixService oaAppendixService;
@Autowired
private OaFormService oaFormService;
@Autowired
private AdOfficeSuppliesDetailService adOfficeSuppliesDetailService;
@Autowired
private SysOrganizationFeign sysOrganizationFeign;
public ResultBean<AdBeverageAcceptanceApplyVo> getSaveInit(String userSid, String orgPath) {
ResultBean<AdBeverageAcceptanceApplyVo> rb = ResultBean.fireFail();
AdBeverageAcceptanceApplyVo adOfficeSuppliesApplyVo = new AdBeverageAcceptanceApplyVo();
adOfficeSuppliesApplyVo.setCreateBySid(userSid);
adOfficeSuppliesApplyVo.setOrgSidPath(orgPath);
return rb.success().setData(adOfficeSuppliesApplyVo);
}
public ResultBean<AdBeverageAcceptanceApplyVo> getUpdateInit(String sid) {
ResultBean<AdBeverageAcceptanceApplyVo> rb = ResultBean.fireFail();
AdBeverageAcceptanceApplyVo adOfficeSuppliesApplyVo = new AdBeverageAcceptanceApplyVo();
AdBeverageAcceptanceApply adOfficeSuppliesApply = fetchBySid(sid);
if (adOfficeSuppliesApply == null) {
return rb.setMsg("该申请不存在");
}
OaForm oaForm = oaFormService.fetchBySid(sid);
adOfficeSuppliesApplyVo.setTaskId(oaForm.getTaskId());
adOfficeSuppliesApplyVo.setProcInsId(oaForm.getProcInstId());
//根据部门sid获取orgPath并赋值
SysOrganizationVo organizationVo = sysOrganizationFeign.fetchBySid(oaForm.getDeptSid()).getData();
String orgSidPath = organizationVo.getOrgSidPath();
adOfficeSuppliesApplyVo.setOrgSidPath(orgSidPath);
adOfficeSuppliesApplyVo.setCreateBySid(oaForm.getCreateBySid());
BeanUtil.copyProperties(adOfficeSuppliesApply, adOfficeSuppliesApplyVo);
List<AdOfficeSuppliesDetailVo> list = adOfficeSuppliesDetailService.getUpdateInit(sid);
list.removeAll(Collections.singleton(null));
List<FormCommon> officeObj = new ArrayList<>();
if (!list.isEmpty()) {
for (AdOfficeSuppliesDetailVo d : list) {
FormCommon formCommon = new FormCommon();
Map<String, Object> extra = new HashMap<>();
formCommon.setId(d.getInventorySid());
formCommon.setDictValue(d.getGoodsSpuName());
if (StringUtils.isNotBlank(d.getCount())) {
extra.put("count",d.getCount());
}
if (StringUtils.isNotBlank(d.getGoodsSkuOwnSpec())) {
extra.put("goodsSkuOwnSpec",d.getGoodsSkuOwnSpec());
}
if (StringUtils.isNotBlank(d.getGoodsSkuSid())) {
extra.put("goodsSkuSid",d.getGoodsSkuSid());
}
if (StringUtils.isNotBlank(d.getGoodsSpuSid())) {
extra.put("goodsSpuSid",d.getGoodsSpuSid());
}
if (StringUtils.isNotBlank(d.getUnit())) {
extra.put("unit",d.getUnit());
}
formCommon.setExtra(extra);
officeObj.add(formCommon);
}
}
adOfficeSuppliesApplyVo.setList(officeObj);
adOfficeSuppliesApplyVo.setSid(sid);
return rb.success().setData(adOfficeSuppliesApplyVo);
}
public ResultBean<String> saveOrUpdateDto(AdBeverageAcceptanceApplyDto dto) {
ResultBean<String> rb = ResultBean.fireFail();
String sid = dto.getSid();
List<FormCommon> list = dto.getList();
if (StringUtils.isBlank(sid)) {
// 新建操作
AdBeverageAcceptanceApply entity = new AdBeverageAcceptanceApply();
BeanUtil.copyProperties(dto, entity, "sid");
dto.setBillNo("BGYPLY");
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 {
// 更新操作
AdBeverageAcceptanceApply entity = fetchBySid(sid);
BeanUtil.copyProperties(dto, entity, "id", "sid");
baseMapper.updateById(entity);
}
adOfficeSuppliesDetailService.saveDetails(list, sid);
return rb.success().setData(sid);
}
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<AdBeverageAcceptanceApplyDetailVo> details(String sid, String application) {
ResultBean<AdBeverageAcceptanceApplyDetailVo> rb = ResultBean.fireFail();
AdBeverageAcceptanceApplyDetailVo adOfficeSuppliesApplyDetailVo = baseMapper.details(sid);
if (adOfficeSuppliesApplyDetailVo == null) {
return rb.setMsg("该申请不存在");
}
//基础字段赋值
BeanUtil.copyProperties(oaFormService.getDetails(sid), adOfficeSuppliesApplyDetailVo);
List<FormCommon> obj = new ArrayList<>();
List<AdOfficeSuppliesDetailVo> detailVos = adOfficeSuppliesDetailService.getUpdateInit(sid);
if (!detailVos.isEmpty()) {
for (AdOfficeSuppliesDetailVo d : detailVos) {
FormCommon formCommon = new FormCommon();
Map<String, Object> extra = new HashMap<>();
formCommon.setId(d.getInventorySid());
formCommon.setDictValue(d.getGoodsSpuName());
if (StringUtils.isNotBlank(d.getCount())) {
extra.put("count",d.getCount());
}
if (StringUtils.isNotBlank(d.getGoodsSkuOwnSpec())) {
extra.put("goodsSkuOwnSpec",d.getGoodsSkuOwnSpec());
}
if (StringUtils.isNotBlank(d.getGoodsSkuSid())) {
extra.put("goodsSkuSid",d.getGoodsSkuSid());
}
if (StringUtils.isNotBlank(d.getGoodsSpuSid())) {
extra.put("goodsSpuSid",d.getGoodsSpuSid());
}
if (StringUtils.isNotBlank(d.getUnit())) {
extra.put("unit",d.getUnit());
}
formCommon.setExtra(extra);
obj.add(formCommon);
}
}
adOfficeSuppliesApplyDetailVo.setList(obj);
return rb.success().setData(adOfficeSuppliesApplyDetailVo);
}
/**
* 提交
*
* @param dto
* @return
*/
public ResultBean submit(AdBeverageAcceptanceApplyDto 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.BGYPLYAPPLY.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);
AdBeverageAcceptanceApply adOfficeSuppliesApply = 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;
}
}

53
yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adbeverageacceptanceapply/AdBeverageAcceptanceApplyVo.java

@ -0,0 +1,53 @@
/*********************************************************
*********************************************************
******************** *******************
************* ************
******* _oo0oo_ *******
*** o8888888o ***
* 88" . "88 *
* (| -_- |) *
* 0\ = /0 *
* ___/`---'\___ *
* .' \\| |// '. *
* / \\||| : |||// \ *
* / _||||| -:- |||||- \ *
* | | \\\ - /// | | *
* | \_| ''\---/'' |_/ | *
* \ .-\__ '-' ___/-. / *
* ___'. .' /--.--\ `. .'___ *
* ."" '< `.___\_<|>_/___.' >' "". *
* | | : `- \`.;`\ _ /`;.`/ - ` : | | *
* \ \ `_. \_ __\ /__ _/ .-` / / *
* =====`-.____`.___ \_____/___.-`___.-'===== *
* `=---=' *
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *
*********__佛祖保佑__永无BUG__验收通过__钞票多多__*********
*********************************************************/
package com.yxt.anrui.oa.biz.adbeverageacceptanceapply;
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 AdBeverageAcceptanceApplyVo {
private String sid;
/* private String userSid;
private String orgPath;*/
private String orgSidPath;
private String createBySid;
@ApiModelProperty("备注")
private String remarks;
private List<FormCommon> list = new ArrayList<>();
private String taskId;
@ApiModelProperty("流程实例id")
private String procInsId;
// private String testPage;
}

77
yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adbeverageacceptancedetail/AdBeverageAcceptanceDetail.java

@ -0,0 +1,77 @@
/*********************************************************
*********************************************************
******************** *******************
************* ************
******* _oo0oo_ *******
*** o8888888o ***
* 88" . "88 *
* (| -_- |) *
* 0\ = /0 *
* ___/`---'\___ *
* .' \\| |// '. *
* / \\||| : |||// \ *
* / _||||| -:- |||||- \ *
* | | \\\ - /// | | *
* | \_| ''\---/'' |_/ | *
* \ .-\__ '-' ___/-. / *
* ___'. .' /--.--\ `. .'___ *
* ."" '< `.___\_<|>_/___.' >' "". *
* | | : `- \`.;`\ _ /`;.`/ - ` : | | *
* \ \ `_. \_ __\ /__ _/ .-` / / *
* =====`-.____`.___ \_____/___.-`___.-'===== *
* `=---=' *
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *
*********__佛祖保佑__永无BUG__验收通过__钞票多多__*********
*********************************************************/
package com.yxt.anrui.oa.biz.adbeverageacceptancedetail;
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;
/**
* Project: yxt-oa(认定人员) <br/>
* File: AdExpatriatesDetail.java <br/>
* Class: com.yxt.anrui.oa.api.adexpatriatesdetail.AdExpatriatesDetail <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 = "集团用酒领用申请列表")
@TableName("ad_beverage_acceptance_detail")
public class AdBeverageAcceptanceDetail extends BaseEntity {
private static final long serialVersionUID = 1L;
@ApiModelProperty("申请sid")
private String mainSid; // 申请sid
@ApiModelProperty("物品基础信息Sid")
private String goodsSpuSid; // 物品基础信息Sid
@ApiModelProperty("商品名称")
private String goodsSpuName; // 商品名称
@ApiModelProperty("物品Skusid")
private String goodsSkuSid; // 物品Skusid
@ApiModelProperty("规格型号")
private String goodsSkuOwnSpec; // 规格型号
@ApiModelProperty("计量单位")
private String unit; // 计量单位
@ApiModelProperty("数量")
private BigDecimal count; // 库存数量
@ApiModelProperty("库存sid")
private String inventorySid; // 库存sid
@ApiModelProperty("单价")
private BigDecimal price; // 单价
@ApiModelProperty("合计金额")
private BigDecimal priceTotal; // 合计金额
}

70
yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adbeverageacceptancedetail/AdBeverageAcceptanceDetailDto.java

@ -0,0 +1,70 @@
/*********************************************************
*********************************************************
******************** *******************
************* ************
******* _oo0oo_ *******
*** o8888888o ***
* 88" . "88 *
* (| -_- |) *
* 0\ = /0 *
* ___/`---'\___ *
* .' \\| |// '. *
* / \\||| : |||// \ *
* / _||||| -:- |||||- \ *
* | | \\\ - /// | | *
* | \_| ''\---/'' |_/ | *
* \ .-\__ '-' ___/-. / *
* ___'. .' /--.--\ `. .'___ *
* ."" '< `.___\_<|>_/___.' >' "". *
* | | : `- \`.;`\ _ /`;.`/ - ` : | | *
* \ \ `_. \_ __\ /__ _/ .-` / / *
* =====`-.____`.___ \_____/___.-`___.-'===== *
* `=---=' *
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *
*********__佛祖保佑__永无BUG__验收通过__钞票多多__*********
*********************************************************/
package com.yxt.anrui.oa.biz.adbeverageacceptancedetail;
import com.yxt.anrui.oa.biz.oaform.FormCommon;
import com.yxt.common.core.dto.Dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* Project: yxt-oa(认定人员) <br/>
* File: AdExpatriatesDetailDto.java <br/>
* Class: com.yxt.anrui.oa.api.adexpatriatesdetail.AdExpatriatesDetailDto <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 AdBeverageAcceptanceDetailDto implements Dto {
@ApiModelProperty("驻外人员")
private FormCommon expatriatesObj;
private String expatriatesKey;
private String expatriatesValue;
@ApiModelProperty("驻外人员部门")
private FormCommon deptObj;
private String deptKey;
private String deptValue;
@ApiModelProperty("驻外人员职位")
private FormCommon jobObj;
private String jobKey;
private String jobValue;
@ApiModelProperty("驻外人员家庭常住地址")
private String expatriatesHomeAddress;
@ApiModelProperty("驻外人员工作地址")
private String expatriatesWorkAddress;
@ApiModelProperty("驻外人员开始驻外时间")
private String expatriatesDate;
}

66
yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adbeverageacceptancedetail/AdBeverageAcceptanceDetailListDetailVo.java

@ -0,0 +1,66 @@
/*********************************************************
*********************************************************
******************** *******************
************* ************
******* _oo0oo_ *******
*** o8888888o ***
* 88" . "88 *
* (| -_- |) *
* 0\ = /0 *
* ___/`---'\___ *
* .' \\| |// '. *
* / \\||| : |||// \ *
* / _||||| -:- |||||- \ *
* | | \\\ - /// | | *
* | \_| ''\---/'' |_/ | *
* \ .-\__ '-' ___/-. / *
* ___'. .' /--.--\ `. .'___ *
* ."" '< `.___\_<|>_/___.' >' "". *
* | | : `- \`.;`\ _ /`;.`/ - ` : | | *
* \ \ `_. \_ __\ /__ _/ .-` / / *
* =====`-.____`.___ \_____/___.-`___.-'===== *
* `=---=' *
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *
*********__佛祖保佑__永无BUG__验收通过__钞票多多__*********
*********************************************************/
package com.yxt.anrui.oa.biz.adbeverageacceptancedetail;
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 AdBeverageAcceptanceDetailListDetailVo implements Vo {
private String sid;
@ApiModelProperty("驻外人员")
private String expatriatesValue;
@ApiModelProperty("驻外人员部门")
private String deptValue;
@ApiModelProperty("驻外人员职位")
private String jobValue;
@ApiModelProperty("驻外人员家庭常住地址")
private String expatriatesHomeAddress;
@ApiModelProperty("驻外人员工作地址")
private String expatriatesWorkAddress;
@ApiModelProperty("驻外人员开始驻外时间")
private String expatriatesDate;
}

41
yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adbeverageacceptancedetail/AdBeverageAcceptanceDetailMapper.java

@ -0,0 +1,41 @@
/*********************************************************
*********************************************************
******************** *******************
************* ************
******* _oo0oo_ *******
*** o8888888o ***
* 88" . "88 *
* (| -_- |) *
* 0\ = /0 *
* ___/`---'\___ *
* .' \\| |// '. *
* / \\||| : |||// \ *
* / _||||| -:- |||||- \ *
* | | \\\ - /// | | *
* | \_| ''\---/'' |_/ | *
* \ .-\__ '-' ___/-. / *
* ___'. .' /--.--\ `. .'___ *
* ."" '< `.___\_<|>_/___.' >' "". *
* | | : `- \`.;`\ _ /`;.`/ - ` : | | *
* \ \ `_. \_ __\ /__ _/ .-` / / *
* =====`-.____`.___ \_____/___.-`___.-'===== *
* `=---=' *
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *
*********__佛祖保佑__永无BUG__验收通过__钞票多多__*********
*********************************************************/
package com.yxt.anrui.oa.biz.adbeverageacceptancedetail;
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 AdBeverageAcceptanceDetailMapper extends BaseMapper<AdBeverageAcceptanceDetail> {
@Select("select * from ad_office_supplies_detail where mainSid = #{mainSid}")
List<AdBeverageAcceptanceDetail> selectByMainSid(String mainSid);
List<AdBeverageAcceptanceDetailVo> getUpdateInit(String sid);
}

9
yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adbeverageacceptancedetail/AdBeverageAcceptanceDetailMapper.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.adofficesuppliesdetail.AdOfficeSuppliesDetailMapper">
<select id="getUpdateInit" resultType="com.yxt.anrui.oa.biz.adofficesuppliesdetail.AdOfficeSuppliesDetailVo">
select *
from ad_office_supplies_detail
where mainSid = #{sid}
</select>
</mapper>

87
yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adbeverageacceptancedetail/AdBeverageAcceptanceDetailService.java

@ -0,0 +1,87 @@
/*********************************************************
*********************************************************
******************** *******************
************* ************
******* _oo0oo_ *******
*** o8888888o ***
* 88" . "88 *
* (| -_- |) *
* 0\ = /0 *
* ___/`---'\___ *
* .' \\| |// '. *
* / \\||| : |||// \ *
* / _||||| -:- |||||- \ *
* | | \\\ - /// | | *
* | \_| ''\---/'' |_/ | *
* \ .-\__ '-' ___/-. / *
* ___'. .' /--.--\ `. .'___ *
* ."" '< `.___\_<|>_/___.' >' "". *
* | | : `- \`.;`\ _ /`;.`/ - ` : | | *
* \ \ `_. \_ __\ /__ _/ .-` / / *
* =====`-.____`.___ \_____/___.-`___.-'===== *
* `=---=' *
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *
*********__佛祖保佑__永无BUG__验收通过__钞票多多__*********
*********************************************************/
package com.yxt.anrui.oa.biz.adbeverageacceptancedetail;
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.math.BigDecimal;
import java.util.Collections;
import java.util.List;
import java.util.Map;
@Service
public class AdBeverageAcceptanceDetailService extends MybatisBaseService<AdBeverageAcceptanceDetailMapper, AdBeverageAcceptanceDetail> {
public void saveDetails(List<FormCommon> list, String sid) {
//根据sid查询明细并删除
List<AdBeverageAcceptanceDetail> 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(f -> {
AdBeverageAcceptanceDetail detail = new AdBeverageAcceptanceDetail();
detail.setMainSid(sid);
detail.setInventorySid(f.getId());
detail.setGoodsSpuName(f.getDictValue());
if (null != f.getExtra()) {
Map<String, Object> e = f.getExtra();
for (Map.Entry <String,Object> entry : e.entrySet()) {
if (StringUtils.isNotBlank((String)entry.getValue())) {
if (entry.getKey().equals("count")) {
detail.setCount(new BigDecimal((String)entry.getValue()));
}
if (entry.getKey().equals("goodsSkuOwnSpec")) {
detail.setGoodsSkuOwnSpec((String)entry.getValue());
}
if (entry.getKey().equals("goodsSkuSid")) {
detail.setGoodsSkuSid((String)entry.getValue());
}
if (entry.getKey().equals("goodsSpuSid")) {
detail.setGoodsSpuSid((String)entry.getValue());
}
if (entry.getKey().equals("unit")) {
detail.setUnit((String)entry.getValue());
}
}
}
}
baseMapper.insert(detail);
});
}
}
public List<AdBeverageAcceptanceDetailVo> getUpdateInit(String sid) {
return baseMapper.getUpdateInit(sid);
}
}

67
yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adbeverageacceptancedetail/AdBeverageAcceptanceDetailVo.java

@ -0,0 +1,67 @@
/*********************************************************
*********************************************************
******************** *******************
************* ************
******* _oo0oo_ *******
*** o8888888o ***
* 88" . "88 *
* (| -_- |) *
* 0\ = /0 *
* ___/`---'\___ *
* .' \\| |// '. *
* / \\||| : |||// \ *
* / _||||| -:- |||||- \ *
* | | \\\ - /// | | *
* | \_| ''\---/'' |_/ | *
* \ .-\__ '-' ___/-. / *
* ___'. .' /--.--\ `. .'___ *
* ."" '< `.___\_<|>_/___.' >' "". *
* | | : `- \`.;`\ _ /`;.`/ - ` : | | *
* \ \ `_. \_ __\ /__ _/ .-` / / *
* =====`-.____`.___ \_____/___.-`___.-'===== *
* `=---=' *
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *
*********__佛祖保佑__永无BUG__验收通过__钞票多多__*********
*********************************************************/
package com.yxt.anrui.oa.biz.adbeverageacceptancedetail;
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 AdBeverageAcceptanceDetailVo implements Vo {
private String sid;
@ApiModelProperty("物品基础信息Sid")
private String goodsSpuSid; // 物品基础信息Sid
@ApiModelProperty("商品名称")
private String goodsSpuName; // 商品名称
@ApiModelProperty("物品Skusid")
private String goodsSkuSid; // 物品Skusid
@ApiModelProperty("规格型号")
private String goodsSkuOwnSpec; // 规格型号
@ApiModelProperty("计量单位")
private String unit; // 计量单位
@ApiModelProperty("库存数量")
private String count; // 库存数量
@ApiModelProperty("库存sid")
private String inventorySid; // 库存sid
}

44
yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adofficesuppliesapply/AdOfficeSuppliesApply.java

@ -0,0 +1,44 @@
/*********************************************************
*********************************************************
******************** *******************
************* ************
******* _oo0oo_ *******
*** o8888888o ***
* 88" . "88 *
* (| -_- |) *
* 0\ = /0 *
* ___/`---'\___ *
* .' \\| |// '. *
* / \\||| : |||// \ *
* / _||||| -:- |||||- \ *
* | | \\\ - /// | | *
* | \_| ''\---/'' |_/ | *
* \ .-\__ '-' ___/-. / *
* ___'. .' /--.--\ `. .'___ *
* ."" '< `.___\_<|>_/___.' >' "". *
* | | : `- \`.;`\ _ /`;.`/ - ` : | | *
* \ \ `_. \_ __\ /__ _/ .-` / / *
* =====`-.____`.___ \_____/___.-`___.-'===== *
* `=---=' *
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *
*********__佛祖保佑__永无BUG__验收通过__钞票多多__*********
*********************************************************/
package com.yxt.anrui.oa.biz.adofficesuppliesapply;
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;
@Data
@ApiModel(value = "办公用品领用", description = "办公用品领用")
@TableName("ad_office_supplies_apply")
public class AdOfficeSuppliesApply extends BaseEntity {
private static final long serialVersionUID = 1L;
@ApiModelProperty("基础表单sid")
private String formSid; // 基础表单sid
}

23
yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adofficesuppliesapply/AdOfficeSuppliesApplyDetailVo.java

@ -0,0 +1,23 @@
package com.yxt.anrui.oa.biz.adofficesuppliesapply;
import com.yxt.anrui.oa.biz.oaform.FormCommon;
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 AdOfficeSuppliesApplyDetailVo extends OaFormCommonVo {
@ApiModelProperty("备注")
private String remarks;
private List<FormCommon> list = new ArrayList<>();
}

59
yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adofficesuppliesapply/AdOfficeSuppliesApplyDto.java

@ -0,0 +1,59 @@
/*********************************************************
*********************************************************
******************** *******************
************* ************
******* _oo0oo_ *******
*** o8888888o ***
* 88" . "88 *
* (| -_- |) *
* 0\ = /0 *
* ___/`---'\___ *
* .' \\| |// '. *
* / \\||| : |||// \ *
* / _||||| -:- |||||- \ *
* | | \\\ - /// | | *
* | \_| ''\---/'' |_/ | *
* \ .-\__ '-' ___/-. / *
* ___'. .' /--.--\ `. .'___ *
* ."" '< `.___\_<|>_/___.' >' "". *
* | | : `- \`.;`\ _ /`;.`/ - ` : | | *
* \ \ `_. \_ __\ /__ _/ .-` / / *
* =====`-.____`.___ \_____/___.-`___.-'===== *
* `=---=' *
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *
*********__佛祖保佑__永无BUG__验收通过__钞票多多__*********
*********************************************************/
package com.yxt.anrui.oa.biz.adofficesuppliesapply;
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 AdOfficeSuppliesApplyDto extends OaFormDto {
@ApiModelProperty("备注")
private String remarks;
private List<FormCommon> list = new ArrayList<>();
}

37
yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adofficesuppliesapply/AdOfficeSuppliesApplyMapper.java

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

39
yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adofficesuppliesapply/AdOfficeSuppliesApplyMapper.xml

@ -0,0 +1,39 @@
<?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.adofficesuppliesapply.AdOfficeSuppliesApplyMapper">
<!-- <where> ${ew.sqlSegment} </where>-->
<!-- ${ew.customSqlSegment} -->
<select id="selectBySid" resultType="int">
SELECT COUNT(*)
FROM ad_office_supplies_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
from ad_office_supplies_apply
where sid = #{sid}
</select>
<resultMap id="detailMap" type="com.yxt.anrui.oa.biz.adexpatriatesapply.AdExpatriatesApplyDetailVo">
<result column="remarks" property="remarks"/>
<collection property="list" ofType="com.yxt.anrui.oa.biz.adexpatriatesdetail.AdExpatriatesListDetailVo"
select="selectList" column="sid">
</collection>
</resultMap>
<select id="selectList" resultType="com.yxt.anrui.oa.biz.adexpatriatesdetail.AdExpatriatesListDetailVo">
select sid,
expatriatesName expatriatesValue,
expatriatesDeptName deptValue,
expatriatesPostName jobValue,
expatriatesHomeAddress,
expatriatesWorkAddress,
expatriatesDate
from ad_expatriates_detail
where mainSid = #{sid}
</select>
</mapper>

343
yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adofficesuppliesapply/AdOfficeSuppliesApplyService.java

@ -0,0 +1,343 @@
/*********************************************************
*********************************************************
******************** *******************
************* ************
******* _oo0oo_ *******
*** o8888888o ***
* 88" . "88 *
* (| -_- |) *
* 0\ = /0 *
* ___/`---'\___ *
* .' \\| |// '. *
* / \\||| : |||// \ *
* / _||||| -:- |||||- \ *
* | | \\\ - /// | | *
* | \_| ''\---/'' |_/ | *
* \ .-\__ '-' ___/-. / *
* ___'. .' /--.--\ `. .'___ *
* ."" '< `.___\_<|>_/___.' >' "". *
* | | : `- \`.;`\ _ /`;.`/ - ` : | | *
* \ \ `_. \_ __\ /__ _/ .-` / / *
* =====`-.____`.___ \_____/___.-`___.-'===== *
* `=---=' *
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *
*********__佛祖保佑__永无BUG__验收通过__钞票多多__*********
*********************************************************/
package com.yxt.anrui.oa.biz.adofficesuppliesapply;
import cn.hutool.core.bean.BeanUtil;
import com.yxt.anrui.oa.biz.adofficesuppliesdetail.AdOfficeSuppliesDetailService;
import com.yxt.anrui.oa.biz.adofficesuppliesdetail.AdOfficeSuppliesDetailVo;
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.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.*;
@Service
public class AdOfficeSuppliesApplyService extends MybatisBaseService<AdOfficeSuppliesApplyMapper, AdOfficeSuppliesApply> {
@Autowired
private OaAppendixService oaAppendixService;
@Autowired
private OaFormService oaFormService;
@Autowired
private AdOfficeSuppliesDetailService adOfficeSuppliesDetailService;
@Autowired
private SysOrganizationFeign sysOrganizationFeign;
public ResultBean<AdOfficeSuppliesApplyVo> getSaveInit(String userSid, String orgPath) {
ResultBean<AdOfficeSuppliesApplyVo> rb = ResultBean.fireFail();
AdOfficeSuppliesApplyVo adOfficeSuppliesApplyVo = new AdOfficeSuppliesApplyVo();
adOfficeSuppliesApplyVo.setCreateBySid(userSid);
adOfficeSuppliesApplyVo.setOrgSidPath(orgPath);
return rb.success().setData(adOfficeSuppliesApplyVo);
}
public ResultBean<AdOfficeSuppliesApplyVo> getUpdateInit(String sid) {
ResultBean<AdOfficeSuppliesApplyVo> rb = ResultBean.fireFail();
AdOfficeSuppliesApplyVo adOfficeSuppliesApplyVo = new AdOfficeSuppliesApplyVo();
AdOfficeSuppliesApply adOfficeSuppliesApply = fetchBySid(sid);
if (adOfficeSuppliesApply == null) {
return rb.setMsg("该申请不存在");
}
OaForm oaForm = oaFormService.fetchBySid(sid);
adOfficeSuppliesApplyVo.setTaskId(oaForm.getTaskId());
adOfficeSuppliesApplyVo.setProcInsId(oaForm.getProcInstId());
//根据部门sid获取orgPath并赋值
SysOrganizationVo organizationVo = sysOrganizationFeign.fetchBySid(oaForm.getDeptSid()).getData();
String orgSidPath = organizationVo.getOrgSidPath();
adOfficeSuppliesApplyVo.setOrgSidPath(orgSidPath);
adOfficeSuppliesApplyVo.setCreateBySid(oaForm.getCreateBySid());
BeanUtil.copyProperties(adOfficeSuppliesApply, adOfficeSuppliesApplyVo);
List<AdOfficeSuppliesDetailVo> list = adOfficeSuppliesDetailService.getUpdateInit(sid);
list.removeAll(Collections.singleton(null));
List<FormCommon> officeObj = new ArrayList<>();
if (!list.isEmpty()) {
for (AdOfficeSuppliesDetailVo d : list) {
FormCommon formCommon = new FormCommon();
Map<String, Object> extra = new HashMap<>();
formCommon.setId(d.getInventorySid());
formCommon.setDictValue(d.getGoodsSpuName());
if (StringUtils.isNotBlank(d.getCount())) {
extra.put("count",d.getCount());
}
if (StringUtils.isNotBlank(d.getGoodsSkuOwnSpec())) {
extra.put("goodsSkuOwnSpec",d.getGoodsSkuOwnSpec());
}
if (StringUtils.isNotBlank(d.getGoodsSkuSid())) {
extra.put("goodsSkuSid",d.getGoodsSkuSid());
}
if (StringUtils.isNotBlank(d.getGoodsSpuSid())) {
extra.put("goodsSpuSid",d.getGoodsSpuSid());
}
if (StringUtils.isNotBlank(d.getUnit())) {
extra.put("unit",d.getUnit());
}
formCommon.setExtra(extra);
officeObj.add(formCommon);
}
}
adOfficeSuppliesApplyVo.setList(officeObj);
adOfficeSuppliesApplyVo.setSid(sid);
return rb.success().setData(adOfficeSuppliesApplyVo);
}
public ResultBean<String> saveOrUpdateDto(AdOfficeSuppliesApplyDto dto) {
ResultBean<String> rb = ResultBean.fireFail();
String sid = dto.getSid();
List<FormCommon> list = dto.getList();
if (StringUtils.isBlank(sid)) {
// 新建操作
AdOfficeSuppliesApply entity = new AdOfficeSuppliesApply();
BeanUtil.copyProperties(dto, entity, "sid");
dto.setBillNo("BGYPLY");
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 {
// 更新操作
AdOfficeSuppliesApply entity = fetchBySid(sid);
BeanUtil.copyProperties(dto, entity, "id", "sid");
baseMapper.updateById(entity);
}
adOfficeSuppliesDetailService.saveDetails(list, sid);
return rb.success().setData(sid);
}
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<AdOfficeSuppliesApplyDetailVo> details(String sid, String application) {
ResultBean<AdOfficeSuppliesApplyDetailVo> rb = ResultBean.fireFail();
AdOfficeSuppliesApplyDetailVo adOfficeSuppliesApplyDetailVo = baseMapper.details(sid);
if (adOfficeSuppliesApplyDetailVo == null) {
return rb.setMsg("该申请不存在");
}
//基础字段赋值
BeanUtil.copyProperties(oaFormService.getDetails(sid), adOfficeSuppliesApplyDetailVo);
List<FormCommon> obj = new ArrayList<>();
List<AdOfficeSuppliesDetailVo> detailVos = adOfficeSuppliesDetailService.getUpdateInit(sid);
if (!detailVos.isEmpty()) {
for (AdOfficeSuppliesDetailVo d : detailVos) {
FormCommon formCommon = new FormCommon();
Map<String, Object> extra = new HashMap<>();
formCommon.setId(d.getInventorySid());
formCommon.setDictValue(d.getGoodsSpuName());
if (StringUtils.isNotBlank(d.getCount())) {
extra.put("count",d.getCount());
}
if (StringUtils.isNotBlank(d.getGoodsSkuOwnSpec())) {
extra.put("goodsSkuOwnSpec",d.getGoodsSkuOwnSpec());
}
if (StringUtils.isNotBlank(d.getGoodsSkuSid())) {
extra.put("goodsSkuSid",d.getGoodsSkuSid());
}
if (StringUtils.isNotBlank(d.getGoodsSpuSid())) {
extra.put("goodsSpuSid",d.getGoodsSpuSid());
}
if (StringUtils.isNotBlank(d.getUnit())) {
extra.put("unit",d.getUnit());
}
formCommon.setExtra(extra);
obj.add(formCommon);
}
}
adOfficeSuppliesApplyDetailVo.setList(obj);
return rb.success().setData(adOfficeSuppliesApplyDetailVo);
}
/**
* 提交
*
* @param dto
* @return
*/
public ResultBean submit(AdOfficeSuppliesApplyDto 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.BGYPLYAPPLY.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);
AdOfficeSuppliesApply adOfficeSuppliesApply = 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;
}
}

53
yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adofficesuppliesapply/AdOfficeSuppliesApplyVo.java

@ -0,0 +1,53 @@
/*********************************************************
*********************************************************
******************** *******************
************* ************
******* _oo0oo_ *******
*** o8888888o ***
* 88" . "88 *
* (| -_- |) *
* 0\ = /0 *
* ___/`---'\___ *
* .' \\| |// '. *
* / \\||| : |||// \ *
* / _||||| -:- |||||- \ *
* | | \\\ - /// | | *
* | \_| ''\---/'' |_/ | *
* \ .-\__ '-' ___/-. / *
* ___'. .' /--.--\ `. .'___ *
* ."" '< `.___\_<|>_/___.' >' "". *
* | | : `- \`.;`\ _ /`;.`/ - ` : | | *
* \ \ `_. \_ __\ /__ _/ .-` / / *
* =====`-.____`.___ \_____/___.-`___.-'===== *
* `=---=' *
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *
*********__佛祖保佑__永无BUG__验收通过__钞票多多__*********
*********************************************************/
package com.yxt.anrui.oa.biz.adofficesuppliesapply;
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 AdOfficeSuppliesApplyVo {
private String sid;
/* private String userSid;
private String orgPath;*/
private String orgSidPath;
private String createBySid;
@ApiModelProperty("备注")
private String remarks;
private List<FormCommon> list = new ArrayList<>();
private String taskId;
@ApiModelProperty("流程实例id")
private String procInsId;
// private String testPage;
}

73
yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adofficesuppliesdetail/AdOfficeSuppliesDetail.java

@ -0,0 +1,73 @@
/*********************************************************
*********************************************************
******************** *******************
************* ************
******* _oo0oo_ *******
*** o8888888o ***
* 88" . "88 *
* (| -_- |) *
* 0\ = /0 *
* ___/`---'\___ *
* .' \\| |// '. *
* / \\||| : |||// \ *
* / _||||| -:- |||||- \ *
* | | \\\ - /// | | *
* | \_| ''\---/'' |_/ | *
* \ .-\__ '-' ___/-. / *
* ___'. .' /--.--\ `. .'___ *
* ."" '< `.___\_<|>_/___.' >' "". *
* | | : `- \`.;`\ _ /`;.`/ - ` : | | *
* \ \ `_. \_ __\ /__ _/ .-` / / *
* =====`-.____`.___ \_____/___.-`___.-'===== *
* `=---=' *
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *
*********__佛祖保佑__永无BUG__验收通过__钞票多多__*********
*********************************************************/
package com.yxt.anrui.oa.biz.adofficesuppliesdetail;
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;
/**
* Project: yxt-oa(认定人员) <br/>
* File: AdExpatriatesDetail.java <br/>
* Class: com.yxt.anrui.oa.api.adexpatriatesdetail.AdExpatriatesDetail <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 = "办公用品领用列表")
@TableName("ad_office_supplies_detail")
public class AdOfficeSuppliesDetail extends BaseEntity {
private static final long serialVersionUID = 1L;
@ApiModelProperty("申请sid")
private String mainSid; // 申请sid
@ApiModelProperty("物品基础信息Sid")
private String goodsSpuSid; // 物品基础信息Sid
@ApiModelProperty("商品名称")
private String goodsSpuName; // 商品名称
@ApiModelProperty("物品Skusid")
private String goodsSkuSid; // 物品Skusid
@ApiModelProperty("规格型号")
private String goodsSkuOwnSpec; // 规格型号
@ApiModelProperty("计量单位")
private String unit; // 计量单位
@ApiModelProperty("数量")
private BigDecimal count; // 库存数量
@ApiModelProperty("库存sid")
private String inventorySid; // 库存sid
}

70
yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adofficesuppliesdetail/AdOfficeSuppliesDetailDto.java

@ -0,0 +1,70 @@
/*********************************************************
*********************************************************
******************** *******************
************* ************
******* _oo0oo_ *******
*** o8888888o ***
* 88" . "88 *
* (| -_- |) *
* 0\ = /0 *
* ___/`---'\___ *
* .' \\| |// '. *
* / \\||| : |||// \ *
* / _||||| -:- |||||- \ *
* | | \\\ - /// | | *
* | \_| ''\---/'' |_/ | *
* \ .-\__ '-' ___/-. / *
* ___'. .' /--.--\ `. .'___ *
* ."" '< `.___\_<|>_/___.' >' "". *
* | | : `- \`.;`\ _ /`;.`/ - ` : | | *
* \ \ `_. \_ __\ /__ _/ .-` / / *
* =====`-.____`.___ \_____/___.-`___.-'===== *
* `=---=' *
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *
*********__佛祖保佑__永无BUG__验收通过__钞票多多__*********
*********************************************************/
package com.yxt.anrui.oa.biz.adofficesuppliesdetail;
import com.yxt.anrui.oa.biz.oaform.FormCommon;
import com.yxt.common.core.dto.Dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* Project: yxt-oa(认定人员) <br/>
* File: AdExpatriatesDetailDto.java <br/>
* Class: com.yxt.anrui.oa.api.adexpatriatesdetail.AdExpatriatesDetailDto <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 AdOfficeSuppliesDetailDto implements Dto {
@ApiModelProperty("驻外人员")
private FormCommon expatriatesObj;
private String expatriatesKey;
private String expatriatesValue;
@ApiModelProperty("驻外人员部门")
private FormCommon deptObj;
private String deptKey;
private String deptValue;
@ApiModelProperty("驻外人员职位")
private FormCommon jobObj;
private String jobKey;
private String jobValue;
@ApiModelProperty("驻外人员家庭常住地址")
private String expatriatesHomeAddress;
@ApiModelProperty("驻外人员工作地址")
private String expatriatesWorkAddress;
@ApiModelProperty("驻外人员开始驻外时间")
private String expatriatesDate;
}

41
yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adofficesuppliesdetail/AdOfficeSuppliesDetailMapper.java

@ -0,0 +1,41 @@
/*********************************************************
*********************************************************
******************** *******************
************* ************
******* _oo0oo_ *******
*** o8888888o ***
* 88" . "88 *
* (| -_- |) *
* 0\ = /0 *
* ___/`---'\___ *
* .' \\| |// '. *
* / \\||| : |||// \ *
* / _||||| -:- |||||- \ *
* | | \\\ - /// | | *
* | \_| ''\---/'' |_/ | *
* \ .-\__ '-' ___/-. / *
* ___'. .' /--.--\ `. .'___ *
* ."" '< `.___\_<|>_/___.' >' "". *
* | | : `- \`.;`\ _ /`;.`/ - ` : | | *
* \ \ `_. \_ __\ /__ _/ .-` / / *
* =====`-.____`.___ \_____/___.-`___.-'===== *
* `=---=' *
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *
*********__佛祖保佑__永无BUG__验收通过__钞票多多__*********
*********************************************************/
package com.yxt.anrui.oa.biz.adofficesuppliesdetail;
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 AdOfficeSuppliesDetailMapper extends BaseMapper<AdOfficeSuppliesDetail> {
@Select("select * from ad_office_supplies_detail where mainSid = #{mainSid}")
List<AdOfficeSuppliesDetail> selectByMainSid(String mainSid);
List<AdOfficeSuppliesDetailVo> getUpdateInit(String sid);
}

9
yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adofficesuppliesdetail/AdOfficeSuppliesDetailMapper.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.adofficesuppliesdetail.AdOfficeSuppliesDetailMapper">
<select id="getUpdateInit" resultType="com.yxt.anrui.oa.biz.adofficesuppliesdetail.AdOfficeSuppliesDetailVo">
select *
from ad_office_supplies_detail
where mainSid = #{sid}
</select>
</mapper>

87
yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adofficesuppliesdetail/AdOfficeSuppliesDetailService.java

@ -0,0 +1,87 @@
/*********************************************************
*********************************************************
******************** *******************
************* ************
******* _oo0oo_ *******
*** o8888888o ***
* 88" . "88 *
* (| -_- |) *
* 0\ = /0 *
* ___/`---'\___ *
* .' \\| |// '. *
* / \\||| : |||// \ *
* / _||||| -:- |||||- \ *
* | | \\\ - /// | | *
* | \_| ''\---/'' |_/ | *
* \ .-\__ '-' ___/-. / *
* ___'. .' /--.--\ `. .'___ *
* ."" '< `.___\_<|>_/___.' >' "". *
* | | : `- \`.;`\ _ /`;.`/ - ` : | | *
* \ \ `_. \_ __\ /__ _/ .-` / / *
* =====`-.____`.___ \_____/___.-`___.-'===== *
* `=---=' *
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *
*********__佛祖保佑__永无BUG__验收通过__钞票多多__*********
*********************************************************/
package com.yxt.anrui.oa.biz.adofficesuppliesdetail;
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.math.BigDecimal;
import java.util.Collections;
import java.util.List;
import java.util.Map;
@Service
public class AdOfficeSuppliesDetailService extends MybatisBaseService<AdOfficeSuppliesDetailMapper, AdOfficeSuppliesDetail> {
public void saveDetails(List<FormCommon> list, String sid) {
//根据sid查询明细并删除
List<AdOfficeSuppliesDetail> 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(f -> {
AdOfficeSuppliesDetail detail = new AdOfficeSuppliesDetail();
detail.setMainSid(sid);
detail.setInventorySid(f.getId());
detail.setGoodsSpuName(f.getDictValue());
if (null != f.getExtra()) {
Map<String, Object> e = f.getExtra();
for (Map.Entry <String,Object> entry : e.entrySet()) {
if (StringUtils.isNotBlank((String)entry.getValue())) {
if (entry.getKey().equals("count")) {
detail.setCount(new BigDecimal((String)entry.getValue()));
}
if (entry.getKey().equals("goodsSkuOwnSpec")) {
detail.setGoodsSkuOwnSpec((String)entry.getValue());
}
if (entry.getKey().equals("goodsSkuSid")) {
detail.setGoodsSkuSid((String)entry.getValue());
}
if (entry.getKey().equals("goodsSpuSid")) {
detail.setGoodsSpuSid((String)entry.getValue());
}
if (entry.getKey().equals("unit")) {
detail.setUnit((String)entry.getValue());
}
}
}
}
baseMapper.insert(detail);
});
}
}
public List<AdOfficeSuppliesDetailVo> getUpdateInit(String sid) {
return baseMapper.getUpdateInit(sid);
}
}

67
yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adofficesuppliesdetail/AdOfficeSuppliesDetailVo.java

@ -0,0 +1,67 @@
/*********************************************************
*********************************************************
******************** *******************
************* ************
******* _oo0oo_ *******
*** o8888888o ***
* 88" . "88 *
* (| -_- |) *
* 0\ = /0 *
* ___/`---'\___ *
* .' \\| |// '. *
* / \\||| : |||// \ *
* / _||||| -:- |||||- \ *
* | | \\\ - /// | | *
* | \_| ''\---/'' |_/ | *
* \ .-\__ '-' ___/-. / *
* ___'. .' /--.--\ `. .'___ *
* ."" '< `.___\_<|>_/___.' >' "". *
* | | : `- \`.;`\ _ /`;.`/ - ` : | | *
* \ \ `_. \_ __\ /__ _/ .-` / / *
* =====`-.____`.___ \_____/___.-`___.-'===== *
* `=---=' *
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *
*********__佛祖保佑__永无BUG__验收通过__钞票多多__*********
*********************************************************/
package com.yxt.anrui.oa.biz.adofficesuppliesdetail;
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 AdOfficeSuppliesDetailVo implements Vo {
private String sid;
@ApiModelProperty("物品基础信息Sid")
private String goodsSpuSid; // 物品基础信息Sid
@ApiModelProperty("商品名称")
private String goodsSpuName; // 商品名称
@ApiModelProperty("物品Skusid")
private String goodsSkuSid; // 物品Skusid
@ApiModelProperty("规格型号")
private String goodsSkuOwnSpec; // 规格型号
@ApiModelProperty("计量单位")
private String unit; // 计量单位
@ApiModelProperty("库存数量")
private String count; // 库存数量
@ApiModelProperty("库存sid")
private String inventorySid; // 库存sid
}

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

@ -11,6 +11,7 @@ public enum ProcDefEnum {
OAMENDAPPLY("补卡申请", "process_9suucr96:1:16072504"),
HIHIREAPPLY("招聘需求", "process_zy0m4jrp:1:16802504"),
GROUPSYSTEMAPPLY("集团制度", "process_6lnebpbi:1:16905004"),
BGYPLYAPPLY("办公用品领用", ""),
;

8
yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsGoodsTagRest.java

@ -28,6 +28,14 @@ public class WmsGoodsTagRest {
@Autowired
private WmsGoodsTagService wmsWmsGoodsTagService;
@PostMapping("goodsTagList")
@ApiOperation("商品标签列表")
ResultBean<PagerVo<WmsGoodsTag>> goodsTagList(@RequestBody PagerQuery<GoodsTagListQuery> pagerQuery) {
ResultBean<PagerVo<WmsGoodsTag>> rb = ResultBean.fireFail();
PagerVo<WmsGoodsTag> pv = wmsWmsGoodsTagService.goodsTagList(pagerQuery);
return rb.success().setData(pv);
}
@PostMapping("goodsList")
@ApiOperation("商品标签列表")
ResultBean<MyPagerVo<GoodsTagListVo>> goodsList(@RequestBody PagerQuery<GoodsTagListQuery> pagerQuery) {

10
yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsInitialDetailRest.java

@ -28,6 +28,7 @@ package com.yxt.wms.apiadmin.inventroy;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
import com.yxt.wms.biz.inventory.wmsinitialdetail.WmsInitialDetail;
import com.yxt.wms.biz.inventory.wmsinitialdetail.WmsInitialDetailQuery;
import com.yxt.wms.biz.inventory.wmsinitialdetail.WmsInitialDetailService;
import com.yxt.wms.biz.inventory.wmsinitialdetail.WmsInitialDetailVo;
@ -51,4 +52,13 @@ public class WmsInitialDetailRest {
PagerVo<WmsInitialDetailVo> pv = wmsInitialDetailService.listPageVo(pq);
return rb.success().setData(pv);
}
@PostMapping("/selBySid")
@ResponseBody
@ApiOperation(value = "根据sid查询")
public ResultBean<WmsInitialDetail> selBySid(@RequestParam("sid") String sid){
ResultBean rb = ResultBean.fireFail();
WmsInitialDetail wmsInitialDetail = wmsInitialDetailService.fetchBySid(sid);
return rb.success().setData(wmsInitialDetail);
}
}

136
yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsInitialRest.java

@ -25,7 +25,6 @@
*********************************************************/
package com.yxt.wms.apiadmin.inventroy;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUtil;
import com.yxt.common.core.result.ResultBean;
import com.yxt.wms.biz.inventory.wmsinitial.ReturnExcelInfo;
@ -34,15 +33,13 @@ import com.yxt.wms.biz.inventory.wmsinitial.WmsInitialExcelInfo;
import com.yxt.wms.biz.inventory.wmsinitial.WmsInitialService;
import com.yxt.wms.biz.inventory.wmsinitialdetail.WmsInitialDetail;
import com.yxt.wms.biz.inventory.wmsinitialdetail.WmsInitialDetailService;
import com.yxt.wms.biz.inventory.wmsinitialdetail.WmsInitialDetailVo;
import com.yxt.wms.feign.base.basegoodspu.BaseGoodsSpuFeign;
import com.yxt.wms.feign.base.basegoodssku.BaseGoodsSkuDetailsVo;
import com.yxt.wms.feign.base.basegoodssku.BaseGoodsSkuFeign;
import com.yxt.wms.feign.portal.sysorganization.SysOrganizationFeign;
import com.yxt.wms.feign.portal.sysorganization.SysOrganizationVo;
import com.yxt.wms.feign.portal.sysstafforg.SysStaffOrgFeign;
import com.yxt.wms.feign.portal.sysuser.SysUserFeign;
import com.yxt.wms.feign.portal.sysuser.SysUserVo;
import com.yxt.wms.utils.Rule;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
@ -56,7 +53,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import java.io.IOException;
import java.io.InputStream;
import java.math.BigDecimal;
@ -81,8 +77,6 @@ public class WmsInitialRest {
private WmsInitialService wmsInitialService;
@Autowired
private WmsInitialDetailService wmsInitialDetailService;
@Resource
private BaseGoodsSkuFeign baseGoodsSkuFeign;
@PostMapping("/getExcelInfo")
@ResponseBody
@ -144,78 +138,42 @@ public class WmsInitialRest {
System.out.println("结果是--->" + resultList);
try {
for (WmsInitialExcelInfo wmsInitialExcelInfo : resultList) {
if ("是".equals(wmsInitialExcelInfo.getIsYwym())) {
int num = new BigDecimal(wmsInitialExcelInfo.getNum()).intValue();
for (int i = 0; i < num; i++) {
WmsInitialDetail wmsInitialDetail = new WmsInitialDetail();
wmsInitialDetail.setCreateBySid(userSid);
wmsInitialDetail.setBillSid(wmsInitial.getSid());
wmsInitialDetail.setGoodsID(getGoodsId(wmsInitialExcelInfo.getGoodsSkuSid()));
wmsInitialDetail.setGoodsSpuSid(wmsInitialExcelInfo.getGoodsSpuSid());
wmsInitialDetail.setGoodsSpuName(wmsInitialExcelInfo.getGoodsSpuName());
wmsInitialDetail.setGoodsSkuSid(wmsInitialExcelInfo.getGoodsSkuSid());
wmsInitialDetail.setGoodsSkuTitle(wmsInitialExcelInfo.getGoodsSkuTitle());
wmsInitialDetail.setGoodsSkuCode(wmsInitialExcelInfo.getGoodsSkuCode());
wmsInitialDetail.setGoodsSkuOwnSpec(wmsInitialExcelInfo.getGoodsSkuOwnSpec());
wmsInitialDetail.setUnit(wmsInitialExcelInfo.getUnit());
wmsInitialDetail.setNum(new BigDecimal("1"));
wmsInitialDetail.setBrandSid(wmsInitialExcelInfo.getBrandSid());
wmsInitialDetail.setBrandName(wmsInitialExcelInfo.getBrandName());
wmsInitialDetail.setManufacturerSid(wmsInitialExcelInfo.getManufacturerSid());
wmsInitialDetail.setManufacturerName(wmsInitialExcelInfo.getManufacturerName());
wmsInitialDetail.setSupplierName(wmsInitialExcelInfo.getSupplierName());
wmsInitialDetail.setSaleGuidePrice(new BigDecimal(wmsInitialExcelInfo.getSaleGuidePrice()));
wmsInitialDetail.setInCost(new BigDecimal(wmsInitialExcelInfo.getInCost()));
wmsInitialDetail.setTaxRate(wmsInitialExcelInfo.getTaxRate());
String firstInDate = "";
if (isNumber(wmsInitialExcelInfo.getFirstInDate())) {
Date javaDate = new Date((long) ((Double.valueOf(wmsInitialExcelInfo.getFirstInDate()) - 25569) * 86400 * 1000));
firstInDate = DateUtil.formatDate(javaDate);
} else {
firstInDate = wmsInitialExcelInfo.getFirstInDate();
}
wmsInitialDetail.setFirstInDate(DateUtil.parseDate(firstInDate));
wmsInitialDetail.setGoodsTypeSid(wmsInitialExcelInfo.getGoodsTypeSid());
wmsInitialDetail.setGoodsTypeCode(wmsInitialExcelInfo.getGoodsTypeCode());
wmsInitialDetail.setGoodsTypeName(wmsInitialExcelInfo.getGoodsTypeName());
wmsInitialDetail.setIsYwym(1);
wmsInitialDetailService.save(wmsInitialDetail);
}
WmsInitialDetail wmsInitialDetail = new WmsInitialDetail();
wmsInitialDetail.setCreateBySid(userSid);
wmsInitialDetail.setBillSid(wmsInitial.getSid());
wmsInitialDetail.setGoodsSpuSid(wmsInitialExcelInfo.getGoodsSpuSid());
wmsInitialDetail.setGoodsSpuName(wmsInitialExcelInfo.getGoodsSpuName());
wmsInitialDetail.setGoodsSkuSid(wmsInitialExcelInfo.getGoodsSkuSid());
wmsInitialDetail.setGoodsSkuTitle(wmsInitialExcelInfo.getGoodsSkuTitle());
wmsInitialDetail.setGoodsSkuCode(wmsInitialExcelInfo.getGoodsSkuCode());
wmsInitialDetail.setGoodsSkuOwnSpec(wmsInitialExcelInfo.getGoodsSkuOwnSpec());
wmsInitialDetail.setUnit(wmsInitialExcelInfo.getUnit());
wmsInitialDetail.setNum(new BigDecimal(wmsInitialExcelInfo.getNum()));
wmsInitialDetail.setBrandSid(wmsInitialExcelInfo.getBrandSid());
wmsInitialDetail.setBrandName(wmsInitialExcelInfo.getBrandName());
wmsInitialDetail.setManufacturerSid(wmsInitialExcelInfo.getManufacturerSid());
wmsInitialDetail.setManufacturerName(wmsInitialExcelInfo.getManufacturerName());
wmsInitialDetail.setSupplierName(wmsInitialExcelInfo.getSupplierName());
wmsInitialDetail.setSaleGuidePrice(new BigDecimal(wmsInitialExcelInfo.getSaleGuidePrice()));
wmsInitialDetail.setInCost(new BigDecimal(wmsInitialExcelInfo.getInCost()));
wmsInitialDetail.setTaxRate(wmsInitialExcelInfo.getTaxRate());
String firstInDate = "";
if (isNumber(wmsInitialExcelInfo.getFirstInDate())) {
Date javaDate = new Date((long) ((Double.valueOf(wmsInitialExcelInfo.getFirstInDate()) - 25569) * 86400 * 1000));
firstInDate = DateUtil.formatDate(javaDate);
} else {
WmsInitialDetail wmsInitialDetail = new WmsInitialDetail();
wmsInitialDetail.setCreateBySid(userSid);
wmsInitialDetail.setBillSid(wmsInitial.getSid());
wmsInitialDetail.setGoodsID(getGoodsId(wmsInitialExcelInfo.getGoodsSkuSid()));
wmsInitialDetail.setGoodsSpuSid(wmsInitialExcelInfo.getGoodsSpuSid());
wmsInitialDetail.setGoodsSpuName(wmsInitialExcelInfo.getGoodsSpuName());
wmsInitialDetail.setGoodsSkuSid(wmsInitialExcelInfo.getGoodsSkuSid());
wmsInitialDetail.setGoodsSkuTitle(wmsInitialExcelInfo.getGoodsSkuTitle());
wmsInitialDetail.setGoodsSkuCode(wmsInitialExcelInfo.getGoodsSkuCode());
wmsInitialDetail.setGoodsSkuOwnSpec(wmsInitialExcelInfo.getGoodsSkuOwnSpec());
wmsInitialDetail.setUnit(wmsInitialExcelInfo.getUnit());
wmsInitialDetail.setNum(new BigDecimal(wmsInitialExcelInfo.getNum()));
wmsInitialDetail.setBrandSid(wmsInitialExcelInfo.getBrandSid());
wmsInitialDetail.setBrandName(wmsInitialExcelInfo.getBrandName());
wmsInitialDetail.setManufacturerSid(wmsInitialExcelInfo.getManufacturerSid());
wmsInitialDetail.setManufacturerName(wmsInitialExcelInfo.getManufacturerName());
wmsInitialDetail.setSupplierName(wmsInitialExcelInfo.getSupplierName());
wmsInitialDetail.setSaleGuidePrice(new BigDecimal(wmsInitialExcelInfo.getSaleGuidePrice()));
wmsInitialDetail.setInCost(new BigDecimal(wmsInitialExcelInfo.getInCost()));
wmsInitialDetail.setTaxRate(wmsInitialExcelInfo.getTaxRate());
String firstInDate = "";
if (isNumber(wmsInitialExcelInfo.getFirstInDate())) {
Date javaDate = new Date((long) ((Double.valueOf(wmsInitialExcelInfo.getFirstInDate()) - 25569) * 86400 * 1000));
firstInDate = DateUtil.formatDate(javaDate);
} else {
firstInDate = wmsInitialExcelInfo.getFirstInDate();
}
wmsInitialDetail.setFirstInDate(DateUtil.parseDate(firstInDate));
wmsInitialDetail.setGoodsTypeSid(wmsInitialExcelInfo.getGoodsTypeSid());
wmsInitialDetail.setGoodsTypeCode(wmsInitialExcelInfo.getGoodsTypeCode());
wmsInitialDetail.setGoodsTypeName(wmsInitialExcelInfo.getGoodsTypeName());
firstInDate = wmsInitialExcelInfo.getFirstInDate();
}
wmsInitialDetail.setFirstInDate(DateUtil.parseDate(firstInDate));
wmsInitialDetail.setGoodsTypeSid(wmsInitialExcelInfo.getGoodsTypeSid());
wmsInitialDetail.setGoodsTypeCode(wmsInitialExcelInfo.getGoodsTypeCode());
wmsInitialDetail.setGoodsTypeName(wmsInitialExcelInfo.getGoodsTypeName());
if ("是".equals(wmsInitialExcelInfo.getIsYwym())){
wmsInitialDetail.setIsYwym(1);
}else {
wmsInitialDetail.setIsYwym(0);
wmsInitialDetailService.save(wmsInitialDetail);
}
wmsInitialDetailService.save(wmsInitialDetail);
}
return ResultBean.fireSuccess().setMsg("数据导入成功");
} catch (Exception e) {
@ -227,7 +185,7 @@ public class WmsInitialRest {
@PostMapping("/generateGoodsTag")
@ResponseBody
@ApiOperation(value = "生成商品标签")
public ResultBean generateGoodsTag(@RequestBody String[] sids){
public ResultBean generateGoodsTag(@RequestBody String[] sids) {
return wmsInitialDetailService.generateGoodsTag(sids);
}
@ -582,28 +540,4 @@ public class WmsInitialRest {
}
return true;
}
/**
* 获取商品唯一的goodsID
*
* @param goodsSkuSid
* @return
*/
private String getGoodsId(String goodsSkuSid) {
String goodsId = "";
ResultBean<BaseGoodsSkuDetailsVo> resultBean = baseGoodsSkuFeign.getDetails(goodsSkuSid);
if (resultBean.getSuccess()) {
BaseGoodsSkuDetailsVo baseGoodsSkuDetailsVo = resultBean.getData();
goodsId = baseGoodsSkuDetailsVo.getGoodsCode();
String date = DateUtil.format(DateUtil.date(), "yyyyMM");
goodsId = goodsId + date;
String i = wmsInitialDetailService.selectNum(goodsId);
if (com.yxt.common.base.utils.StringUtils.isNotBlank(i)) {
goodsId = Rule.getBillNo(goodsId, Integer.valueOf(i).intValue());
} else {
goodsId = Rule.getBillNo(goodsId, 0);
}
}
return goodsId;
}
}

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

@ -154,6 +154,12 @@ public class WmsInventoryRest {
}
@ApiOperation("保存商品库存")
@PostMapping("/saveWmsInventory")
ResultBean saveWmsInventory(@RequestBody WmsInventorySaveDto dto) {
return wmsInventoryService.saveWmsInventory(dto);
}
@ApiOperation("修改库存数量")
@PostMapping("/updateInventoryCount")
ResultBean updateInventoryCount(@RequestBody WmsUpdateCountQuery query) {
@ -296,6 +302,11 @@ public class WmsInventoryRest {
return rb.success().setData(pv);
}
@ApiOperation("根据商品ID查询库存数量")
@PostMapping("/selCountByGoodsID")
public ResultBean<String> selCountByGoodsID(@RequestParam("goodsID") String goodsID){
return wmsInventoryService.selCountByGoodsID(goodsID);
}
//----------------------------- 报表 -----------------------------
@ApiOperation("滞销品查询")
@PostMapping("/deadStockList")
@ -312,4 +323,15 @@ public class WmsInventoryRest {
PagerVo<InventoryStockListVo> pv = wmsInventoryService.inventoryStockList(pq);
return rb.success().setData(pv);
}
//------------------------------ 行政类审批查询库存 ---------------------------------------
@ApiOperation("行政类审批查询库存")
@PostMapping("/oaInventoryList")
public ResultBean<List<FormCommon>> oaInventoryList(@RequestParam("orgPath") String orgPath,@RequestParam("warehouseTypeValue") String warehouseTypeValue) {
ResultBean<List<FormCommon>> rb = ResultBean.fireFail();
List<FormCommon> list = wmsInventoryService.oaInventoryList(orgPath,warehouseTypeValue);
return rb.success().setData(list);
}
}

6
yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsShelfBillRest.java

@ -145,4 +145,10 @@ public class WmsShelfBillRest {
public ResultBean<GoodsTagVo> print2(@RequestBody TagQuery query) {
return wmsShelfBillService.print2(query);
}
@ApiOperation("期初上架商品打印")
@PostMapping("/print3")
public ResultBean<GoodsTagVo> print3(@RequestBody TagQuery query) {
return wmsShelfBillService.print3(query);
}
}

2
yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsgoodstag/WmsGoodsTagMapper.java

@ -34,4 +34,6 @@ public interface WmsGoodsTagMapper extends BaseMapper<WmsGoodsTag> {
@Select("select * from wms_goods_tag where goodsID = #{oldGoodsId}")
WmsGoodsTag selectByGoodsId(String oldGoodsId);
IPage<WmsGoodsTag> goodsTagList(IPage<WmsGoodsTag> page,@Param(Constants.WRAPPER) QueryWrapper<WmsGoodsTag> qw);
}

16
yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsgoodstag/WmsGoodsTagMapper.xml

@ -21,7 +21,7 @@
WHEN '1' THEN
'已完成'
END AS state,
DATE_FORMAT(a.createTime, '%Y-%m-%d') as `time`
DATE_FORMAT(a.createTime, '%Y-%m-%d') as time
FROM
wms_receipt_bill AS a
<where>
@ -59,4 +59,18 @@
${ew.sqlSegment}
</where>
</select>
<select id="goodsTagList" resultType="com.yxt.wms.biz.inventory.wmsgoodstag.WmsGoodsTag">
SELECT
t.*
FROM
wms_goods_tag t
LEFT JOIN wms_initial i
ON t.billSid = i.sid
LEFT JOIN anrui_portal.sys_organization AS s
ON i.deptSid = s.sid
<where>
${ew.sqlSegment}
</where>
</select>
</mapper>

60
yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsgoodstag/WmsGoodsTagService.java

@ -10,8 +10,6 @@ import com.yxt.common.base.utils.StringUtils;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
import com.yxt.wms.biz.inventory.wmsansbill.WmsAnsBill;
import com.yxt.wms.biz.inventory.wmsansbill.WmsAnsBillVo;
import com.yxt.wms.biz.inventory.wmsgoodstag.app.*;
import com.yxt.wms.biz.inventory.wmsgoodstag.pageUtil.MyPagerUtil;
import com.yxt.wms.biz.inventory.wmsgoodstag.pageUtil.MyPagerVo;
@ -19,8 +17,10 @@ import com.yxt.wms.biz.inventory.wmsreceiptbill.WmsReceiptBill;
import com.yxt.wms.biz.inventory.wmsreceiptbill.WmsReceiptBillService;
import com.yxt.wms.biz.inventory.wmsreceiptbilldetail.WmsReceiptBillDetail;
import com.yxt.wms.biz.inventory.wmsreceiptbilldetail.WmsReceiptBillDetailService;
import com.yxt.wms.feign.portal.privilege.PrivilegeQuery;
import com.yxt.wms.feign.portal.sysorganization.SysOrganizationFeign;
import com.yxt.wms.feign.portal.sysorganization.SysOrganizationVo;
import com.yxt.wms.feign.portal.sysuser.SysUserFeign;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -42,11 +42,67 @@ public class WmsGoodsTagService extends MybatisBaseService<WmsGoodsTagMapper, Wm
private WmsReceiptBillService wmsReceiptBillService;
@Autowired
private WmsReceiptBillDetailService wmsReceiptBillDetailService;
@Autowired
private SysUserFeign sysUserFeign;
public WmsGoodsTag selByBillSidAndGoodsID(String billSid, String goodsID) {
return baseMapper.selByBillSidAndGoodsID(billSid, goodsID);
}
public PagerVo<WmsGoodsTag> goodsTagList(PagerQuery<GoodsTagListQuery> pagerQuery) {
GoodsTagListQuery query = pagerQuery.getParams();
QueryWrapper<WmsGoodsTag> qw = new QueryWrapper<>();
//========================================数据授权开始
if (StringUtils.isNotBlank(query.getMenuSid())) {
PrivilegeQuery privilegeQuery = new PrivilegeQuery();
privilegeQuery.setOrgPath(query.getOrgPath());
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("s.orgSidPath", orgSidPath);
} else if ("2".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i2);
qw.like("s.orgSidPath", orgSidPath);
} else if ("3".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i3);
qw.like("s.orgSidPath", orgSidPath);
} else if ("4".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i4);
qw.like("s.orgSidPath", orgSidPath);
} else if ("5".equals(orgLevelKey)) {
qw.eq("t.createBySid", query.getUserSid());
} else {
PagerVo<WmsGoodsTag> p = new PagerVo<>();
return p;
}
} else {
PagerVo<WmsGoodsTag> p = new PagerVo<>();
return p;
}
}
if (StringUtils.isNotBlank(query.getName())) {
qw.and(wrapper -> wrapper.like("t.goodsSkuTitle", query.getName())
.or().like("t.goodsSkuCode", query.getName())
);
}
qw.orderByDesc("t.createTime");
IPage<WmsGoodsTag> page = PagerUtil.queryToPage(pagerQuery);
IPage<WmsGoodsTag> pagging = baseMapper.goodsTagList(page, qw);
PagerVo<WmsGoodsTag> p = PagerUtil.pageToVo(pagging, null);
return p;
}
public MyPagerVo<GoodsTagListVo> goodsList(PagerQuery<GoodsTagListQuery> pagerQuery) {
GoodsTagListQuery query = pagerQuery.getParams();
QueryWrapper<WmsReceiptBill> qw = new QueryWrapper<>();

2
yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinitialdetail/WmsInitialDetail.java

@ -42,8 +42,6 @@ public class WmsInitialDetail extends BaseEntity {
@ApiModelProperty("单据sid")
private String billSid; // 单据sid
@ApiModelProperty("商品ID")
private String goodsID;
@ApiModelProperty("商品spuSid")
private String goodsSpuSid; // 商品spuSid
@ApiModelProperty("商品spu名称")

1
yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinitialdetail/WmsInitialDetailMapper.java

@ -31,6 +31,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
@Mapper

242
yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinitialdetail/WmsInitialDetailService.java

@ -25,7 +25,6 @@
*********************************************************/
package com.yxt.wms.biz.inventory.wmsinitialdetail;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yxt.common.base.service.MybatisBaseService;
@ -35,106 +34,169 @@ import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
import com.yxt.wms.biz.inventory.wmsgoodstag.WmsGoodsTag;
import com.yxt.wms.biz.inventory.wmsgoodstag.WmsGoodsTagService;
import com.yxt.wms.biz.inventory.wmsgoodstag.util.GetSerialNum;
import com.yxt.wms.feign.portal.privilege.PrivilegeQuery;
import com.yxt.wms.feign.portal.sysuser.SysUserFeign;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.*;
@Service
public class WmsInitialDetailService extends MybatisBaseService<WmsInitialDetailMapper, WmsInitialDetail> {
@Autowired
private SysUserFeign sysUserFeign;
@Autowired
private WmsGoodsTagService wmsGoodsTagService;
@Autowired
private SysUserFeign sysUserFeign;
@Autowired
private WmsGoodsTagService wmsGoodsTagService;
public PagerVo<WmsInitialDetailVo> listPageVo(PagerQuery<WmsInitialDetailQuery> pq) {
WmsInitialDetailQuery query = pq.getParams();
QueryWrapper<WmsInitialDetail> qw = new QueryWrapper<>();
//========================================数据授权开始
if (StringUtils.isNotBlank(query.getMenuUrl()) || StringUtils.isNotBlank(query.getMenuSid())) {
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("s.orgSidPath", orgSidPath);
} else if ("2".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i2);
qw.like("s.orgSidPath", orgSidPath);
} else if ("3".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i3);
qw.like("s.orgSidPath", orgSidPath);
} else if ("4".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i4);
qw.like("s.orgSidPath", orgSidPath);
} else if ("5".equals(orgLevelKey)) {
qw.eq("wi.createBySid", query.getUserSid());
} else {
PagerVo<WmsInitialDetailVo> p = new PagerVo<>();
return p;
}
} else {
PagerVo<WmsInitialDetailVo> p = new PagerVo<>();
return p;
}
}
if (StringUtils.isNotBlank(query.getGoodsSpuName())) {
qw.like("wid.goodsSpuName", query.getGoodsSpuName());
}
if (StringUtils.isNotBlank(query.getGoodsSkuCode())) {
qw.like("wid.goodsSkuCode", query.getGoodsSkuCode());
}
if (StringUtils.isNotBlank(query.getGoodsTypeName())) {
qw.like("wid.goodsTypeName", query.getGoodsTypeName());
}
IPage<WmsInitialDetail> page = PagerUtil.queryToPage(pq);
IPage<WmsInitialDetailVo> pagging = baseMapper.selectPageVo(page, qw);
PagerVo<WmsInitialDetailVo> p = PagerUtil.pageToVo(pagging, null);
return p;
}
public PagerVo<WmsInitialDetailVo> listPageVo(PagerQuery<WmsInitialDetailQuery> pq) {
WmsInitialDetailQuery query = pq.getParams();
QueryWrapper<WmsInitialDetail> qw = new QueryWrapper<>();
//========================================数据授权开始
if (StringUtils.isNotBlank(query.getMenuUrl()) || StringUtils.isNotBlank(query.getMenuSid())) {
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("s.orgSidPath", orgSidPath);
} else if ("2".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i2);
qw.like("s.orgSidPath", orgSidPath);
} else if ("3".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i3);
qw.like("s.orgSidPath", orgSidPath);
} else if ("4".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i4);
qw.like("s.orgSidPath", orgSidPath);
} else if ("5".equals(orgLevelKey)) {
qw.eq("wi.createBySid", query.getUserSid());
} else {
PagerVo<WmsInitialDetailVo> p = new PagerVo<>();
return p;
}
} else {
PagerVo<WmsInitialDetailVo> p = new PagerVo<>();
return p;
}
}
if (StringUtils.isNotBlank(query.getGoodsSpuName())) {
qw.like("wid.goodsSpuName", query.getGoodsSpuName());
}
if (StringUtils.isNotBlank(query.getGoodsSkuCode())) {
qw.like("wid.goodsSkuCode", query.getGoodsSkuCode());
}
if (StringUtils.isNotBlank(query.getGoodsTypeName())) {
qw.like("wid.goodsTypeName", query.getGoodsTypeName());
}
IPage<WmsInitialDetail> page = PagerUtil.queryToPage(pq);
IPage<WmsInitialDetailVo> pagging = baseMapper.selectPageVo(page, qw);
PagerVo<WmsInitialDetailVo> p = PagerUtil.pageToVo(pagging, null);
return p;
}
public String selectNum(String goodsId) {
return baseMapper.selectNum(goodsId);
}
public String selectNum(String goodsId) {
return baseMapper.selectNum(goodsId);
}
public ResultBean generateGoodsTag(String[] sids) {
ResultBean rb = ResultBean.fireFail();
for (String sid : sids) {
WmsInitialDetail wmsInitialDetail = fetchBySid(sid);
//新增标签
WmsGoodsTag wmsGoodsTag = new WmsGoodsTag();
wmsGoodsTag.setState(0);
wmsGoodsTag.setCreateBySid(wmsInitialDetail.getCreateBySid());
wmsGoodsTag.setBillSid(wmsInitialDetail.getBillSid());
wmsGoodsTag.setBillDetailSid(sid);
wmsGoodsTag.setGoodsID(wmsInitialDetail.getGoodsID());
wmsGoodsTag.setGoodsSpuSid(wmsInitialDetail.getGoodsSpuSid());
wmsGoodsTag.setGoodsSpuName(wmsInitialDetail.getGoodsSpuName());
wmsGoodsTag.setGoodsSkuSid(wmsInitialDetail.getGoodsSkuSid());
wmsGoodsTag.setGoodsSkuTitle(wmsInitialDetail.getGoodsSkuTitle());
wmsGoodsTag.setGoodsSkuCode(wmsInitialDetail.getGoodsSkuCode());
wmsGoodsTag.setGoodsSkuOwnSpec(wmsInitialDetail.getGoodsSkuOwnSpec());
wmsGoodsTag.setUnit(wmsInitialDetail.getUnit());
wmsGoodsTag.setGoodsCount(wmsInitialDetail.getNum());
wmsGoodsTagService.insert(wmsGoodsTag);
baseMapper.updateIsScbq(sid);
}
return rb.success();
}
public ResultBean generateGoodsTag(String[] sids) {
ResultBean rb = ResultBean.fireFail();
Set<String> idSet = new HashSet<>();
for (String sid : sids) {
WmsInitialDetail wmsInitialDetail = fetchBySid(sid);
String rule = wmsInitialDetail.getGoodsSkuCode() + new SimpleDateFormat("yyMMdd").format(new Date());
if (wmsInitialDetail.getIsYwym() == 1) {//是一物一码
int num = wmsInitialDetail.getNum().intValue();
for (int i = 0; i < num; i++) {
//新增标签
WmsGoodsTag wmsGoodsTag = new WmsGoodsTag();
wmsGoodsTag.setState(0);
wmsGoodsTag.setCreateBySid(wmsInitialDetail.getCreateBySid());
wmsGoodsTag.setBillSid(wmsInitialDetail.getBillSid());
wmsGoodsTag.setBillDetailSid(sid);
String j = wmsGoodsTagService.selectGoodsIDNum(wmsInitialDetail.getGoodsSkuCode() + new SimpleDateFormat("yyMMdd").format(new Date()));
if (StringUtils.isBlank(j)) {
j = "0";
}
int intValue = Integer.valueOf(j).intValue();
String goodsID = GetSerialNum.getNum(intValue, wmsInitialDetail.getGoodsSkuCode());
if (idSet.contains(goodsID)) {
List<Integer> idList = new ArrayList<>();
for (String s : idSet) {
if (s.contains(rule)) {
Integer integer = new Integer(s.substring(rule.length()));
idList.add(integer);
}
}
int max = Collections.max(idList);
String lsh = String.format("%04d", max + 1);
goodsID = rule + lsh;
}
wmsGoodsTag.setGoodsID(goodsID);
wmsGoodsTag.setGoodsSpuSid(wmsInitialDetail.getGoodsSpuSid());
wmsGoodsTag.setGoodsSpuName(wmsInitialDetail.getGoodsSpuName());
wmsGoodsTag.setGoodsSkuSid(wmsInitialDetail.getGoodsSkuSid());
wmsGoodsTag.setGoodsSkuTitle(wmsInitialDetail.getGoodsSkuTitle());
wmsGoodsTag.setGoodsSkuCode(wmsInitialDetail.getGoodsSkuCode());
wmsGoodsTag.setGoodsSkuOwnSpec(wmsInitialDetail.getGoodsSkuOwnSpec());
wmsGoodsTag.setUnit(wmsInitialDetail.getUnit());
wmsGoodsTag.setGoodsCount(new BigDecimal("1"));
wmsGoodsTagService.insert(wmsGoodsTag);
}
} else {
//新增标签
WmsGoodsTag wmsGoodsTag = new WmsGoodsTag();
wmsGoodsTag.setState(0);
wmsGoodsTag.setCreateBySid(wmsInitialDetail.getCreateBySid());
wmsGoodsTag.setBillSid(wmsInitialDetail.getBillSid());
wmsGoodsTag.setBillDetailSid(sid);
//查询流水号生成goodsID
String i = wmsGoodsTagService.selectGoodsIDNum(wmsInitialDetail.getGoodsSkuCode() + new SimpleDateFormat("yyMMdd").format(new Date()));
if (StringUtils.isBlank(i)) {
i = "0";
}
int intValue = Integer.valueOf(i).intValue();
String goodsID = GetSerialNum.getNum(intValue, wmsInitialDetail.getGoodsSkuCode());
if (idSet.contains(goodsID)) {
List<Integer> idList = new ArrayList<>();
for (String s : idSet) {
if (s.contains(rule)) {
Integer integer = new Integer(s.substring(rule.length()));
idList.add(integer);
}
}
int max = Collections.max(idList);
String num = String.format("%04d", max + 1);
goodsID = rule + num;
}
wmsGoodsTag.setGoodsID(goodsID);
wmsGoodsTag.setGoodsSpuSid(wmsInitialDetail.getGoodsSpuSid());
wmsGoodsTag.setGoodsSpuName(wmsInitialDetail.getGoodsSpuName());
wmsGoodsTag.setGoodsSkuSid(wmsInitialDetail.getGoodsSkuSid());
wmsGoodsTag.setGoodsSkuTitle(wmsInitialDetail.getGoodsSkuTitle());
wmsGoodsTag.setGoodsSkuCode(wmsInitialDetail.getGoodsSkuCode());
wmsGoodsTag.setGoodsSkuOwnSpec(wmsInitialDetail.getGoodsSkuOwnSpec());
wmsGoodsTag.setUnit(wmsInitialDetail.getUnit());
wmsGoodsTag.setGoodsCount(wmsInitialDetail.getNum());
wmsGoodsTagService.insert(wmsGoodsTag);
}
baseMapper.updateIsScbq(sid);
}
return rb.success();
}
}

27
yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/FormCommon.java

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

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

@ -13,6 +13,7 @@ import com.yxt.wms.biz.inventory.wmsinventory.report.DeadStockVo;
import com.yxt.wms.biz.inventory.wmsinventory.report.InventoryStockListVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.math.BigDecimal;
import java.util.List;
@ -102,4 +103,9 @@ public interface WmsInventoryMapper extends BaseMapper<WmsInventory> {
List<WmsInventory> selCJByDeptSid(String deptSid);
IPage<InventoryStockListVo> inventoryStockList(IPage<WmsInventory> page, @Param(Constants.WRAPPER)QueryWrapper<WmsInventory> qw);
List<WmsInventory> selOaInventoryList(@Param("useOrgSid")String useOrgSid, @Param("warehouseTypeValue")String warehouseTypeValue);
@Select("select count from wms_inventory where goodsID = #{goodsID}")
String selCountByGoodsID(String goodsID);
}

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

@ -765,4 +765,9 @@
${ew.sqlSegment}
</where>
</select>
<select id="selOaInventoryList" resultType="com.yxt.wms.biz.inventory.wmsinventory.WmsInventory">
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}
</select>
</mapper>

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

@ -23,6 +23,7 @@ import com.yxt.wms.biz.inventory.wmsinventory.report.InventoryStockListQuery;
import com.yxt.wms.biz.inventory.wmsinventory.report.InventoryStockListVo;
import com.yxt.wms.feign.base.basegoodssku.BaseGoodsSkuDetailsVo;
import com.yxt.wms.feign.base.basegoodssku.BaseGoodsSkuFeign;
import com.yxt.wms.feign.base.basegoodsskuextend.BaseGoodsSkuExtendFeign;
import com.yxt.wms.feign.pms.PmsPurchasebackDetailFeign;
import com.yxt.wms.feign.portal.privilege.PrivilegeQuery;
import com.yxt.wms.feign.portal.sysorganization.SysOrganizationFeign;
@ -56,7 +57,8 @@ public class WmsInventoryService extends MybatisBaseService<WmsInventoryMapper,
private WmsWarehouseRackService wmsWarehouseRackService;
@Autowired
private SysUserFeign sysUserFeign;
@Autowired
private BaseGoodsSkuExtendFeign baseGoodsSkuExtendFeign;
public PagerVo<WmsInventoryVo> listPage(PagerQuery<WmsInventoryQuery> pq) {
WmsInventoryQuery query = pq.getParams();
QueryWrapper<WmsInventory> qw = new QueryWrapper<>();
@ -1283,4 +1285,61 @@ public class WmsInventoryService extends MybatisBaseService<WmsInventoryMapper,
PagerVo<InventoryStockListVo> p = PagerUtil.pageToVo(pagging, null);
return p;
}
public List<FormCommon> oaInventoryList(String orgPath, String warehouseTypeValue) {
List<FormCommon> 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<WmsInventory> inventories = baseMapper.selOaInventoryList(useOrgSid,warehouseTypeValue);
if (!inventories.isEmpty()) {
for (WmsInventory d : inventories) {
FormCommon f = new FormCommon();
f.setId(d.getSid());
f.setDictValue(d.getGoodsSpuName());
Map<String, Object> extra = new HashMap<>();
if (null != d.getCount()) {
extra.put("count",d.getCount().toString());
}
if (StringUtils.isNotBlank(d.getGoodsSkuOwnSpec())) {
extra.put("goodsSkuOwnSpec",d.getGoodsSkuOwnSpec());
}
if (StringUtils.isNotBlank(d.getGoodsSkuSid())) {
extra.put("goodsSkuSid",d.getGoodsSkuSid());
}
if (StringUtils.isNotBlank(d.getGoodsSpuSid())) {
extra.put("goodsSpuSid",d.getGoodsSpuSid());
}
if (StringUtils.isNotBlank(d.getUnit())) {
extra.put("unit",d.getUnit());
}
if (warehouseTypeValue.equals("招待库")) {
String price = baseGoodsSkuExtendFeign.selSalesPrice(d.getGoodsSkuSid()).getData();
if (StringUtils.isNotBlank(price)) {
extra.put("price",price);
} else {
extra.put("price","");
}
}
f.setExtra(extra);
list.add(f);
}
}
return list;
}
public ResultBean<String> selCountByGoodsID(String goodsID) {
ResultBean rb = ResultBean.fireFail();
String count = baseMapper.selCountByGoodsID(goodsID);
return rb.success().setData(count);
}
}

2
yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldinventory/WmsOldInventoryMapper.xml

@ -115,7 +115,7 @@
wir.busTypeValue,
wir.count,
wir.currentCount,
wir.billObjName as manufacturerName,
wir.manufacturerName,
abbv.vinNo
from wms_inventory_record wir
LEFT JOIN wms_inventory_batch wib

2
yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldinventory/WmsOldInventoryService.java

@ -314,7 +314,7 @@ public class WmsOldInventoryService extends MybatisBaseService<WmsOldInventoryMa
//ToDo:需测试时添加,待定
//厂家
if (StringUtils.isNotBlank(query.getManufacturerName())) {
qw.like("wir.billObjName", query.getManufacturerName());
qw.like("wir.manufacturerName", query.getManufacturerName());
}
//车架号
if (StringUtils.isNotBlank(query.getVinNo())) {

22
yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbill/WmsShelfBillService.java

@ -767,9 +767,9 @@ public class WmsShelfBillService extends MybatisBaseService<WmsShelfBillMapper,
//计算sku销售价
BaseGoodsSpu baseGoodsSpu = baseGoodsSpuFeign.fetchEntityBySid(shelfBillGoods.getGoodsSpuSid()).getData();
String tjmxSid = smsPricesTrategyBillDetailFeign.selSid(baseGoodsSpu.getGoodsTypeSid(), deptSid).getData();
if (StringUtils.isBlank(tjmxSid)){
if (StringUtils.isBlank(tjmxSid)) {
return rb.setMsg("该商品类型没有对应的定调价策略,无法上架");
}else {
} else {
List<SmsPricestrategyBillGoodstypedetailDetailsVo> data = smsPricesTrategyBillGoodsTypeDetailFeign.selByMainSid(tjmxSid).getData();
for (SmsPricestrategyBillGoodstypedetailDetailsVo smsPricestrategyBillGoodstypedetailDetailsVo : data) {
BigDecimal cost = receiptBillDetail.getCost();
@ -1314,4 +1314,22 @@ public class WmsShelfBillService extends MybatisBaseService<WmsShelfBillMapper,
}
public ResultBean<GoodsTagVo> print3(TagQuery query) {
ResultBean rb = ResultBean.fireFail();
GoodsTagVo vo = new GoodsTagVo();
List<String> sids = query.getSids();
List<GoodsTag> list = new ArrayList<>();
for (String sid : sids) {
GoodsTag goodsTag = new GoodsTag();
WmsGoodsTag wmsGoodsTag = wmsGoodsTagService.fetchBySid(sid);
goodsTag.setQrText(wmsGoodsTag.getGoodsID());
goodsTag.setText1(wmsGoodsTag.getGoodsSkuTitle());
goodsTag.setText2(wmsGoodsTag.getGoodsSkuCode());
goodsTag.setText3(DateUtil.formatDate(wmsGoodsTag.getCreateTime()));
goodsTag.setSid(wmsGoodsTag.getBillSid());
list.add(goodsTag);
}
vo.setGoods(list);
return rb.success().setData(vo);
}
}

4
yxt-wms-biz/src/main/java/com/yxt/wms/feign/base/basegoodsskuextend/BaseGoodsSkuExtendFeign.java

@ -21,4 +21,8 @@ public interface BaseGoodsSkuExtendFeign {
@ApiOperation("根据skuSid修改销售单价")
@PostMapping("/updateSalesPrice")
ResultBean updateSalesPrice(@RequestParam("skuSid") String skuSid,@RequestParam("salesPrice") String salesPrice);
@ApiOperation("根据skuSid查询销售单价")
@PostMapping("/selSalesPrice")
ResultBean<String> selSalesPrice(@RequestParam("skuSid") String skuSid);
}

Loading…
Cancel
Save