diff --git a/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussalesorder/BusSalesOrderService.java b/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussalesorder/BusSalesOrderService.java index ea57235a15..9daf9b8fd3 100644 --- a/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussalesorder/BusSalesOrderService.java +++ b/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussalesorder/BusSalesOrderService.java @@ -5940,34 +5940,44 @@ public class BusSalesOrderService extends MybatisBaseService details = getSaleOrderDetails(bv.getBusinessSid()); - AppOrderDetailsVo vo = details.getData(); - - // 锁定车辆的状态 - if (BusSalesOrderConstantUtils.TypeEnum.EXISTING_CAR.getRemarks().equals(vo.getOrderType())) { - handleVehicleLock(bv, busSalesOrder); - } - // 合同处理 handleContract(bv, busSalesOrder); busSalesOrder = fetchBySid(bv.getBusinessSid()); // 处理车辆的状态更新 updateVehicleState(bv, busSalesOrder); - - // 贷款相关操作 - handleLoan(bv, busSalesOrder, vo); - // 采购渠道推送 handlePurchaseChannelPush(busSalesOrder); - // 更新办结日期 updateClosingDate(bv, busSalesOrder); - // 异步消息推送 asyncPushMessage(busSalesOrder); } catch (Exception e) { - log.error("销售订单处理失败,错误信息:", e); + log.error("销售订单处理失败1,错误信息:", e); + } + + try { + ThreadFactory namedThreadFactory = new ThreadFactoryBuilder() + .setNameFormat("demo-pool-%d").build(); + ExecutorService pool = new ThreadPoolExecutor(1, 10, + 1000, TimeUnit.MILLISECONDS, + new LinkedBlockingQueue(1024), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy()); + BusSalesOrder finalBusSalesOrder = busSalesOrder; + Future future1 = pool.submit(() -> { + //查询销售订单详情 + ResultBean details = getSaleOrderDetails(bv.getBusinessSid()); + AppOrderDetailsVo vo = details.getData(); + // 锁定车辆的状态 + if (BusSalesOrderConstantUtils.TypeEnum.EXISTING_CAR.getRemarks().equals(vo.getOrderType())) { + handleVehicleLock(bv, finalBusSalesOrder); + } + + // 贷款相关操作 + handleLoan(bv, finalBusSalesOrder, vo); + + }); + } catch (Exception e) { + e.printStackTrace(); + log.error("销售订单处理失败2,错误信息:", e); } } diff --git a/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flowtask/FlowTaskService.java b/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flowtask/FlowTaskService.java index cf22c64048..75deb3ffbd 100644 --- a/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flowtask/FlowTaskService.java +++ b/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flowtask/FlowTaskService.java @@ -330,10 +330,12 @@ public class FlowTaskService extends MybatisBaseService 转换为以逗号分隔的字符串 String assigneeIdsStr = String.join(",", assigneeIds); - - // 远程调用批量查询用户信息 - Map userMap = sysUserFeign.fetchBySids(assigneeIdsStr).getData().stream() - .collect(Collectors.toMap(SysUserVo::getSid, user -> user)); + Map userMap = new HashMap<>(); + if(StringUtils.isNotBlank(assigneeIdsStr)){ + // 远程调用批量查询用户信息 + userMap = sysUserFeign.fetchBySids(assigneeIdsStr).getData().stream() + .collect(Collectors.toMap(SysUserVo::getSid, user -> user)); + } // 直接查询所有流程实例评论 List commentList = taskService.getProcessInstanceComments(procInsId); @@ -345,6 +347,7 @@ public class FlowTaskService extends MybatisBaseService finalHisFlowList = Collections.synchronizedList(hisFlowList); // 使用 parallelStream 前先进行 null 检查和过滤 + Map finalUserMap = userMap; hisFlowList = list.parallelStream() .filter(histIns -> histIns != null && histIns.getTaskId() != null) // 过滤掉 histIns 或 histIns.getTaskId() 为 null 的元素 .map(histIns -> { @@ -366,8 +369,8 @@ public class FlowTaskService extends MybatisBaseService map = flowableQuery.getMap(); boolean taskKeyTrue = false; List flowElements = processService.calApprovePath("", modelId, map); + // 过滤空的节点ID List collect = flowElements.stream().filter(item -> item.getId().length() > 0).collect(Collectors.toList()); for (int i = 0; i < collect.size(); i++) { Map itemMap = new HashMap<>(); FlowElement item = collect.get(i); if (StringUtils.isBlank(flowableQuery.getTaskDefKey())) { - log.info("flowElement:{}", item); - log.info("nodeName:{}", item.getName()); +// log.info("flowElement:{}", item); +// log.info("nodeName:{}", item.getName()); itemMap.put("nodeName", item.getName()); - log.info("nodeId:{}", item.getId()); +// log.info("nodeId:{}", item.getId()); itemMap.put("nodeId", item.getId()); - String s = JSON.toJSONString(item); + /* String s = JSON.toJSONString(item); JSONObject jsonObject = JSONObject.parseObject(s); log.info("item:{}", jsonObject); Object candidateGroups = jsonObject.get("candidateGroups"); @@ -2439,7 +2443,7 @@ public class FlowTaskService extends MybatisBaseService 0) { log.info("candidateGroups_sid:{}", candidateGroups_arr.get(0)); } - log.info("candidateGroups:{}", candidateGroups_arr); + log.info("candidateGroups:{}", candidateGroups_arr);*/ list.add(itemMap); } else { if (flowableQuery.getTaskDefKey().equals(item.getId())) { @@ -2447,12 +2451,12 @@ public class FlowTaskService extends MybatisBaseService 0) { log.info("candidateGroups_sid:{}", candidateGroups_arr.get(0)); } - log.info("candidateGroups:{}", candidateGroups_arr); + log.info("candidateGroups:{}", candidateGroups_arr);*/ list.add(itemMap); } } diff --git a/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/processcomment/ProcessCommentService.java b/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/processcomment/ProcessCommentService.java index 4095efe52f..d756dc8d59 100644 --- a/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/processcomment/ProcessCommentService.java +++ b/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/processcomment/ProcessCommentService.java @@ -42,9 +42,7 @@ import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; -import java.util.Arrays; -import java.util.List; -import java.util.UUID; +import java.util.*; import java.util.stream.Collectors; /** @@ -62,81 +60,122 @@ import java.util.stream.Collectors; */ @Service public class ProcessCommentService extends MybatisBaseService { - @Resource - private SysUserFeign sysUserFeign; - @Resource - private FileUploadComponent fileUploadComponent; - private QueryWrapper createQueryWrapper(ProcessCommentQuery query) { - // todo: 这里根据具体业务调整查询条件 - // 多字段Like示例:qw.and(wrapper -> wrapper.like("name", query.getName()).or().like("remark", query.getName())); - QueryWrapper qw = new QueryWrapper<>(); - return qw; - } - - public PagerVo listPageVo(PagerQuery pq) { - ProcessCommentQuery query = pq.getParams(); - QueryWrapper qw = createQueryWrapper(query); - IPage page = PagerUtil.queryToPage(pq); - IPage pagging = baseMapper.selectPageVo(page, qw); - PagerVo p = PagerUtil.pageToVo(pagging, null); - return p; - } - - public void saveOrUpdateDto(ProcessCommentDto dto){ + @Resource + private SysUserFeign sysUserFeign; + @Resource + private FileUploadComponent fileUploadComponent; + + private QueryWrapper createQueryWrapper(ProcessCommentQuery query) { + // todo: 这里根据具体业务调整查询条件 + // 多字段Like示例:qw.and(wrapper -> wrapper.like("name", query.getName()).or().like("remark", query.getName())); + QueryWrapper qw = new QueryWrapper<>(); + return qw; + } + + public PagerVo listPageVo(PagerQuery pq) { + ProcessCommentQuery query = pq.getParams(); + QueryWrapper qw = createQueryWrapper(query); + IPage page = PagerUtil.queryToPage(pq); + IPage pagging = baseMapper.selectPageVo(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + return p; + } + + public void saveOrUpdateDto(ProcessCommentDto dto) { String dtoSid = dto.getSid(); if (StringUtils.isBlank(dtoSid)) { - dto.setSid(UUID.randomUUID().toString()); - baseMapper.insertByDto(dto); - return; - } - this.updateByDto(dto); - } - - public void insertByDto(ProcessCommentDto dto){ - ProcessComment entity = new ProcessComment(); - BeanUtil.copyProperties(dto, entity, "id", "sid"); - baseMapper.insert(entity); - } - - public void updateByDto(ProcessCommentDto dto){ - String dtoSid = dto.getSid(); + dto.setSid(UUID.randomUUID().toString()); + baseMapper.insertByDto(dto); + return; + } + this.updateByDto(dto); + } + + public void insertByDto(ProcessCommentDto dto) { + ProcessComment entity = new ProcessComment(); + BeanUtil.copyProperties(dto, entity, "id", "sid"); + baseMapper.insert(entity); + } + + public void updateByDto(ProcessCommentDto dto) { + String dtoSid = dto.getSid(); if (StringUtils.isBlank(dtoSid)) { return; - } - ProcessComment entity = fetchBySid(dtoSid); - BeanUtil.copyProperties(dto, entity, "id", "sid"); - baseMapper.updateById(entity); - } - - public ProcessCommentDetailsVo fetchDetailsVoBySid(String sid){ - ProcessComment entity = fetchBySid(sid); - ProcessCommentDetailsVo vo = new ProcessCommentDetailsVo(); - BeanUtil.copyProperties(entity, vo); - return vo; - } - - public List getCommentList(String processId) { - List commentList = baseMapper.getCommentList(processId); - for(ProcessCommentVo histIns:commentList){ - if(StringUtils.isNotBlank(histIns.getProcessFile())){ - List processFile = Arrays.asList(histIns.getProcessFile().split(",")).stream().map(c -> fileUploadComponent.getUrlPrefix() + c).collect(Collectors.toList()); - histIns.setFileList(processFile); - } - ResultBean> sysUserVoResultBean = sysUserFeign.fetchBySids(histIns.getReviewerSid());// sysUserService.selectUserById(Long.parseLong(histIns.getAssignee())); - List data1 = sysUserVoResultBean.getData(); - for( SysUserVo data:data1){ - AppUserVo taskUserInfo=new AppUserVo(); - taskUserInfo.setAssigneeName(data.getName()); - if(!com.yxt.common.base.utils.StringUtils.isBlank(data.getHeadImage())){ - taskUserInfo.setAssigneeHeadImage(fileUploadComponent.getUrlPrefix() +data.getHeadImage()); - } - histIns.setTaskUserInfo(taskUserInfo); - } - } - return commentList; - } - - public List selectByIdAndComment(String comment, String instanceId) { - return baseMapper.selectByIdAndComment(comment, instanceId); - } + } + ProcessComment entity = fetchBySid(dtoSid); + BeanUtil.copyProperties(dto, entity, "id", "sid"); + baseMapper.updateById(entity); + } + + public ProcessCommentDetailsVo fetchDetailsVoBySid(String sid) { + ProcessComment entity = fetchBySid(sid); + ProcessCommentDetailsVo vo = new ProcessCommentDetailsVo(); + BeanUtil.copyProperties(entity, vo); + return vo; + } + + public List getCommentList(String processId) { + List commentList = baseMapper.getCommentList(processId); + // 2. 获取所有 reviewerSid 批量查询用户信息 + Set reviewerSids = commentList.stream() + .filter(c -> StringUtils.isNotBlank(c.getReviewerSid())) + .map(ProcessCommentVo::getReviewerSid) + .collect(Collectors.toSet()); + // 批量查询所有评论中的 reviewerSid 对应的用户信息 + Map userMap = new HashMap<>(); + // 将 Set 转换为以逗号分隔的字符串 + String assigneeIdsStr = String.join(",", reviewerSids); + if (StringUtils.isNotBlank(assigneeIdsStr)) { + userMap = sysUserFeign.fetchBySids(assigneeIdsStr).getData().stream() + .collect(Collectors.toMap(SysUserVo::getSid, user -> user)); + } + + + // 3. 遍历 commentList,填充文件列表和用户信息 + for (ProcessCommentVo histIns : commentList) { + // 处理文件列表 + if (StringUtils.isNotBlank(histIns.getProcessFile())) { + List processFile = Arrays.asList(histIns.getProcessFile().split(",")).stream().map(c -> fileUploadComponent.getUrlPrefix() + c).collect(Collectors.toList()); + histIns.setFileList(processFile); + } + + // 处理用户信息 + SysUserVo user = userMap.get(histIns.getReviewerSid()); + if (user != null) { + AppUserVo taskUserInfo = new AppUserVo(); + taskUserInfo.setAssigneeName(user.getName()); + if (StringUtils.isNotBlank(user.getHeadImage())) { + taskUserInfo.setAssigneeHeadImage(fileUploadComponent.getUrlPrefix() + user.getHeadImage()); + } + histIns.setTaskUserInfo(taskUserInfo); + } + } + + return commentList; + } + + public List getCommentListOld(String processId) { + List commentList = baseMapper.getCommentList(processId); + for (ProcessCommentVo histIns : commentList) { + if (StringUtils.isNotBlank(histIns.getProcessFile())) { + List processFile = Arrays.asList(histIns.getProcessFile().split(",")).stream().map(c -> fileUploadComponent.getUrlPrefix() + c).collect(Collectors.toList()); + histIns.setFileList(processFile); + } + ResultBean> sysUserVoResultBean = sysUserFeign.fetchBySids(histIns.getReviewerSid());// sysUserService.selectUserById(Long.parseLong(histIns.getAssignee())); + List data1 = sysUserVoResultBean.getData(); + for (SysUserVo data : data1) { + AppUserVo taskUserInfo = new AppUserVo(); + taskUserInfo.setAssigneeName(data.getName()); + if (!com.yxt.common.base.utils.StringUtils.isBlank(data.getHeadImage())) { + taskUserInfo.setAssigneeHeadImage(fileUploadComponent.getUrlPrefix() + data.getHeadImage()); + } + histIns.setTaskUserInfo(taskUserInfo); + } + } + return commentList; + } + + public List selectByIdAndComment(String comment, String instanceId) { + return baseMapper.selectByIdAndComment(comment, instanceId); + } } \ No newline at end of file diff --git a/anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/flow/FlowableRest.java b/anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/flow/FlowableRest.java index 19beea9753..75d6d874c5 100644 --- a/anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/flow/FlowableRest.java +++ b/anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/flow/FlowableRest.java @@ -48,6 +48,7 @@ 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.Api; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.comparators.NullComparator; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; @@ -75,6 +76,7 @@ import java.util.stream.Collectors; @RestController @RequestMapping("v1/flow") @Api(tags = "业务系统中业务和工作流相关操作") +@Slf4j public class FlowableRest implements FlowableFeign { @Autowired @@ -166,6 +168,7 @@ public class FlowableRest implements FlowableFeign { @Override public ResultBean> flowRecordAndComment(String procInsId, String deployId) { + long startTimes = System.currentTimeMillis(); // 记录开始时间 // 并行调用外部服务 CompletableFuture> flowRecordFuture = CompletableFuture.supplyAsync(() -> flowableService.flowRecord(procInsId, deployId)); @@ -253,7 +256,7 @@ public class FlowableRest implements FlowableFeign { stringObjectMap.put("taskName", f.get("nodeName").toString()); stringObjectMap.put("finishTime", null); stringObjectMap.put("createTime", ""); - stringObjectMap.put("taskUserInfos", new ArrayList<>()); + stringObjectMap.put("taskUserInfos", Collections.emptyList()); a.setFlowableRecordVo(stringObjectMap); a.setState("3"); @@ -266,6 +269,8 @@ public class FlowableRest implements FlowableFeign { // 返回结果 ResultBean> resultBean = new ResultBean>().success(); resultBean.setData(flowList); + long endTime = System.currentTimeMillis(); + log.info("流程记录接口耗时 {} ms", endTime - startTimes); return resultBean; } diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansettleapply/LoanSettleApplyService.java b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansettleapply/LoanSettleApplyService.java index 8b5a12b383..8431b60d47 100644 --- a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansettleapply/LoanSettleApplyService.java +++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansettleapply/LoanSettleApplyService.java @@ -3566,7 +3566,7 @@ public class LoanSettleApplyService extends MybatisBaseService(1024), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy()); + ScmVehRebateWithApply finalScmVehRebateWithApply = scmVehRebateWithApply; + Future future1 = pool.submit(() -> { + for (String vehRebateSid : vehRebateSids) { + scmVehRebateService.updateState(vehRebateSid, 2); + scmVehRebateService.updateWithholdingDateBySid(vehRebateSid, finalScmVehRebateWithApply.getWithApply()); + } + //推送单车返利预提凭证 + pushVehRebateWithVoucher(bv.getBusinessSid()); + + }); + } catch (Exception e) { + e.printStackTrace(); + } } else { //极光推送 scmVehRebateWithApply = fetchBySid(bv.getBusinessSid()); diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbilldetail/WmsReceiptBillDetailMapper.xml b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbilldetail/WmsReceiptBillDetailMapper.xml index a5a8334aab..0e8de9f9b1 100644 --- a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbilldetail/WmsReceiptBillDetailMapper.xml +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbilldetail/WmsReceiptBillDetailMapper.xml @@ -9,6 +9,7 @@