diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxPropertyContractController.java b/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxPropertyContractController.java index 57562e913..f48e43427 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxPropertyContractController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxPropertyContractController.java @@ -7,6 +7,7 @@ import com.iformall.controller.base.BaseController; import com.iformall.domain.po.MallUserInfo; import com.iformall.domain.po.WxBillProperty; import com.iformall.domain.po.WxPropertyContract; +import com.iformall.enums.EnumFromType; import com.iformall.enums.EnumRentStartType; import com.iformall.mapper.WxPropertyContractMapper; import com.iformall.service.WxBillPropertyService; @@ -63,7 +64,7 @@ public class WxPropertyContractController extends BaseController { if(wxPropertyContract.getRentStartType()!=null && wxPropertyContract.getRentStartType().equals(EnumRentStartType.STARTTIME.getCode())){ wxPropertyContract.setRentalStartDate(wxPropertyContract.getStartDate()); } - return wxPropertyContractService.saveOrUpdate(wxPropertyContract, user.getId(), user.getName(),0); + return wxPropertyContractService.saveOrUpdate(wxPropertyContract, user.getId(), user.getName(), EnumFromType.OTHER.getCode()); } @PostMapping("updateRentStartTime") @@ -80,7 +81,8 @@ public class WxPropertyContractController extends BaseController { MallUserInfo user = getUser(); propertyContract.setTenantId(user.getTenantId()); propertyContract.setAdjustPeriodHandle(); - return wxPropertyContractService.saveOrUpdate(propertyContract, user.getId(), user.getName(),1); + propertyContract.setRentStartType(wxPropertyContract.getRentStartType()); + return wxPropertyContractService.saveOrUpdate(propertyContract, user.getId(), user.getName(),EnumFromType.SWITCH.getCode()); } @@ -91,7 +93,7 @@ public class WxPropertyContractController extends BaseController { MallUserInfo user = getUser(); wxPropertyContract.setTenantId(user.getTenantId()); wxPropertyContract.setAdjustPeriodHandle(); - return wxPropertyContractService.saveOrUpdate(wxPropertyContract, user.getId(), user.getName(),0); + return wxPropertyContractService.saveOrUpdate(wxPropertyContract, user.getId(), user.getName(),EnumFromType.OTHER.getCode()); } @GetMapping("/del") diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxRentContractController.java b/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxRentContractController.java index cebb7d41e..16fee5c3b 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxRentContractController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxRentContractController.java @@ -10,6 +10,7 @@ import com.iformall.domain.po.WxBillRent; import com.iformall.domain.po.WxPayAccountBill; import com.iformall.domain.po.WxRentContract; import com.iformall.domain.po.WxShop; +import com.iformall.enums.EnumFromType; import com.iformall.enums.EnumRentContractAdjustPeriod; import com.iformall.enums.EnumRentShopType; import com.iformall.enums.EnumRentStartType; @@ -110,7 +111,8 @@ public class WxRentContractController extends BaseController { rentContract.setTenantId(user.getTenantId()); rentContract.setAdjustPeriodHandle(); rentContract.setRentPriceHandle(); - return wxRentContractService.update(rentContract, user.getId(),user.getName(),1,oldDate); + rentContract.setRentStartType(wxRentContract.getRentStartType()); + return wxRentContractService.update(rentContract, user.getId(),user.getName(), EnumFromType.SWITCH.getCode(),oldDate); } @PostMapping("update") @@ -125,7 +127,7 @@ public class WxRentContractController extends BaseController { if(wxRentContract.getRentStartType()!=null && wxRentContract.getRentStartType().equals(EnumRentStartType.STARTTIME.getCode())){ wxRentContract.setRentalStartDate(wxRentContract.getStartDate()); } - return wxRentContractService.update(wxRentContract, user.getId(),user.getName(),0,oldDate); + return wxRentContractService.update(wxRentContract, user.getId(),user.getName(),EnumFromType.OTHER.getCode(),oldDate); } /** @@ -145,7 +147,7 @@ public class WxRentContractController extends BaseController { if(wxRentContract.getRentStartType()!=null &&wxRentContract.getRentStartType().equals(EnumRentStartType.STARTTIME.getCode())){ wxRentContract.setRentalStartDate(wxRentContract.getStartDate()); } - return wxRentContractService.update(wxRentContract, user.getId(),user.getName(),0,oldDate); + return wxRentContractService.update(wxRentContract, user.getId(),user.getName(),EnumFromType.OTHER.getCode(),oldDate); } @PostMapping("updateFile") diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxFlowModel.java b/mallinkService/src/main/java/com/iformall/domain/po/WxFlowModel.java index b127025ed..68af5e963 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxFlowModel.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxFlowModel.java @@ -42,7 +42,8 @@ public class WxFlowModel extends BaseEntity { @io.swagger.annotations.ApiModelProperty(value="流程id",name="flowId") private String flowId; - @io.swagger.annotations.ApiModelProperty(value="流程类型4商铺签约5多径签约6商铺终止7多径终止8账单变更9有价卷上架",name="flowId") + + @io.swagger.annotations.ApiModelProperty(value="流程类型4商铺签约5多径签约6商铺终止7多径终止8账单变更9有价卷上架",name="flowType") @Transient private Integer flowType; diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/UserTaskVo.java b/mallinkService/src/main/java/com/iformall/domain/vo/UserTaskVo.java index 7d444d1e6..957b7df79 100644 --- a/mallinkService/src/main/java/com/iformall/domain/vo/UserTaskVo.java +++ b/mallinkService/src/main/java/com/iformall/domain/vo/UserTaskVo.java @@ -19,4 +19,6 @@ public class UserTaskVo implements Serializable{ @io.swagger.annotations.ApiModelProperty(value="节点类型,1普通 2会签 3或签",name="type") private Integer type; + private String key; + } diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumFromType.java b/mallinkService/src/main/java/com/iformall/enums/EnumFromType.java new file mode 100644 index 000000000..19711d854 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/enums/EnumFromType.java @@ -0,0 +1,37 @@ +package com.iformall.enums; + +/** + * Created by Stormeye on 2018/08/09. + */ +public enum EnumFromType { + + + SWITCH(1, "切换计租开始日期"), + OTHER(0, "其他"), + ; + + public static EnumFromType getEnum(Integer code) { + for (EnumFromType value : values()) { + if (value.getCode().equals(code)) { + return value; + } + } + return null; + } + + private Integer code; + private String message; + + EnumFromType(Integer code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return code; + } + + public String getMessage() { + return message; + } +} diff --git a/mallinkService/src/main/java/com/iformall/service/WxFlowService.java b/mallinkService/src/main/java/com/iformall/service/WxFlowService.java index 4a992491b..29bb4b6c5 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxFlowService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxFlowService.java @@ -15,7 +15,7 @@ import java.util.Map; * 流程审批服务 */ public interface WxFlowService { - String getFlowKeyByType(int flowType,String tenantId); + WxFlowModel getModelByType(int flowType,String tenantId); /** * 更新业务数据状态 diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxFlowServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxFlowServiceImpl.java index 0678c0b2c..626e0174e 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxFlowServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxFlowServiceImpl.java @@ -27,7 +27,6 @@ import org.flowable.bpmn.model.*; import org.flowable.bpmn.model.Process; import org.flowable.common.engine.api.FlowableIllegalArgumentException; import org.flowable.engine.*; -import org.flowable.engine.repository.Deployment; import org.flowable.engine.repository.DeploymentBuilder; import org.flowable.engine.runtime.Execution; import org.flowable.engine.runtime.ProcessInstance; @@ -107,13 +106,13 @@ public class WxFlowServiceImpl implements WxFlowService { * @param flowType * @return */ - public String getFlowKeyByType(int flowType,String tenantId){ - WxFlowConfig query = new WxFlowConfig(); - query.setTenantId(tenantId); - query.setType(flowType); - List configList = wxFlowConfigMapper.findList(query); - if(CollectionUtils.isNotEmpty(configList)){ - return configList.get(0).getWxFlowModel().getFlowId(); + public WxFlowModel getModelByType(int flowType,String tenantId){ + WxFlowModel model = new WxFlowModel(); + model.setTenantId(tenantId); + model.setFlowType(flowType); + List list = getModelBybusiness(model); + if(CollectionUtils.isNotEmpty(list)){ + return list.get(0); } return null; } @@ -365,20 +364,16 @@ public class WxFlowServiceImpl implements WxFlowService { String remark = (String)params.get("remark"); Long businessId = Long.parseLong(params.get("businessId").toString()); Integer flowType = (Integer)params.get("businessType"); - List> taskAssignee = (List)params.get("taskAssignee"); List> variables = (List)params.get("variables"); Boolean supplement = (Boolean)params.get("supplement"); - String flowKey = getFlowKeyByType(flowType,tenantId); - if(StringUtils.isBlank(flowKey)){ + WxFlowModel flowModel = getModelByType(flowType,tenantId); + if(StringUtils.isBlank(flowModel.getFlowId())){ return new ResultData(ResultData.ERROR, "您尚未设置审批模板,请先设置。"); } // 设置节点处理人 HashMap map = new HashMap<>(); - for (Map taskAssigneeMap : taskAssignee) { - map.put(taskAssigneeMap.get("taskKey"), taskAssigneeMap.get("assignee")); - } // map info,设置发起人等信息 Date startDate = new Date(); MallUserInfo starterInfo = this.mallUserInfoService.getById(userId); @@ -387,11 +382,11 @@ public class WxFlowServiceImpl implements WxFlowService { map.put("startDate", startDate); map.put("businessId",businessId+""); map.put("flowType",flowType); - map.put("taskAssignee",taskAssignee); map.put("variables",variables); map.put("supplement",supplement); + map.put("taskAssignee",flowModel.getLists()); - ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(flowKey, map); + ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(flowModel.getFlowId(), map); logger.debug("流程启动,流程id:{}",processInstance.getId()); params.put("flowType",flowType); @@ -532,7 +527,10 @@ public class WxFlowServiceImpl implements WxFlowService { if(StringUtils.isNotBlank(flowType)) { List definitionKeyList = new ArrayList<>(); for (String ft : flowType.split(",")) { - definitionKeyList.add(getFlowKeyByType(Integer.parseInt(ft),tenantId)); + WxFlowModel flowModel = getModelByType(Integer.parseInt(ft),tenantId); + if(flowModel!=null) { + definitionKeyList.add(flowModel.getFlowId()); + } } if(CollectionUtils.isNotEmpty(definitionKeyList)){ taskQuery.processDefinitionKeyIn(definitionKeyList); @@ -624,17 +622,15 @@ public class WxFlowServiceImpl implements WxFlowService { } Task task = taskService.createTaskQuery().processInstanceId(pi.getId()).singleResult(); Map mapInfo = taskService.getVariables(task.getId()); - List> taskAssigneeList = (List)mapInfo.get("taskAssignee"); + List taskAssigneeList = (List)mapInfo.get("taskAssignee"); for (int i = 0; i < taskAssigneeList.size(); i++) { - Map assignee = taskAssigneeList.get(i); - if(task.getTaskDefinitionKey().equals(assignee.get("taskKey"))){ + UserTaskVo assignee = taskAssigneeList.get(i); + if(task.getTaskDefinitionKey().equals(assignee.getKey())){ //设置当前节点代办人信息 - String[] assigneeArray = assignee.get("assignee").split(","); String userName = ""; - for (String userid:assigneeArray) { - MallUserInfo mallUserInfo = this.mallUserInfoService.getById(Long.parseLong(userid)); - userName += mallUserInfo.getName()+" "; + for (FlowUserVo userVo:assignee.getUserList()) { + userName += userVo.getName()+" "; } WxFlowRecord wxFlowRecord = new WxFlowRecord(); wxFlowRecord.setUserName(userName.trim()); @@ -645,14 +641,12 @@ public class WxFlowServiceImpl implements WxFlowService { if(i != taskAssigneeList.size()-1){ assignee = taskAssigneeList.get(i+1); // 下一个节点没设置代办人 - if(StringUtils.isBlank(assignee.get("assignee"))){ + if(CollectionUtils.isEmpty(assignee.getUserList())){ continue; } - assigneeArray = assignee.get("assignee").split(","); userName = ""; - for (String userid:assigneeArray) { - MallUserInfo mallUserInfo = this.mallUserInfoService.getById(Long.parseLong(userid)); - userName += mallUserInfo.getName()+" "; + for (FlowUserVo userVo:assignee.getUserList()) { + userName += userVo.getName()+" "; } wxFlowRecord = new WxFlowRecord(); @@ -1162,6 +1156,7 @@ public class WxFlowServiceImpl implements WxFlowService { for (int i = 0; i < wxFlowModel.getLists().size(); i++) { UserTaskVo taskVo = wxFlowModel.getLists().get(i); + taskVo.setKey("userTask" + (i + 1)); if (i == 0) { StartEvent start = new StartEvent(); start.setId("start"); @@ -1213,7 +1208,7 @@ public class WxFlowServiceImpl implements WxFlowService { bpmnModel.addProcess(process); DeploymentBuilder deploymentBuilder = repositoryService.createDeployment().addBpmnModel(process.getId()+".bpmn20.xml", bpmnModel); //部署 - Deployment deploy = deploymentBuilder.deploy(); + deploymentBuilder.deploy(); wxFlowModel.setFlowId(process.getId()); wxFlowModel.setFlow(JsonUtil.obj2Json(wxFlowModel)); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxPropertyContractServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxPropertyContractServiceImpl.java index e306f9d32..524ff5c6e 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxPropertyContractServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxPropertyContractServiceImpl.java @@ -332,15 +332,20 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService //启动审批流 if(!CollectionUtils.isEmpty(record.getFlowParams())) { - record.getFlowParams().put("businessId", record.getId().toString()); - wxFlowService.start(record.getFlowParams(), userId, userName, record.getTenantId()); - - // 合同状态改成待签约 - WxPropertyContract updateRentContract = new WxPropertyContract(); - updateRentContract.setId(record.getId()); - updateRentContract.setStatus(EnumRentContractStatus.WAIT_SIGN.getCode()); - wxPropertyContractMapper.updateStatus(updateRentContract); - logger.info("id:{},启动审批流成功",record.getId().toString()); + Integer flowType = (Integer)record.getFlowParams().get("businessType"); + if(wxFlowService.getModelByType(flowType.intValue(),record.getTenantId()) == null){ + updatePropertyContractStatus(record.getId()); + }else{ + record.getFlowParams().put("businessId", record.getId().toString()); + wxFlowService.start(record.getFlowParams(), userId, userName, record.getTenantId()); + + // 合同状态改成待签约 + WxPropertyContract updateRentContract = new WxPropertyContract(); + updateRentContract.setId(record.getId()); + updateRentContract.setStatus(EnumRentContractStatus.WAIT_SIGN.getCode()); + wxPropertyContractMapper.updateStatus(updateRentContract); + logger.info("id:{},启动审批流成功",record.getId().toString()); + } } return new ResultData(Result.SUCCESS, message, record); } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java index bfcd64d71..9efe29d20 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java @@ -356,18 +356,23 @@ public class WxRentContractServiceImpl implements WxRentContractService { // 启动审批流 if(record.getFlowParams() != null){ - record.getFlowParams().put("businessId",record.getId().toString()); - if(record.getMerchantId() != null) { - record.getFlowParams().put("supplement", true); //设置补录 + Integer flowType = (Integer)record.getFlowParams().get("businessType"); + if(wxFlowService.getModelByType(flowType.intValue(),record.getTenantId()) == null){ + updateRentContractStatus(record.getId()); + }else{ + record.getFlowParams().put("businessId",record.getId().toString()); + if(record.getMerchantId() != null) { + record.getFlowParams().put("supplement", true); //设置补录 + } + wxFlowService.start(record.getFlowParams(),userId,userName,record.getTenantId()); + + // 合同状态改成待签约 + WxRentContract updateRentContract = new WxRentContract(); + updateRentContract.setId(record.getId()); + updateRentContract.setStatus(EnumRentContractStatus.WAIT_SIGN.getCode()); + wxRentContractMapper.updateStatus(updateRentContract); + logger.info("id:{},启动审批流成功, 是否补录:{}",record.getId().toString(),record.getMerchantId() != null); } - wxFlowService.start(record.getFlowParams(),userId,userName,record.getTenantId()); - - // 合同状态改成待签约 - WxRentContract updateRentContract = new WxRentContract(); - updateRentContract.setId(record.getId()); - updateRentContract.setStatus(EnumRentContractStatus.WAIT_SIGN.getCode()); - wxRentContractMapper.updateStatus(updateRentContract); - logger.info("id:{},启动审批流成功, 是否补录:{}",record.getId().toString(),record.getMerchantId() != null); } //生成预览账单(补录第二步,第三步走编辑) @@ -408,18 +413,23 @@ public class WxRentContractServiceImpl implements WxRentContractService { //启动审批流 if(record.getFlowParams() != null){ - record.getFlowParams().put("businessId",record.getId().toString()); - if(record.getMerchantId() != null) { - record.getFlowParams().put("supplement", true); //设置补录 + Integer flowType = (Integer)record.getFlowParams().get("businessType"); + if(wxFlowService.getModelByType(flowType.intValue(),record.getTenantId()) == null){ + updateRentContractStatus(record.getId()); + }else{ + record.getFlowParams().put("businessId",record.getId().toString()); + if(record.getMerchantId() != null) { + record.getFlowParams().put("supplement", true); //设置补录 + } + wxFlowService.start(record.getFlowParams(),userId,userName,record.getTenantId()); + + //合同状态改成待签约 + WxRentContract updateRentContract = new WxRentContract(); + updateRentContract.setId(record.getId()); + updateRentContract.setStatus(EnumRentContractStatus.WAIT_SIGN.getCode()); + wxRentContractMapper.updateStatus(updateRentContract); + logger.info("id:{},启动审批流成功 ,是否补录:{}",record.getId().toString(),record.getMerchantId() != null); } - wxFlowService.start(record.getFlowParams(),userId,userName,record.getTenantId()); - - //合同状态改成待签约 - WxRentContract updateRentContract = new WxRentContract(); - updateRentContract.setId(record.getId()); - updateRentContract.setStatus(EnumRentContractStatus.WAIT_SIGN.getCode()); - wxRentContractMapper.updateStatus(updateRentContract); - logger.info("id:{},启动审批流成功 ,是否补录:{}",record.getId().toString(),record.getMerchantId() != null); } // 保存调整金额(预账单调整) @@ -694,7 +704,18 @@ public class WxRentContractServiceImpl implements WxRentContractService { logger.info("合同id:{},开始停止...", id); //结束审批流 by luozukai - List tasks = taskService.createTaskQuery().processDefinitionKey(wxFlowService.getFlowKeyByType(EnumFlowKey.CONTRACT.getCode().intValue(),record.getTenantId())) + WxFlowModel flowModel = wxFlowService.getModelByType(EnumFlowKey.NEW_RENT_CONTRACT.getCode().intValue(),record.getTenantId()); + WxFlowModel flowModelPoint = wxFlowService.getModelByType(EnumFlowKey.NEW_SHOP_CONTRACT.getCode().intValue(),record.getTenantId()); + List keyList = new ArrayList<>(); + if(flowModel != null){ + keyList.add(flowModel.getFlowId()); + } + if(flowModelPoint != null){ + keyList.add(flowModelPoint.getFlowId()); + } + keyList.add(EnumFlowKey.CONTRACT.getMessage()); + List tasks = taskService.createTaskQuery() + .processDefinitionKeyIn(keyList) .processVariableValueEquals("businessId", id+"").list(); if (!CollectionUtils.isEmpty(tasks)) { for (Task task : tasks) { @@ -1280,18 +1301,24 @@ public class WxRentContractServiceImpl implements WxRentContractService { } // 启动审批流 if(record.getFlowParams() != null){ - record.getFlowParams().put("businessId",record.getId().toString()); - if(record.getMerchantId() != null) { - record.getFlowParams().put("supplement", true); //设置补录 + //判断是否配置模板 + Integer flowType = (Integer)record.getFlowParams().get("businessType"); + if(wxFlowService.getModelByType(flowType.intValue(),record.getTenantId())==null){ + updateRentContractStatus(record.getId()); + }else{ + record.getFlowParams().put("businessId",record.getId().toString()); + if(record.getMerchantId() != null) { + record.getFlowParams().put("supplement", true); //设置补录 + } + wxFlowService.start(record.getFlowParams(),userId,userName,record.getTenantId()); + + // 合同状态改成待签约 + WxRentContract updateRentContract = new WxRentContract(); + updateRentContract.setId(record.getId()); + updateRentContract.setStatus(EnumRentContractStatus.WAIT_SIGN.getCode()); + wxRentContractMapper.updateStatus(updateRentContract); + logger.info("id:{},启动审批流成功,是否补录:{}",record.getId().toString(),record.getMerchantId() != null); } - wxFlowService.start(record.getFlowParams(),userId,userName,record.getTenantId()); - - // 合同状态改成待签约 - WxRentContract updateRentContract = new WxRentContract(); - updateRentContract.setId(record.getId()); - updateRentContract.setStatus(EnumRentContractStatus.WAIT_SIGN.getCode()); - wxRentContractMapper.updateStatus(updateRentContract); - logger.info("id:{},启动审批流成功,是否补录:{}",record.getId().toString(),record.getMerchantId() != null); } return resultData; } diff --git a/mallinkService/src/main/resources/mapper/WxBillAllMapper.xml b/mallinkService/src/main/resources/mapper/WxBillAllMapper.xml index 14f6230ba..fec402742 100644 --- a/mallinkService/src/main/resources/mapper/WxBillAllMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxBillAllMapper.xml @@ -118,7 +118,7 @@ order by ${sortColumns} - order by bill.id desc,bill.merchant_id,bill.status,bill.receive_date desc + order by bill.receive_date,bill.id desc,bill.merchant_id,bill.status