Browse Source

Merge remote-tracking branch 'origin/master'

zhanglei
ligaode 4 months ago
parent
commit
bbf0ba689e
  1. 2
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/AnruiFinApplication.java
  2. 2
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/FinKingDeeFeignRest.java
  3. 196
      anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flow3/Flow3Service.java
  4. 73
      yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusrepairbill/AsBusrepairBillService.java
  5. 6
      yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryMapper.xml
  6. 2
      yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryService.java

2
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/AnruiFinApplication.java

@ -53,7 +53,7 @@ import org.springframework.scheduling.annotation.EnableScheduling;
})
@EnableFeignClients(basePackages = {"com.yxt.anrui.crm", "com.yxt.anrui.fin",
"com.yxt.anrui.portal", "com.yxt.anrui.buscenter",
"com.yxt.anrui.base", "com.yxt.anrui.flowable", "com.yxt.messagecenter", "com.yxt.anrui.scm","com.yxt.anrui.riskcenter"})
"com.yxt.anrui.base", "com.yxt.anrui.flowable", "com.yxt.messagecenter", "com.yxt.anrui.scm","com.yxt.anrui.riskcenter","com.yxt.*"})
public class AnruiFinApplication {
public static void main(String[] args) {

2
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/FinKingDeeFeignRest.java

@ -826,7 +826,7 @@ public class FinKingDeeFeignRest implements FinKingDeeFeign {
dto1.setSummary(timeFlag + "行销返利上传");
dto1.setSubjectNo("6401.14");
dto1.setDimensionDept(deptNo);
dto1.setDebit(srlxx.negate().toString());
dto1.setDebit(srlxx.toString());
resultDetails.add(dto1);
}
if (dkxxtz.compareTo(BigDecimal.ZERO) != 0) {

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

@ -98,6 +98,169 @@ public class Flow3Service extends MybatisBaseService<FlowMapper, Flowable> {
@Autowired
private ProcessEngine processEngine;
public ResultBean<UpdateFlowFieldVo> businessStartProcessInstanceById(BusinessVariables bv) {
ResultBean<UpdateFlowFieldVo> rb = ResultBean.fireFail();
// 或签任务候选人
List<String> userIds = Arrays.asList(
"dc6b9e36-1b31-4b94-908b-d2d7f78a0977",
"657bf5a5-7665-440e-9cbd-ab87eccfbdcc",
"2737e5ee-5ffd-4127-919b-e6694dfc8361");
// 会签任务候选人
List<String> approvers = Arrays.asList(
"1d85d1fe-e527-4ec5-a5e4-c37a76a36518",
"64e289bc-80cd-487a-9498-5ae61e260f71",
"7ffcd76a-4fa0-4c9c-87ca-a0c2116bb2ed");
// 获取流程定义ID和发起人ID
String procDefId = bv.getModelId();
String userSid = bv.getUserSid();
// 获取传入的变量
Map<String, Object> variables = bv.getFormVariables();
variables.put("userSids", userIds);
variables.put("approvers", approvers);
Map<String, Object> variablesSeconds = bv.getFormVariables();
// 根据流程定义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 isMultiInstanceTaskNext = false;
// 查询当前流程实例的待办任务
ResultBean<List<LatestTaskVo>> latestTasksNew = flowTaskService.getLatestTasksNew(processInstance.getId());
List<LatestTaskVo> data = latestTasksNew.getData();
LatestTaskVo latestTaskVo = data.get(0);
String id_ = latestTaskVo.getId_();
String task_def_key_ = latestTaskVo.getTask_def_key_();
// 获取下一个环节的待办人
if (StringUtils.isBlank(bv.getNextNodeUserSids())) {
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)) {
String approver = getApproverForTask(approvers, i); // 动态获取会签候选人
taskService.claim(task2.getId(), approver); // 由会签候选人认领任务
isMultiInstanceTaskNext = true;
}
// 单一审批任务
else if ("单一审批任务".equals(isMultiInstanceTask)) {
String userSidForNextNode = getNextNodeUser(bv).getData();
taskService.claim(task2.getId(), userSidForNextNode);
bv.setNextNodeUserSids(userSidForNextNode);
break;
}
}
}
// 如果没有会签任务,继续处理其他节点
if (!isMultiInstanceTaskNext) {
String nextNodeUserSids = bv.getNextNodeUserSids();
// 查询下一环节是否有转办并添加评论
nextNodeUserSids = change(nextNodeUserSids, processInstance.getProcessInstanceId());
taskService.setAssignee(id_, nextNodeUserSids);
taskService.setVariablesLocal(id_, variables);
if (ProcDefEnum.DEFAUL_TADMIN_SID.getProDefId().equals(nextNodeUserSids)) {
return handleAutomaticApproval(bv, task, id_, task_def_key_, variables, variablesSeconds, processDefinition);
}
// 如果申请人与下一环节审批人相同,则自动审批
if (bv.getUserSid().equals(nextNodeUserSids)) {
return handleSelfApproval(bv, task, id_, task_def_key_, variables, variablesSeconds, processDefinition);
}
}
// 实例化 UpdateFlowFieldVo
UpdateFlowFieldVo updateFlowFieldVo = new UpdateFlowFieldVo();
updateFlowFieldVo.setProcInsId(task.getProcessInstanceId());
updateFlowFieldVo.setNodeState(latestTaskVo.getName_());
updateFlowFieldVo.setTaskId(id_);
updateFlowFieldVo.setTaskDefKey(task_def_key_);
updateFlowFieldVo.setProcDefId(bv.getModelId());
updateFlowFieldVo.setSid(bv.getBusinessSid());
updateFlowFieldVo.setName(processDefinition.getName());
return rb.success().setData(updateFlowFieldVo).setMsg("流程启动成功");
}
/**
* 获取会签候选人
*/
private String getApproverForTask(List<String> approvers, int index) {
return approvers.size() > index ? approvers.get(index) : null;
}
/**
* 处理自动审批逻辑当任务为转办时
*/
private ResultBean<UpdateFlowFieldVo> handleAutomaticApproval(BusinessVariables bv, Task task, String id_, String task_def_key_,
Map<String, Object> variables, Map<String, Object> variablesSeconds, ProcessDefinition processDefinition) {
bv.setModelId(bv.getModelId());
bv.setInstanceId(task.getProcessInstanceId());
bv.setTaskId(id_);
bv.setUserSid(ProcDefEnum.DEFAUL_TADMIN_SID.getProDefId()); // 默认转办管理员ID
bv.setBusinessSid(bv.getBusinessSid());
bv.setTaskDefKey(task_def_key_);
bv.setFormVariables(variables);
bv.setOrgSidPath(bv.getOrgSidPath());
bv.setFormVariables(variablesSeconds);
bv.setComment("系统自动转办!");
bv.setNextNodeUserSids("");
// 继续执行后续流程
return handleProsess(bv, false);
}
/**
* 处理自动审批逻辑当申请人与下一环节审批人相同
*/
private ResultBean<UpdateFlowFieldVo> handleSelfApproval(BusinessVariables bv, Task task, String id_, String task_def_key_,
Map<String, Object> variables, Map<String, Object> variablesSeconds, ProcessDefinition processDefinition) {
bv.setModelId(bv.getModelId());
bv.setInstanceId(task.getProcessInstanceId());
bv.setTaskId(id_);
bv.setUserSid(bv.getUserSid());
bv.setBusinessSid(bv.getBusinessSid());
bv.setTaskDefKey(task_def_key_);
bv.setFormVariables(variables);
bv.setOrgSidPath(bv.getOrgSidPath());
bv.setFormVariables(variablesSeconds);
bv.setComment("因与申请人相同,系统自动处理,需以下一级审批人审批意见为准!");
bv.setNextNodeUserSids("");
// 继续执行后续流程
return handleProsess(bv, false);
}
/**
* 启动流程
@ -105,7 +268,7 @@ public class Flow3Service extends MybatisBaseService<FlowMapper, Flowable> {
* @param bv
* @return
*/
public ResultBean<UpdateFlowFieldVo> businessStartProcessInstanceById(BusinessVariables bv) {
public ResultBean<UpdateFlowFieldVo> businessStartProcessInstanceById2(BusinessVariables bv) {
ResultBean<UpdateFlowFieldVo> rb = ResultBean.fireFail();
// 或签任务候选人
List<String> userIds = Arrays.asList(
@ -118,6 +281,8 @@ public class Flow3Service extends MybatisBaseService<FlowMapper, Flowable> {
"1d85d1fe-e527-4ec5-a5e4-c37a76a36518",
"64e289bc-80cd-487a-9498-5ae61e260f71",
"7ffcd76a-4fa0-4c9c-87ca-a0c2116bb2ed");
UpdateFlowFieldVo updateFlowFieldVo = new UpdateFlowFieldVo();
String procDefId = bv.getModelId();
String userSid = bv.getUserSid();
@ -333,6 +498,8 @@ public class Flow3Service extends MybatisBaseService<FlowMapper, Flowable> {
if (Objects.isNull(task)) {
return rb.setMsg("任务不存在");
}
//是否是多实例任务
String isMultiInstanceTask = isMultiInstanceTask(task);
boolean isMultiInstanceTaskNext = false;
String service = (String) formVariables.get("service");
String ydfOrgPath = (String) formVariables.get("ydfOrgPath");
@ -349,8 +516,6 @@ public class Flow3Service extends MybatisBaseService<FlowMapper, Flowable> {
}
}
} else if (StringUtils.isBlank(nextUserSid)) {
//是否是多实例任务
String isMultiInstanceTask = isMultiInstanceTask(task);
if (!"会签任务".equals(isMultiInstanceTask) && !"或签任务".equals(isMultiInstanceTask)) {
//获取下一环节用户
ResultBean<String> stringResultBean = getNextNodeUserSidsOfSubmit(bv);
@ -385,7 +550,7 @@ public class Flow3Service extends MybatisBaseService<FlowMapper, Flowable> {
} else {
boolean checkTask = false;//是否要查询当前任务是否是会签环节
List<Task> tasks = taskService.createTaskQuery().processInstanceId(instanceId).list();
if (tasks.size() == 1) {
if (tasks.size() == 1 || "或签任务".equals(isMultiInstanceTask)) {
checkTask = true;
}
taskService.addComment(taskId, instanceId, FlowComment.NORMAL.getType(), comment);
@ -397,7 +562,7 @@ public class Flow3Service extends MybatisBaseService<FlowMapper, Flowable> {
tasks = taskService.createTaskQuery().processInstanceId(instanceId).list();
for (int i = 0; i < tasks.size(); i++) {
Task task2 = tasks.get(i);
String isMultiInstanceTask = isMultiInstanceTask(task2);
isMultiInstanceTask = isMultiInstanceTask(task2);
if ("会签任务".equals(isMultiInstanceTask)) {
taskService.claim(task2.getId(), approvers.get(i)); // 由候选人认领任务
isMultiInstanceTaskNext = true;
@ -407,6 +572,7 @@ public class Flow3Service extends MybatisBaseService<FlowMapper, Flowable> {
} else {
ResultBean<String> userResultBean = getNextNodeUser(bv);
bv.setNextNodeUserSids(userResultBean.getData());
nextUserSid = bv.getNextNodeUserSids();
break;
}
}
@ -434,15 +600,7 @@ public class Flow3Service extends MybatisBaseService<FlowMapper, Flowable> {
}
//设置管理员是否自动审批的字段是否是是。//若下一环节用户与系统管理员一致,则自动审批
if (adminContains) {
bv.setUserSid(nextUserSid);
bv.setTaskId(vo.getTaskId());
bv.setTaskDefKey(taskDefKey);
bv.setComment("系统自动跳过");
bv.setNextNodeUserSids("");
return handleProsess(bv, false);
}
if (!isMultiInstanceTaskNext) {
if (!DelegationState.PENDING.equals(task.getDelegationState())) {
//获取该流程所有要走的环节节点
@ -500,7 +658,15 @@ public class Flow3Service extends MybatisBaseService<FlowMapper, Flowable> {
}
}
}
//设置管理员是否自动审批的字段是否是是。//若下一环节用户与系统管理员一致,则自动审批
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);

73
yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusrepairbill/AsBusrepairBillService.java

@ -61,6 +61,7 @@ import com.yxt.anrui.as.feign.portal.sysuser.SysUserFeign;
import com.yxt.anrui.as.feign.portal.sysuser.SysUserVo;
import com.yxt.anrui.as.feign.sms.SmsGoods;
import com.yxt.anrui.as.feign.sms.SmsGoodsFeign;
import com.yxt.anrui.as.feign.wms.wmsInventory.WmsInventoryFeign;
import com.yxt.anrui.as.feign.wms.wmsoldinventory.WmsOldInventoryFeign;
import com.yxt.anrui.as.feign.wms.wmsoldinventory.WmsOldInventoryPush;
import com.yxt.anrui.as.feign.yxtcrm.CrmCustomer;
@ -158,7 +159,8 @@ public class AsBusrepairBillService extends MybatisBaseService<AsBusrepairBillMa
private AsTrackQuestionService asTrackQuestionService;
@Autowired
private YxtCrmCustomerTempFeign yxtCrmCustomerTempFeign;
@Autowired
private WmsInventoryFeign wmsInventoryFeign;
/**
* 维修领料获取派工单
*
@ -1274,45 +1276,45 @@ public class AsBusrepairBillService extends MybatisBaseService<AsBusrepairBillMa
if (asBusrepairBill.getNodeCode() > 4) {
return rb.setMsg("当前已完成竣工环节,无需提交");
}
String customerSid = dto.getCustomerSid();
CrmCustomer customerTemp = yxtCrmCustomerTempFeign.fetchEntity(customerSid).getData();
if (null != customerTemp) {
if (dto.getBillType().equals("欠款月结")) {
if (customerTemp.getIsDesignatedEnterprise().intValue() == 1) {
Date filingIndate = customerTemp.getFilingIndate();
if (null != filingIndate) {
LocalDate date = LocalDate.now(); // get the current date
Date dateNow = Date.from(date.atStartOfDay(ZoneId.systemDefault()).toInstant());
int result = filingIndate.compareTo(dateNow);
if (result < 0) {
return rb.setMsg("请选择备案有效期内的欠款月结客户");
}
} else {
}
String customerSid = dto.getCustomerSid();
CrmCustomer customerTemp = yxtCrmCustomerTempFeign.fetchEntity(customerSid).getData();
if (null != customerTemp) {
if (dto.getBillType().equals("欠款月结")) {
if (customerTemp.getIsDesignatedEnterprise().intValue() == 1) {
Date filingIndate = customerTemp.getFilingIndate();
if (null != filingIndate) {
LocalDate date = LocalDate.now(); // get the current date
Date dateNow = Date.from(date.atStartOfDay(ZoneId.systemDefault()).toInstant());
int result = filingIndate.compareTo(dateNow);
if (result < 0) {
return rb.setMsg("请选择备案有效期内的欠款月结客户");
}
} else {
return rb.setMsg("请选择备案有效期内的欠款月结客户");
}
} else {
return rb.setMsg("请选择备案有效期内的欠款月结客户");
}
if (dto.getBillType().equals("常规维修")) {
if (customerTemp.getIsDesignatedEnterprise().intValue() != 0) {
return rb.setMsg("请选择非欠款月结客户");
}
}
if (dto.getBillType().equals("常规维修")) {
if (customerTemp.getIsDesignatedEnterprise().intValue() != 0) {
return rb.setMsg("请选择非欠款月结客户");
}
}
//如果开发票含税其中税率不能低于财务中心设置的最低税率
InvoiceVo invoiceVo = dto.getInvoiceVo();
if (null != invoiceVo) {
if (StringUtils.isNotBlank(invoiceVo.getTaxRate())) {
String taxRate = invoiceVo.getTaxRate();
String createOrgSid = dto.getCreateOrgSid();
String lastRate = baseMapper.selLastTaxRateByUseOrgSid(createOrgSid);
if (StringUtils.isNotBlank(lastRate)) {
BigDecimal a = new BigDecimal(taxRate);
BigDecimal b = new BigDecimal(lastRate);
if (a.compareTo(b) < 0) {
return rb.setMsg("其中税率不能低于财务中心设置的最低税率!");
}
}
//如果开发票含税其中税率不能低于财务中心设置的最低税率
InvoiceVo invoiceVo = dto.getInvoiceVo();
if (null != invoiceVo) {
if (StringUtils.isNotBlank(invoiceVo.getTaxRate())) {
String taxRate = invoiceVo.getTaxRate();
String createOrgSid = dto.getCreateOrgSid();
String lastRate = baseMapper.selLastTaxRateByUseOrgSid(createOrgSid);
if (StringUtils.isNotBlank(lastRate)) {
BigDecimal a = new BigDecimal(taxRate);
BigDecimal b = new BigDecimal(lastRate);
if (a.compareTo(b) < 0) {
return rb.setMsg("其中税率不能低于财务中心设置的最低税率!");
}
}
}
@ -1363,11 +1365,8 @@ public class AsBusrepairBillService extends MybatisBaseService<AsBusrepairBillMa
}
push.setVehMark(vehMark);
push.setVinNo(vinNo);
SmsGoods smsGoods = smsGoodsFeign.fetchEntityByGoodsID(goodsDetail.getGoodsID()).getData();
if (null != smsGoods) {
if (StringUtils.isNotBlank(smsGoods.getSupplierName())) {
push.setManufacturerName(smsGoods.getSupplierName());
}
if (StringUtils.isNotBlank(goodsDetail.getManufacturerName())) {
push.setManufacturerName(goodsDetail.getManufacturerName());
}
wmsOldInventoryFeign.pushOldStayInvent(push);
}

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

@ -432,14 +432,14 @@
wi.unit,
wi.warehouseName,
wi.manufacturerName,
wi.billObjName,
wi.supplierName billObjName,
IFNULL(SUM(count),0) as inventoryCount,
s.orgSidPath
FROM
wms_inventory as wi
LEFT JOIN anrui_portal.sys_organization as so ON wi.createOrgSid = so.sid
LEFT JOIN anrui_portal.sys_organization as s ON wi.useOrgSid = s.sid
GROUP BY wi.createOrgSid,wi.useOrgSid,wi.warehouseSid,wi.goodsSkuCode,wi.billObjName) as a
GROUP BY wi.createOrgSid,wi.useOrgSid,wi.warehouseSid,wi.goodsSkuCode,wi.supplierName) as a
<where>
${ew.sqlSegment}
</where>
@ -454,7 +454,7 @@
i.goodsSpuName,
DATEDIFF( NOW(), i.firstInDate ) inventoryAge,
i.cost price,
i.billObjName provider,
i.supplierName provider,
i.taxRate rate,
i.unit,
CONCAT(i.warehouseName, '-',a.areaName, '-',i.warehouseRackCode ) title

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

@ -915,7 +915,7 @@ public class WmsInventoryService extends MybatisBaseService<WmsInventoryMapper,
.or().like("i.warehouseRackCode", query.getName())
.or().like("i.goodsSpuName", query.getName())
.or().like("i.manufacturerName", query.getName())
.or().like("i.billObjName", query.getName())
.or().like("i.supplierName", query.getName())
.or().like("i.goodsSkuCode", query.getName())
);
}

Loading…
Cancel
Save