|
@@ -9,6 +9,7 @@ import com.google.common.collect.Lists;
|
|
|
import com.google.common.collect.Maps;
|
|
|
import com.jeeplus.common.config.Global;
|
|
|
import com.jeeplus.common.oss.OSSClientUtil;
|
|
|
+import com.jeeplus.common.utils.IdGen;
|
|
|
import com.jeeplus.common.utils.MenuStatusEnum;
|
|
|
import com.jeeplus.common.utils.StringUtils;
|
|
|
import com.jeeplus.common.websocket.onchat.ChatServerPool;
|
|
@@ -293,6 +294,152 @@ public class WorkContractRecordService extends CrudService<WorkContractRecordDao
|
|
|
|
|
|
return "";
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 提交存储(总经理发起)
|
|
|
+ * @param
|
|
|
+ * @param variables
|
|
|
+ */
|
|
|
+ @Transactional(readOnly = false)
|
|
|
+ public String saveZjlStart(WorkContractRecord workContractRecord, Map<String, Object> variables, String processInstanceId) {
|
|
|
+ WorkContractInfo workContractInfo = workContractInfoService.get(workContractRecord.getWorkContractInfo().getId());
|
|
|
+ User user = UserUtils.get(workContractInfo.getCreateBy().getId());
|
|
|
+ String recordNum = this.findRecordNum(workContractInfo.getContractNum());
|
|
|
+ if(StringUtils.isBlank(recordNum)){
|
|
|
+ workContractRecord.setRecordNum(workContractInfo.getContractNum()+"-1");
|
|
|
+ }else{
|
|
|
+ workContractRecord.setRecordNum(recordNum);
|
|
|
+ }
|
|
|
+ super.save(workContractRecord);
|
|
|
+ //修改合同归档发起人信息(修改为合同创建人)
|
|
|
+ workContractRecord.setCreateBy(workContractInfo.getCreateBy());
|
|
|
+ workContractRecord.setUpdateBy(workContractInfo.getUpdateBy());
|
|
|
+ //修改合同归档的创建人信息
|
|
|
+ workContractRecordDao.updateCreateBy(workContractRecord);
|
|
|
+
|
|
|
+
|
|
|
+ Office office = officeService.get(workContractRecord.getOfficeId());
|
|
|
+ String title = "合同【"+workContractRecord.getWorkContractInfo().getName()+"】归档待审批";
|
|
|
+ String str = "合同【"+workContractRecord.getWorkContractInfo().getName()+"】归档,合同编号:" + workContractRecord.getWorkContractInfo().getContractNum();
|
|
|
+ updateWorkReimbursementInfo(workContractRecord);
|
|
|
+ // 用来设置启动流程的人员ID,引擎会自动把用户ID保存到activiti:initiator中
|
|
|
+ identityService.setAuthenticatedUserId(user.getId());
|
|
|
+ // 启动流程
|
|
|
+ String businessKey = workContractRecord.getId().toString();
|
|
|
+ WorkActivityMenu workActivityMenu = workActivityMenuService.findByParentAndOffice("zth3125f1f194c82bdea9htgdc750904", office);
|
|
|
+ // 启动流程
|
|
|
+ String processType = workActivityMenu.getProcessType();
|
|
|
+ StringBuffer buffer = new StringBuffer();
|
|
|
+ Activity activity = new Activity();
|
|
|
+ WorkProjectNotify workProjectNotify = UtilNotify
|
|
|
+ .saveNotify(workContractRecord.getId(),
|
|
|
+ null,
|
|
|
+ workContractRecord.getCompanyId(),
|
|
|
+ title,
|
|
|
+ str,
|
|
|
+ "42",
|
|
|
+ "0",
|
|
|
+ "待审批",
|
|
|
+ ""
|
|
|
+ );
|
|
|
+ List<User> users = new ArrayList<>();
|
|
|
+ List<User> bmzrs = UserUtils.getByRoleActivityEnname("htgdgly",3,office.getId(),"8",workContractRecord.getCreateBy());
|
|
|
+
|
|
|
+ if (StringUtils.isNotBlank(workActivityMenu.getId())) {
|
|
|
+ workProjectNotify.setNotifyRole("");
|
|
|
+ workActivityMenu = workActivityMenuService.get(workActivityMenu.getId());
|
|
|
+ List<Activity> activities = workActivityMenu.getActivities();
|
|
|
+ for (Activity a : activities) {
|
|
|
+ String encount = a.getEncount();
|
|
|
+ String enlist = a.getEnlist();
|
|
|
+ if (a.getRole()!=null && StringUtils.isNotBlank(a.getRole().getEnname())){
|
|
|
+ List enusers = UserUtils.getByRoleActivityEnnames(a.getRole().getEnname(),office.getId(),"3",workContractRecord.getCreateBy());
|
|
|
+ if (enusers.size()==0){
|
|
|
+ return "流程审批人不能为空,角色"+a.getRole().getName()+"下无用户,请联系管理员!";
|
|
|
+ }
|
|
|
+ variables.put(enlist, enusers);
|
|
|
+ variables.put(encount, enusers.size());
|
|
|
+ }
|
|
|
+ if (a.getDelFlag().equals("0") && a.getCount() == 1) {
|
|
|
+ activity = a;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ buffer.append(activity.getRole().getEnname());
|
|
|
+ if (activity != null && StringUtils.isNotBlank(activity.getId())) {
|
|
|
+ //角色审批
|
|
|
+ if (StringUtils.isNotBlank(activity.getRole().getEnname())) {
|
|
|
+ users = UserUtils.getByRoleActivityEnnames(activity.getRole().getEnname(),office.getId(),"3",workContractRecord.getCreateBy());
|
|
|
+ }
|
|
|
+ //人员审批
|
|
|
+ if (StringUtils.isNotBlank(activity.getUser().getId())) {
|
|
|
+ users.add(activity.getUser());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ workProjectNotify.setId("");
|
|
|
+ } else {
|
|
|
+ if (bmzrs.size()==0){
|
|
|
+ return "流程审批人不能为空,角色合同归档管理员下无用户,请联系管理员!";
|
|
|
+ }
|
|
|
+ variables.put("bmzrList", bmzrs);
|
|
|
+ variables.put("bmzrCount",bmzrs.size());
|
|
|
+ processType = "contractArchive";
|
|
|
+ users.addAll(bmzrs);
|
|
|
+ }
|
|
|
+ for (User u : users){
|
|
|
+ workProjectNotify.setUser(u);
|
|
|
+ workProjectNotify.setId("");
|
|
|
+ workProjectNotify.setNotifyRole("归档管理员审批");
|
|
|
+ workProjectNotifyService
|
|
|
+ .save(workProjectNotify);
|
|
|
+ Map<String,Object> extras = new HashMap<>();
|
|
|
+ extras.put("type","7001");
|
|
|
+ extras.put("id",workProjectNotify.getId());
|
|
|
+ extras.put("procDefKey","42");
|
|
|
+ UserUtils.pushInfoToApp(title,str,extras,u.getId());
|
|
|
+ UserUtils.pushIm(u.getId(),str);
|
|
|
+ }
|
|
|
+ variables.put("type", processType);
|
|
|
+ variables.put("busId", businessKey);
|
|
|
+ variables.put("title", "审批单:" + workContractRecord.getRecordNum());//设置标题;
|
|
|
+
|
|
|
+ ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(processType, businessKey, variables);
|
|
|
+ workContractRecord.setProcessInstance(processInstance);
|
|
|
+ if (StringUtils.isNotBlank(processInstanceId)) {
|
|
|
+ workActivityProcessService.updateProcessInstanceId(processInstance.getId(),processInstanceId);
|
|
|
+ workActivityProcessService.deleteProcessInstanceId(processInstanceId);
|
|
|
+ workActivityProcessService.deleteProcessIdAuditUsers(processInstanceId);
|
|
|
+ }
|
|
|
+ // 更新流程实例ID
|
|
|
+ workContractRecord.setProcessInstanceId(processInstance.getId());
|
|
|
+ workContractRecordDao.updateProcessInstanceId(workContractRecord);
|
|
|
+ //通知添加流程实例ID
|
|
|
+ workProjectNotify.setProcessInstanceId(processInstance.getId());
|
|
|
+ workProjectNotify.preInsert();
|
|
|
+ workProjectNotify.setCreateBy(user);
|
|
|
+ workProjectNotify.setUpdateBy(user);
|
|
|
+
|
|
|
+ workProjectNotifyService.insert(workProjectNotify);
|
|
|
+ List<Activity> list = workActivityMenu.getActivities();
|
|
|
+ if (list != null && list.size() != 0) {
|
|
|
+ workActivityProcessService.saveList(list, processInstance.getId());
|
|
|
+ } else {
|
|
|
+ WorkActivityProcess workActivityProcess = new WorkActivityProcess();
|
|
|
+ workActivityProcess.setProcessKey("contractArchive");
|
|
|
+ workActivityProcess.setCount(1);
|
|
|
+ workActivityProcess.setProcessInstanceId(processInstance.getId());
|
|
|
+ workActivityProcess.setIsApproval("0");
|
|
|
+ workActivityProcess.preInsert();
|
|
|
+ //将创建合同信息的成员添加到创建栏中
|
|
|
+ workActivityProcess.setCreateBy(user);
|
|
|
+ workActivityProcess.setUpdateBy(user);
|
|
|
+ workActivityProcessService.insertAllparameter(workActivityProcess);
|
|
|
+ workActivityProcessService.insertAuditsByType(bmzrs,processInstance.getId(),1,1);
|
|
|
+ }
|
|
|
+ logger.debug("start process of {key={}, bkey={}, pid={}, variables={}}", new Object[]{
|
|
|
+ ActUtils.PD_REIMBURSEMENT[0], businessKey, processInstance.getId(), variables});
|
|
|
+
|
|
|
+ return "";
|
|
|
+ }
|
|
|
@Transactional(readOnly = false)
|
|
|
public void updateWorkReimbursementInfo(WorkContractRecord workContractRecord) {
|
|
|
//附件信息
|