Explorar o código

报销功能调整

徐滕 hai 1 mes
pai
achega
67f68c3f30

+ 126 - 0
src/main/java/com/jeeplus/modules/sys/utils/ALiYunSmsUtil.java

@@ -0,0 +1,126 @@
+package com.jeeplus.modules.sys.utils;
+
+import com.aliyun.dysmsapi20170525.Client;
+import com.aliyun.dysmsapi20170525.models.SendSmsRequest;
+import com.aliyun.dysmsapi20170525.models.SendSmsResponse;
+import com.aliyun.tea.TeaException;
+import com.aliyun.teaopenapi.models.Config;
+
+import java.util.HashMap;
+
+/**
+ * @author: 徐滕
+ * @version: 2024-09-06 11:20
+ */
+public class ALiYunSmsUtil {
+    private static final String ACCESS_KEY_ID = "LTAI5tPcDWKAh5iG7z8veXfk";//AccessKey自己账号的
+    private static final String ACCESS_KEY_SECRET = "GrY2L9GegHNKB2y62V5RcRtJU6iYr2";
+    private static final String ENDPOINT = "dysmsapi.aliyuncs.com";//固定死
+    private static final String SIGNNAME = "大屏展示";//签名名称
+    private static final String TCODE = "";//模版的编号
+
+
+
+    /**
+     * 登录验证码
+     * @param phoneNumbers
+     * @param randomCode
+     * @return
+     * @throws Exception
+     */
+    public static HashMap<String,Object> quickLoginSendSms(String phoneNumbers, String randomCode) throws Exception {
+        HashMap<String,Object> map = new HashMap<>();
+        Config config = new Config()
+                .setAccessKeyId(ACCESS_KEY_ID)
+                .setAccessKeySecret(ACCESS_KEY_SECRET)
+                .setEndpoint(ENDPOINT);
+
+        Client client = new Client(config);
+        SendSmsRequest sendSmsRequest = new SendSmsRequest()
+                .setPhoneNumbers(phoneNumbers)
+                .setSignName(SIGNNAME)
+                /*.setTemplateCode("SMS_472770050")*/
+                .setTemplateCode("SMS_482810075")
+                //此处是设计模版的时候预留的变量${code}就验证码,用下面的随机生成4位数字传入
+                .setTemplateParam(String.format("{\"code\":\"%s\"}", randomCode));
+
+        try {
+            SendSmsResponse sendSmsResponse = client.sendSms(sendSmsRequest);
+            System.out.println(sendSmsResponse);
+            if(sendSmsResponse.body.code.equals("isv.BUSINESS_LIMIT_CONTROL")){
+                if(sendSmsResponse.body.message.contains("触发分钟级流控")){
+                    map.put("message","手机号获取验证码次数已触发每分钟可发送数量上限,请稍后进行重试!");
+                }else if(sendSmsResponse.body.message.contains("触发小时级流控")){
+                    map.put("message","手机号获取验证码次数已触发每小时可发送数量上限,请稍后进行重试!");
+                }else{
+                    map.put("message","手机号获取验证码次数已触发每小时可发送数量上限,请稍后进行重试!");
+                }
+                //触发云通信流控限制 每小时限量
+                map.put("statusCode",10001);
+            }else if(sendSmsResponse.body.code.contains("isv.AMOUNT_NOT_ENOUGH")){
+                //触发账户余额不足
+                map.put("statusCode",10002);
+            }else if(sendSmsResponse.body.code.contains("isv.DAY_LIMIT_CONTROL")){
+                //触发触发日发送限额
+                map.put("statusCode",10003);
+            }else if(sendSmsResponse.body.code.contains("OK")){
+                map.put("statusCode",sendSmsResponse.getStatusCode());
+            }
+            return map;
+        } catch (TeaException error) {
+            return map;
+        }
+    }
+
+    /**
+     * 修改密码验证码
+     * @param phoneNumbers
+     * @param randomCode
+     * @return
+     * @throws Exception
+     */
+    public static HashMap<String,Object> updatePasswordSendSms(String phoneNumbers, String randomCode) throws Exception {
+        HashMap<String,Object> map = new HashMap<>();
+        Config config = new Config()
+                .setAccessKeyId(ACCESS_KEY_ID)
+                .setAccessKeySecret(ACCESS_KEY_SECRET)
+                .setEndpoint(ENDPOINT);
+
+        Client client = new Client(config);
+        SendSmsRequest sendSmsRequest = new SendSmsRequest()
+                .setPhoneNumbers(phoneNumbers)
+                .setSignName(SIGNNAME)
+                /*.setTemplateCode("SMS_472770050")*/
+                .setTemplateCode("SMS_482810075")
+                //此处是设计模版的时候预留的变量${code}就验证码,用下面的随机生成4位数字传入
+                .setTemplateParam(String.format("{\"code\":\"%s\"}", randomCode));
+
+        try {
+            SendSmsResponse sendSmsResponse = client.sendSms(sendSmsRequest);
+            System.out.println(sendSmsResponse);
+            if(sendSmsResponse.body.code.equals("isv.BUSINESS_LIMIT_CONTROL")){
+                if(sendSmsResponse.body.message.contains("触发分钟级流控")){
+                    map.put("message","手机号获取验证码次数已触发每分钟可发送数量上限,请稍后进行重试!");
+                }else if(sendSmsResponse.body.message.contains("触发小时级流控")){
+                    map.put("message","手机号获取验证码次数已触发每小时可发送数量上限,请稍后进行重试!");
+                }else{
+                    map.put("message","手机号获取验证码次数已触发每小时可发送数量上限,请稍后进行重试!");
+                }
+                //触发云通信流控限制 每小时限量
+                map.put("statusCode",10001);
+            }else if(sendSmsResponse.body.code.contains("isv.AMOUNT_NOT_ENOUGH")){
+                //触发账户余额不足
+                map.put("statusCode",10002);
+            }else if(sendSmsResponse.body.code.contains("isv.DAY_LIMIT_CONTROL")){
+                //触发触发日发送限额
+                map.put("statusCode",10003);
+            }else if(sendSmsResponse.body.code.contains("OK")){
+                map.put("statusCode",sendSmsResponse.getStatusCode());
+            }
+            return map;
+        } catch (TeaException error) {
+            return map;
+        }
+    }
+
+}

+ 2 - 2
src/main/java/com/jeeplus/modules/workcontractinfo/service/WorkContractInfoService.java

@@ -4063,10 +4063,10 @@ public class WorkContractInfoService extends CrudService<WorkContractInfoDao, Wo
 				workContractInfo.getSqlMap().put("officeId", "");
 			}
 		}else{
-			if(null != office && StringUtils.isNotBlank(office.getName()) && office.getName().equals("工程五部")){
+			if(null != office && StringUtils.isNotBlank(office.getName()) && office.getName().equals("工程五部") || officeName.equals("苏州分公司")){
 				workContractInfo.getSqlMap().put("officeId", "or parent_ids like concat('%',#{officeId},'%')");
 			}else{
-				if (StringUtils.isNotBlank(officeName) && (officeName.equals("工程五部") || officeName.equals("工程一部"))){
+				if (StringUtils.isNotBlank(officeName) && (officeName.equals("工程五部") || officeName.equals("工程一部") || officeName.equals("苏州分公司"))){
 					workContractInfo.getSqlMap().put("officeId", "or parent_ids like concat('%',#{officeId},'%')");
 				}else {
 					workContractInfo.getSqlMap().put("officeId", "");

+ 1 - 1
src/main/java/com/jeeplus/modules/workprojectnotify/web/WorkProjectNotifyController.java

@@ -1704,7 +1704,7 @@ public class WorkProjectNotifyController extends BaseController {
 						return "modules/workreimbursement/workReimbursementFormDetail";
 					}
 
-				} else if (workProjectNotify.getType().equals("102") || workProjectNotify.getType().equals("108") || workProjectNotify.getType().equals("109")) {    //新报销
+				} else if (workProjectNotify.getType().equals("102") || workProjectNotify.getType().equals("108") || workProjectNotify.getType().equals("109") || workProjectNotify.getType().equals("112")) {    //新报销
 					return this.workReimbursementAudit(workProjectNotify, model);
 
 				} else if (workProjectNotify.getType().equals("106")) {    //电子发票报销

+ 9 - 0
src/main/java/com/jeeplus/modules/workreimbursement/entity/WorkReimbursement.java

@@ -84,6 +84,7 @@ public class WorkReimbursement extends ActEntity<WorkReimbursement> {
 	private String replenishUserId; // 附件补充创建者id
 	private String replenishStatus; // 附件补充状态
 	private Date replenishDate; // 附件补充时间
+	private Integer oldDataType; // 老数据状态
 
 	public String getComment() {
 		return comment;
@@ -738,4 +739,12 @@ public class WorkReimbursement extends ActEntity<WorkReimbursement> {
 	public void setReplenishDate(Date replenishDate) {
 		this.replenishDate = replenishDate;
 	}
+
+	public Integer getOldDataType() {
+		return oldDataType;
+	}
+
+	public void setOldDataType(Integer oldDataType) {
+		this.oldDataType = oldDataType;
+	}
 }

+ 606 - 0
src/main/java/com/jeeplus/modules/workreimbursement/service/WorkReimbursementNewService.java

@@ -577,6 +577,173 @@ public class WorkReimbursementNewService extends CrudService<WorkReimbursementDa
         return "";
     }
 
+    /**
+     * 提交存储
+     * @param workReimbursement
+     * @param variables
+     */
+    @Transactional(readOnly = false)
+    public String saveReimbursementThree(WorkReimbursement workReimbursement,Map<String, Object> variables,String processInstanceId) {
+        workReimbursement.setOldDataType(1);
+        User user = UserUtils.getUser();
+        if (StringUtils.isBlank(workReimbursement.getNumber())) {
+            synchronized (SYN_BYTE) {
+                workReimbursement.setNumber(serialNumTplService.genSerialNum(user.getCompany(), WorkReimbursement.SERIAL_BIZCODE));
+            }
+        }
+        super.save(workReimbursement);
+        String str = "";
+        Office office = officeService.get(workReimbursement.getOfficeId());
+
+        str = "报销【" + workReimbursement.getNumber() + "】申请待审批,经办人:" + user.getName()+",总金额:"+workReimbursement.getMoney();
+        String title = "报销【" + workReimbursement.getNumber() + "】申请待审批";
+        updateWorkReimbursementInfo(workReimbursement);
+        // 用来设置启动流程的人员ID,引擎会自动把用户ID保存到activiti:initiator中
+        identityService.setAuthenticatedUserId(user.getId());
+        // 启动流程
+        String businessKey = workReimbursement.getId().toString();
+        WorkActivityMenu workActivityMenu = workActivityMenuService.findByParentAndOffice("ggh3125f1f194c82bdea93555c750906", office);
+        // 启动流程
+        String processType = workActivityMenu.getProcessType();
+        StringBuffer buffer = new StringBuffer();
+        Activity activity = new Activity();
+        WorkProjectNotify workProjectNotify = UtilNotify
+                .saveNotify(workReimbursement.getId(),
+                        null,
+                        workReimbursement.getCompanyId(),
+                        title,
+                        str,
+                        "112",
+                        "0",
+                        "待审批",
+                        ""
+                );
+        List<User> users = new ArrayList<>();
+        //部门主任
+        List<User> bmzrs = UserUtils.getByRoleActivityEnname("bmzr",2,office.getId(),"8",workReimbursement.getCreateBy());
+
+        //判定当前登陆人的部门是否是工程一部或者为工程一部的子部门,如果是,则审核人均为工程一部部门主任
+        if("7f776d072d7b4c839cef4e63ce6dbfa5".equals(office.getId()) || office.getParentIds().contains("7f776d072d7b4c839cef4e63ce6dbfa5")){
+            bmzrs = UserUtils.getByRoleActivityEnname("bmzr",2,"7f776d072d7b4c839cef4e63ce6dbfa5","8",workReimbursement.getCreateBy());
+        }
+
+        //判断当前登陆人的部门是否为综合管理部。如果是,则审核人设置为总审室部门主任(王年生)
+        /*if("6c9ca86e941b4a738c1ab9b006976264".equals(office.getId())){
+            bmzrs = UserUtils.getByRoleActivityEnname("bmzr",2,"26f5f4aff4244d8c833cca11f305c612","8",workReimbursement.getCreateBy());
+        }*/
+        //财务主任
+        List<User> cws = UserUtils.getByRoleActivityEnname("cwzg",3,office.getId(),"8",workReimbursement.getCreateBy());
+
+        //财务员工
+        List<User> fpglys = UserUtils.getByRoleActivityEnname("dzfpbxshybxsd",3,office.getId(),"5",workReimbursement.getCreateBy());
+        //总经办负责人
+        List<User> gsldList = UserUtils.getByRoleActivityEnname("zjbfzribvf",3,office.getId(),"8",workReimbursement.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(),"8",workReimbursement.getCreateBy());
+                    if (enusers.size()==0){
+                        workReimbursement.setStatus("1");
+                        super.save(workReimbursement);
+                        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(),"8",workReimbursement.getCreateBy());
+                }
+                //人员审批
+                if (StringUtils.isNotBlank(activity.getUser().getId())) {
+                    users.add(activity.getUser());
+                }
+            }
+            workProjectNotify.setId("");
+        } else {
+            if (cws.size()==0 ){
+                workReimbursement.setStatus("1");
+                super.save(workReimbursement);
+            }
+            if (cws.size()==0){
+                return "流程审批人不能为空,办公室下无用户,请联系管理员!";
+            }
+
+            variables.put("cwcount",cws.size());
+            variables.put("cwList",cws);
+            processType = "reimbursementThree";
+            users.addAll(cws);
+        }
+        for (User u : users){
+            workProjectNotify.setUser(u);
+            workProjectNotify.setId("");
+            workProjectNotify.setNotifyRole("办公室审批");
+            workProjectNotifyService.save(workProjectNotify);
+            Map<String,Object> extras = new HashMap<>();
+            extras.put("type","7002");
+            extras.put("id",workProjectNotify.getId());
+            extras.put("procDefKey","112");
+            UserUtils.pushInfoToApp(title,str,extras,u.getId());
+            UserUtils.pushIm(u.getId(),str);
+        }
+        variables.put("type", processType);
+        variables.put("busId", businessKey);
+        variables.put("title", "审批单:" + workReimbursement.getNumber());//设置标题;
+
+        ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(processType, businessKey, variables);
+        workReimbursement.setProcessInstance(processInstance);
+        if (StringUtils.isNotBlank(processInstanceId)) {
+            workActivityProcessService.updateProcessInstanceId(processInstance.getId(),processInstanceId);
+            workActivityProcessService.deleteProcessInstanceId(processInstanceId);
+            workActivityProcessService.deleteProcessIdAuditUsers(processInstanceId);
+        }
+        // 更新流程实例ID
+        workReimbursement.setProcessInstanceId(processInstance.getId());
+        workReimbursementDao.updateProcessInstanceId(workReimbursement);
+        //通知添加流程实例ID
+        workProjectNotify.setProcessInstanceId(processInstance.getId());
+        workProjectNotifyService.save(workProjectNotify);
+        List<Activity> list = workActivityMenu.getActivities();
+        if (list != null && list.size() != 0) {
+            workActivityProcessService.saveList(list, processInstance.getId());
+        } else {
+            WorkActivityProcess workActivityProcess = new WorkActivityProcess();
+            workActivityProcess.setProcessKey("reimbursementThree");
+            workActivityProcess.setCount(1);
+            workActivityProcess.setProcessInstanceId(processInstance.getId());
+            workActivityProcess.setIsApproval("0");
+            workActivityProcessService.save(workActivityProcess);
+            workActivityProcess.setCount(2);
+            workActivityProcess.setId("");
+            workActivityProcessService.save(workActivityProcess);
+            workActivityProcess.setCount(3);
+            workActivityProcess.setId("");
+            workActivityProcessService.save(workActivityProcess);
+            workActivityProcess.setCount(4);
+            workActivityProcess.setId("");
+            workActivityProcessService.save(workActivityProcess);
+            workActivityProcessService.save(workActivityProcess);
+            workActivityProcessService.insertAuditsByType(cws,processInstance.getId(),1,1);
+            workActivityProcessService.insertAuditsByType(bmzrs,processInstance.getId(),2,0);
+            workActivityProcessService.insertAuditsByType(fpglys,processInstance.getId(),3,0);
+            workActivityProcessService.insertAuditsByType(gsldList,processInstance.getId(),4,0);
+        }
+        logger.debug("start process of {key={}, bkey={}, pid={}, variables={}}", new Object[]{
+                ActUtils.PD_REIMBURSEMENT[0], businessKey, processInstance.getId(), variables});
+        return "";
+    }
+
 
 
     /**
@@ -2190,6 +2357,445 @@ public class WorkReimbursementNewService extends CrudService<WorkReimbursementDa
         workReimbursementDao.update(workReimbursement);
         return "保存审核意见成功!";
     }
+/**
+     * 审核流程
+     * @param workReimbursement
+     */
+    @Transactional(readOnly = false)
+    public String auditSaveReimbursementThree(WorkReimbursement workReimbursement,List<User> auditUsers) {
+        String str = "";
+        String userName = UserUtils.get(workReimbursement.getCreateBy().getId()).getName();
+        Office office = officeService.get(workReimbursement.getOfficeId());
+        String title = "报销【" + workReimbursement.getNumber() + "】申请待审批";
+        if (workReimbursement.getProject()!= null && StringUtils.isNotBlank(workReimbursement.getProject().getId())){
+            str =  "报销申请编号:"+workReimbursement.getNumber()+",报销项目:"+workReimbursement.getProject().getProjectName()+",报销费用合计:"+workReimbursement.getMoney()+",报销人:"+userName+",所属部门:"+office.getName();
+        }else {
+            str =  "报销申请编号:"+workReimbursement.getNumber()+",非项目报销,报销费用合计:"+workReimbursement.getMoney()+",报销人:"+userName+",所属部门:"+office.getName();
+        }
+        // 对不同环节的业务逻辑进行操作
+        String taskDefKey = workReimbursement.getAct().getTaskDefKey();
+        if (!"modifyApply".equals(taskDefKey) && !taskDefKey.contains("audit") && !taskDefKey.contains("cw") ) {
+            actTaskService.claim(workReimbursement.getAct().getTaskId(), UserUtils.getUser().getId());
+        }else if(taskDefKey.contains("cw")) {
+            //updateWorkReimbursementInfo(workReimbursement);
+        }else{
+            workReimbursement.getAct().setFlag("yes");
+            if("modifyApply".equals(taskDefKey)) {
+                updateWorkReimbursementInfo(workReimbursement);
+            }
+        }
+        String comment = "";
+        if (workReimbursement.getStatus().equals("4")){
+            comment = ("yes".equals(workReimbursement.getAct().getFlag())?"[重新申请] ":"[已撤销] ");
+        }else {
+            comment = ("yes".equals(workReimbursement.getAct().getFlag())?"[同意] ":"[驳回] ")+workReimbursement.getAct().getComment();
+        }
+        //yes 的时候状态为审核通过 否则为未通过
+        //1 审核中 2 未通过
+        workReimbursement.setStatus(("yes".equals(workReimbursement.getAct().getFlag()) ? "2" : "4"));
+        Map<String, Object> vars = Maps.newHashMap();
+        //业务逻辑对应的条件表达式
+        String exp = "";
+        String taskCount = "";
+        String notifyRole = "";
+        int key = 0;
+        String enname = "";
+        List<Activity> activitieList = activityService.getByProcessInstanceId(workReimbursement.getProcessInstanceId());
+        WorkActivityMenu workActivityMenu = new WorkActivityMenu();
+        if (activitieList != null && activitieList.size() != 0) {
+            Iterator<Activity> iterator = activitieList.iterator();
+            while (iterator.hasNext()){
+                Activity activityInfo = iterator.next();
+                if (!"reimbursementThree".equals(activityInfo.getProcessKey())){
+                    iterator.remove();
+                }
+            }
+            workActivityMenu.setProcessType(activitieList.get(0).getProcessKey());
+            workActivityMenu.setActivities(activitieList);
+        }
+
+        WorkActivityProcess workActivityProcess = new WorkActivityProcess();
+        WorkActivityProcess selectProcess = new WorkActivityProcess();
+        selectProcess.setProcessInstanceId(workReimbursement.getProcessInstanceId());
+        List<WorkActivityProcess> workActivityProcesses = workActivityProcessService.findList(selectProcess);
+        List<Activity> activities = workActivityMenu.getActivities();
+        if (StringUtils.isNotBlank(workActivityMenu.getProcessType()) && !workActivityMenu.getProcessType().equals("reimbursementThree")) {
+            key = 1;
+            for (int i = 0; i < workActivityProcesses.size(); i++) {
+                WorkActivityProcess activityProcess = workActivityProcesses.get(i);
+                if (taskDefKey.equals(activityProcess.getActivityTask()) && !taskDefKey.equals("modifyApply")) {
+                    taskCount = activityProcess.getCount()+"";
+                    workActivityProcess = activityProcess;
+                    if (!workActivityProcess.getIsApproval().equals("0")) {
+                        workActivityProcess.setId("");
+                    }
+                    exp = "pass";
+                    if (!"yes".equals(workReimbursement.getAct().getFlag())) {
+                        workReimbursement.setStatus("4");
+                        workActivityProcess.setIsApproval("2");
+                        String returnBack = "-1";
+                        for (Activity activity : activities) {
+                            if (activity.getCount() == activityProcess.getCount()) {
+                                returnBack = activity.getReturnBack();
+                                notifyRole = activity.getName();
+                                break;
+                            }
+                        }
+                        if (returnBack.equals("0")) {
+                            workActivityProcess.setId("");
+                        }
+
+                    } else {
+                        workActivityProcess.setIsApproval("1");
+                    }
+                }else if(taskDefKey.equals("modifyApply")){
+                    notifyRole = "调整报销";
+                    taskCount = "0";
+                    exp = "pass";
+                    workActivityProcess.setId("");
+                    workActivityProcess.setCount(0);
+                    if (!"yes".equals(workReimbursement.getAct().getFlag())) {
+                        workReimbursement.setStatus("3");
+                        workActivityProcess.setIsApproval("2");
+                    } else {
+                        workActivityProcess.setIsApproval("1");
+                    }
+                    break;
+                }
+            }
+        } else {
+            workActivityMenu.setProcessType("reimbursementThree");
+            for (int i = 0; i < workActivityProcesses.size(); i++) {
+                WorkActivityProcess activityProcess = workActivityProcesses.get(i);
+                String count = activityProcess.getCount() + "";
+                workActivityProcess = activityProcess;
+                if (!workActivityProcess.getIsApproval().equals("0")) {
+                    workActivityProcess.setId("");
+                }
+                // 审核环节
+                if ("cw".equals(taskDefKey) && count.contains("1")) {
+                    taskCount = "1";
+                    exp = "pass";
+                    if ("yes".equals(workReimbursement.getAct().getFlag())) {
+                        workActivityProcessService.insertAuditsByType(auditUsers,workReimbursement.getProcessInstanceId(),2,1);
+                        notifyRole = "部门主任审核";
+                        workActivityProcess.setIsApproval("1");
+                        enname = "bmzr";
+                        vars.put("bmzrList", auditUsers);
+                        vars.put("bmzrcount",auditUsers.size());
+
+                    } else {
+                        notifyRole = "调整报销";
+                        workActivityProcess.setIsApproval("2");
+                    }
+                    break;
+                } else if ("bmzr".equals(taskDefKey) && count.contains("2")) {
+                    taskCount = "2";
+                    exp = "pass";
+                    if ("yes".equals(workReimbursement.getAct().getFlag())) {
+                        workActivityProcessService.insertAuditsByType(auditUsers,workReimbursement.getProcessInstanceId(),2,1);
+                        notifyRole = "财务审核";
+                        workActivityProcess.setIsApproval("1");
+                        enname = "fpglys";
+                        vars.put("fpglysList", auditUsers);
+                        vars.put("fpglyscount",auditUsers.size());
+                    } else {
+                        notifyRole = "调整报销";
+                        workActivityProcess.setIsApproval("2");
+                    }
+                    break;
+                } else if (("fpglys".equals(taskDefKey) || "dzfpbxshybxsd".equals(taskDefKey)) && count.contains("3")) {
+                    taskCount = "3";
+                    exp = "pass";
+                    if ("yes".equals(workReimbursement.getAct().getFlag())) {
+                        workActivityProcessService.insertAuditsByType(auditUsers,workReimbursement.getProcessInstanceId(),3,1);
+                        notifyRole = "总经办负责人审核";
+                        workActivityProcess.setIsApproval("1");
+                        enname = "gsld";
+                        vars.put("gsldList", auditUsers);
+                        vars.put("gsldcount",auditUsers.size());
+                        //如果是财务审核,则默认审核通过时即付款
+                        if("fpglys".equals(taskDefKey)) {
+                            workReimbursement.setPaymentStatus("1");
+                            workReimbursementDao.paymentSave(workReimbursement);
+                        }
+                    } else {
+                        notifyRole = "调整报销";
+                        workActivityProcess.setIsApproval("2");
+                    }
+                    break;
+                } else if ("gsld".equals(taskDefKey) && count.contains("4")) {
+                    taskCount = "4";
+                    exp = "pass";
+                    if ("yes".equals(workReimbursement.getAct().getFlag())) {
+                        notifyRole = "审批通过";
+                        workActivityProcess.setIsApproval("1");
+                    } else {
+                        notifyRole = "调整报销";
+                        workActivityProcess.setIsApproval("2");
+                    }
+                    break;
+                } else if ("modifyApply".equals(taskDefKey)&& count.contains("0")) {
+                    taskCount = "0";
+                    notifyRole = "部门负责人审批";
+                    exp = "pass";
+                    workActivityProcess.setCount(0);
+                    enname = "bmzr";
+                    if (!"yes".equals(workReimbursement.getAct().getFlag())) {
+                        workReimbursement.setStatus("3");
+                    }
+                    break;
+                } else if ("apply_end".equals(taskDefKey)) {
+                }
+
+            }
+        }
+        // 设置意见
+        workReimbursement.getAct().setComment(("yes".equals(workReimbursement.getAct().getFlag()) ? "[同意] " : "[驳回] ") + workReimbursement.getAct().getComment());
+        workReimbursement.preUpdate();
+        // 提交流程任务
+        vars.put(exp, "yes".equals(workReimbursement.getAct().getFlag()) ? true : false);
+        vars.put("passs", true);
+        workActivityProcessService.updateProcess(workActivityProcess,workActivityMenu,key,taskCount,workReimbursement.getProcessInstanceId(),taskDefKey,"modifyApply",workReimbursement.getAct().getFlag(),comment, activities);
+        // 提交流程任务
+        actTaskService.complete(workReimbursement.getAct().getTaskId(), workReimbursement.getAct().getProcInsId(), workReimbursement.getAct().getComment(), vars);
+        workReimbursement.setLimitCond("1");
+        boolean state = actTaskService.isProcessEnd(workReimbursement.getAct().getProcInsId());
+        List<User> users = new ArrayList<>();
+        List<User> userList = new ArrayList<>();
+        if (!state) {
+            title =  "报销【" + workReimbursement.getNumber() + "】申请通过";
+            str = "报销【" + workReimbursement.getNumber() + "】申请通过,经办人:" + userName+",总金额:"+workReimbursement.getMoney();
+            users.add(workReimbursement.getCreateBy());
+            if ("yes".equals(workReimbursement.getAct().getFlag())) {
+
+                Set<String> set = new HashSet();
+                //添加经办人人员id
+                set.add(workReimbursement.getCreateBy().getId());
+                //判断是否含有有效的报销信息
+                if(null != workReimbursement.getWorkAccountList()) {
+                    //添加报销人人员id
+                    for (WorkAccount account : workReimbursement.getWorkAccountList()) {
+                        set.add(account.getReimbursementUserId());
+                    }
+                }
+                //获取通知需要的经办人和报销人人员信息
+                List<User> informUser = Lists.newArrayList();
+                for (String userId: set) {
+                    informUser.add(UserUtils.get(userId));
+                }
+
+                workReimbursement.setStatus("5");
+                WorkProjectNotify notify = new WorkProjectNotify();
+                notify.setNotifyId(workReimbursement.getId());
+                userList = workProjectNotifyService.readByNotifyId(notify);
+                //遍历需要通知的人员信息 进行通知(经办人和报销人员)
+                for (User user: informUser) {
+                    workProjectNotifyService
+                            .save(UtilNotify
+                                    .saveNotify(workReimbursement.getId(),
+                                            user,
+                                            workReimbursement.getCompanyId(),
+                                            title,
+                                            str,
+                                            "112",
+                                            "0",
+                                            "待通知",
+                                            notifyRole));
+                }
+
+                //修改还款
+                if(workReimbursement.getReimbursementBackList()!=null&&workReimbursement.getReimbursementBackList().size()>0){
+                    for(WorkReimbursementBack workReimbursementBack:workReimbursement.getReimbursementBackList()){
+                        if(StringUtils.isNotBlank(workReimbursementBack.getMoney())||!"0".equals(workReimbursementBack.getMoney())){
+                            WorkLoan loan=new WorkLoan();
+                            double backMoney=Double.parseDouble(workReimbursementBack.getMoney());//本次还款
+                            WorkLoan workLoan =workLoanDao.get(workReimbursementBack.getWorkLoan().getId());
+                            loan.setId(workLoan.getId());
+                            loan.setUpdateBy(UserUtils.getUser());
+                            loan.setUpdateDate(new Date());
+                            if(workLoan.getRepay()==null){
+                                workLoan.setRepay("0");
+                            }
+                            double repay=Double.parseDouble(workLoan.getRepay());//还款金额
+                            double money=Double.parseDouble(workLoan.getMoney());//借款金额
+                            if(!"1".equals(workLoan.getRepayState())){//未还款
+                                if((backMoney+repay)>=money){
+                                    loan.setRepay(String.valueOf(money));
+                                    loan.setRepayState("1");
+
+                                }else{
+                                    loan.setRepay(String.valueOf(repay+backMoney));
+                                    loan.setRepayState("2");
+
+                                }
+                                workLoanDao.updateReay(loan);
+                                workRepayDao.updateReay(workReimbursementBack.getWorkLoan().getId(),workReimbursement.getId());
+                            }
+                        }
+                    }
+                }
+
+            } else {
+                WorkProjectNotify notify = new WorkProjectNotify();
+                notify.setNotifyId(workReimbursement.getId());
+                userList = workProjectNotifyService.readByNotifyId(notify);
+                if (StringUtils.isNotBlank(workReimbursement.getStatus()) && !workReimbursement.getStatus().equals("3")){
+                    workReimbursement.setStatus("4");
+                    workProjectNotifyService
+                            .save(UtilNotify
+                                    .saveNotify(workReimbursement.getId(),
+                                            workReimbursement.getCreateBy(),
+                                            workReimbursement.getCompanyId(),
+                                            title,
+                                            str,
+                                            "112",
+                                            "0",
+                                            "待通知",
+                                            notifyRole));
+                }
+            }
+            workActivityProcessService.deleteProcessIdAuditUsers(workReimbursement.getProcessInstanceId());
+        } else {
+            if (StringUtils.isNotBlank(workActivityMenu.getProcessType()) && !workActivityMenu.getProcessType().equals("reimbursementThree")) {
+                WorkProjectNotify notify = new WorkProjectNotify();
+                notify.setNotifyId(workReimbursement.getId());
+                userList = workProjectNotifyService.readByNotifyId(notify);
+                //users.addAll(userList);
+                WorkProjectNotify workProjectNotify = UtilNotify
+                        .saveNotify(workReimbursement.getId(),
+                                new User(),
+                                workReimbursement.getCompanyId(),
+                                title,
+                                str,
+                                "112",
+                                "0",
+                                "待审批",
+                                notifyRole);
+                List<WorkProjectNotify> workProjectNotifys = activityService.getByFlagAndTaskDefKeyList(
+                        activities,
+                        workProjectNotify,
+                        taskDefKey,
+                        workReimbursement.getAct().getFlag(),
+                        taskCount,
+                        workReimbursement.getCreateBy(),
+                        workReimbursement.getOfficeId(),
+                        "8");
+                for (WorkProjectNotify workProjectNotify1:workProjectNotifys){
+                    users.add(workProjectNotify1.getUser());
+                    workProjectNotify1.setId("");
+                    workProjectNotify1.setIsNewRecord(false);
+                    workProjectNotifyService
+                            .save(workProjectNotify1);
+                    if (!"modifyApply".equals(taskDefKey)){
+                        Map<String,Object> extras = new HashMap<>();
+                        if ("bmzr".equals(taskDefKey) || "cn".equals(taskDefKey) ){
+                            extras.put("type","7001");
+                        }else {
+                            extras.put("type","7002");
+                        }
+                        extras.put("id",workProjectNotify.getId());
+                        extras.put("procDefKey","112");
+                        UserUtils.pushInfoToApp(title,str,extras,workProjectNotify1.getUser().getId());
+
+                    }
+                }
+
+            } else {
+                if (!"yes".equals(workReimbursement.getAct().getFlag())) {//驳回待办
+                    title =  "报销【" + workReimbursement.getNumber() + "】申请被驳回";
+                    str = "报销【" + workReimbursement.getNumber() + "】申请被驳回,请选择重新申请或作废";
+                    WorkProjectNotify notify = new WorkProjectNotify();
+                    notify.setNotifyId(workReimbursement.getId());
+                    userList = workProjectNotifyService.readByNotifyId(notify);
+                    //users.addAll(userList);
+                    workProjectNotifyService
+                            .save(UtilNotify
+                                    .saveNotify(workReimbursement.getId(),
+                                            workReimbursement.getCreateBy(),
+                                            workReimbursement.getCompanyId(),
+                                            title,
+                                            str,
+                                            "112",
+                                            "0",
+                                            "重新申请",
+                                            notifyRole));
+                    users.add( workReimbursement.getCreateBy());
+                } else {
+                    if (StringUtils.isNotBlank(enname)) {//驳回重新申请待办
+                        title =  "报销【" + workReimbursement.getNumber() + "】申请待审批";
+                        str = "报销【" + workReimbursement.getNumber() + "】申请待审批,经办人:" + userName+",总金额:"+workReimbursement.getMoney();
+                        WorkProjectNotify notify = new WorkProjectNotify();
+                        notify.setNotifyId(workReimbursement.getId());
+                        userList = workProjectNotifyService.readByNotifyId(notify);
+                        //users.addAll(userList1);
+                        WorkProjectNotify workProjectNotify = UtilNotify
+                                .saveNotify(workReimbursement.getId(),
+                                        new User(),
+                                        workReimbursement.getCompanyId(),
+                                        title,
+                                        str,
+                                        "112",
+                                        "0",
+                                        "待审批",
+                                        notifyRole);
+                        users.addAll(auditUsers);
+                        for (User user1:auditUsers){
+                            workProjectNotify.setId("");
+                            workProjectNotify.setUser(user1);
+                            workProjectNotify.setIsNewRecord(false);
+                            workProjectNotifyService
+                                    .save(workProjectNotify);
+                            if (!"modifyApply".equals(taskDefKey)){
+                                Map<String,Object> extras = new HashMap<>();
+                                if ("bmzr".equals(taskDefKey) || "cn".equals(taskDefKey) ){
+                                    extras.put("type","7001");
+                                }else {
+                                    extras.put("type","7002");
+                                }
+                                extras.put("id",workProjectNotify.getId());
+                                extras.put("procDefKey","112");
+                                UserUtils.pushInfoToApp(title,str,extras,user1.getId());
+
+                            }
+                        }
+
+
+                    }else {
+                        WorkProjectNotify notify = new WorkProjectNotify();
+                        notify.setNotifyId(workReimbursement.getId());
+                        userList = workProjectNotifyService.readByNotifyId(notify);
+                        users.addAll(userList);
+                        users.add(workReimbursement.getCreateBy());
+                        workProjectNotifyService
+                                .save(UtilNotify
+                                        .saveNotify(workReimbursement.getId(),
+                                                workReimbursement.getCreateBy(),
+                                                workReimbursement.getCompanyId(),
+                                                title,
+                                                str,
+                                                "112",
+                                                "0",
+                                                "重新申请",
+                                                notifyRole));
+                    }
+                }
+            }
+        }
+        if (users!=null && users.size()!=0) {
+            for (User u : users) {
+                UserUtils.pushIm(u.getId(),str);
+            }
+        }
+        if (userList!=null && userList.size()!=0) {
+            for (User u : userList) {
+                UserUtils.pushMeIm(u.getId());
+            }
+        }
+
+        workReimbursementDao.update(workReimbursement);
+        return "保存审核意见成功!";
+    }
 
     /**
      * 审核流程(电子发票报销)

+ 25 - 4
src/main/java/com/jeeplus/modules/workreimbursement/web/WorkReimbursementAllController.java

@@ -175,6 +175,7 @@ public class WorkReimbursementAllController extends BaseController {
 		typeList.add("107");
 		typeList.add("108");
 		typeList.add("109");
+		typeList.add("112");
 		String types = org.apache.commons.lang3.StringUtils.join(typeList,',');
 		workProjectNotify.setTypes(types);
 		//添加发票对应编号
@@ -254,6 +255,17 @@ public class WorkReimbursementAllController extends BaseController {
 					}
 					break;
 				}
+				//报告归档资料缺失说明修改权限处理
+				if(notify.getNotifyId().equals(info.getId()) && "112".equals(notify.getType())){
+					info.setNotifyId(notify.getId());
+					if("重新申请".equals(notify.getRemarks()) && !"1".equals(notify.getStatus())){
+						info.setNotifyFlag(4);
+					}
+					if("待审批".equals(notify.getRemarks()) && !"1".equals(notify.getStatus())){
+						info.setNotifyFlag(3);
+					}
+					break;
+				}
 			}
 		}
 		model.addAttribute("page", page);
@@ -460,14 +472,21 @@ public class WorkReimbursementAllController extends BaseController {
 				Date auditDate = Date.from(localDate.atStartOfDay().atZone(ZoneId.systemDefault()).toInstant());
 				// 调用compareTo()方法进行比较
 				int result = nowDate.compareTo(auditDate);
+
+
+				LocalDate reimbursementThreeLocalDate = LocalDate.of(2025, 5, 17);
+
+				Date reimbursementThreeAuditDate = Date.from(reimbursementThreeLocalDate.atStartOfDay().atZone(ZoneId.systemDefault()).toInstant());
+
+				// 调用compareTo()方法进行比较
+				int reimbursementThreeResult = nowDate.compareTo(reimbursementThreeAuditDate);
+
 				//判定当前数据已经在数据库存在并且发起时间是在特定日期之后,并且部门是工程四部
 				//如果当前登录人为工程四部,且当前时间在2024-01-20之前
-				if(StringUtils.isNotBlank(workReimbursement.getId()) && result > 0 && null != loginUser.getOffice() && "10de4a17d3484ba58135364bd53b88de".equals(loginUser.getOffice().getId())){
+				if("10de4a17d3484ba58135364bd53b88de".equals(loginUser.getOffice().getId())){
 					str = workReimbursementNewService.specificInvoiceReimbursementSave(workReimbursement, variables,processInstanceId);
 				}else{
-					if(result > 0 && null != loginUser.getOffice() && "10de4a17d3484ba58135364bd53b88de".equals(loginUser.getOffice().getId())){
-						str = workReimbursementNewService.specificInvoiceReimbursementSave(workReimbursement, variables,processInstanceId);
-					} else {
+					if(StringUtils.isNotBlank(workReimbursement.getId()) && reimbursementThreeResult <= 0 ){
 						if("0".equals(workReimbursement.getReimbursementType())){
 							if(reimburseResult>0){
 								str = workReimbursementNewService.saveReimburseThree(workReimbursement, variables,processInstanceId);
@@ -481,6 +500,8 @@ public class WorkReimbursementAllController extends BaseController {
 								str = workReimbursementNewService.electronicInvoiceReimbursementSave(workReimbursement, variables,processInstanceId);
 							}
 						}
+					}else{
+						str = workReimbursementNewService.saveReimbursementThree(workReimbursement, variables,processInstanceId);
 					}
 				}
 				if (StringUtils.isNotBlank(str)){

+ 101 - 40
src/main/java/com/jeeplus/modules/workreimbursement/web/WorkReimbursementNewController.java

@@ -234,14 +234,21 @@ public class WorkReimbursementNewController extends BaseController {
 				Date auditDate = Date.from(localDate.atStartOfDay().atZone(ZoneId.systemDefault()).toInstant());
 				// 调用compareTo()方法进行比较
 				int result = nowDate.compareTo(auditDate);
+
+
+				LocalDate reimbursementThreeLocalDate = LocalDate.of(2025, 5, 17);
+
+				Date reimbursementThreeAuditDate = Date.from(reimbursementThreeLocalDate.atStartOfDay().atZone(ZoneId.systemDefault()).toInstant());
+
+				// 调用compareTo()方法进行比较
+				int reimbursementThreeResult = nowDate.compareTo(reimbursementThreeAuditDate);
+
 				//判定当前数据已经在数据库存在并且发起时间是在特定日期之后,并且部门是工程四部
 				//如果当前登录人为工程四部,且当前时间在2024-01-20之前
-				if(StringUtils.isNotBlank(workReimbursement.getId()) && result > 0 && null != loginUser.getOffice() && "10de4a17d3484ba58135364bd53b88de".equals(loginUser.getOffice().getId())){
+				if("10de4a17d3484ba58135364bd53b88de".equals(loginUser.getOffice().getId())){
 					str = workReimbursementNewService.specificInvoiceReimbursementSave(workReimbursement, variables,processInstanceId);
 				}else{
-					if(result > 0 && null != loginUser.getOffice() && "10de4a17d3484ba58135364bd53b88de".equals(loginUser.getOffice().getId())){
-						str = workReimbursementNewService.specificInvoiceReimbursementSave(workReimbursement, variables,processInstanceId);
-					} else {
+					if(StringUtils.isNotBlank(workReimbursement.getId()) && reimbursementThreeResult <= 0 ){
 						if("0".equals(workReimbursement.getReimbursementType())){
 							if(reimburseResult>0){
 								str = workReimbursementNewService.saveReimburseThree(workReimbursement, variables,processInstanceId);
@@ -255,8 +262,11 @@ public class WorkReimbursementNewController extends BaseController {
 								str = workReimbursementNewService.electronicInvoiceReimbursementSave(workReimbursement, variables,processInstanceId);
 							}
 						}
+					}else{
+						str = workReimbursementNewService.saveReimbursementThree(workReimbursement, variables,processInstanceId);
 					}
 				}
+
 				if (StringUtils.isNotBlank(str)){
 					addMessage(redirectAttributes, "报销申请提交失败:"+str);
 				}else {
@@ -296,50 +306,98 @@ public class WorkReimbursementNewController extends BaseController {
 
 			Date auditDate = Date.from(localDate.atStartOfDay().atZone(ZoneId.systemDefault()).toInstant());
 
+
 			Date nowDate = new Date();
 			// 调用compareTo()方法进行比较
 			int result = nowDate.compareTo(auditDate);
 			//判定当前数据已经在数据库存在并且发起时间是在特定日期之后,并且部门是工程四部
 			//如果当前登录人为工程四部,且当前时间在2024-01-20之前
 
-			if ("bmzr".equals(taskDefKey)){
-				users = UserUtils.getByProssType(workReimbursement.getProcessInstanceId(),2);
-				if (users==null )
-					//users = UserUtils.getByRoleActivityEnname("fgld",2,workReimbursement.getOfficeId(),"8",workReimbursement.getCreateBy());
-					users = UserUtils.getByRoleActivityEnname("cwzg", 3, workReimbursement.getOfficeId(), "8", workReimbursement.getCreateBy());
 
 
-				if(StringUtils.isNotBlank(workReimbursement.getId()) && result > 0 && "10de4a17d3484ba58135364bd53b88de".equals(workReimbursement.getOfficeId())){
-					users = UserUtils.getByRoleActivityEnname("dzfpbxshybxsd",3,workReimbursement.getOfficeId(),"8",workReimbursement.getCreateBy());
+			LocalDate reimbursementThreeLocalDate = LocalDate.of(2025, 5, 17);
 
-				}
-			}else  if ("cw".equals(taskDefKey)){
-				users = UserUtils.getByProssType(workReimbursement.getProcessInstanceId(),3);
-				if (users==null )
-					users = UserUtils.getByProssType(workReimbursement.getProcessInstanceId(),1);
-				if("0".equals(workReimbursement.getReimbursementType())){
-					if(reimburseResult>0){
+			Date reimbursementThreeAuditDate = Date.from(reimbursementThreeLocalDate.atStartOfDay().atZone(ZoneId.systemDefault()).toInstant());
+
+			// 调用compareTo()方法进行比较
+			int reimbursementThreeResult = nowDate.compareTo(reimbursementThreeAuditDate);
+
+
+			if(reimbursementThreeResult > 0 && workReimbursement.getOldDataType() > 0 && !"10de4a17d3484ba58135364bd53b88de".equals(workReimbursement.getOfficeId())){
+				if ("bmzr".equals(taskDefKey)){
+					users = UserUtils.getByProssType(workReimbursement.getProcessInstanceId(),3);
+					if (users==null )
+						users = UserUtils.getByProssType(workReimbursement.getProcessInstanceId(),1);
+					if("0".equals(workReimbursement.getReimbursementType())){
+						if(reimburseResult>0){
+							users = UserUtils.getByRoleActivityEnname("dzfpbxshybxsd",3,workReimbursement.getOfficeId(),"8",workReimbursement.getCreateBy());
+						}else{
+							users = UserUtils.getByRoleActivityEnname("zjbfzribvf",3,workReimbursement.getOfficeId(),"8",workReimbursement.getCreateBy());
+						}
+					}else if ("1".equals(workReimbursement.getReimbursementType())){
 						users = UserUtils.getByRoleActivityEnname("dzfpbxshybxsd",3,workReimbursement.getOfficeId(),"8",workReimbursement.getCreateBy());
-					}else{
+					}
+				}else  if ("cw".equals(taskDefKey)){
+					users = UserUtils.getByProssType(workReimbursement.getProcessInstanceId(),2);
+					if (users==null )
+						//users = UserUtils.getByRoleActivityEnname("fgld",2,workReimbursement.getOfficeId(),"8",workReimbursement.getCreateBy());
+						users = UserUtils.getByRoleActivityEnname("bmzr", 2, workReimbursement.getOfficeId(), "8", workReimbursement.getCreateBy());
+
+				}else  if ("gsld".equals(taskDefKey)){
+					users = UserUtils.getByProssType(workReimbursement.getProcessInstanceId(),3);
+					if (users==null )
+						users = UserUtils.getByProssType(workReimbursement.getProcessInstanceId(),1);
+					//users = UserUtils.getByRoleActivityEnname("zjl",3,workReimbursement.getOfficeId(),"8",workReimbursement.getCreateBy());
+				}else  if ("fpglys".equals(taskDefKey) || "dzfpbxshybxsd".equals(taskDefKey)){
+					users = UserUtils.getByProssType(workReimbursement.getProcessInstanceId(),3);
+					if(reimburseResult>0){
 						users = UserUtils.getByRoleActivityEnname("zjbfzribvf",3,workReimbursement.getOfficeId(),"8",workReimbursement.getCreateBy());
 					}
-				}else if ("1".equals(workReimbursement.getReimbursementType())){
-					users = UserUtils.getByRoleActivityEnname("dzfpbxshybxsd",3,workReimbursement.getOfficeId(),"8",workReimbursement.getCreateBy());
-				}
-			}else  if ("gsld".equals(taskDefKey)){
-				users = UserUtils.getByProssType(workReimbursement.getProcessInstanceId(),3);
-				if (users==null )
+					if (users==null )
+						users = UserUtils.getByProssType(workReimbursement.getProcessInstanceId(),1);
+				}else if ("modifyApply".equals(taskDefKey)){
 					users = UserUtils.getByProssType(workReimbursement.getProcessInstanceId(),1);
-				//users = UserUtils.getByRoleActivityEnname("zjl",3,workReimbursement.getOfficeId(),"8",workReimbursement.getCreateBy());
-			}else  if ("fpglys".equals(taskDefKey) || "dzfpbxshybxsd".equals(taskDefKey)){
-				users = UserUtils.getByProssType(workReimbursement.getProcessInstanceId(),3);
-				if(reimburseResult>0){
-					users = UserUtils.getByRoleActivityEnname("zjbfzribvf",3,workReimbursement.getOfficeId(),"8",workReimbursement.getCreateBy());
 				}
-				if (users==null )
-					users = UserUtils.getByProssType(workReimbursement.getProcessInstanceId(),1);
-			}/*else  if ("zjl".equals(taskDefKey)){
-				*//*users = UserUtils.getByProssType(workReimbursement.getProcessInstanceId(),5);
+
+			}else{
+				if ("bmzr".equals(taskDefKey)){
+					users = UserUtils.getByProssType(workReimbursement.getProcessInstanceId(),2);
+					if (users==null )
+						//users = UserUtils.getByRoleActivityEnname("fgld",2,workReimbursement.getOfficeId(),"8",workReimbursement.getCreateBy());
+						users = UserUtils.getByRoleActivityEnname("cwzg", 3, workReimbursement.getOfficeId(), "8", workReimbursement.getCreateBy());
+
+
+					if(StringUtils.isNotBlank(workReimbursement.getId()) && result > 0 && "10de4a17d3484ba58135364bd53b88de".equals(workReimbursement.getOfficeId())){
+						users = UserUtils.getByRoleActivityEnname("dzfpbxshybxsd",3,workReimbursement.getOfficeId(),"8",workReimbursement.getCreateBy());
+
+					}
+				}else  if ("cw".equals(taskDefKey)){
+					users = UserUtils.getByProssType(workReimbursement.getProcessInstanceId(),3);
+					if (users==null )
+						users = UserUtils.getByProssType(workReimbursement.getProcessInstanceId(),1);
+					if("0".equals(workReimbursement.getReimbursementType())){
+						if(reimburseResult>0){
+							users = UserUtils.getByRoleActivityEnname("dzfpbxshybxsd",3,workReimbursement.getOfficeId(),"8",workReimbursement.getCreateBy());
+						}else{
+							users = UserUtils.getByRoleActivityEnname("zjbfzribvf",3,workReimbursement.getOfficeId(),"8",workReimbursement.getCreateBy());
+						}
+					}else if ("1".equals(workReimbursement.getReimbursementType())){
+						users = UserUtils.getByRoleActivityEnname("dzfpbxshybxsd",3,workReimbursement.getOfficeId(),"8",workReimbursement.getCreateBy());
+					}
+				}else  if ("gsld".equals(taskDefKey)){
+					users = UserUtils.getByProssType(workReimbursement.getProcessInstanceId(),3);
+					if (users==null )
+						users = UserUtils.getByProssType(workReimbursement.getProcessInstanceId(),1);
+					//users = UserUtils.getByRoleActivityEnname("zjl",3,workReimbursement.getOfficeId(),"8",workReimbursement.getCreateBy());
+				}else  if ("fpglys".equals(taskDefKey) || "dzfpbxshybxsd".equals(taskDefKey)){
+					users = UserUtils.getByProssType(workReimbursement.getProcessInstanceId(),3);
+					if(reimburseResult>0){
+						users = UserUtils.getByRoleActivityEnname("zjbfzribvf",3,workReimbursement.getOfficeId(),"8",workReimbursement.getCreateBy());
+					}
+					if (users==null )
+						users = UserUtils.getByProssType(workReimbursement.getProcessInstanceId(),1);
+				}/*else  if ("zjl".equals(taskDefKey)){
+				 *//*users = UserUtils.getByProssType(workReimbursement.getProcessInstanceId(),5);
 				if (users==null )
 					users = UserUtils.getByRoleActivityEnname("cwfgld",3,workReimbursement.getOfficeId(),"8",workReimbursement.getCreateBy());*//*
 				users = UserUtils.getByProssType(workReimbursement.getProcessInstanceId(),1);
@@ -350,21 +408,23 @@ public class WorkReimbursementNewController extends BaseController {
 			}else if ("cn".equals(taskDefKey)){
 				users = UserUtils.getByProssType(workReimbursement.getProcessInstanceId(),1);
 			}*/else if ("modifyApply".equals(taskDefKey)){
-				users = UserUtils.getByProssType(workReimbursement.getProcessInstanceId(),1);
+					users = UserUtils.getByProssType(workReimbursement.getProcessInstanceId(),1);
+				}
 			}
+
+
             String flag = workReimbursement.getAct().getFlag();
             if ("yes".equals(flag) &&(users==null || users.size()==0)){
 				addMessage(redirectAttributes, "审批失败,审批人为空,请联系管理员!");
 			}else {
 				String str = "";
 
-
-				if(StringUtils.isNotBlank(workReimbursement.getId()) && result > 0 && "10de4a17d3484ba58135364bd53b88de".equals(workReimbursement.getOfficeId())){
+				if("10de4a17d3484ba58135364bd53b88de".equals(workReimbursement.getOfficeId())){
 					str = workReimbursementNewService.auditSpecificSave(workReimbursement,users);
 				}else{
-					if(result > 0 && "10de4a17d3484ba58135364bd53b88de".equals(workReimbursement.getOfficeId())){
-						str = workReimbursementNewService.auditSpecificSave(workReimbursement,users);
-					} else {
+					if(reimbursementThreeResult > 0 && workReimbursement.getOldDataType() > 0){
+						str = workReimbursementNewService.auditSaveReimbursementThree(workReimbursement,users);
+					}else{
 						if("0".equals(workReimbursement.getReimbursementType())){
 							if(reimburseResult>0){
 								str = workReimbursementNewService.auditSaveThree(workReimbursement,users);
@@ -382,6 +442,7 @@ public class WorkReimbursementNewController extends BaseController {
 				}
 
 
+
 				addMessage(redirectAttributes, str);
 			}
 		}catch (Exception e){

+ 4 - 2
src/main/resources/mappings/modules/statement/StatementCompanyComprehensiveDao.xml

@@ -233,7 +233,9 @@
 	<select id="getAllOfficeListInfo" resultType="Office">
 		select a.id,a.name from sys_office a
 		<where>
-			a.parent_ids like concat ('%','ffe5af5b557e46f28b000c94716e228a','%') and a.id not in ('ee4e055e2f074aef934d283880983a38','5c38f1ce85224d74bd9d110ea6fab976','eb6879557ca8497fb18864eb7ac13809')
+			a.parent_ids like concat ('%','ffe5af5b557e46f28b000c94716e228a','%')
+			and a.id not in ('ee4e055e2f074aef934d283880983a38','5c38f1ce85224d74bd9d110ea6fab976','eb6879557ca8497fb18864eb7ac13809','897d1bf0975a4598b3bb248049e2d1cf','876aaf31050d4829a8c916aaf2184487')
+			and a.parent_id  not in ('897d1bf0975a4598b3bb248049e2d1cf')
 			and a.del_flag = 0
 		</where>
 		ORDER BY a.code
@@ -2671,7 +2673,7 @@
 	</select>
 
 	<select id="getAllWBChildrenOfficeListInfo" resultType="Office">
-		select * from sys_office where parent_id = (select id from sys_office where name = #{officeName})
+		select * from sys_office where parent_id = (select id from sys_office where name = #{officeName} and del_flag = 0)
 	</select>
 
 

+ 9 - 3
src/main/resources/mappings/modules/workreimbursement/WorkReimbursementDao.xml

@@ -36,7 +36,8 @@
 		a.type as "type",
 		a.reimbursement_type as "reimbursementType",
 		a.payment_status as "paymentStatus",
-		a.payment_date as "paymentDate"
+		a.payment_date as "paymentDate",
+		a.old_data_type as "oldDataType"
 	</sql>
 
 	<sql id="workReimbursementJoins">
@@ -336,7 +337,8 @@
 			checkMoneys,
             create_office,
             type,
-            reimbursement_type
+            reimbursement_type,
+			old_data_type
 		) VALUES (
 			#{id},
 			#{number},
@@ -369,7 +371,8 @@
 			#{checkMoneys},
 			#{createOffice},
 			#{type},
-			#{reimbursementType}
+			#{reimbursementType},
+			#{oldDataType}
 
 		)
 	</insert>
@@ -393,6 +396,9 @@
 			<if test="limitCond != 1">
 				submitter_date = #{submitterDate},
 			</if>
+			<if test="oldDataType != null">
+				old_data_type = #{oldDataType},
+			</if>
 			project_id = #{project.id},
 			money = #{money},
 			status = #{status},