Browse Source

Merge remote-tracking branch 'origin/master'

master
ligaode 2 months ago
parent
commit
b30ba5e83e
  1. 3
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicle/BaseVehicle.java
  2. 4
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicle/BaseVehicleDto.java
  3. 9
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicle/BaseVehicleFeign.java
  4. 5
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicle/BaseVehicleFeignFallback.java
  5. 5
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicle/BaseVehicleVo.java
  6. 1
      anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehicle/BaseVehicleMapper.xml
  7. 5
      anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehicle/BaseVehicleRest.java
  8. 28
      anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehicle/BaseVehicleService.java
  9. 411
      anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flow3/Flow3Service.java
  10. 50
      anrui-gateway/src/main/resources/logback-spring.xml
  11. 22
      anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysstaffinfo/UserCommonVo.java
  12. 7
      anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysstaffinfo/SysStaffinfoMapper.java
  13. 159
      anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysstaffinfo/SysStaffinfoMapper.xml
  14. 12
      anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysstaffinfo/SysStaffinfoRest.java
  15. 30
      anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysstaffinfo/SysStaffinfoService.java
  16. 7
      anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysuser/SysUserRest.java
  17. 1
      anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysuser/SysUserService.java
  18. 152
      anrui-reportcenter/anrui-reportcenter-api/src/main/java/com/yxt/anrui/reportcenter/api/asmonthfittingsinventoryreport/AsMonthFittingsInventoryReport.java
  19. 74
      anrui-reportcenter/anrui-reportcenter-api/src/main/java/com/yxt/anrui/reportcenter/api/asmonthfittingsinventoryreport/AsMonthFittingsInventoryReportFeign.java
  20. 64
      anrui-reportcenter/anrui-reportcenter-api/src/main/java/com/yxt/anrui/reportcenter/api/asmonthfittingsinventoryreport/AsMonthFittingsInventoryReportFeignFallback.java
  21. 136
      anrui-reportcenter/anrui-reportcenter-api/src/main/java/com/yxt/anrui/reportcenter/api/asmonthfittingsinventoryreport/AsMonthFittingsInventoryReportVo.java
  22. 14
      anrui-reportcenter/anrui-reportcenter-api/src/main/java/com/yxt/anrui/reportcenter/api/asmonthfittingsinventoryreport/MonthFittingsReportListQuery.java
  23. 12
      anrui-reportcenter/anrui-reportcenter-api/src/main/java/com/yxt/anrui/reportcenter/api/asmonthfittingsinventoryreport/MonthFittingsReportListVo.java
  24. 71
      anrui-reportcenter/anrui-reportcenter-biz/src/main/java/com/yxt/anrui/reportcenter/biz/asmonthfittingsinventoryreport/AsMonthFittingsInventoryReportMapper.java
  25. 28
      anrui-reportcenter/anrui-reportcenter-biz/src/main/java/com/yxt/anrui/reportcenter/biz/asmonthfittingsinventoryreport/AsMonthFittingsInventoryReportMapper.xml
  26. 77
      anrui-reportcenter/anrui-reportcenter-biz/src/main/java/com/yxt/anrui/reportcenter/biz/asmonthfittingsinventoryreport/AsMonthFittingsInventoryReportRest.java
  27. 85
      anrui-reportcenter/anrui-reportcenter-biz/src/main/java/com/yxt/anrui/reportcenter/biz/asmonthfittingsinventoryreport/AsMonthFittingsInventoryReportService.java
  28. 1
      anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmapplyinbound/ScmApplyInboundService.java
  29. 1
      anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehicleenterlibrary/ScmVehicleEnterlibraryService.java
  30. 9
      anrui-scm/anrui-scm-ui/src/api/cheliang/basevehicle.js
  31. 83
      anrui-scm/anrui-scm-ui/src/views/cheliang/cheliangtaizhang/cheliangtaizhang.vue
  32. 5
      yxt-oa/src/main/java/com/yxt/anrui/oa/api/AdGroupSystemApplyRest.java
  33. 5
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adgroupsystemapply/AdGroupSystemApply.java
  34. 6
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adgroupsystemapply/AdGroupSystemApplyDto.java
  35. 109
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adgroupsystemapply/AdGroupSystemApplyService.java
  36. 5
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adgroupsystemapply/AdGroupSystemApplyVo.java
  37. 20
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/OaFormService.java
  38. 4
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/OaFormUrlEnum.java
  39. 4
      yxt-oa/src/main/java/com/yxt/anrui/oa/feign/flowable/flow/ProcDefEnum.java
  40. 9
      yxt-oa/src/main/java/com/yxt/anrui/oa/feign/flowable/flow3/Flow3Feign.java

3
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicle/BaseVehicle.java

@ -6,7 +6,6 @@ import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.util.Date;
/**
@ -78,6 +77,8 @@ public class BaseVehicle extends BaseEntity {
@ApiModelProperty(value = "指导价")
private Integer salePrice;
@ApiModelProperty(value = "厂家结算价")
private Integer settlePrice;
@ApiModelProperty("创建组织(陕汽必须的字段)")
private String createOrgSid;

4
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicle/BaseVehicleDto.java

@ -78,8 +78,10 @@ public class BaseVehicleDto implements Dto {
private String location;
@ApiModelProperty("存放地点名称(陕汽必须的字段)")
private String locationName;
@ApiModelProperty(value = "厂家结算价")
@ApiModelProperty(value = "入库价")
private Integer costPrice;
@ApiModelProperty(value = "厂家结算价")
private Integer settlePrice;
@ApiModelProperty(value = "厂家合同价")
private Integer contractPrice;
@ApiModelProperty(value = "成交价")

9
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicle/BaseVehicleFeign.java

@ -120,6 +120,15 @@ public interface BaseVehicleFeign {
@PostMapping("/update/{sid}")
public ResultBean update(@RequestBody BaseVehicleDto dto, @PathVariable("sid") String sid);
/**
* 修改厂家结算价
*
* @return
*/
@ApiOperation("修改厂家结算价")
@PostMapping("/updateSettlePrice")
public ResultBean updateSettlePrice(@RequestParam("sid") String sid, @RequestParam("settlePrice") String settlePrice);
/**
* 详情及修改回显
*

5
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicle/BaseVehicleFeignFallback.java

@ -72,6 +72,11 @@ public class BaseVehicleFeignFallback implements BaseVehicleFeign {
return ResultBean.fireFail().setMsg("接口anrui-base/basevehicle/update无法访问");
}
@Override
public ResultBean updateSettlePrice(String sid, String settlePrice) {
return null;
}
@Override
public ResultBean<BaseVehicleSelectVo> details(String sid) {
return null;

5
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicle/BaseVehicleVo.java

@ -54,8 +54,11 @@ public class BaseVehicleVo implements Vo {
private String locationName;
@ApiModelProperty(value = "厂家订单编号")
private String orderingNo;
@ApiModelProperty(value = "厂家结算价")
@ApiModelProperty(value = "入库价")
private Integer costPrice;
@ApiModelProperty(value = "厂家结算价")
private Integer settlePrice;
@ApiModelProperty(value = "运费")
private Integer freight;
@ApiModelProperty(value = "厂家合同价")

1
anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehicle/BaseVehicleMapper.xml

@ -44,6 +44,7 @@
bv.locationName,
bv.orderingNo,
bv.costPrice,
bv.settlePrice,
bv.freight,
bv.contractPrice,
bv.priceDate,

5
anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehicle/BaseVehicleRest.java

@ -685,6 +685,11 @@ public class BaseVehicleRest implements BaseVehicleFeign {
return rb.success().setMsg("修改成功");
}
@Override
public ResultBean updateSettlePrice(String sid, String settlePrice) {
return baseVehicleService.updateSettlePrice(sid,settlePrice);
}
@Override
public ResultBean<BaseVehicleSelectVo> details(String sid) {
ResultBean rb = ResultBean.fireFail();

28
anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehicle/BaseVehicleService.java

@ -86,6 +86,8 @@ import org.springframework.transaction.annotation.Transactional;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* Project: anrui-base(安瑞基础信息模块) <br/>
@ -4438,4 +4440,30 @@ public class BaseVehicleService extends MybatisBaseService<BaseVehicleMapper, Ba
baseMapper.updateVehicleYmd(vehiSid, settlementStatus, settlementStatusValue);
return rb.success();
}
public ResultBean updateSettlePrice(String sid, String settlePrice) {
ResultBean rb = ResultBean.fireFail();
if (StringUtils.isBlank(settlePrice)) {
return rb.setMsg("厂家结算价不能为空!");
}
if (!isNumeric(settlePrice)) {
return rb.setMsg("请填写整数");
}
BaseVehicle baseVehicle = fetchBySid(sid);
Integer i = Integer.valueOf(settlePrice);
baseVehicle.setSettlePrice(i);
baseMapper.updateById(baseVehicle);
return rb.success();
}
public boolean isNumeric(String str) {
Pattern pattern = Pattern.compile("[0-9]*");
System.out.println(str);
Matcher isNum = pattern.matcher(str);
if (!isNum.matches()) {
return false;
}
return true;
}
}

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

@ -50,6 +50,7 @@ import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.PostMapping;
import java.util.*;
import java.util.stream.Collectors;
import static org.junit.Assert.*;
@ -98,20 +99,346 @@ public class Flow3Service extends MybatisBaseService<FlowMapper, Flowable> {
public ResultBean<UpdateFlowFieldVo> businessStartProcessInstanceById(BusinessVariables bv) {
ResultBean<UpdateFlowFieldVo> rb = ResultBean.fireFail();
// 获取流程定义ID和发起人ID
//获取变量
String procDefId = bv.getModelId();
String userSid = bv.getUserSid();
// 获取传入的变量
Map<String, Object> variables = bv.getFormVariables();
Map<String, Object> variablesSeconds = bv.getFormVariables();
//下一环节待办人
String nextNodeUserSids = bv.getNextNodeUserSids();
//会签人员
List<String> approversList = Optional.ofNullable((List<String>) variables.get("approvers"))
.orElseGet(ArrayList::new);
List<String> userSidForNextNode = new ArrayList<>();
//如果指定的下一环节用户为空
if (StringUtils.isBlank(nextNodeUserSids)) {
userSidForNextNode = getNextNodeUser(bv).getData();
variables.put("approvers", userSidForNextNode);
//根据角色查询下一环节待办人
ResultBean<List<String>> listResultBean = getNextNodeUser(bv);
if (!listResultBean.getSuccess()) {
return rb.setMsg(listResultBean.getMsg());
}
userSidForNextNode = listResultBean.getData();
nextNodeUserSids = String.join(",", userSidForNextNode);
//如果会签人员为空
if (approversList.isEmpty()) {
approversList = userSidForNextNode;
variables.put("approvers", approversList);
}
} else {
userSidForNextNode.add(nextNodeUserSids);
}
// 根据流程定义ID查询最新的流程定义
ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery()
.processDefinitionId(procDefId)
.latestVersion()
.singleResult();
// 如果流程被挂起,返回错误信息
if (Objects.nonNull(processDefinition) && processDefinition.isSuspended()) {
return rb.setMsg("流程已被挂起,请先激活流程");
}
// 设置发起人信息
ResultBean<SysUserVo> sysUserVoResultBean = sysUserFeign.fetchBySid(userSid);
SysUserVo sysUser = sysUserVoResultBean.getData();
identityService.setAuthenticatedUserId(sysUser.getSid());
variables.put(ProcessConstants.PROCESS_INITIATOR, userSid);
variables.put(ProcessConstants.USER_TYPE_ASSIGNEE, userSid);
// 启动流程实例
ProcessInstance processInstance = runtimeService.startProcessInstanceById(procDefId, variables);
// 获取第一步任务并设置任务执行人和意见
Task task = taskService.createTaskQuery().processInstanceId(processInstance.getProcessInstanceId()).singleResult();
if (Objects.nonNull(task)) {
taskService.addComment(task.getId(), processInstance.getProcessInstanceId(), FlowComment.START.getType(),
sysUser.getName() + "发起流程申请");
taskService.setAssignee(task.getId(), userSid);
taskService.complete(task.getId(), variables);
}
//设置是否是管理员自动审批,默认否
boolean adminContains = false;
String id_ = "", name_ = "", taskDefKey_ = "";
//查询当前实例最新的待办任务
List<Task> tasks = taskService.createTaskQuery().processInstanceId(processInstance.getId()).list();
for (int i = 0; i < tasks.size(); i++) {
Task task2 = tasks.get(i);
String isMultiInstanceTask = isMultiInstanceTask(task2);
if ("会签任务".equals(isMultiInstanceTask) || "或签任务".equals(isMultiInstanceTask)) {
userSidForNextNode = approversList;
String approver = getApproverForTask(userSidForNextNode, i);
approver = change(approver, bv.getInstanceId());
taskService.claim(task2.getId(), approver);
} else {
//单一审批
nextNodeUserSids = userSidForNextNode.get(0);
//查询下一环节是否有转办并添加评论
nextNodeUserSids = change(nextNodeUserSids, processInstance.getProcessInstanceId());
taskService.setAssignee(task2.getId(), nextNodeUserSids);
taskService.setVariablesLocal(task2.getId(), variables);
}
}
tasks = taskService.createTaskQuery().processInstanceId(processInstance.getId()).list();
//遍历待办任务
for (int i = 0; i < tasks.size(); i++) {
Task task2 = tasks.get(i);
String isMultiInstanceTask = isMultiInstanceTask(task2);
id_ = task2.getId();
taskDefKey_ = task2.getTaskDefinitionKey();
name_ = task2.getName();
if ("会签任务".equals(isMultiInstanceTask) || "或签任务".equals(isMultiInstanceTask)) {
if (ProcDefEnum.DEFAUL_TADMIN_SID.getProDefId().equals(task2.getAssignee())) {
adminContains = true;
break;
}
}
}
//提交前传入下一环节待办人
if (ProcDefEnum.DEFAUL_TADMIN_SID.getProDefId().equals(nextNodeUserSids) || adminContains) {
return handleAutomaticApproval(bv, task, id_, taskDefKey_, variables, processDefinition);
}
// 如果申请人与下一环节审批人相同,则自动审批
if (bv.getUserSid().equals(nextNodeUserSids)) {
return handleSelfApproval(bv, task, id_, taskDefKey_, variables, processDefinition);
}
// 实例化 UpdateFlowFieldVo
UpdateFlowFieldVo updateFlowFieldVo = new UpdateFlowFieldVo();
updateFlowFieldVo.setProcInsId(task.getProcessInstanceId());
updateFlowFieldVo.setNodeState(name_);
updateFlowFieldVo.setTaskId(id_);
updateFlowFieldVo.setTaskDefKey(taskDefKey_);
updateFlowFieldVo.setProcDefId(bv.getModelId());
updateFlowFieldVo.setSid(bv.getBusinessSid());
updateFlowFieldVo.setName(processDefinition.getName());
return rb.success().setData(updateFlowFieldVo).setMsg("流程启动成功");
}
public ResultBean<UpdateFlowFieldVo> handleProsess(BusinessVariables bv, boolean b) {
ResultBean<UpdateFlowFieldVo> rb = ResultBean.fireFail();
UpdateFlowFieldVo vo = new UpdateFlowFieldVo();
Map<String, Object> formVariables = Optional.ofNullable(bv.getFormVariables()).orElseGet(HashMap::new);
formVariables.put("businessSid", bv.getBusinessSid());
String taskId = bv.getTaskId(),
nextUserSid = bv.getNextNodeUserSids(),
userSid = bv.getUserSid(),
instanceId = bv.getInstanceId(),
comment = bv.getComment(),
orgPath = bv.getOrgSidPath(),
service = (String) formVariables.get("service"),
ydfOrgPath = (String) formVariables.get("ydfOrgPath"),
nodeState = "", taskDefKey = "";
//设置下一环节审批人是否自动审批通过,默认否
boolean contains = false,
//设置是否是管理员自动审批,默认否
adminContains = false;
//指定的会签用户
List<String> approversList = Optional.ofNullable((List<String>) formVariables.get("approvers"))
.orElseGet(ArrayList::new);
List<String> userSidForNextNode = new ArrayList<>();
// 根据流程定义ID查询最新的流程定义
ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery()
.processDefinitionId(bv.getModelId())
.latestVersion()
.singleResult();
//查询任务id为taskId的任务是否存在
Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
if (Objects.isNull(task)) {
return rb.setMsg("任务不存在");
}
String assignee = task.getAssignee();
if (b && (StringUtils.isNotBlank(assignee) && assignee.indexOf(userSid) < 0)) {
return rb.setMsg("当前用户不是环节的待办人,不能进行办理操作!");
}
//查询任务时单一审批还是或签还是会签?
String isMultiInstanceTask = isMultiInstanceTask(task);
//查询所有的待办任务
List<Task> tasks = taskService.createTaskQuery().processInstanceId(instanceId).list();
if (StringUtils.isBlank(nextUserSid)) {
if ("公司间调车".equals(service) && "Activity_0695qh4".equals(bv.getTaskDefKey())) {
bv.setOrgSidPath(ydfOrgPath);
}
if (!"会签任务".equals(isMultiInstanceTask) || tasks.size() == 1) {
//查询下一环节待办人
ResultBean<List<String>> listResultBean = getNextNodeUserSidsOfSubmit(bv);
if (!listResultBean.getSuccess()) {
//如果查询下一环节待办人为空,则默认为管理员
nextUserSid = ProcDefEnum.DEFAUL_TADMIN_SID.getProDefId();
userSidForNextNode.add(nextUserSid);
adminContains = true;
} else {
if (listResultBean.getData() != null && listResultBean.getData().size() != 0) {
userSidForNextNode = listResultBean.getData();
}
//如果会签人员为空,则查询下一环节人
if (approversList.isEmpty()) {
formVariables.put("approvers", userSidForNextNode);
}
}
}
} else {
userSidForNextNode.add(nextUserSid);
//若下一环节用户与系统管理员一致,则自动审批
if (ProcDefEnum.DEFAUL_TADMIN_SID.getProDefId().equals(nextUserSid)) {
adminContains = true;
}
}
if (DelegationState.PENDING.equals(task.getDelegationState())) {
adminContains = false;
//加签
Authentication.setAuthenticatedUserId(userSid);
taskService.addComment(taskId, instanceId,
FlowComment.DELEGATE.getType(), comment);
taskService.resolveTask(taskId, formVariables);
nodeState = task.getName();
taskDefKey = task.getTaskDefinitionKey();
} else {
//下一环节是否是多实例任务
boolean isMultiInstanceTaskNext = false;
tasks = taskService.createTaskQuery().processInstanceId(instanceId).list();
//是否要查询当前任务是否是会签环节
boolean checkTask = tasks.size() == 1 || "或签任务".equals(isMultiInstanceTask);
//当前任务办理完成
taskService.addComment(taskId, instanceId, FlowComment.NORMAL.getType(), comment);
log.error("taskid:{},userSid:{}", taskId, userSid);
log.error("formVariables:{}", JSON.toJSONString(formVariables));
taskService.setAssignee(taskId, userSid);
taskService.complete(taskId, formVariables);
//查询办理完后的最新待办任务
tasks = taskService.createTaskQuery().processInstanceId(instanceId).list();
if (tasks.size() > 0) {
for (int i = 0; i < tasks.size(); i++) {
Task task2 = tasks.get(i);
if (checkTask) {
isMultiInstanceTask = isMultiInstanceTask(task2);
if ("会签任务".equals(isMultiInstanceTask) || "或签任务".equals(isMultiInstanceTask)) {
userSidForNextNode = approversList;
String nextUserSidNext = userSidForNextNode.get(i);
nextUserSidNext = change(nextUserSidNext, bv.getInstanceId());
taskService.claim(task2.getId(), nextUserSidNext); // 由候选人认领任务
isMultiInstanceTaskNext = true;
} else {
nextUserSid = userSidForNextNode.get(0);
//查询下一环节用户是否有转办人
nextUserSid = change(nextUserSid, bv.getInstanceId());
taskService.setAssignee(task2.getId(), nextUserSid);//将下一环节用户放入流程中
}
}
}
List<String> taskIdList = tasks.stream().map(v -> v.getId()).collect(Collectors.toList());
String taskIds = String.join(",", taskIdList);
vo.setTaskId(taskIds);
//在act_ru_variable表中增加环节上的业务参数的变量
taskService.setVariablesLocal(tasks.get(0).getId(), formVariables);
nodeState = tasks.get(0).getName();
taskDefKey = tasks.get(0).getTaskDefinitionKey();
//遍历待办任务,将存在管理员的自动审批
for (int i = 0; i < tasks.size(); i++) {
Task task2 = tasks.get(i);
isMultiInstanceTask = isMultiInstanceTask(task2);
if ("会签任务".equals(isMultiInstanceTask) || "或签任务".equals(isMultiInstanceTask)) {
if (ProcDefEnum.DEFAUL_TADMIN_SID.getProDefId().equals(task2.getAssignee())) {
nextUserSid = ProcDefEnum.DEFAUL_TADMIN_SID.getProDefId();
adminContains = true;
vo.setTaskId(task2.getId());
nodeState = task2.getName();
taskDefKey = task2.getTaskDefinitionKey();
break;
}
}
}
} else {
nodeState = FlowComment.SETTLE.getRemark();
taskDefKey = "Event_end";
vo.setNodeState(FlowComment.SETTLE.getRemark());
}
if (!isMultiInstanceTaskNext) {
//获取该流程所有要走的环节节点
List<FlowElement> flowElements = calApprovePath(bv.getModelId(),
bv.getFormVariables());
for (int i = 0; i < flowElements.size(); i++) {
FlowElement flowElement = flowElements.get(i);
String id = flowElement.getId();
// 如果当前环节匹配taskDefKey,并且后续环节存在
if (taskDefKey.equals(id) && i + 1 < flowElements.size()) {
FlowElement nextFlowElement = flowElements.get(i + 1); // 获取下一个环节
List<SysUserVo> nextUserList = getUserListFromFlowElement(nextFlowElement, orgPath); // 获取下一个环节的用户列表
// 获取下下一个环节的用户列表(如果存在)
List<SysUserVo> nextNextUserList = new ArrayList<>();
if (i + 2 < flowElements.size()) {
FlowElement nextNextFlowElement = flowElements.get(i + 2); // 获取下下一个环节
nextNextUserList = getUserListFromFlowElement(nextNextFlowElement, orgPath); // 获取下下一个环节的用户列表
}
// 如果下一个环节只有一个用户,并且其sid与下一级相同,则设置contains为true
if (nextUserList.size() == 1 && nextUserList.get(0).getSid().equals(nextUserSid)) {
contains = true; // 确定自动审批
break; // 跳出循环,不再检查后续环节
}
// 如果下下一个环节没有用户,且下下下一个环节与下一级相同,设置contains为true
if (nextUserList.isEmpty() && nextNextUserList.size() == 1 && nextNextUserList.get(0).getSid().equals(nextUserSid)) {
contains = true; // 确定自动审批
break; // 跳出循环
}
}
}
}
}
//设置管理员是否自动审批的字段是否是是。//若下一环节用户与系统管理员一致,则自动审批
if (adminContains) {
bv.setUserSid(nextUserSid);
bv.setTaskId(vo.getTaskId());
bv.setTaskDefKey(taskDefKey);
bv.setComment("系统自动跳过");
bv.setNextNodeUserSids("");
return handleProsess(bv, false);
}
if (contains) {
bv.setUserSid(nextUserSid);
bv.setTaskId(vo.getTaskId());
bv.setTaskDefKey(taskDefKey);
bv.setComment("因与下一级审批人相同,系统自动处理,需以下一级审批人审批意见为准!");
return handleProsess(bv, false);
}
vo.setProcInsId(instanceId);
vo.setProcDefId(bv.getModelId());
vo.setNodeState(nodeState);
vo.setTaskDefKey(taskDefKey);
vo.setSid(bv.getBusinessSid());
vo.setName(processDefinition.getName());
return rb.success().setData(vo);
}
public ResultBean<UpdateFlowFieldVo> businessStartProcessInstanceById222(BusinessVariables bv) {
ResultBean<UpdateFlowFieldVo> rb = ResultBean.fireFail();
// 实例化 UpdateFlowFieldVo
UpdateFlowFieldVo updateFlowFieldVo = new UpdateFlowFieldVo();
String procDefId = bv.getModelId();
String userSid = bv.getUserSid();
String nextNodeUserSids = bv.getNextNodeUserSids();
Map<String, Object> variables = bv.getFormVariables();
Map<String, Object> variablesSeconds = bv.getFormVariables();
List<String> userSidForNextNode = new ArrayList<>();
List<String> approversList = Optional.ofNullable((List<String>) variables.get("approvers"))
.orElseGet(ArrayList::new);
if (StringUtils.isBlank(nextNodeUserSids)) {
userSidForNextNode = getNextNodeUser(bv).getData();
if (!approversList.isEmpty()) {
variables.put("approvers", approversList);
} else {
approversList = userSidForNextNode;
variables.put("approvers", approversList);
}
} else {
//下一环节审批人
userSidForNextNode.add(nextNodeUserSids);
}
// 根据流程定义ID查询最新的流程定义
ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery()
.processDefinitionId(procDefId)
@ -157,6 +484,7 @@ public class Flow3Service extends MybatisBaseService<FlowMapper, Flowable> {
task_def_key_ = task2.getTaskDefinitionKey();
name_ = task2.getName();
if ("会签任务".equals(isMultiInstanceTask) || "或签任务".equals(isMultiInstanceTask)) {
userSidForNextNode = approversList;
String approver = getApproverForTask(userSidForNextNode, i);
approver = change(approver, bv.getInstanceId());
taskService.claim(task2.getId(), approver);
@ -177,7 +505,7 @@ public class Flow3Service extends MybatisBaseService<FlowMapper, Flowable> {
task_def_key_ = task2.getTaskDefinitionKey();
name_ = task2.getName();
if ("会签任务".equals(isMultiInstanceTask) || "或签任务".equals(isMultiInstanceTask)) {
if(ProcDefEnum.DEFAUL_TADMIN_SID.getProDefId().equals(task2.getAssignee())){
if (ProcDefEnum.DEFAUL_TADMIN_SID.getProDefId().equals(task2.getAssignee())) {
adminContains = true;
break;
}
@ -194,18 +522,15 @@ public class Flow3Service extends MybatisBaseService<FlowMapper, Flowable> {
taskService.setVariablesLocal(id_, variables);
}
//提交前传入下一环节待办人
if (ProcDefEnum.DEFAUL_TADMIN_SID.getProDefId().equals(nextNodeUserSids) || adminContains) {
return handleAutomaticApproval(bv, task, id_, task_def_key_, variables, variablesSeconds, processDefinition);
return handleAutomaticApproval(bv, task, id_, task_def_key_, variables, processDefinition);
}
// 如果申请人与下一环节审批人相同,则自动审批
if (bv.getUserSid().equals(nextNodeUserSids)) {
return handleSelfApproval(bv, task, id_, task_def_key_, variables, variablesSeconds, processDefinition);
return handleSelfApproval(bv, task, id_, task_def_key_, variables, processDefinition);
}
// 实例化 UpdateFlowFieldVo
UpdateFlowFieldVo updateFlowFieldVo = new UpdateFlowFieldVo();
updateFlowFieldVo.setProcInsId(task.getProcessInstanceId());
updateFlowFieldVo.setNodeState(name_);
updateFlowFieldVo.setTaskId(id_);
@ -216,7 +541,7 @@ public class Flow3Service extends MybatisBaseService<FlowMapper, Flowable> {
return rb.success().setData(updateFlowFieldVo).setMsg("流程启动成功");
}
public ResultBean<UpdateFlowFieldVo> handleProsess(BusinessVariables bv, boolean b) {
public ResultBean<UpdateFlowFieldVo> handleProsess222(BusinessVariables bv, boolean b) {
ResultBean<UpdateFlowFieldVo> rb = ResultBean.fireFail();
UpdateFlowFieldVo vo = new UpdateFlowFieldVo();
//获取表单中的参数
@ -249,6 +574,8 @@ public class Flow3Service extends MybatisBaseService<FlowMapper, Flowable> {
if (b && (StringUtils.isNotBlank(assignee) && assignee.indexOf(userSid) < 0)) {
return rb.setMsg("当前用户不是环节的待办人,不能进行办理操作!");
}
List<String> approversList = Optional.ofNullable((List<String>) formVariables.get("approvers"))
.orElseGet(ArrayList::new);
if (StringUtils.isBlank(nextUserSid)) {
if ("公司间调车".equals(service) && "Activity_0695qh4".equals(bv.getTaskDefKey())) {
bv.setOrgSidPath(ydfOrgPath);
@ -257,10 +584,10 @@ public class Flow3Service extends MybatisBaseService<FlowMapper, Flowable> {
if (!listResultBean.getSuccess()) {
nextUserSid = ProcDefEnum.DEFAUL_TADMIN_SID.getProDefId();
adminContains = true;
userSidForNextNode.add(nextUserSid);
} else {
if(listResultBean.getData() != null){
if (listResultBean.getData() != null) {
userSidForNextNode = listResultBean.getData();
formVariables.put("approvers", listResultBean.getData());
}
}
} else {
@ -269,6 +596,24 @@ public class Flow3Service extends MybatisBaseService<FlowMapper, Flowable> {
adminContains = true;
}
}
if (!approversList.isEmpty()) {
formVariables.put("approvers", approversList);
} else {
ResultBean<List<String>> listResultBean = getNextNodeUserSidsOfSubmit(bv);
if (!listResultBean.getSuccess()) {
nextUserSid = ProcDefEnum.DEFAUL_TADMIN_SID.getProDefId();
adminContains = true;
userSidForNextNode.add(nextUserSid);
} else {
if (listResultBean.getData() != null) {
approversList = listResultBean.getData();
formVariables.put("approvers", approversList);
}
}
}
//是否是多实例任务
String isMultiInstanceTask = isMultiInstanceTask(task);
boolean isMultiInstanceTaskNext = false;
@ -301,6 +646,7 @@ public class Flow3Service extends MybatisBaseService<FlowMapper, Flowable> {
Task task2 = tasks.get(i);
isMultiInstanceTask = isMultiInstanceTask(task2);
if ("会签任务".equals(isMultiInstanceTask) || "或签任务".equals(isMultiInstanceTask)) {
userSidForNextNode = approversList;
String nextUserSidNext = userSidForNextNode.get(i);
nextUserSidNext = change(nextUserSidNext, bv.getInstanceId());
taskService.claim(task2.getId(), nextUserSidNext); // 由候选人认领任务
@ -312,7 +658,9 @@ public class Flow3Service extends MybatisBaseService<FlowMapper, Flowable> {
nextUserSid = change(nextUserSid, bv.getInstanceId());
taskService.setAssignee(task2.getId(), nextUserSid);//将下一环节用户放入流程中
}
vo.setTaskId(task2.getId());
List<String> taskIdList = tasks.stream().map(v -> v.getId()).collect(Collectors.toList());
String taskIds = String.join(",", taskIdList);
vo.setTaskId(taskIds);
//在act_ru_variable表中增加环节上的业务参数的变量
taskService.setVariablesLocal(task2.getId(), formVariables);
nodeState = task2.getName();
@ -323,11 +671,11 @@ public class Flow3Service extends MybatisBaseService<FlowMapper, Flowable> {
for (int i = 0; i < tasks.size(); i++) {
Task task2 = tasks.get(i);
isMultiInstanceTask = isMultiInstanceTask(task2);
vo.setTaskId(task2.getId());
/* vo.setTaskId(task2.getId());
nodeState = task2.getName();
taskDefKey = task2.getTaskDefinitionKey();
taskDefKey = task2.getTaskDefinitionKey();*/
if ("会签任务".equals(isMultiInstanceTask) || "或签任务".equals(isMultiInstanceTask)) {
if(ProcDefEnum.DEFAUL_TADMIN_SID.getProDefId().equals(task2.getAssignee())){
if (ProcDefEnum.DEFAUL_TADMIN_SID.getProDefId().equals(task2.getAssignee())) {
nextUserSid = ProcDefEnum.DEFAUL_TADMIN_SID.getProDefId();
adminContains = true;
break;
@ -341,9 +689,12 @@ public class Flow3Service extends MybatisBaseService<FlowMapper, Flowable> {
}
}else{//会签
} else {//会签
Task task2 = tasks.get(0);
vo.setTaskId(task2.getId());
List<String> taskIdList = tasks.stream().map(v -> v.getId()).collect(Collectors.toList());
String taskIds = String.join(",", taskIdList);
// vo.setTaskId(task2.getId());
vo.setTaskId(taskIds);
nodeState = task2.getName();
taskDefKey = task2.getTaskDefinitionKey();
@ -408,7 +759,7 @@ public class Flow3Service extends MybatisBaseService<FlowMapper, Flowable> {
return rb.success().setData(vo);
}
public ResultBean<UpdateFlowFieldVo> businessStartProcessInstanceById222(BusinessVariables bv) {
public ResultBean<UpdateFlowFieldVo> businessStartProcessInstanceById111(BusinessVariables bv) {
ResultBean<UpdateFlowFieldVo> rb = ResultBean.fireFail();
// 或签任务候选人
/* List<String> userIds = Arrays.asList(
@ -497,12 +848,12 @@ public class Flow3Service extends MybatisBaseService<FlowMapper, Flowable> {
taskService.setVariablesLocal(id_, variables);
if (ProcDefEnum.DEFAUL_TADMIN_SID.getProDefId().equals(nextNodeUserSids)) {
return handleAutomaticApproval(bv, task, id_, task_def_key_, variables, variablesSeconds, processDefinition);
return handleAutomaticApproval(bv, task, id_, task_def_key_, variables, processDefinition);
}
// 如果申请人与下一环节审批人相同,则自动审批
if (bv.getUserSid().equals(nextNodeUserSids)) {
return handleSelfApproval(bv, task, id_, task_def_key_, variables, variablesSeconds, processDefinition);
return handleSelfApproval(bv, task, id_, task_def_key_, variables, processDefinition);
}
} else {
List<Task> tasks = taskService.createTaskQuery().processInstanceId(processInstance.getId()).list();
@ -514,7 +865,7 @@ public class Flow3Service extends MybatisBaseService<FlowMapper, Flowable> {
if (!ProcDefEnum.DEFAUL_TADMIN_SID.getProDefId().equals(task2.getAssignee())) {
continue;
} else {
return handleAutomaticApproval(bv, task, id_, task_def_key_, variables, variablesSeconds, processDefinition);
return handleAutomaticApproval(bv, task, id_, task_def_key_, variables, processDefinition);
}
}
@ -544,7 +895,7 @@ public class Flow3Service extends MybatisBaseService<FlowMapper, Flowable> {
* 处理自动审批逻辑当任务为转办时
*/
private ResultBean<UpdateFlowFieldVo> handleAutomaticApproval(BusinessVariables bv, Task task, String id_, String task_def_key_,
Map<String, Object> variables, Map<String, Object> variablesSeconds, ProcessDefinition processDefinition) {
Map<String, Object> variables, ProcessDefinition processDefinition) {
bv.setModelId(bv.getModelId());
bv.setInstanceId(task.getProcessInstanceId());
bv.setTaskId(id_);
@ -553,7 +904,6 @@ public class Flow3Service extends MybatisBaseService<FlowMapper, Flowable> {
bv.setTaskDefKey(task_def_key_);
bv.setFormVariables(variables);
bv.setOrgSidPath(bv.getOrgSidPath());
bv.setFormVariables(variablesSeconds);
bv.setComment("系统自动转办!");
bv.setNextNodeUserSids("");
@ -565,7 +915,7 @@ public class Flow3Service extends MybatisBaseService<FlowMapper, Flowable> {
* 处理自动审批逻辑当申请人与下一环节审批人相同
*/
private ResultBean<UpdateFlowFieldVo> handleSelfApproval(BusinessVariables bv, Task task, String id_, String task_def_key_,
Map<String, Object> variables, Map<String, Object> variablesSeconds, ProcessDefinition processDefinition) {
Map<String, Object> variables, ProcessDefinition processDefinition) {
bv.setModelId(bv.getModelId());
bv.setInstanceId(task.getProcessInstanceId());
bv.setTaskId(id_);
@ -574,7 +924,6 @@ public class Flow3Service extends MybatisBaseService<FlowMapper, Flowable> {
bv.setTaskDefKey(task_def_key_);
bv.setFormVariables(variables);
bv.setOrgSidPath(bv.getOrgSidPath());
bv.setFormVariables(variablesSeconds);
bv.setComment("因与申请人相同,系统自动处理,需以下一级审批人审批意见为准!");
bv.setNextNodeUserSids("");
@ -653,7 +1002,7 @@ public class Flow3Service extends MybatisBaseService<FlowMapper, Flowable> {
return userList == null ? new ArrayList<>() : userList; // 如果返回为null,则返回空列表
}
/* public ResultBean<UpdateFlowFieldVo> handleProsess222(BusinessVariables bv, boolean b) {
/* public ResultBean<UpdateFlowFieldVo> handleProsess111(BusinessVariables bv, boolean b) {
ResultBean<UpdateFlowFieldVo> rb = ResultBean.fireFail();
UpdateFlowFieldVo vo = new UpdateFlowFieldVo();
// 或签任务候选人
@ -925,7 +1274,7 @@ public class Flow3Service extends MybatisBaseService<FlowMapper, Flowable> {
if (sysUserVos == null || sysUserVos.size() < 1) {
log.error("下一环节无用户填充管理员用户");
return rb;
}else{
} else {
StringBuilder nextNodeUserSids = new StringBuilder();
for (SysUserVo su : sysUserVos) {
nextNodeUserSids.append(su.getSid()).append(",");

50
anrui-gateway/src/main/resources/logback-spring.xml

@ -0,0 +1,50 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<property name="log.base" value="logs/anrui_gateway" />
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 :
|%blue(%thread) 线程 如 :DiscoveryClient-CacheRefreshExecutor-0-->
<!--<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>-->
<pattern>%yellow(%date{yyyy-MM-dd HH:mm:ss}) |%highlight(%-5level) |%green(%logger:%line) |%blue(%msg%n)
</pattern>
<!--<charset>UTF-8</charset> -->
</encoder>
</appender>
<!-- 彩色日志 -->
<!-- 彩色日志依赖的渲染类 -->
<conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
<conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
<conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
<!-- 彩色日志格式 -->
<property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
<appender name="FILEOUT"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.base}.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${log.base}.%d{yyyyMMdd}.%i.log.zip
</fileNamePattern>
<!-- 当文件大小超过10MB时触发滚动 -->
<timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>1MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder>
<!--<pattern>%date [%thread] %-5level %logger{35} - %msg%n</pattern>-->
<Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36}
-%msg%n</Pattern>
<!--<charset>UTF-8</charset> -->
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="STDOUT" />
<appender-ref ref="FILEOUT" />
</root>
</configuration>

22
anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysstaffinfo/UserCommonVo.java

@ -0,0 +1,22 @@
package com.yxt.anrui.portal.api.sysstaffinfo;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import java.util.HashMap;
import java.util.Map;
/**
* @description:
* @author: dimengzhe
* @date: 2025/3/3
**/
@Data
public class UserCommonVo {
@JsonProperty("id")
private String dictKey;
private String dictValue;
private Map<String, Object> extra = new HashMap<>();
}

7
anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysstaffinfo/SysStaffinfoMapper.java

@ -121,10 +121,15 @@ public interface SysStaffinfoMapper extends BaseMapper<SysStaffinfo> {
IPage<AppSysStaffVo> getUserList(IPage<SysStaffinfo> page, @Param(Constants.WRAPPER) QueryWrapper<AppSysStaffVo> qw, @Param("orgSid") String orgSid);
List<AppSysStaffVo> getGressionUserList(@Param("userOrgSid")String userOrgSid);
List<AppSysStaffVo> getGressionUserList(@Param("userOrgSid") String userOrgSid);
List<PcSysStaffVo> selectStaffLists();
List<PcSysStaffVo> selectStaffListss();
List<StaffByRole> getStaffNameByRoleCode(@Param("orgSidPath") String orgSidPath, @Param("list") List<String> list);
List<UserCommonVo> getCommonUser();
List<UserCommonVo> getCommonUserByRoleSid(@Param("roleSid") String s);
}

159
anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysstaffinfo/SysStaffinfoMapper.xml

@ -17,14 +17,14 @@
<select id="searchAppContactsPageList"
resultType="com.yxt.anrui.portal.api.sysstaffinfo.SysStaffinfoAppContactsSearchVo">
SELECT staff.sid,
staff.name,
staff.mobile,
staff.position,
user.headImage,
GROUP_CONCAT(org.orgName SEPARATOR '/') orgName
staff.name,
staff.mobile,
staff.position,
user.headImage,
GROUP_CONCAT(org.orgName SEPARATOR '/') orgName
FROM sys_staffinfo staff
LEFT JOIN sys_staff_org org ON org.staffSid = staff.sid
LEFT JOIN sys_user user ON staff.sid = user.staffSid
LEFT JOIN sys_staff_org org ON org.staffSid = staff.sid
LEFT JOIN sys_user user ON staff.sid = user.staffSid
WHERE 1 = 1 and staff.personTypeKey != '01'
<if test="mobileStr != null and mobileStr != ''">
AND staff.mobile LIKE concat('%', #{mobileStr}, '%')
@ -107,24 +107,24 @@
DATE_FORMAT(si.joinCompnyDate, '%Y-%m-%d') AS joinCompnyDate,
<!--所在部门-->
(select GROUP_CONCAT(orgName SEPARATOR ',') orgName from sys_staff_org so where so.staffSid = si.sid) as
orgName,
orgName,
<!--所在部门sid-->
(select GROUP_CONCAT(orgSid SEPARATOR ',') orgSid from sys_staff_org so where so.staffSid = si.sid) as
orgSid,
orgSid,
<!--岗位-->
(select GROUP_CONCAT(sp.name SEPARATOR ',') postName
from sys_staff_post ssp
left join sys_post sp on
sp.sid =
ssp.postSid
where ssp.staffSid = si.sid
group by ssp.id) as postName
from sys_staff_post ssp
left join sys_post sp on
sp.sid =
ssp.postSid
where ssp.staffSid = si.sid
group by ssp.id) as postName
from sys_staffinfo si
LEFT JOIN sys_staff_org so
ON so.staffSid = si.sid
LEFT JOIN sys_staff_post ssp
ON ssp.staffSid = si.sid
${ew.customSqlSegment}
LEFT JOIN sys_staff_org so
ON so.staffSid = si.sid
LEFT JOIN sys_staff_post ssp
ON ssp.staffSid = si.sid
${ew.customSqlSegment}
</select>
<!--根据员工手机号和sid查询员工信息是否已存在-->
<select id="selectByMobileAndSid" resultType="com.yxt.anrui.portal.api.sysstaffinfo.SysStaffinfo">
@ -252,8 +252,8 @@
isHaveInsurance,
<!--意外险参保:1是,0否-->
case isHaveInsurance
when 1 then '是'
when 0 then '否' end as isHaveInsuranceValue,
when 1 then '是'
when 0 then '否' end as isHaveInsuranceValue,
<!--意外险参保时间-->
DATE_FORMAT(insuranceStartDate, '%Y-%m-%d') as insuranceStartDate,
<!--意外险参保终止日期-->
@ -264,26 +264,26 @@
isHaveAged,
<!--养老:1是,0否-->
case isHaveAged
when 1 then '是'
when 0 then '否' end as isHaveAgedValue,
when 1 then '是'
when 0 then '否' end as isHaveAgedValue,
<!--医疗:1是,0否-->
isHaveMedical,
<!--医疗:1是,0否-->
case isHaveMedical
when 1 then '是'
when 0 then '否' end as isHaveMedicalValue,
when 1 then '是'
when 0 then '否' end as isHaveMedicalValue,
<!--工伤:1是,0否-->
isHaveInjury,
<!--工伤:1是,0否-->
case isHaveInjury
when 1 then '是'
when 0 then '否' end as isHaveInjuryValue,
when 1 then '是'
when 0 then '否' end as isHaveInjuryValue,
<!--失业:1是,0否-->
isHaveUnemploy,
<!--失业:1是,0否-->
case isHaveUnemploy
when 1 then '是'
when 0 then '否' end as isHaveUnemployValue,
when 1 then '是'
when 0 then '否' end as isHaveUnemployValue,
<!--社保参保地-->
insuredPlace,
<!--纸质档案保管地-->
@ -335,49 +335,49 @@
</select>
<select id="getUserList" resultType="com.yxt.anrui.portal.api.sysstaffinfo.app.AppSysStaffVo">
select su.sid userSid,
si.name userName,
su.headImage,
si.mobile userMobile,
sso.orgName as department,
sp.name
select su.sid userSid,
si.name userName,
su.headImage,
si.mobile userMobile,
sso.orgName as department,
sp.name
from sys_staff_org sso
left join sys_staffinfo si on sso.staffSid = si.sid
left join sys_user su on si.sid = su.staffSid
left join sys_staff_post ssp on si.sid = ssp.staffSid
left join sys_post sp on sp.sid = ssp.postSid
left join sys_staffinfo si on sso.staffSid = si.sid
left join sys_user su on si.sid = su.staffSid
left join sys_staff_post ssp on si.sid = ssp.staffSid
left join sys_post sp on sp.sid = ssp.postSid
<where>
${ew.sqlSegment}
and su.isAdmin is NULL
and su.isAdmin is NULL
<if test="orgSid != null and orgSid != ''">
and find_in_set(#{orgSid}
, replace (sso.orgSidPath
, '/'
, ','))
, replace (sso.orgSidPath
, '/'
, ','))
</if>
</where>
group by su.sid
</select>
<select id="getGressionUserList" resultType="com.yxt.anrui.portal.api.sysstaffinfo.app.AppSysStaffVo">
select su.sid as userSid,
si.name as userName,
su.headImage,
si.mobile as userMobile,
sso.orgName as department,
sp.name
select su.sid as userSid,
si.name as userName,
su.headImage,
si.mobile as userMobile,
sso.orgName as department,
sp.name
from sys_staff_org sso
left join sys_staffinfo si on sso.staffSid = si.sid
left join sys_user su on si.sid = su.staffSid
left join sys_staff_post ssp on si.sid = ssp.staffSid
left join sys_post sp on sp.sid = ssp.postSid
left join sys_staffinfo si on sso.staffSid = si.sid
left join sys_user su on si.sid = su.staffSid
left join sys_staff_post ssp on si.sid = ssp.staffSid
left join sys_post sp on sp.sid = ssp.postSid
<where>
1=1
<if test="userOrgSid != null and userOrgSid != ''">
and find_in_set(#{userOrgSid}
, replace(sso.orgSidPath
, '/'
, ','))
, replace(sso.orgSidPath
, '/'
, ','))
</if>
</where>
</select>
@ -386,30 +386,53 @@
select su.sid userSid,
si.name staffName
from sys_user su
left join sys_staffinfo si on su.staffSid = si.sid where su.isAdmin is NULL
left join sys_staffinfo si on su.staffSid = si.sid
where su.isAdmin is NULL
</select>
<select id="selectStaffListss" resultType="com.yxt.anrui.portal.api.sysstaffinfo.PcSysStaffVo">
select su.sid userSid,
si.name staffName
from sys_user su
left join sys_staffinfo si on su.staffSid = si.sid where su.isAdmin is NULL and si.personTypeKey != '01'
left join sys_staffinfo si on su.staffSid = si.sid
where su.isAdmin is NULL
and si.personTypeKey != '01'
</select>
<select id="getStaffNameByRoleCode" resultType="com.yxt.anrui.portal.api.sysstaffinfo.StaffByRole">
SELECT DISTINCT
u.sid as managerSid,
sf.name as manager
u.sid as managerSid,
sf.name as manager
FROM
sys_user_role AS ur
LEFT JOIN sys_role AS r ON ur.roleSid = r.sid
LEFT JOIN sys_user as u ON ur.userSid = u.sid
LEFT JOIN sys_staffinfo as sf ON u.staffSid = sf.sid
LEFT JOIN sys_staff_org as so ON sf.sid = so.staffSid
sys_user_role AS ur
LEFT JOIN sys_role AS r ON ur.roleSid = r.sid
LEFT JOIN sys_user as u ON ur.userSid = u.sid
LEFT JOIN sys_staffinfo as sf ON u.staffSid = sf.sid
LEFT JOIN sys_staff_org as so ON sf.sid = so.staffSid
WHERE so.orgSidPath like CONCAT( '%', #{orgSidPath}, '%' )
AND u.isDelete = 0 and sf.isDelete = 0 and sf.personTypeKey != '01'
AND r.code IN
AND u.isDelete = 0 and sf.isDelete = 0 and sf.personTypeKey != '01'
AND r.code IN
<foreach collection="list" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
</select>
<select id="getCommonUser" resultType="com.yxt.anrui.portal.api.sysstaffinfo.UserCommonVo">
select su.sid dictKey,
si.name dictValue
from sys_user su
left join sys_staffinfo si on su.staffSid = si.sid
where su.isAdmin is NULL
and si.personTypeKey != '01'
</select>
<select id="getCommonUserByRoleSid" resultType="com.yxt.anrui.portal.api.sysstaffinfo.UserCommonVo">
select su.sid dictKey,
si.name dictValue
from sys_user su
left join sys_staffinfo si on su.staffSid = si.sid
left join sys_user_role sr on sr.userSid = su.sid
where su.isAdmin is NULL
and si.personTypeKey != '01'
and sr.roleSid = #{roleSid}
</select>
</mapper>

12
anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysstaffinfo/SysStaffinfoRest.java

@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yxt.anrui.portal.api.sysstaffinfo.*;
import com.yxt.anrui.portal.api.sysstaffinfo.app.AppSysStaffQuery;
import com.yxt.anrui.portal.api.sysstaffinfo.app.AppSysStaffVo;
import com.yxt.anrui.portal.api.sysstaffinfo.UserCommonVo;
import com.yxt.anrui.portal.biz.sysuser.SysUserService;
import com.yxt.common.base.config.component.FileUploadComponent;
import com.yxt.common.base.utils.PagerUtil;
@ -11,11 +12,10 @@ 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 io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import java.text.SimpleDateFormat;
import java.util.Collections;
@ -237,5 +237,9 @@ public class SysStaffinfoRest implements SysStaffinfoFeign {
return sysStaffinfoService.selectStaffListss();
}
@ApiOperation("获取用户")
@GetMapping({"/getCommonUser", "/getCommonUser/{roleSids}"})
ResultBean<List<UserCommonVo>> getCommonUser(@PathVariable(value = "roleSids", required = false) String roleSids) {
return sysStaffinfoService.getCommonUser(roleSids);
}
}

30
anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysstaffinfo/SysStaffinfoService.java

@ -40,6 +40,8 @@ import org.springframework.stereotype.Service;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
import static java.util.stream.Collectors.toList;
@ -624,10 +626,10 @@ public class SysStaffinfoService extends MybatisBaseService<SysStaffinfoMapper,
if (reduce1.size() > 0) {
//根据staffSid查询token
String token = sysUserService.selectByStaffsid(sid).getToken();
if(StringUtils.isNotBlank(token)){
if (StringUtils.isNotBlank(token)) {
//查询redis中是否包含该token
String userName = redisUtil.get(token);
if(StringUtils.isNotBlank(userName)){
if (StringUtils.isNotBlank(userName)) {
//清空该token
redisUtil.remove(token);
}
@ -826,7 +828,29 @@ public class SysStaffinfoService extends MybatisBaseService<SysStaffinfoMapper,
List<String> roleCode = query.getRoleCode();
SysOrganization sysOrganization = sysOrganizationService.fetchBySid(useOrgSid);
String orgSidPath = sysOrganization.getOrgSidPath();
List<StaffByRole> list = baseMapper.getStaffNameByRoleCode(orgSidPath,roleCode);
List<StaffByRole> list = baseMapper.getStaffNameByRoleCode(orgSidPath, roleCode);
return list;
}
public ResultBean<List<UserCommonVo>> getCommonUser(String roleSids) {
ResultBean<List<UserCommonVo>> rb = ResultBean.fireFail();
List<UserCommonVo> userCommonVoList = new ArrayList<>();
if (StringUtils.isBlank(roleSids)) {
//查询集团所有的人员
userCommonVoList = baseMapper.getCommonUser();
} else {
List<String> roleSidList = Arrays.asList(roleSids.split(","));
roleSidList.removeAll(Collections.singleton(null));
if (!roleSidList.isEmpty()) {
for (int i = 0; i < roleSidList.size(); i++) {
List<UserCommonVo> userList = baseMapper.getCommonUserByRoleSid(roleSidList.get(i));
userCommonVoList.addAll(userList);
}
}
}
List<UserCommonVo> uniqueList = new ArrayList<>(userCommonVoList.stream()
.collect(Collectors.toMap(UserCommonVo::getDictKey, Function.identity(), (existing, replacement) -> existing))
.values());
return rb.success().setData(uniqueList);
}
}

7
anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysuser/SysUserRest.java

@ -24,11 +24,10 @@ 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 io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.util.*;
@ -286,7 +285,7 @@ public class SysUserRest implements SysUserFeign {
if (i == 0) {
return ResultBean.fireFail().setMsg("修改失败");
}
if(StringUtils.isNotBlank(token)){
if (StringUtils.isNotBlank(token)) {
redisUtil.remove(token);
}
return ResultBean.fireSuccess().setMsg("修改成功");

1
anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysuser/SysUserService.java

@ -14,6 +14,7 @@ import com.yxt.anrui.portal.api.sysmobilemenu.SysMobileMenu;
import com.yxt.anrui.portal.api.sysorganization.SysOrganization;
import com.yxt.anrui.portal.api.sysstaffinfo.SysStaffinfo;
import com.yxt.anrui.portal.api.sysstaffinfo.SysStaffinfoVo;
import com.yxt.anrui.portal.api.sysstaffinfo.UserCommonVo;
import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrg;
import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgVo;
import com.yxt.anrui.portal.api.sysstaffpost.SysStaffPostDetailsVo;

152
anrui-reportcenter/anrui-reportcenter-api/src/main/java/com/yxt/anrui/reportcenter/api/asmonthfittingsinventoryreport/AsMonthFittingsInventoryReport.java

@ -0,0 +1,152 @@
/*********************************************************
*********************************************************
******************** *******************
************* ************
******* _oo0oo_ *******
*** o8888888o ***
* 88" . "88 *
* (| -_- |) *
* 0\ = /0 *
* ___/`---'\___ *
* .' \\| |// '. *
* / \\||| : |||// \ *
* / _||||| -:- |||||- \ *
* | | \\\ - /// | | *
* | \_| ''\---/'' |_/ | *
* \ .-\__ '-' ___/-. / *
* ___'. .' /--.--\ `. .'___ *
* ."" '< `.___\_<|>_/___.' >' "". *
* | | : `- \`.;`\ _ /`;.`/ - ` : | | *
* \ \ `_. \_ __\ /__ _/ .-` / / *
* =====`-.____`.___ \_____/___.-`___.-'===== *
* `=---=' *
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *
*********__佛祖保佑__永无BUG__验收通过__钞票多多__*********
*********************************************************/
package com.yxt.anrui.reportcenter.api.asmonthfittingsinventoryreport;
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: baobiao(baobiao) <br/>
* File: AsMonthFittingsInventoryReport.java <br/>
* Class: com.yxt.anrui.reportcenter.api.asmonthfittingsinventoryreport.AsMonthFittingsInventoryReport <br/>
* Description: 月度配件库存管理指标完成情况报表. <br/>
* Copyright: Copyright (c) 2011 <br/>
* Company: https://gitee.com/liuzp315 <br/>
* Makedate: 2025-03-05 14:43:41 <br/>
*
* @author liupopo
* @version 1.0
* @since 1.0
*/
@Data
@ApiModel(value = "月度配件库存管理指标完成情况报表", description = "月度配件库存管理指标完成情况报表")
@TableName("as_month_fittings_inventory_report")
public class AsMonthFittingsInventoryReport extends BaseEntity {
private static final long serialVersionUID = 1L;
@ApiModelProperty("生成年月(yyyy-MM)")
private String createDate; // 生成年月(yyyy-MM)
@ApiModelProperty("事业部sid")
private String busOrgSid; // 事业部sid
@ApiModelProperty("事业部名称")
private String busOrgName; // 事业部名称
@ApiModelProperty("分公司sid")
private String createOrgSid; // 分公司sid
@ApiModelProperty("分公司名称")
private String createOrgName; // 分公司名称
@ApiModelProperty("部门(服务站)sid")
private String useOrgSid; // 部门(服务站)sid
@ApiModelProperty("部门(服务站)")
private String useOrgName; // 部门(服务站)
@ApiModelProperty("品牌sid")
private String brandSid; // 品牌sid
@ApiModelProperty("品牌名")
private String brandName; // 品牌名
@ApiModelProperty("品名(区域)")
private String zoneName; // 品名(区域)
@ApiModelProperty("项目(仓库)")
private String houseName; // 项目(仓库)
@ApiModelProperty("在修车辆")
private BigDecimal repairVehAmount; // 在修车辆
@ApiModelProperty("品种(个)-库存总计")
private BigDecimal fittingsVarietyTotal; // 品种(个)-库存总计
@ApiModelProperty("金额(元)-库存总计")
private BigDecimal fittingsAmountTotal; // 金额(元)-库存总计
@ApiModelProperty("品种(个)-库龄1-60天")
private BigDecimal fittingsVarietyOne; // 品种(个)-库龄1-60天
@ApiModelProperty("金额(元)-库龄1-60天")
private BigDecimal fittingsAmountOne; // 金额(元)-库龄1-60天
@ApiModelProperty("占比-库龄1-60天")
private BigDecimal fittingsPercentOne; // 占比-库龄1-60天
@ApiModelProperty("品种(个)-库龄61-90天")
private BigDecimal fittingsVarietyTwo; // 品种(个)-库龄61-90天
@ApiModelProperty("金额(元)-库龄61-90天")
private BigDecimal fittingsAmountTwo; // 金额(元)-库龄61-90天
@ApiModelProperty("占比-库龄61-90天")
private BigDecimal fittingsPercentTwo; // 占比-库龄61-90天
@ApiModelProperty("品种(个)-库龄91-180天")
private BigDecimal fittingsVarietyThree; // 品种(个)-库龄91-180天
@ApiModelProperty("金额(元)-库龄91-180天")
private BigDecimal fittingsAmountThree; // 金额(元)-库龄91-180天
@ApiModelProperty("占比-库龄91-180天")
private BigDecimal fittingsPercentThree; // 占比-库龄91-180天
@ApiModelProperty("品种(个)-库龄150-180天")
private BigDecimal fittingsVarietyFour; // 品种(个)-库龄150-180天
@ApiModelProperty("金额(元)-库龄150-180天")
private BigDecimal fittingsAmountFour; // 金额(元)-库龄150-180天
@ApiModelProperty("占比-库龄150-180天")
private BigDecimal fittingsPercentFour; // 占比-库龄150-180天
@ApiModelProperty("品种(个)-库龄181-270天")
private BigDecimal fittingsVarietyFive; // 品种(个)-库龄181-270天
@ApiModelProperty("金额(元)-库龄181-270天")
private BigDecimal fittingsAmountFive; // 金额(元)-库龄181-270天
@ApiModelProperty("占比-库龄181-270天")
private BigDecimal fittingsPercentFive; // 占比-库龄181-270天
@ApiModelProperty("品种(个)-库龄240-270天")
private BigDecimal fittingsVarietySix; // 品种(个)-库龄240-270天
@ApiModelProperty("金额(元)-库龄240-270天")
private BigDecimal fittingsAmountSix; // 金额(元)-库龄240-270天
@ApiModelProperty("占比-库龄240-270天")
private BigDecimal fittingsPercentSix; // 占比-库龄240-270天
@ApiModelProperty("品种(个)-库龄271-360天")
private BigDecimal fittingsVarietySeven; // 品种(个)-库龄271-360天
@ApiModelProperty("金额(元)-库龄271-360天")
private BigDecimal fittingsAmountSeven; // 金额(元)-库龄271-360天
@ApiModelProperty("占比-库龄271-360天")
private BigDecimal fittingsPercentSeven; // 占比-库龄271-360天
@ApiModelProperty("品种(个)-库龄330-360天")
private BigDecimal fittingsVarietyEight; // 品种(个)-库龄330-360天
@ApiModelProperty("金额(元)-库龄330-360天")
private BigDecimal fittingsAmountEight; // 金额(元)-库龄330-360天
@ApiModelProperty("占比-库龄330-360天")
private BigDecimal fittingsPercentEight; // 占比-库龄330-360天
@ApiModelProperty("品种(个)-库龄361-720天")
private BigDecimal fittingsVarietyNine; // 品种(个)-库龄361-720天
@ApiModelProperty("金额(元)-库龄361-720天")
private BigDecimal fittingsAmountNine; // 金额(元)-库龄361-720天
@ApiModelProperty("占比-库龄361-720天")
private BigDecimal fittingsPercentNine; // 占比-库龄361-720天
@ApiModelProperty("品种(个)-库龄720天以上")
private BigDecimal fittingsVarietyTen; // 品种(个)-库龄720天以上
@ApiModelProperty("金额(元)-库龄720天以上")
private BigDecimal fittingsAmountTen; // 金额(元)-库龄720天以上
@ApiModelProperty("占比-库龄720天以上")
private BigDecimal fittingsPercentTen; // 占比-库龄720天以上
@ApiModelProperty("当月出库配件成本-金额")
private BigDecimal fittingsOutAmount; // 当月出库配件成本-金额
@ApiModelProperty("当月出库配件成本-占比")
private BigDecimal fittingsOutPercent; // 当月出库配件成本-占比
@ApiModelProperty("当月入库配件成本-金额")
private BigDecimal fittingsInAmount; // 当月入库配件成本-金额
@ApiModelProperty("当月入库配件成本-占比")
private BigDecimal fittingsInPercent; // 当月入库配件成本-占比
}

74
anrui-reportcenter/anrui-reportcenter-api/src/main/java/com/yxt/anrui/reportcenter/api/asmonthfittingsinventoryreport/AsMonthFittingsInventoryReportFeign.java

@ -0,0 +1,74 @@
/*********************************************************
*********************************************************
******************** *******************
************* ************
******* _oo0oo_ *******
*** o8888888o ***
* 88" . "88 *
* (| -_- |) *
* 0\ = /0 *
* ___/`---'\___ *
* .' \\| |// '. *
* / \\||| : |||// \ *
* / _||||| -:- |||||- \ *
* | | \\\ - /// | | *
* | \_| ''\---/'' |_/ | *
* \ .-\__ '-' ___/-. / *
* ___'. .' /--.--\ `. .'___ *
* ."" '< `.___\_<|>_/___.' >' "". *
* | | : `- \`.;`\ _ /`;.`/ - ` : | | *
* \ \ `_. \_ __\ /__ _/ .-` / / *
* =====`-.____`.___ \_____/___.-`___.-'===== *
* `=---=' *
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *
*********__佛祖保佑__永无BUG__验收通过__钞票多多__*********
*********************************************************/
package com.yxt.anrui.reportcenter.api.asmonthfittingsinventoryreport;
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 io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* Project: baobiao(baobiao) <br/>
* File: AsMonthFittingsInventoryReportFeign.java <br/>
* Class: com.yxt.anrui.reportcenter.api.asmonthfittingsinventoryreport.AsMonthFittingsInventoryReportFeign <br/>
* Description: 月度配件库存管理指标完成情况报表. <br/>
* Copyright: Copyright (c) 2011 <br/>
* Company: https://gitee.com/liuzp315 <br/>
* Makedate: 2025-03-05 14:43:41 <br/>
*
* @author liupopo
* @version 1.0
* @since 1.0
*/
@Api(tags = "月度配件库存管理指标完成情况报表")
@FeignClient(
contextId = "baobiao-AsMonthFittingsInventoryReport",
name = "baobiao",
path = "v1/MonthFittingsReport",
fallback = AsMonthFittingsInventoryReportFeignFallback.class)
public interface AsMonthFittingsInventoryReportFeign {
@ApiOperation("月度配件库存管理指标完成情况列表")
@PostMapping("/monthFittingsList")
@ResponseBody
public ResultBean<PagerVo<MonthFittingsReportListVo>> monthFittingsList(@RequestBody PagerQuery<MonthFittingsReportListQuery> pq);
@ApiOperation("月度配件库存管理指标完成情况列表明细")
@PostMapping("/monthFittingsListDetails")
@ResponseBody
public ResultBean<List<AsMonthFittingsInventoryReportVo>> monthFittingsListDetails(@RequestParam("createDate") String createDate,
@RequestParam("useOrgSid") String useOrgSid
);
}

64
anrui-reportcenter/anrui-reportcenter-api/src/main/java/com/yxt/anrui/reportcenter/api/asmonthfittingsinventoryreport/AsMonthFittingsInventoryReportFeignFallback.java

@ -0,0 +1,64 @@
/*********************************************************
*********************************************************
******************** *******************
************* ************
******* _oo0oo_ *******
*** o8888888o ***
* 88" . "88 *
* (| -_- |) *
* 0\ = /0 *
* ___/`---'\___ *
* .' \\| |// '. *
* / \\||| : |||// \ *
* / _||||| -:- |||||- \ *
* | | \\\ - /// | | *
* | \_| ''\---/'' |_/ | *
* \ .-\__ '-' ___/-. / *
* ___'. .' /--.--\ `. .'___ *
* ."" '< `.___\_<|>_/___.' >' "". *
* | | : `- \`.;`\ _ /`;.`/ - ` : | | *
* \ \ `_. \_ __\ /__ _/ .-` / / *
* =====`-.____`.___ \_____/___.-`___.-'===== *
* `=---=' *
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *
*********__佛祖保佑__永无BUG__验收通过__钞票多多__*********
*********************************************************/
package com.yxt.anrui.reportcenter.api.asmonthfittingsinventoryreport;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* Project: baobiao(baobiao) <br/>
* File: AsMonthFittingsInventoryReportFeignFallback.java <br/>
* Class: com.yxt.anrui.reportcenter.api.asmonthfittingsinventoryreport.AsMonthFittingsInventoryReportFeignFallback <br/>
* Description: 月度配件库存管理指标完成情况报表. <br/>
* Copyright: Copyright (c) 2011 <br/>
* Company: https://gitee.com/liuzp315 <br/>
* Makedate: 2025-03-05 14:43:41 <br/>
*
* @author liupopo
* @version 1.0
* @since 1.0
*/
@Component
public class AsMonthFittingsInventoryReportFeignFallback implements AsMonthFittingsInventoryReportFeign {
@Override
public ResultBean<PagerVo<MonthFittingsReportListVo>> monthFittingsList(PagerQuery<MonthFittingsReportListQuery> pq) {
return null;
}
@Override
public ResultBean<List<AsMonthFittingsInventoryReportVo>> monthFittingsListDetails(String createDate, String useOrgSid) {
return null;
}
}

136
anrui-reportcenter/anrui-reportcenter-api/src/main/java/com/yxt/anrui/reportcenter/api/asmonthfittingsinventoryreport/AsMonthFittingsInventoryReportVo.java

@ -0,0 +1,136 @@
/*********************************************************
*********************************************************
******************** *******************
************* ************
******* _oo0oo_ *******
*** o8888888o ***
* 88" . "88 *
* (| -_- |) *
* 0\ = /0 *
* ___/`---'\___ *
* .' \\| |// '. *
* / \\||| : |||// \ *
* / _||||| -:- |||||- \ *
* | | \\\ - /// | | *
* | \_| ''\---/'' |_/ | *
* \ .-\__ '-' ___/-. / *
* ___'. .' /--.--\ `. .'___ *
* ."" '< `.___\_<|>_/___.' >' "". *
* | | : `- \`.;`\ _ /`;.`/ - ` : | | *
* \ \ `_. \_ __\ /__ _/ .-` / / *
* =====`-.____`.___ \_____/___.-`___.-'===== *
* `=---=' *
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *
*********__佛祖保佑__永无BUG__验收通过__钞票多多__*********
*********************************************************/
package com.yxt.anrui.reportcenter.api.asmonthfittingsinventoryreport;
import com.yxt.common.core.vo.Vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
/**
* Project: baobiao(baobiao) <br/>
* File: AsMonthFittingsInventoryReportVo.java <br/>
* Class: com.yxt.anrui.reportcenter.api.asmonthfittingsinventoryreport.AsMonthFittingsInventoryReportVo <br/>
* Description: 月度配件库存管理指标完成情况报表 视图数据对象. <br/>
* Copyright: Copyright (c) 2011 <br/>
* Company: https://gitee.com/liuzp315 <br/>
* Makedate: 2025-03-05 14:43:41 <br/>
*
* @author liupopo
* @version 1.0
* @since 1.0
*/
@Data
@ApiModel(value = "月度配件库存管理指标完成情况报表 视图数据对象", description = "月度配件库存管理指标完成情况报表 视图数据对象")
public class AsMonthFittingsInventoryReportVo implements Vo {
@ApiModelProperty("生成年月(yyyy-MM)")
private String createDate; // 生成年月(yyyy-MM)
@ApiModelProperty("品牌名")
private String brandName; // 品牌名
@ApiModelProperty("品名(区域)")
private String zoneName; // 品名(区域)
@ApiModelProperty("项目(仓库)")
private String houseName; // 项目(仓库)
@ApiModelProperty("在修车辆")
private String repairVehAmount; // 在修车辆
@ApiModelProperty("品种(个)-库存总计")
private String fittingsVarietyTotal; // 品种(个)-库存总计
@ApiModelProperty("金额(元)-库存总计")
private String fittingsAmountTotal; // 金额(元)-库存总计
@ApiModelProperty("品种(个)-库龄1-60天")
private String fittingsVarietyOne; // 品种(个)-库龄1-60天
@ApiModelProperty("金额(元)-库龄1-60天")
private String fittingsAmountOne; // 金额(元)-库龄1-60天
@ApiModelProperty("占比-库龄1-60天")
private String fittingsPercentOne; // 占比-库龄1-60天
@ApiModelProperty("品种(个)-库龄61-90天")
private String fittingsVarietyTwo; // 品种(个)-库龄61-90天
@ApiModelProperty("金额(元)-库龄61-90天")
private String fittingsAmountTwo; // 金额(元)-库龄61-90天
@ApiModelProperty("占比-库龄61-90天")
private String fittingsPercentTwo; // 占比-库龄61-90天
@ApiModelProperty("品种(个)-库龄91-180天")
private String fittingsVarietyThree; // 品种(个)-库龄91-180天
@ApiModelProperty("金额(元)-库龄91-180天")
private String fittingsAmountThree; // 金额(元)-库龄91-180天
@ApiModelProperty("占比-库龄91-180天")
private String fittingsPercentThree; // 占比-库龄91-180天
@ApiModelProperty("品种(个)-库龄150-180天")
private String fittingsVarietyFour; // 品种(个)-库龄150-180天
@ApiModelProperty("金额(元)-库龄150-180天")
private String fittingsAmountFour; // 金额(元)-库龄150-180天
@ApiModelProperty("占比-库龄150-180天")
private String fittingsPercentFour; // 占比-库龄150-180天
@ApiModelProperty("品种(个)-库龄181-270天")
private String fittingsVarietyFive; // 品种(个)-库龄181-270天
@ApiModelProperty("金额(元)-库龄181-270天")
private String fittingsAmountFive; // 金额(元)-库龄181-270天
@ApiModelProperty("占比-库龄181-270天")
private String fittingsPercentFive; // 占比-库龄181-270天
@ApiModelProperty("品种(个)-库龄240-270天")
private String fittingsVarietySix; // 品种(个)-库龄240-270天
@ApiModelProperty("金额(元)-库龄240-270天")
private String fittingsAmountSix; // 金额(元)-库龄240-270天
@ApiModelProperty("占比-库龄240-270天")
private String fittingsPercentSix; // 占比-库龄240-270天
@ApiModelProperty("品种(个)-库龄271-360天")
private String fittingsVarietySeven; // 品种(个)-库龄271-360天
@ApiModelProperty("金额(元)-库龄271-360天")
private String fittingsAmountSeven; // 金额(元)-库龄271-360天
@ApiModelProperty("占比-库龄271-360天")
private String fittingsPercentSeven; // 占比-库龄271-360天
@ApiModelProperty("品种(个)-库龄330-360天")
private String fittingsVarietyEight; // 品种(个)-库龄330-360天
@ApiModelProperty("金额(元)-库龄330-360天")
private String fittingsAmountEight; // 金额(元)-库龄330-360天
@ApiModelProperty("占比-库龄330-360天")
private String fittingsPercentEight; // 占比-库龄330-360天
@ApiModelProperty("品种(个)-库龄361-720天")
private String fittingsVarietyNine; // 品种(个)-库龄361-720天
@ApiModelProperty("金额(元)-库龄361-720天")
private String fittingsAmountNine; // 金额(元)-库龄361-720天
@ApiModelProperty("占比-库龄361-720天")
private String fittingsPercentNine; // 占比-库龄361-720天
@ApiModelProperty("品种(个)-库龄720天以上")
private String fittingsVarietyTen; // 品种(个)-库龄720天以上
@ApiModelProperty("金额(元)-库龄720天以上")
private String fittingsAmountTen; // 金额(元)-库龄720天以上
@ApiModelProperty("占比-库龄720天以上")
private String fittingsPercentTen; // 占比-库龄720天以上
@ApiModelProperty("当月出库配件成本-金额")
private String fittingsOutAmount; // 当月出库配件成本-金额
@ApiModelProperty("当月出库配件成本-占比")
private String fittingsOutPercent; // 当月出库配件成本-占比
@ApiModelProperty("当月入库配件成本-金额")
private String fittingsInAmount; // 当月入库配件成本-金额
@ApiModelProperty("当月入库配件成本-占比")
private String fittingsInPercent; // 当月入库配件成本-占比
}

14
anrui-reportcenter/anrui-reportcenter-api/src/main/java/com/yxt/anrui/reportcenter/api/asmonthfittingsinventoryreport/MonthFittingsReportListQuery.java

@ -0,0 +1,14 @@
package com.yxt.anrui.reportcenter.api.asmonthfittingsinventoryreport;
import com.yxt.common.core.query.Query;
import lombok.Data;
@Data
public class MonthFittingsReportListQuery implements Query {
private String startDate;
private String endDate;
private String useOrgName;
}

12
anrui-reportcenter/anrui-reportcenter-api/src/main/java/com/yxt/anrui/reportcenter/api/asmonthfittingsinventoryreport/MonthFittingsReportListVo.java

@ -0,0 +1,12 @@
package com.yxt.anrui.reportcenter.api.asmonthfittingsinventoryreport;
import com.yxt.common.core.vo.Vo;
import lombok.Data;
@Data
public class MonthFittingsReportListVo implements Vo {
private String createDate;
private String useOrgName;
private String useOrgSid;
}

71
anrui-reportcenter/anrui-reportcenter-biz/src/main/java/com/yxt/anrui/reportcenter/biz/asmonthfittingsinventoryreport/AsMonthFittingsInventoryReportMapper.java

@ -0,0 +1,71 @@
/*********************************************************
*********************************************************
******************** *******************
************* ************
******* _oo0oo_ *******
*** o8888888o ***
* 88" . "88 *
* (| -_- |) *
* 0\ = /0 *
* ___/`---'\___ *
* .' \\| |// '. *
* / \\||| : |||// \ *
* / _||||| -:- |||||- \ *
* | | \\\ - /// | | *
* | \_| ''\---/'' |_/ | *
* \ .-\__ '-' ___/-. / *
* ___'. .' /--.--\ `. .'___ *
* ."" '< `.___\_<|>_/___.' >' "". *
* | | : `- \`.;`\ _ /`;.`/ - ` : | | *
* \ \ `_. \_ __\ /__ _/ .-` / / *
* =====`-.____`.___ \_____/___.-`___.-'===== *
* `=---=' *
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *
*********__佛祖保佑__永无BUG__验收通过__钞票多多__*********
*********************************************************/
package com.yxt.anrui.reportcenter.biz.asmonthfittingsinventoryreport;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.yxt.anrui.reportcenter.api.asmonthfittingsinventoryreport.MonthFittingsReportListVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import com.yxt.anrui.reportcenter.api.asmonthfittingsinventoryreport.AsMonthFittingsInventoryReport;
import com.yxt.anrui.reportcenter.api.asmonthfittingsinventoryreport.AsMonthFittingsInventoryReportVo;
import java.util.List;
/**
* Project: baobiao(baobiao) <br/>
* File: AsMonthFittingsInventoryReportMapper.java <br/>
* Class: com.yxt.anrui.reportcenter.biz.asmonthfittingsinventoryreport.AsMonthFittingsInventoryReportMapper <br/>
* Description: 月度配件库存管理指标完成情况报表. <br/>
* Copyright: Copyright (c) 2011 <br/>
* Company: https://gitee.com/liuzp315 <br/>
* Makedate: 2025-03-05 14:43:41 <br/>
*
* @author liupopo
* @version 1.0
* @since 1.0
*/
@Mapper
public interface AsMonthFittingsInventoryReportMapper extends BaseMapper<AsMonthFittingsInventoryReport> {
//@Update("update as_month_fittings_inventory_report set name=#{msg} where id=#{id}")
//IPage<AsMonthFittingsInventoryReportVo> voPage(IPage<AsMonthFittingsInventoryReport> page, @Param(Constants.WRAPPER) QueryWrapper<AsMonthFittingsInventoryReport> qw);
IPage<AsMonthFittingsInventoryReportVo> selectPageVo(IPage<AsMonthFittingsInventoryReport> page, @Param(Constants.WRAPPER) Wrapper<AsMonthFittingsInventoryReport> qw);
List<AsMonthFittingsInventoryReportVo> selectListAllVo(@Param(Constants.WRAPPER) Wrapper<AsMonthFittingsInventoryReport> qw);
@Select("select * from as_month_fittings_inventory_report")
List<AsMonthFittingsInventoryReportVo> selectListVo();
IPage<MonthFittingsReportListVo> monthFittingsList(IPage<AsMonthFittingsInventoryReport> page, @Param(Constants.WRAPPER) QueryWrapper<AsMonthFittingsInventoryReport> qw);
List<AsMonthFittingsInventoryReportVo> monthFittingsListDetails(@Param(Constants.WRAPPER)QueryWrapper<AsMonthFittingsInventoryReport> qw);
}

28
anrui-reportcenter/anrui-reportcenter-biz/src/main/java/com/yxt/anrui/reportcenter/biz/asmonthfittingsinventoryreport/AsMonthFittingsInventoryReportMapper.xml

@ -0,0 +1,28 @@
<?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.reportcenter.biz.asmonthfittingsinventoryreport.AsMonthFittingsInventoryReportMapper">
<!-- <where> ${ew.sqlSegment} </where>-->
<!-- ${ew.customSqlSegment} -->
<select id="selectPageVo" resultType="com.yxt.anrui.reportcenter.api.asmonthfittingsinventoryreport.AsMonthFittingsInventoryReportVo">
SELECT * FROM as_month_fittings_inventory_report <where> ${ew.sqlSegment} </where>
</select>
<select id="selectListAllVo" resultType="com.yxt.anrui.reportcenter.api.asmonthfittingsinventoryreport.AsMonthFittingsInventoryReportVo">
SELECT * FROM as_month_fittings_inventory_report <where> ${ew.sqlSegment} </where>
</select>
<select id="monthFittingsList"
resultType="com.yxt.anrui.reportcenter.api.asmonthfittingsinventoryreport.MonthFittingsReportListVo">
SELECT
createDate,
useOrgSid,
useOrgName
FROM
as_month_fittings_inventory_report AS mf
<where> ${ew.sqlSegment} </where>
GROUP BY mf.createDate,mf.useOrgSid
</select>
<select id="monthFittingsListDetails"
resultType="com.yxt.anrui.reportcenter.api.asmonthfittingsinventoryreport.AsMonthFittingsInventoryReportVo">
SELECT * FROM as_month_fittings_inventory_report <where> ${ew.sqlSegment} </where>
</select>
</mapper>

77
anrui-reportcenter/anrui-reportcenter-biz/src/main/java/com/yxt/anrui/reportcenter/biz/asmonthfittingsinventoryreport/AsMonthFittingsInventoryReportRest.java

@ -0,0 +1,77 @@
/*********************************************************
*********************************************************
******************** *******************
************* ************
******* _oo0oo_ *******
*** o8888888o ***
* 88" . "88 *
* (| -_- |) *
* 0\ = /0 *
* ___/`---'\___ *
* .' \\| |// '. *
* / \\||| : |||// \ *
* / _||||| -:- |||||- \ *
* | | \\\ - /// | | *
* | \_| ''\---/'' |_/ | *
* \ .-\__ '-' ___/-. / *
* ___'. .' /--.--\ `. .'___ *
* ."" '< `.___\_<|>_/___.' >' "". *
* | | : `- \`.;`\ _ /`;.`/ - ` : | | *
* \ \ `_. \_ __\ /__ _/ .-` / / *
* =====`-.____`.___ \_____/___.-`___.-'===== *
* `=---=' *
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *
*********__佛祖保佑__永无BUG__验收通过__钞票多多__*********
*********************************************************/
package com.yxt.anrui.reportcenter.biz.asmonthfittingsinventoryreport;
import com.yxt.anrui.reportcenter.api.asmonthfittingsinventoryreport.AsMonthFittingsInventoryReportFeign;
import com.yxt.anrui.reportcenter.api.asmonthfittingsinventoryreport.AsMonthFittingsInventoryReportVo;
import com.yxt.anrui.reportcenter.api.asmonthfittingsinventoryreport.MonthFittingsReportListQuery;
import com.yxt.anrui.reportcenter.api.asmonthfittingsinventoryreport.MonthFittingsReportListVo;
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 org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* Project: baobiao(baobiao) <br/>
* File: AsMonthFittingsInventoryReportFeignFallback.java <br/>
* Class: com.yxt.anrui.reportcenter.biz.asmonthfittingsinventoryreport.AsMonthFittingsInventoryReportRest <br/>
* Description: 月度配件库存管理指标完成情况报表. <br/>
* Copyright: Copyright (c) 2011 <br/>
* Company: https://gitee.com/liuzp315 <br/>
* Makedate: 2025-03-05 14:43:41 <br/>
*
* @author liupopo
* @version 1.0
* @since 1.0
*/
@Api(tags = "月度配件库存管理指标完成情况报表")
@RestController("com.yxt.anrui.reportcenter.biz.asmonthfittingsinventoryreport.AsMonthFittingsInventoryReportRest")
@RequestMapping("v1/MonthFittingsReport")
public class AsMonthFittingsInventoryReportRest implements AsMonthFittingsInventoryReportFeign {
@Autowired
private AsMonthFittingsInventoryReportService asMonthFittingsInventoryReportService;
@Override
public ResultBean<PagerVo<MonthFittingsReportListVo>> monthFittingsList(PagerQuery<MonthFittingsReportListQuery> pq) {
ResultBean rb = ResultBean.fireFail();
PagerVo<MonthFittingsReportListVo> pv = asMonthFittingsInventoryReportService.monthFittingsList(pq);
return rb.success().setData(pv);
}
@Override
public ResultBean<List<AsMonthFittingsInventoryReportVo>> monthFittingsListDetails(String createDate, String useOrgSid) {
ResultBean rb = ResultBean.fireFail();
List<AsMonthFittingsInventoryReportVo> pv = asMonthFittingsInventoryReportService.monthFittingsListDetails(createDate,useOrgSid);
return rb.success().setData(pv);
}
}

85
anrui-reportcenter/anrui-reportcenter-biz/src/main/java/com/yxt/anrui/reportcenter/biz/asmonthfittingsinventoryreport/AsMonthFittingsInventoryReportService.java

@ -0,0 +1,85 @@
/*********************************************************
*********************************************************
******************** *******************
************* ************
******* _oo0oo_ *******
*** o8888888o ***
* 88" . "88 *
* (| -_- |) *
* 0\ = /0 *
* ___/`---'\___ *
* .' \\| |// '. *
* / \\||| : |||// \ *
* / _||||| -:- |||||- \ *
* | | \\\ - /// | | *
* | \_| ''\---/'' |_/ | *
* \ .-\__ '-' ___/-. / *
* ___'. .' /--.--\ `. .'___ *
* ."" '< `.___\_<|>_/___.' >' "". *
* | | : `- \`.;`\ _ /`;.`/ - ` : | | *
* \ \ `_. \_ __\ /__ _/ .-` / / *
* =====`-.____`.___ \_____/___.-`___.-'===== *
* `=---=' *
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *
*********__佛祖保佑__永无BUG__验收通过__钞票多多__*********
*********************************************************/
package com.yxt.anrui.reportcenter.biz.asmonthfittingsinventoryreport;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yxt.anrui.reportcenter.api.asmonthfittingsinventoryreport.*;
import com.yxt.common.base.service.MybatisBaseService;
import com.yxt.common.base.utils.PagerUtil;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.vo.PagerVo;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* Project: baobiao(baobiao) <br/>
* File: AsMonthFittingsInventoryReportService.java <br/>
* Class: com.yxt.anrui.reportcenter.biz.asmonthfittingsinventoryreport.AsMonthFittingsInventoryReportService <br/>
* Description: 月度配件库存管理指标完成情况报表 业务逻辑. <br/>
* Copyright: Copyright (c) 2011 <br/>
* Company: https://gitee.com/liuzp315 <br/>
* Makedate: 2025-03-05 14:43:41 <br/>
*
* @author liupopo
* @version 1.0
* @since 1.0
*/
@Service
public class AsMonthFittingsInventoryReportService extends MybatisBaseService<AsMonthFittingsInventoryReportMapper, AsMonthFittingsInventoryReport> {
public PagerVo<MonthFittingsReportListVo> monthFittingsList(PagerQuery<MonthFittingsReportListQuery> pq) {
MonthFittingsReportListQuery query = pq.getParams();
QueryWrapper<AsMonthFittingsInventoryReport> qw = new QueryWrapper<>();
//生成日期开始时间
String createTimeStart = query.getStartDate();
//生成日期结束时间
String createTimeEnd = query.getEndDate();
qw.apply(StringUtils.isNotEmpty(createTimeStart), "date_format (mf.createDate,'%Y-%m') >= date_format('" + createTimeStart + "','%Y-%m')").
apply(StringUtils.isNotEmpty(createTimeEnd), "date_format (mf.createDate,'%Y-%m') <= date_format('" + createTimeEnd + "','%Y-%m')"
);
if (StringUtils.isNotBlank(query.getUseOrgName())) {
qw.like("mf.useOrgName", query.getUseOrgName());
}
IPage<AsMonthFittingsInventoryReport> page = PagerUtil.queryToPage(pq);
IPage<MonthFittingsReportListVo> pagging = baseMapper.monthFittingsList(page, qw);
PagerVo<MonthFittingsReportListVo> p = PagerUtil.pageToVo(pagging, null);
return p;
}
public List<AsMonthFittingsInventoryReportVo> monthFittingsListDetails(String createDate, String useOrgSid) {
QueryWrapper<AsMonthFittingsInventoryReport> qw = new QueryWrapper<>();
qw.eq("createDate", createDate);
qw.eq("useOrgSid", useOrgSid);
List<AsMonthFittingsInventoryReportVo> list = baseMapper.monthFittingsListDetails(qw);
return list;
}
}

1
anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmapplyinbound/ScmApplyInboundService.java

@ -757,6 +757,7 @@ public class ScmApplyInboundService extends MybatisBaseService<ScmApplyInboundMa
// baseVehicleDto.setFreight(Integer.parseInt(booad.getOnceFreight().add(booad.getSecondaryFreight()).toString()));
//厂家结算价
baseVehicleDto.setCostPrice(Integer.parseInt(booad.getCostPrice().toString()));
baseVehicleDto.setSettlePrice(Integer.parseInt(booad.getCostPrice().toString()));
baseVehicleDto.setPriceDate(booad.getPriceDate());
baseVehicleDto.setDepartureDate(booad.getDepartureDate());

1
anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehicleenterlibrary/ScmVehicleEnterlibraryService.java

@ -549,6 +549,7 @@ public class ScmVehicleEnterlibraryService extends MybatisBaseService<ScmVehicle
baseVehicleDto.setInsideCode(baseVehicle.getInsideCode());
if (StringUtils.isNotBlank(vehicleDetailsVo.getWitPinMoney())) {
baseVehicleDto.setCostPrice(Integer.valueOf(vehicleDetailsVo.getWitPinMoney()));
baseVehicleDto.setSettlePrice(Integer.valueOf(vehicleDetailsVo.getWitPinMoney()));
baseVehicleDto.setSalePrice(Integer.valueOf(vehicleDetailsVo.getWitPinMoney()));
baseVehicleDto.setContractPrice(Integer.valueOf(vehicleDetailsVo.getWitPinMoney()));
}

9
anrui-scm/anrui-scm-ui/src/api/cheliang/basevehicle.js

@ -209,6 +209,15 @@ export function setManDate(data) {
})
}
// 车辆台账--修改厂家结算价
export function updateSettlePrice(data) {
return request({
url: '/base/v1/basevehicle/updateSettlePrice',
method: 'post',
params: data
})
}
// 获取厂家销售通路
export function actualList(data) {
return request({

83
anrui-scm/anrui-scm-ui/src/views/cheliang/cheliangtaizhang/cheliangtaizhang.vue

@ -320,6 +320,7 @@
<el-table-column prop="manufSaleAccessName" width="140" label="厂家销售通路" align="center"/>
<el-table-column prop="contractPrice" width="180" label="厂家合同价(含运费)" align="center"/>
<el-table-column prop="costPrice" width="180" label="车辆入库价(含运费)" align="center"/>
<el-table-column prop="settlePrice" width="150" label="厂家结算价" align="center"/>
<el-table-column prop="freight" width="130" label="运费" align="center"/>
<el-table-column prop="guidedPrice" width="180" label="全款销售指导价" align="center"/>
<el-table-column prop="manufactorSettlementPrice" width="180" label="贷款销售指导价" align="center"/>
@ -499,11 +500,30 @@
<el-button size="small" @click="handleDateQuXiao"> </el-button>
</div>
</el-dialog>
<!-- 修改厂家结算价 -->
<el-dialog :visible.sync="dialogPrice" width="50%" :close-on-click-modal="false">
<el-form :model="priceMap" class="formadd">
<el-row style="border-top: 1px solid #E0E3EB">
<el-col :span="4" class="tleftb">
<span>厂家结算价</span>
</el-col>
<el-col :span="20">
<el-form-item>
<el-input @keyup.native="priceMap.settlePrice = getNumber(priceMap.settlePrice, 2)" v-model="priceMap.settlePrice" clearable placeholder=""/>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" size="small" @click="handlePriceConfirm"> </el-button>
<el-button size="small" @click="handlePriceQuXiao"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { basefinbankExportExcel, deleteBySids, pagerList, selectCarTransferListAll, updateVehRemarks, setManDate } from '@/api/cheliang/basevehicle'
import { basefinbankExportExcel, deleteBySids, pagerList, selectCarTransferListAll, updateVehRemarks, setManDate, updateSettlePrice } from '@/api/cheliang/basevehicle'
import { typeValues, brandDown, getOrgSidByPath, fetchByUseOrgSid, getButtonPermissions } from '@/api/cheliang/dictcommons'
import cheliangtaizhangAdd from './cheliangtaizhangAdd'
import Pagination from '@/components/pagination'
@ -537,6 +557,7 @@ export default {
dialogVisible: false,
dialogRemarks: false,
dialogDate: false,
dialogPrice: false,
index: 0,
activeNames: ['3'],
searchxianshitit: '显示查询条件',
@ -578,6 +599,13 @@ export default {
btnKey: 'setDate',
btnLabel: '设置厂家开票日期'
},
{
type: 'primary',
size: 'small',
icon: '',
btnKey: 'setPrice',
btnLabel: '修改厂家结算价'
},
{
type: 'primary',
size: 'small',
@ -712,6 +740,10 @@ export default {
vinSids: [],
manDate: ''
},
priceMap: {
sid: '',
settlePrice: ''
},
multipleSelection: [],
dialogFormVisible: false, //
dialogFormShowVisible: false, //
@ -799,6 +831,24 @@ export default {
// })
this.setDater()
},
getNumber(val, limit) {
val = val.replace(/[^0-9.]/g, '') //
val = val.replace(/^00/, '0.') // 0
val = val.replace(/^\./g, '0.') // 0.
val = val.replace(/\.{2,}/g, '.') //
val = val.replace('.', '$#$').replace(/\./g, '').replace('$#$', '.'); //
/^0\d+/.test(val) ? val = val.slice(1) : '' // 0
const str = '^(\\d+)\\.(\\d{' + limit + '}).*$'
const reg = new RegExp(str)
if (limit === 0) {
//
val = val.replace(reg, '$1')
} else {
//
val = val.replace(reg, '$1.$2')
}
return val
},
//
indexMethod(index) {
var pagestart = (this.listQuery.current - 1) * this.listQuery.size
@ -826,6 +876,9 @@ export default {
case 'setDate':
this.setDate()
break
case 'setPrice':
this.setPrice()
break
case 'doMaiduan':
this.doMaiduan()
break
@ -1256,6 +1309,34 @@ export default {
}
this.dialogDate = false
},
setPrice() {
if (this.sids.length === 1) {
this.dialogPrice = true
this.priceMap.sid = this.sids[0]
} else {
this.$message({ showClose: true, message: '请选择一条记录进行修改', type: 'error' })
}
},
handlePriceConfirm() {
if (this.priceMap.settlePrice !== '') {
updateSettlePrice({ sid: this.priceMap.sid, settlePrice: this.priceMap.settlePrice }).then((resp) => {
if (resp.success) {
this.$message({ showClose: true, type: 'success', message: '修改成功' })
this.handlePriceQuXiao()
this.getList()
}
})
} else {
this.$message({ showClose: true, type: 'error', message: '厂家结算价不能为空' })
}
},
handlePriceQuXiao() {
this.priceMap = {
sid: '',
settlePrice: ''
}
this.dialogPrice = false
},
//
doMaiduan() {
if (this.sids.length > 0) {

5
yxt-oa/src/main/java/com/yxt/anrui/oa/api/AdGroupSystemApplyRest.java

@ -28,6 +28,7 @@ import javax.validation.Valid;
public class AdGroupSystemApplyRest {
@Autowired
AdGroupSystemApplyService adGroupSystemApplyService;
@ApiOperation("根据条件分页查询数据的列表")
@PostMapping("/listPage")
public ResultBean<PagerVo<AdGroupSystemApplyVo>> listPage(@RequestBody PagerQuery<AdGroupSystemApplyQuery> pq) {
@ -41,6 +42,7 @@ public class AdGroupSystemApplyRest {
public ResultBean<String> saveOrUpdate(@RequestBody AdGroupSystemApplyDto dto) {
return adGroupSystemApplyService.saveOrUpdateDto(dto);
}
@ApiOperation("初始化(新增或修改)")
@GetMapping({"/getInit", "/getInit/{sid}"})
public ResultBean<AdGroupSystemApplyVo> getInit(
@ -64,7 +66,7 @@ public class AdGroupSystemApplyRest {
@GetMapping("/details/{sid}")
ResultBean<AdGroupSystemApplyVo> details(@PathVariable("sid") String sid
, @RequestParam(value = "application", required = false) String application) {
return adGroupSystemApplyService.details(sid,application);
return adGroupSystemApplyService.details(sid, application);
}
@ApiOperation("提交审批流程")
@ -84,6 +86,7 @@ public class AdGroupSystemApplyRest {
public ResultBean complete(@Valid @RequestBody CompleteDto dto) {
return adGroupSystemApplyService.complete(dto);
}
@ApiOperation("获取流程操作标题")
@GetMapping("/getFlowOperateTitle")
@ResponseBody

5
yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adgroupsystemapply/AdGroupSystemApply.java

@ -14,6 +14,7 @@ import lombok.Data;
@ApiModel(value = "集团制度会签审批", description = "集团制度会签审批")
@TableName("ad_group_system_apply")
public class AdGroupSystemApply extends BaseEntity {
private static final long serialVersionUID = 1378089487690059793L;
@ApiModelProperty("拟发布制度标题")
private String title;
@ApiModelProperty("起草修订说明")
@ -22,4 +23,8 @@ public class AdGroupSystemApply extends BaseEntity {
private String content;
@ApiModelProperty("基础表单sid")
private String formSid;
@ApiModelProperty("选择的会签人员")
private String approversSid;
private String approversName;
}

6
yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adgroupsystemapply/AdGroupSystemApplyDto.java

@ -1,5 +1,6 @@
package com.yxt.anrui.oa.biz.adgroupsystemapply;
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;
@ -15,6 +16,7 @@ import java.util.List;
@Data
@ApiModel(value = "集团制度会签审批 数据传输对象", description = "集团制度会签审批 数据传输对象")
public class AdGroupSystemApplyDto extends OaFormDto {
private static final long serialVersionUID = -6434832123230021480L;
private String sid;
@ApiModelProperty("拟发布制度标题")
private String title;
@ -28,4 +30,8 @@ public class AdGroupSystemApplyDto extends OaFormDto {
private List<String> files = new ArrayList<>();
@ApiModelProperty("文件")
private List<String> appes = new ArrayList<>();
@ApiModelProperty("选择的会签人员")
// private List<String> approvers = new ArrayList<>();
private List<FormCommon> approvers = new ArrayList<>();
}

109
yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adgroupsystemapply/AdGroupSystemApplyService.java

@ -10,6 +10,7 @@ import com.yxt.anrui.oa.feign.file.OaFileEnum;
import com.yxt.anrui.oa.feign.flowable.flow.ProcDefEnum;
import com.yxt.anrui.oa.feign.portal.sysorganization.SysOrganizationFeign;
import com.yxt.anrui.oa.feign.portal.sysorganization.SysOrganizationVo;
import com.yxt.anrui.oa.feign.sysuser.SysUserVo;
import com.yxt.common.base.service.MybatisBaseService;
import com.yxt.common.base.utils.PagerUtil;
import com.yxt.common.core.query.PagerQuery;
@ -19,17 +20,15 @@ import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
/**
* @author wangpengfei
* @date 2025/2/7 15:31
*/
@Service
public class AdGroupSystemApplyService extends MybatisBaseService<AdGroupSystemApplyMapper, AdGroupSystemApply> {
public class AdGroupSystemApplyService extends MybatisBaseService<AdGroupSystemApplyMapper, AdGroupSystemApply> {
@Autowired
OaFormService oaFormService;
@Autowired
@ -37,7 +36,6 @@ public class AdGroupSystemApplyService extends MybatisBaseService<AdGroupSystem
@Autowired
OaAppendixService oaAppendixService;
public PagerVo<AdGroupSystemApplyVo> listPageVo(PagerQuery<AdGroupSystemApplyQuery> pq) {
AdGroupSystemApplyQuery query = pq.getParams();
QueryWrapper<AdGroupSystemApply> qw = new QueryWrapper<>();
@ -58,6 +56,12 @@ public class AdGroupSystemApplyService extends MybatisBaseService<AdGroupSystem
String sid = dto.getSid();
List<String> files = dto.getFiles();
List<String> appes = dto.getAppes();
List<FormCommon> approvers = dto.getApprovers();
if (approvers.isEmpty()) {
return rb.setMsg("请选择会签人员");
}
List<String> approversSid = approvers.stream().map(v -> v.getId()).collect(Collectors.toList());
List<String> approversName = approvers.stream().map(v -> v.getDictValue()).collect(Collectors.toList());
if (StringUtils.isBlank(sid)) {
// 新建操作
AdGroupSystemApply entity = new AdGroupSystemApply();
@ -71,23 +75,32 @@ public class AdGroupSystemApplyService extends MybatisBaseService<AdGroupSystem
}
entity.setFormSid(resultBean.getData());
entity.setCreateBySid(dto.getCreateBySid());
String approver = String.join(",", approversSid);
entity.setApproversSid(approver);
entity.setApproversName(String.join(",", approversName));
baseMapper.insert(entity);
sid = entity.getSid();
} else {
// 更新操作
AdGroupSystemApply entity = fetchBySid(sid);
BeanUtil.copyProperties(dto, entity, "id", "sid");
String approver = String.join(",", approversSid);
entity.setApproversSid(approver);
entity.setApproversName(String.join(",", approversName));
baseMapper.updateById(entity);
}
saveFiles(sid, files, OaFileEnum.GROUPSYSTEMAPPLY.getAttachType(), "图片");
saveFiles(sid, appes, OaFileEnum.GROUPSYSTEMAPPLY.getAttachType(), "文件");
return rb.success().setData(sid);
}
public ResultBean<AdGroupSystemApplyVo> getSaveInit(String userSid, String orgPath) {
ResultBean<AdGroupSystemApplyVo> rb = ResultBean.fireFail();
AdGroupSystemApplyVo AdGroupSystemApplyVo = new AdGroupSystemApplyVo();
AdGroupSystemApplyVo.setCreateBySid(userSid);
AdGroupSystemApplyVo.setOrgSidPath(orgPath);
String roleSids = getRoleSids();
AdGroupSystemApplyVo.setRoleSids(roleSids);
return rb.success().setData(AdGroupSystemApplyVo);
}
@ -98,7 +111,6 @@ public class AdGroupSystemApplyService extends MybatisBaseService<AdGroupSystem
if (AdGroupSystemApply == null) {
return rb.setMsg("该申请不存在");
}
// hrHireApplyVo.setTestPage(hrHireApply.getTestPage());
OaForm oaForm = oaFormService.fetchBySid(sid);
AdGroupSystemApplyVo.setTaskId(oaForm.getTaskId());
AdGroupSystemApplyVo.setProcInsId(oaForm.getProcInstId());
@ -108,14 +120,48 @@ public class AdGroupSystemApplyService extends MybatisBaseService<AdGroupSystem
AdGroupSystemApplyVo.setOrgSidPath(orgSidPath);
AdGroupSystemApplyVo.setCreateBySid(oaForm.getCreateBySid());
BeanUtil.copyProperties(AdGroupSystemApply, AdGroupSystemApplyVo);
// FormCommon isFinanceObj = FormCommon.of(AdGroupSystemApply.getIsFinanceKey(), AdGroupSystemApply.getIsFinanceValue());
// AdGroupSystemApplyVo.setIsFinanceObj(isFinanceObj);
List<String> files = oaAppendixService.selectByLinkSid(sid);
List<String> files = oaAppendixService.selectByLinkSid(AdGroupSystemApplyVo.getSid(), "图片");
List<String> appes = oaAppendixService.selectByLinkSid(AdGroupSystemApplyVo.getSid(), "文件");
AdGroupSystemApplyVo.setFiles(files);
AdGroupSystemApplyVo.setAppes(appes);
AdGroupSystemApplyVo.setSid(sid);
String approverSid = AdGroupSystemApply.getApproversSid();
String approverName = AdGroupSystemApply.getApproversName();
List<String> approversSid = Arrays.asList(approverSid.split(","));
List<String> approversName = Arrays.asList(approverName.split(","));
List<FormCommon> approverss = new ArrayList<>();
for (int i = 0; i < approversSid.size(); i++) {
FormCommon formCommon = FormCommon.of(approversSid.get(i), approversName.get(i));
approverss.add(formCommon);
}
AdGroupSystemApplyVo.setApprovers(approverss);
String roleSids = getRoleSids();
AdGroupSystemApplyVo.setRoleSids(roleSids);
return rb.success().setData(AdGroupSystemApplyVo);
}
public String getRoleSids() {
/**
* b3d51a89-2fe3-4d4e-a4e8-0ea436260dab 行政中心总经理
* b2bcdfd6-ac51-408c-9c7a-7e9818d23155 财务中心总经理
* e48f6ee4-c69e-401d-b386-ae111a1ecd68 财务中心核算经理
* 33eef15f-96ea-494b-9daa-2b1c17cf1717 业务中心总经理
* 7d82ea61-7033-497d-bf8b-4d5da464db64 业务中心服务经理
* 537bea8f-75e8-430c-9a5f-3140bda41f39 风控中心总经理
* 6bccde2a-6be7-4ebc-a9ba-380ea9b161e9 风控中心副总经理
* da5b21ab-10c1-49be-b168-01e96c7f51b3 财务中心分管
*/
String roleSids = "b3d51a89-2fe3-4d4e-a4e8-0ea436260dab," +
"b2bcdfd6-ac51-408c-9c7a-7e9818d23155," +
"e48f6ee4-c69e-401d-b386-ae111a1ecd68," +
"33eef15f-96ea-494b-9daa-2b1c17cf1717," +
"7d82ea61-7033-497d-bf8b-4d5da464db64," +
"537bea8f-75e8-430c-9a5f-3140bda41f39," +
"6bccde2a-6be7-4ebc-a9ba-380ea9b161e9," +
"da5b21ab-10c1-49be-b168-01e96c7f51b3";
return roleSids;
}
// 保存文件
private void saveFiles(String sid, List<String> files, String attachType, String fileType) {
files.removeAll(Collections.singleton(null));
@ -131,19 +177,31 @@ public class AdGroupSystemApplyService extends MybatisBaseService<AdGroupSystem
*/
public ResultBean<AdGroupSystemApplyVo> details(String sid, String application) {
ResultBean<AdGroupSystemApplyVo> rb = ResultBean.fireFail();
AdGroupSystemApply adGroupSystemApply = fetchBySid(sid);
AdGroupSystemApplyVo AdGroupSystemApplyVo = baseMapper.details(sid);
if (AdGroupSystemApplyVo == null) {
if (adGroupSystemApply == null) {
return rb.setMsg("该申请不存在");
}
List<String> files = oaAppendixService.selectByLinkSid(AdGroupSystemApplyVo.getSid(), "图片");
List<String> appes= oaAppendixService.selectByLinkSid(AdGroupSystemApplyVo.getSid(), "文件");
List<String> appes = oaAppendixService.selectByLinkSid(AdGroupSystemApplyVo.getSid(), "文件");
AdGroupSystemApplyVo.setFiles(files);
AdGroupSystemApplyVo.setAppes(appes);
//基础字段赋值
BeanUtil.copyProperties(oaFormService.getDetails(sid), AdGroupSystemApplyVo);
String approverSid = adGroupSystemApply.getApproversSid();
String approverName = adGroupSystemApply.getApproversName();
List<String> approversSid = Arrays.asList(approverSid.split(","));
List<String> approversName = Arrays.asList(approverName.split(","));
List<FormCommon> approverss = new ArrayList<>();
for (int i = 0; i < approversSid.size(); i++) {
FormCommon formCommon = FormCommon.of(approversSid.get(i), approversName.get(i));
approverss.add(formCommon);
}
AdGroupSystemApplyVo.setApprovers(approverss);
return rb.success().setData(AdGroupSystemApplyVo);
}
/**
* 提交
*
@ -154,17 +212,13 @@ public class AdGroupSystemApplyService extends MybatisBaseService<AdGroupSystem
ResultBean rb = ResultBean.fireFail();
ResultBean<String> stringResultBean = saveOrUpdateDto(dto);
if (!stringResultBean.getSuccess()) {
return rb.setMsg(stringResultBean.getData());
return rb.setMsg(stringResultBean.getMsg());
}
String businessSid = stringResultBean.getData();
SubmitDto submitDto = new SubmitDto();
submitDto.setUserSid(dto.getCreateBySid());
submitDto.setBusinessSid(businessSid);
Map<String, Object> formVariables = new HashMap<>();
Map<String, Object> appMap = new HashMap<>();
// appMap.put("sid", businessSid);
formVariables = getMap(formVariables, businessSid);
submitDto.setFormVariables(formVariables);
submitDto.setProcDefId(ProcDefEnum.GROUPSYSTEMAPPLY.getProDefId());
@ -172,6 +226,7 @@ public class AdGroupSystemApplyService extends MybatisBaseService<AdGroupSystem
submitDto.setRule(OaFormRuleEnum.DIRECTLY_UNDER.getRule());
return oaFormService.submit(submitDto);
}
/**
* 驳回
*
@ -228,8 +283,10 @@ public class AdGroupSystemApplyService extends MybatisBaseService<AdGroupSystem
// 返回成功的结果和获取到的节点名称
return rb.success().setData(data);
}
public Map<String, Object> getMap(Map<String, Object> formVariables, String sid) {
Map<String, Object> appMap = new HashMap<>();
AdGroupSystemApply adGroupSystemApply = fetchBySid(sid);
appMap.put("sid", sid);
/*appMap.put("editUrl", "approval/#/pages/EditOnboradingApplyActivity?sid=" + sid);
appMap.put("detailUrl", "approval/#/pages/DetailOnboradingApplyActivity?sid=" + sid);
@ -240,8 +297,8 @@ public class AdGroupSystemApplyService extends MybatisBaseService<AdGroupSystem
appMap.put("recallUrl", "oa/v1/oaform/revokeProcess");
appMap.put("signUrl", "oa/v1/oaform/delegate");
appMap.put("transferUrl", "oa/v1/oaform/assignTask");*/
appMap.put(OaFormUrlEnum.GROUPSYSTEM_EDIT.getType(), OaFormUrlEnum.GROUPSYSTEM_EDIT.getUrl() + sid);
appMap.put(OaFormUrlEnum.GROUPSYSTEM_DETAIL.getType(), OaFormUrlEnum.GROUPSYSTEM_DETAIL.getUrl() + sid);
appMap.put(OaFormUrlEnum.GROUPSYSTEM_EDIT.getType(), OaFormUrlEnum.GROUPSYSTEM_EDIT.getUrl() + "?sid=" + sid);
appMap.put(OaFormUrlEnum.GROUPSYSTEM_DETAIL.getType(), OaFormUrlEnum.GROUPSYSTEM_DETAIL.getUrl() + "?sid=" + sid);
appMap.put(OaFormUrlEnum.GROUPSYSTEM_FLOWOPERATEURL.getType(), OaFormUrlEnum.GROUPSYSTEM_FLOWOPERATEURL.getUrl());
appMap.put(OaFormUrlEnum.GROUPSYSTEM_AGREEURL.getType(), OaFormUrlEnum.GROUPSYSTEM_AGREEURL.getUrl());
appMap.put(OaFormUrlEnum.STOPURL.getType(), OaFormUrlEnum.STOPURL.getUrl());
@ -252,10 +309,16 @@ public class AdGroupSystemApplyService extends MybatisBaseService<AdGroupSystem
formVariables.put("app", appMap);
// //根据组织查询是否是分公司
OaForm oaForm = oaFormService.fetchBySid(sid);
AdGroupSystemApply adPermissionApply = fetchBySid(sid);
SysOrganizationVo sysOrganization = sysOrganizationFeign.fetchBySid(oaForm.getUseOrgSid()).getData();
//是否是分公司
// formVariables.put("isTrue", sysOrganization.getIsDept() == 0);
//是否需要总裁审批
formVariables.put("isTrue", false);
/* List<String> approversList = new ArrayList<>();
approversList.add("08d6f4a7-31f7-498f-a639-8c9abea4df35");
approversList.add("30b33cd2-610a-4917-ba46-80b09f52c4b9");
approversList.add("d76fe91e-8080-4344-89e7-3ea22dacfb16");*/
String approver = adGroupSystemApply.getApproversSid();
List<String> approvers = Arrays.asList(approver.split(","));
formVariables.put("approvers", approvers);
return formVariables;
}

5
yxt-oa/src/main/java/com/yxt/anrui/oa/biz/adgroupsystemapply/AdGroupSystemApplyVo.java

@ -34,4 +34,9 @@ public class AdGroupSystemApplyVo extends OaFormCommonVo {
private String taskId;
@ApiModelProperty("流程实例id")
private String procInsId;
@ApiModelProperty("选择的会签人员")
private List<FormCommon> approvers = new ArrayList<>();
@ApiModelProperty("会签角色")
private String roleSids;
}

20
yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/OaFormService.java

@ -14,6 +14,7 @@ import com.yxt.anrui.oa.feign.flowable.flow.FlowableFeign;
import com.yxt.anrui.oa.feign.flowable.flow.UpdateFlowFieldVo;
import com.yxt.anrui.oa.feign.flowable.flow2.FlowDelegateQuery;
import com.yxt.anrui.oa.feign.flowable.flow2.FlowFeign;
import com.yxt.anrui.oa.feign.flowable.flow3.Flow3Feign;
import com.yxt.anrui.oa.feign.flowable.flowtask.FlowTaskFeign;
import com.yxt.anrui.oa.feign.flowable.flowtask.FlowTaskVo;
import com.yxt.anrui.oa.feign.flowable.flowtask.LatestTaskVo;
@ -73,6 +74,9 @@ public class OaFormService extends MybatisBaseService<OaFormMapper, OaForm> {
@Autowired
private FileUploadComponent fileUploadComponent;
@Autowired
private Flow3Feign flow3Feign;
/**
* 保存oaform表单
*
@ -85,7 +89,7 @@ public class OaFormService extends MybatisBaseService<OaFormMapper, OaForm> {
// 创建OA表单对象
OaForm oaForm = new OaForm();
// 将DTO中部分属性复制到oaForm中,忽略不需要的字段(如billNo, orgSidPath)
BeanUtil.copyProperties(dto, oaForm, "billNo", "orgSidPath");
BeanUtil.copyProperties(dto, oaForm, "billNo", "orgSidPath", "title", "remarks");
try {
String orgSidPath = dto.getOrgSidPath();
// 获取组织信息,根据orgSidPath字段调用外部服务
@ -209,10 +213,10 @@ public class OaFormService extends MybatisBaseService<OaFormMapper, OaForm> {
if (!businessVariablesResultBean.getSuccess()) {
return rb.setMsg(businessVariablesResultBean.getMsg());
}
BeanUtil.copyProperties(businessVariablesResultBean.getData(), bv, "taskDefKey", "taskId");
BeanUtil.copyProperties(businessVariablesResultBean.getData(), bv, "taskDefKey", "taskId", "comment");
bv.setInstanceId(oaForm.getProcInstId());
if (bv.getTaskId().equals(oaForm.getTaskId())) {
ResultBean<UpdateFlowFieldVo> resultBean = flowFeign.handleProsess(bv);
if (oaForm.getTaskId().contains(bv.getTaskId())) {
ResultBean<UpdateFlowFieldVo> resultBean = flow3Feign.handleProsess(bv);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
@ -320,7 +324,7 @@ public class OaFormService extends MybatisBaseService<OaFormMapper, OaForm> {
}
String businessTaskId = oaForm.getTaskId();
if (StringUtils.isNotBlank(businessTaskId)) {
if (businessTaskId.equals(dto.getTaskId())) {
if (businessTaskId.contains(dto.getTaskId())) {
if (StringUtils.isBlank(dto.getComment())) {
return rb.setMsg("请填写意见");
}
@ -395,7 +399,7 @@ public class OaFormService extends MybatisBaseService<OaFormMapper, OaForm> {
OaForm oaForm = fetchBySid(dto.getBusinessSid());
String businessTaskId = oaForm.getTaskId();
if (StringUtils.isNotBlank(businessTaskId)) {
if (businessTaskId.equals(dto.getTaskId())) {
if (businessTaskId.contains(dto.getTaskId())) {
FlowTaskVo flowTaskVo = new FlowTaskVo();
BeanUtil.copyProperties(dto, flowTaskVo);
flowTaskVo.setInstanceId(dto.getProcInsId());
@ -445,7 +449,7 @@ public class OaFormService extends MybatisBaseService<OaFormMapper, OaForm> {
updateFlow(oaFormFlowDto);
return rb.success().setData(resultBean.getData());
} else {
if (businessTaskId.equals(dto.getTaskId())) {
if (businessTaskId.contains(dto.getTaskId())) {
FlowTaskVo flowTaskVo = new FlowTaskVo();
BeanUtil.copyProperties(dto, flowTaskVo);
flowTaskVo.setInstanceId(dto.getProcInsId());
@ -520,7 +524,7 @@ public class OaFormService extends MybatisBaseService<OaFormMapper, OaForm> {
int r = submitBusinessData(dto, oaForm.getTaskId());
if (r == 1) {
//启动流程
ResultBean<UpdateFlowFieldVo> voResultBean = flowFeign.startProcess(bv);
ResultBean<UpdateFlowFieldVo> voResultBean = flow3Feign.startProcess(bv);
if (voResultBean.getSuccess()) {
UpdateFlowFieldVo ufVo = voResultBean.getData();
OaFormFlowDto oaFormFlowDto = new OaFormFlowDto();

4
yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/OaFormUrlEnum.java

@ -34,11 +34,11 @@ public enum OaFormUrlEnum {
/**
* 集团制度会签详情
*/
GROUPSYSTEM_DETAIL(InnerEnum.rejectUrl.printValue(), "approval/#/pages/oa/DetailGroupSystemApplyActivity"),
GROUPSYSTEM_DETAIL(InnerEnum.detailUrl.printValue(), "approval/#/pages/oa/DetailGroupSystemApplyActivity"),
/**
* 集团制度会签修改
*/
GROUPSYSTEM_EDIT(InnerEnum.rejectUrl.printValue(), "approval/#/pages/oa/EditGroupSystemApplyActivity"),
GROUPSYSTEM_EDIT(InnerEnum.editUrl.printValue(), "approval/#/pages/oa/EditGroupSystemApplyActivity"),
/**
* 获取操作标题接口地址

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

@ -9,8 +9,8 @@ public enum ProcDefEnum {
/***************************正式流程id***********************************/
OALEAVEAPPLY("请假申请", "process_su0yph7n:1:15957504"),
OAMENDAPPLY("补卡申请", "process_9suucr96:1:16072504"),
HIHIREAPPLY("招聘需求", "process_zy0m4jrp:1:16802504"),
GROUPSYSTEMAPPLY("集团制度", "process_6lnebpbi:1:16905004"),
HIHIREAPPLY("招聘需求", "process_zy0m4jrp:2:18045004"),
GROUPSYSTEMAPPLY("集团制度", "process_6nzob224:2:18045008"),
BGYPLYAPPLY("办公用品领用", ""),
GDZCCG_GS_APPLY("公司固定资产采购申请", ""),
GDZCCG_ZX_APPLY("中心固定资产采购申请", ""),

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

@ -17,8 +17,13 @@ import org.springframework.web.bind.annotation.ResponseBody;
public interface Flow3Feign {
@ApiOperation(value = "启动流程")
@PostMapping(value = "/startProcess2")
@PostMapping(value = "/startProcess")
@ResponseBody
ResultBean<UpdateFlowFieldVo> startProcess2(@RequestBody BusinessVariables dto);
ResultBean<UpdateFlowFieldVo> startProcess(@RequestBody BusinessVariables dto);
@PostMapping("/handleProsess")
@ResponseBody
@ApiOperation("办理")
public ResultBean<UpdateFlowFieldVo> handleProsess(@RequestBody BusinessVariables dto);
}
Loading…
Cancel
Save