yuansh 2 年之前
父节点
当前提交
18b4fbc6d6

+ 3 - 0
jeecg-boot/jeecg-boot-base-common/src/main/java/org/jeecg/common/util/DateUtils.java

@@ -647,4 +647,7 @@ public class DateUtils extends PropertyEditorSupport {
         return calendar.get(Calendar.YEAR);
     }
 
+    public static void main(String[] args) {
+        System.out.println(now());
+    }
 }

+ 26 - 21
jeecg-boot/jeecg-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/web/ActBusinessController.java

@@ -689,22 +689,22 @@ public class ActBusinessController {
         if(param.getTableName().equals("incident_ticket")){ //质量事故单
             map.put("userId",null);//当前登陆人
         }
-        if(param.getTableName().equals("employee_leave")){ //员工请假单
-            String userIds = sysBaseAPI.getUserByRoleCode("SY003",null);//办公室
-            if(StringUtils.isNotBlank(userIds)){
-                if(userIds.contains(loginUser.getUsername())){
-                    map.put("userId",null);//当前登陆人
-                }
-            }
-        }
-        if(param.getTableName().equals("personnel_out_registration")){ //人员外出登记单
-            String userIds = sysBaseAPI.getUserByRoleCode("SY003",null);//办公室
-            if(StringUtils.isNotBlank(userIds)){
-                if(userIds.contains(loginUser.getUsername())){
-                    map.put("userId",null);//当前登陆人
-                }
-            }
-        }
+//        if(param.getTableName().equals("employee_leave")){ //员工请假单
+//            String userIds = sysBaseAPI.getUserByRoleCode("SY003",null);//办公室
+//            if(StringUtils.isNotBlank(userIds)){
+//                if(userIds.contains(loginUser.getUsername())){
+//                    map.put("userId",null);//当前登陆人
+//                }
+//            }
+//        }
+//        if(param.getTableName().equals("personnel_out_registration")){ //人员外出登记单
+//            String userIds = sysBaseAPI.getUserByRoleCode("SY003",null);//办公室
+//            if(StringUtils.isNotBlank(userIds)){
+//                if(userIds.contains(loginUser.getUsername())){
+//                    map.put("userId",null);//当前登陆人
+//                }
+//            }
+//        }
         if(param.getTableName().equals("expense_account")){ //报销单
             String userIds = sysBaseAPI.getUserByRoleCode("SY013",null);//财务出纳
             if(StringUtils.isNotBlank(userIds)){
@@ -713,14 +713,19 @@ public class ActBusinessController {
                 }
             }
         }
+
+        String userIds = "";
         if(param.getTableName().equals("seal_apply")){ //用印申请
-            String userIds = sysBaseAPI.getUserByRoleCode("SY002",null);//财务经理
-            if(StringUtils.isNotBlank(userIds)){
-                if(userIds.contains(loginUser.getUsername())){
-                    map.put("userId",null);//当前登陆人
-                }
+            userIds = sysBaseAPI.getUserByRoleCode("SY002", null);//财务经理
+        }else{
+            userIds = sysBaseAPI.getUserByRoleCode("SY003", null);//办公室
+        }
+        if(StringUtils.isNotBlank(userIds)){
+            if(userIds.contains(loginUser.getUsername())){
+                map.put("userId",null);//当前登陆人
             }
         }
+
         map.put("pkOrg",loginUser.getOrgCode());//公司id
         map.put("tableName",param.getTableName());//业务表单
         map.put("ortherParam",getPar(param));//高级查询条件

+ 42 - 4
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/oa/controller/IncidentTicketController.java

@@ -247,7 +247,9 @@ public class IncidentTicketController {
 		this.incidentTicketService.delBatchMain(Arrays.asList(ids.split(",")));
 		return Result.ok("批量删除成功!");
 	}
-	
+
+
+
 	/**
 	 * 通过id查询
 	 *
@@ -471,8 +473,8 @@ public class IncidentTicketController {
 	 * @param headId
 	 * @return
 	 */
-	@AutoLog(value = "质量事故单-完结")
-	@ApiOperation(value="质量事故单-完结", notes="质量事故单-完结")
+	@AutoLog(value = "质量事故单-完结(提交)")
+	@ApiOperation(value="质量事故单-完结(提交)", notes="质量事故单-完结(提交)")
 	@GetMapping(value = "/endOrder")
 	public Result<?> endOrder(String headId) {
 
@@ -484,8 +486,44 @@ public class IncidentTicketController {
 			return Result.error("未找到对应数据");
 		}
 		//完结操作可跳过推送,直接完结
-		if(incidentTicket.getState().equals("3") || incidentTicket.getState().equals("4")){//1未处理 2已通知 3通知已反馈 4已推送 5已完结
+		if(incidentTicket.getState().equals("3") || incidentTicket.getState().equals("4")){//1未处理 2已通知 3通知已反馈 4已推送 5已完结(提交) 6已完结
 			incidentTicket.setState("5");
+			incidentTicket.setStateText("已提交");
+//			LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+//			incidentTicket.setUpdateBy(sysUser.getUsername());
+//			incidentTicket.setUpdateTime(new Date());
+//			incidentTicketService.save(incidentTicket);
+			incidentTicketService.updateById(incidentTicket);
+			return Result.ok("已提交");
+		}else{
+			return Result.error("此单据状态下无法提交");
+		}
+
+
+	}
+
+
+	/**
+	 * 完结
+	 *
+	 * @param headId
+	 * @return
+	 */
+	@AutoLog(value = "质量事故单-完结(完结)")
+	@ApiOperation(value="质量事故单-完结(完结)", notes="质量事故单-完结(完结)")
+	@GetMapping(value = "/endOrderReal")
+	public Result<?> endOrderReal(String headId) {
+
+		if(StringUtils.isBlank(headId)){
+			return Result.error("参数不完整");
+		}
+		IncidentTicket incidentTicket = incidentTicketService.getById(headId);
+		if(incidentTicket==null) {
+			return Result.error("未找到对应数据");
+		}
+		//完结操作可跳过推送,直接完结
+		if(incidentTicket.getState().equals("5")){//1未处理 2已通知 3通知已反馈 4已推送 5已完结(提交) 6已完结(完结)
+			incidentTicket.setState("6");
 			incidentTicket.setStateText("已完结");
 //			LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
 //			incidentTicket.setUpdateBy(sysUser.getUsername());

+ 18 - 0
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/oa/controller/SyCarryController.java

@@ -361,6 +361,24 @@ public class SyCarryController {
 	 }
 
 
+	 /**
+	  * 批量审批
+	  * @param ids
+	  * @return
+	  */
+	 @AutoLog(value = "搬运工对账单-批量审批")
+	 @GetMapping(value = "/commitBatchAuto")
+	 public Result<?> commitBatchAuto(@RequestParam(name="ids",required=true) String ids,@RequestParam(name="state",required=true) String state) {
+		 String res = this.syCarryService.commitBatch(Arrays.asList(ids.split(",")),state);
+		 if(res.endsWith("成功")){
+			 return Result.ok(res);
+		 }else{
+			 return Result.error(res);
+		 }
+
+	 }
+
+
 	 /**
 	  * 计划员签名
 	  *

+ 8 - 0
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/oa/entity/SyCarry.java

@@ -26,6 +26,14 @@ public class SyCarry implements Serializable {
 	private String id;
 	/**0草稿,1仓库已提交(计划签字),2人事行政,3财务经理 .4已完成*/
 	private String state;
+	/**状态文本(下一个要审批的角色编码)*/
+	private String roleCode;
+	/**状态文本(下一个要审批的角色名称)*/
+	private String roleText;
+	/**
+	 * 历史
+	 */
+	private String historyInfo;
 	/**创建人登录名称*/
 	private String createBy;
 	/**创建日期*/

+ 406 - 80
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/oa/service/impl/SyCarryServiceImpl.java

@@ -1,12 +1,14 @@
 package org.jeecg.modules.oa.service.impl;
 
 import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import org.apache.commons.lang.StringUtils;
 import org.apache.shiro.SecurityUtils;
 import org.jeecg.common.constant.CommonConstant;
 import org.jeecg.common.system.api.ISysBaseAPI;
 import org.jeecg.common.system.vo.LoginUser;
 import org.jeecg.common.util.DateUtils;
+import org.jeecg.modules.oa.entity.IncidentTicketMsg;
 import org.jeecg.modules.oa.entity.SyCarry;
 import org.jeecg.modules.oa.entity.SyCarryB;
 import org.jeecg.modules.oa.entity.SyCottonYarnB;
@@ -14,17 +16,16 @@ import org.jeecg.modules.oa.mapper.SyCarryBMapper;
 import org.jeecg.modules.oa.mapper.SyCarryMapper;
 import org.jeecg.modules.oa.service.ISyCarryBService;
 import org.jeecg.modules.oa.service.ISyCarryService;
+import org.jeecg.modules.system.entity.SysRole;
 import org.jeecg.modules.system.entity.SysUser;
+import org.jeecg.modules.system.service.ISysRoleService;
 import org.jeecg.modules.system.service.ISysUserService;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
 import java.io.Serializable;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Collection;
+import java.util.*;
 
 /**
  * @Description: 搬运装卸费用-搬运工对账单-主表
@@ -45,6 +46,8 @@ public class SyCarryServiceImpl extends ServiceImpl<SyCarryMapper, SyCarry> impl
 	private ISysUserService sysUserService;
 	@Autowired
 	private ISyCarryBService iSyCarryBService;
+	@Autowired
+	private ISysRoleService sysRoleService;
 
 	@Override
 	@Transactional
@@ -141,28 +144,40 @@ public class SyCarryServiceImpl extends ServiceImpl<SyCarryMapper, SyCarry> impl
 		}
 	}
 
-
 	/**
 	 *
 	 * @param idList
-	 * @param state state 1 计划员提交 2,人事行政审批 3.财务经理审批
+	 * @param state 1 计划员提交
+	 *      // 0   草稿
+	 * 		// 1   仓库已提交(计划签字)
+	 * 		// 10  SY_BY_001 办公室审批
+	 * 		// 20  SY_BY_002 财务经理审批
+	 * 		// 30  SY_BY_003 搬运装卸费用审批节点3
+	 * 		// 40  SY_BY_004 搬运装卸费用审批节点4
+	 * 		// 50  SY_BY_005 搬运装卸费用审批节点5
+	 * 		// 60  SY_BY_006 财务总监审批
+	 * 		// 70  SY_BY_006 已完成
 	 * @return
 	 */
 	@Override
 	@Transactional
 	public String commitBatch(Collection<? extends Serializable> idList,String state) {
+		if(state.equals("0")){
+			state = "1";
+		}
 		StringBuffer sb = new StringBuffer();
 		HashMap<String,Object> taskParam = new HashMap<>();
 		LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
 		for(Serializable id:idList) {
 			SyCarry syCarry = syCarryMapper.selectById(id);
 			String syState = syCarry.getState();//0草稿,1仓库已提交(计划签字),2人事行政,3财务经理 ,4已完成
+			String historyInfo = syCarry.getHistoryInfo();//
 
 			//计划员取消提交
 			if(state.equals("-1")){
 
-				if(!syState.equals("1") && !syState.equals("2")){
-					sb.append("单据"+syCarry.getName()+"已签字,无法取消提交");
+				if(StringUtils.isNotBlank(historyInfo) && historyInfo.length() > 50){
+					sb.append("单据"+syCarry.getName()+"已审批,无法取消提交"+historyInfo.length());
 					continue;
 				}
 
@@ -187,12 +202,15 @@ public class SyCarryServiceImpl extends ServiceImpl<SyCarryMapper, SyCarry> impl
 					o.setJhyTime(null);
 					syCarryBMapper.updateById(o);
 				}
+				syCarry.setHistoryInfo("空");
+				syCarry.setRoleCode("0");
+				syCarry.setRoleText("草稿");
 				syCarryMapper.updateById(syCarry);
 				sb.append("单据"+syCarry.getName()+"取消提交成功");
 				continue;
 			}
-
 			//计划员提交
+			else
 			if(state.equals("1")){
 				if(!syState.equals("0")){
 					sb.append("单据"+syCarry.getName()+"无法此操作,请查看");
@@ -202,10 +220,9 @@ public class SyCarryServiceImpl extends ServiceImpl<SyCarryMapper, SyCarry> impl
 				syCarry.setCkBy(loginUser.getUsername());//仓库提交人
 				syCarry.setCkName(loginUser.getRealname());//仓库提交人
 				syCarry.setCkTime(new Date());//仓库提交时间
-				boolean ifAll = true;
-
-
+				syCarry.setRoleText("计划员签字中");
 
+				boolean ifAll = true;
 
 				List<SyCarryB> syCarryB2 = syCarryBMapper.selectByMainId(syCarry.getId());
 				for(SyCarryB o:syCarryB2){
@@ -242,92 +259,306 @@ public class SyCarryServiceImpl extends ServiceImpl<SyCarryMapper, SyCarry> impl
 
 				}
 				if(ifAll){
-					syCarry.setState("2");//0草稿,1仓库已提交(计划签字),2人事行政,3财务经理
+
+					// 0   草稿
+					// 1   仓库已提交(计划签字)
+					// 10  SY_BY_001 办公室审批
+					// 20  SY_BY_002 财务经理审批
+					// 30  SY_BY_003 搬运装卸费用审批节点3
+					// 40  SY_BY_004 搬运装卸费用审批节点4
+					// 50  SY_BY_005 搬运装卸费用审批节点5
+					// 60  SY_BY_006 财务总监审批
+					List<SysUser> userIds = sysUserService.getUserByRoleCode("SY_BY_001",null);
+					String roleCode = "";
+					if(userIds.size() == 0){
+						userIds = sysUserService.getUserByRoleCode("SY_BY_002",null);
+					}else{
+						if(StringUtils.isBlank(roleCode)){
+							roleCode = "SY_BY_001";
+							syCarry.setState("10");
+						}
+					}
+					if(userIds.size() == 0){
+						userIds = sysUserService.getUserByRoleCode("SY_BY_003",null);
+					}else{
+						if(StringUtils.isBlank(roleCode)){
+							roleCode = "SY_BY_002";
+							syCarry.setState("20");
+						}
+					}
+					if(userIds.size() == 0){
+						userIds = sysUserService.getUserByRoleCode("SY_BY_004",null);
+					}else{
+						if(StringUtils.isBlank(roleCode)){
+							roleCode = "SY_BY_003";
+							syCarry.setState("30");
+						}
+					}
+					if(userIds.size() == 0){
+						userIds = sysUserService.getUserByRoleCode("SY_BY_005",null);
+					}else{
+						if(StringUtils.isBlank(roleCode)){
+							roleCode = "SY_BY_004";
+							syCarry.setState("40");
+						}
+					}
+					if(userIds.size() == 0){
+						userIds = sysUserService.getUserByRoleCode("SY_BY_006",null);
+					}else{
+						if(StringUtils.isBlank(roleCode)){
+							roleCode = "SY_BY_005";
+							syCarry.setState("50");
+						}
+					}
+					if(userIds.size() == 0){
+						return "审批人不存在,请联系系统管理员维护";
+					}else{
+						if(StringUtils.isBlank(roleCode)){
+							roleCode = "SY_BY_006";
+							syCarry.setState("60");
+						}
+					}
+
+					if(StringUtils.isBlank(roleCode)){
+						return "角色数据异常,请联系系统管理员维护";
+					}
+
+					SysRole sysRole = getUserByRole(roleCode).get(0);
+					syCarry.setRoleCode(sysRole.getRoleCode());
+					syCarry.setRoleText(sysRole.getRoleName());
+
+					for(SysUser o:userIds){
+						iSysBaseAPI.sendSysAnnouncement(loginUser,loginUser.getUsername(),o.getUsername(),"搬运工对账单","您有一个新的搬运工对账单需要审批,请查看: "+syCarry.getName(), CommonConstant.MSG_CATEGORY_2,taskParam);
+					}
+
 				}
 
 				syCarryMapper.updateById(syCarry);
 				sb.append("单据"+syCarry.getName()+"提交成功");
 				continue;
 			}
+			//计划员提交
+			else{
+
+				// 0   草稿
+				// 1   仓库已提交(计划签字)
+				// 10  SY_BY_001 办公室审批
+				// 20  SY_BY_002 财务经理审批
+				// 30  SY_BY_003 搬运装卸费用审批节点3
+				// 40  SY_BY_004 搬运装卸费用审批节点4
+				// 50  SY_BY_005 搬运装卸费用审批节点5
+				// 60  SY_BY_006 财务总监审批
+				if(!syCarry.getState().equals(state)){
+					sb.append("单据"+syCarry.getName()+"正在被操作,请刷新后重试");
+					continue;
+				}
 
-			List<String> listRole = iSysBaseAPI.getRolesByUsername(loginUser.getUsername());
-
-			//人事行政审批
-			if(state.equals("2")){
-
-				boolean type = false;
-
-				for(String o:listRole){
-					if(o.equals("SY003")){ //人事文员 角色
-						type = true;
+				String roleCode = "";
+				if(state.equals("10")){
+					String userId = iSysBaseAPI.getUserByRoleCode("SY_BY_001",null);
+					if(!userId.contains(loginUser.getUsername())){
+						sb.append("单据"+syCarry.getName()+"需要SY_BY_001角色进行操作");
+						continue;
+					}
+					String[] code = {"SY_BY_002","SY_BY_003","SY_BY_004","SY_BY_005","SY_BY_006"};
+					roleCode = getNextRole(code);
+					syCarry.setHistoryInfo(syCarry.getHistoryInfo()+"SY_BY_001:"+loginUser.getUsername()+"/"+DateUtils.now()+"; ");
+
+				}else if(state.equals("20")){
+					String userId = iSysBaseAPI.getUserByRoleCode("SY_BY_002",null);
+					if(!userId.contains(loginUser.getUsername())){
+						sb.append("单据"+syCarry.getName()+"需要SY_BY_002角色进行操作");
+						continue;
+					}
+					String[] code = {"SY_BY_003","SY_BY_004","SY_BY_005","SY_BY_006"};
+					roleCode = getNextRole(code);
+					syCarry.setHistoryInfo(syCarry.getHistoryInfo()+"SY_BY_002:"+loginUser.getUsername()+"/"+DateUtils.now()+"; ");
+
+				}else if(state.equals("30")){
+					String userId = iSysBaseAPI.getUserByRoleCode("SY_BY_003",null);
+					if(!userId.contains(loginUser.getUsername())){
+						sb.append("单据"+syCarry.getName()+"需要SY_BY_003角色进行操作");
+						continue;
+					}
+					String[] code = {"SY_BY_004","SY_BY_005","SY_BY_006"};
+					roleCode = getNextRole(code);
+					syCarry.setHistoryInfo(syCarry.getHistoryInfo()+"SY_BY_003:"+loginUser.getUsername()+"/"+DateUtils.now()+"; ");
+
+				}else if(state.equals("40")){
+					String userId = iSysBaseAPI.getUserByRoleCode("SY_BY_004",null);
+					if(!userId.contains(loginUser.getUsername())){
+						sb.append("单据"+syCarry.getName()+"需要SY_BY_004角色进行操作");
+						continue;
+					}
+					String[] code = {"SY_BY_005","SY_BY_006"};
+					roleCode = getNextRole(code);
+					syCarry.setHistoryInfo(syCarry.getHistoryInfo()+"SY_BY_004:"+loginUser.getUsername()+"/"+DateUtils.now()+"; ");
+
+				}else if(state.equals("50")){
+					String userId = iSysBaseAPI.getUserByRoleCode("SY_BY_005",null);
+					if(!userId.contains(loginUser.getUsername())){
+						sb.append("单据"+syCarry.getName()+"需要SY_BY_005角色进行操作");
+						continue;
 					}
+					String[] code = {"SY_BY_006"};
+					roleCode = getNextRole(code);
+					syCarry.setHistoryInfo(syCarry.getHistoryInfo()+"SY_BY_005:"+loginUser.getUsername()+"/"+DateUtils.now()+"; ");
+
+				}else if(state.equals("60")){
+					String userId = iSysBaseAPI.getUserByRoleCode("SY_BY_006",null);
+					if(!userId.contains(loginUser.getUsername())){
+						sb.append("单据"+syCarry.getName()+"需要SY_BY_006角色进行操作");
+						continue;
+					}
+					syCarry.setHistoryInfo(syCarry.getHistoryInfo()+"SY_BY_006:"+loginUser.getUsername()+"/"+DateUtils.now()+"; ");
+				}else{
+					sb.append("单据"+syCarry.getName()+"状态异常,请联系管理员");
+					continue;
 				}
 
-				if(!type){
-					sb.append("单据"+syCarry.getName()+"仅人事行政可进行操作");
+				if (StringUtils.isBlank(roleCode) && !state.equals("60")) {
+					sb.append("角色SY_BY_006没有绑定人员,请联系管理员维护数据");
 					continue;
 				}
-				//0草稿,1仓库已提交(计划签字),2人事行政,3财务经理 ,4已完成
-				if(!syState.equals("2")){
-					sb.append("单据"+syCarry.getName()+"无法此操作,请查看");
-					continue;
+				if(state.equals("60")){
+					syCarry.setState("70");
+					syCarry.setRoleCode("70");
+					syCarry.setRoleText("已完成");
+
+				}else{
+					SysRole sysRole = getUserByRole(roleCode).get(0);
+					syCarry.setState(changeCode(roleCode));
+					syCarry.setRoleCode(sysRole.getRoleCode());
+					syCarry.setRoleText(sysRole.getRoleName());
+					List<SysUser> userIds = sysUserService.getUserByRoleCode(roleCode,null);
+					for(SysUser o:userIds){
+						iSysBaseAPI.sendSysAnnouncement(loginUser,loginUser.getUsername(),o.getUsername(),"搬运工对账单","您有一个新的搬运工对账单需要审批,请查看: "+syCarry.getName(), CommonConstant.MSG_CATEGORY_2,taskParam);
+					}
 				}
-				syCarry.setState("3");//0草稿,1仓库已提交(计划签字),2人事行政,3财务经理 ,4已完成
-				syCarry.setRsxzBy(loginUser.getUsername());//人事行政提交人
-				syCarry.setRsxzName(loginUser.getRealname());//人事行政提交人
-				syCarry.setRsxzTime(new Date());//人事行政提交人提交时间
+
 				syCarryMapper.updateById(syCarry);
+
 				sb.append("单据"+syCarry.getName()+"审批成功");
 
-				// 财务经理
-				List<SysUser> getUserByRoleCode = sysUserService.getUserByRoleCode("SY002",null);
-				for(SysUser o:getUserByRoleCode){
-					iSysBaseAPI.sendSysAnnouncement(loginUser,loginUser.getUsername(),o.getUsername(),"搬运工对账单","您有一个新的搬运工对账单需要审批,请查看: "+syCarry.getName(), CommonConstant.MSG_CATEGORY_2,taskParam);
-				}
-				//财务总监角色
-//				List<SysUser> getUserByRoleCode1 = sysUserService.getUserByRoleCode("SY008",null);
-//				for(SysUser o:getUserByRoleCode1){
+			}
+
+//			List<String> listRole = iSysBaseAPI.getRolesByUsername(loginUser.getUsername());
+
+			//人事行政审批
+//			if(state.equals("2")){
+//
+//				boolean type = false;
+//
+//				for(String o:listRole){
+//					if(o.equals("SY003")){ //人事文员 角色
+//						type = true;
+//					}
+//				}
+//
+//				if(!type){
+//					sb.append("单据"+syCarry.getName()+"仅人事行政可进行操作");
+//					continue;
+//				}
+//				//0草稿,1仓库已提交(计划签字),2人事行政,3财务经理 ,4已完成
+//				if(!syState.equals("2")){
+//					sb.append("单据"+syCarry.getName()+"无法此操作,请查看");
+//					continue;
+//				}
+//				syCarry.setState("3");//0草稿,1仓库已提交(计划签字),2人事行政,3财务经理 ,4已完成
+//				syCarry.setRsxzBy(loginUser.getUsername());//人事行政提交人
+//				syCarry.setRsxzName(loginUser.getRealname());//人事行政提交人
+//				syCarry.setRsxzTime(new Date());//人事行政提交人提交时间
+//				syCarryMapper.updateById(syCarry);
+//				sb.append("单据"+syCarry.getName()+"审批成功");
+//
+//				// 财务经理
+//				List<SysUser> getUserByRoleCode = sysUserService.getUserByRoleCode("SY002",null);
+//				for(SysUser o:getUserByRoleCode){
 //					iSysBaseAPI.sendSysAnnouncement(loginUser,loginUser.getUsername(),o.getUsername(),"搬运工对账单","您有一个新的搬运工对账单需要审批,请查看: "+syCarry.getName(), CommonConstant.MSG_CATEGORY_2,taskParam);
 //				}
+//				//财务总监角色
+////				List<SysUser> getUserByRoleCode1 = sysUserService.getUserByRoleCode("SY008",null);
+////				for(SysUser o:getUserByRoleCode1){
+////					iSysBaseAPI.sendSysAnnouncement(loginUser,loginUser.getUsername(),o.getUsername(),"搬运工对账单","您有一个新的搬运工对账单需要审批,请查看: "+syCarry.getName(), CommonConstant.MSG_CATEGORY_2,taskParam);
+////				}
+//
+//				continue;
+//			}
+//
+//			//财务经理审批
+//			if(state.equals("3")){
+//
+//				boolean type = false;
+//
+//				for(String o:listRole){
+////					if(o.equals("SY002") || o.equals("SY008")){ //SY002 财务经理 SY008财务总监角色
+//					if(o.equals("SY002")){ //SY002 财务经理 SY008财务总监角色
+//						type = true;
+//					}
+//				}
+//
+//				if(!type){
+//					sb.append("单据"+syCarry.getName()+"仅财务经理可进行操作");
+//					continue;
+//				}
+//
+//				if(!syState.equals("3")){
+//					sb.append("单据"+syCarry.getName()+"无法此操作,请查看");
+//					continue;
+//				}
+//				syCarry.setState("4");//0草稿,1仓库已提交(计划签字),2人事行政,3财务经理 ,4已完成
+//				syCarry.setCwjlBy(loginUser.getUsername());//财务经理提交人
+//				syCarry.setCwjlName(loginUser.getRealname());//财务经理提交人
+//				syCarry.setCwjlTime(new Date());//财务经理提交人提交时间
+//				syCarryMapper.updateById(syCarry);
+//				sb.append("单据"+syCarry.getName()+"审批成功");
+//				continue;
+//			}
 
-				continue;
-			}
-
-			//财务经理审批
-			if(state.equals("3")){
+		}
 
-				boolean type = false;
+		return sb.toString();
+	}
 
-				for(String o:listRole){
-//					if(o.equals("SY002") || o.equals("SY008")){ //SY002 财务经理 SY008财务总监角色
-					if(o.equals("SY002")){ //SY002 财务经理 SY008财务总监角色
-						type = true;
-					}
-				}
 
-				if(!type){
-					sb.append("单据"+syCarry.getName()+"仅财务经理可进行操作");
-					continue;
-				}
+	public String changeCode(String code){
+		// 0   草稿
+		// 1   仓库已提交(计划签字)
+		// 10  SY_BY_001 办公室审批
+		// 20  SY_BY_002 财务经理审批
+		// 30  SY_BY_003 搬运装卸费用审批节点3
+		// 40  SY_BY_004 搬运装卸费用审批节点4
+		// 50  SY_BY_005 搬运装卸费用审批节点5
+		// 60  SY_BY_006 财务总监审批
+		if(code.equals("SY_BY_001")){
+			return "10";
+		}else if(code.equals("SY_BY_002")){
+			return "20";
+		}else if(code.equals("SY_BY_003")){
+			return "30";
+		}else if(code.equals("SY_BY_004")){
+			return "40";
+		}else if(code.equals("SY_BY_005")){
+			return "50";
+		}else{
+			return "60";
+		}
+	}
 
-				if(!syState.equals("3")){
-					sb.append("单据"+syCarry.getName()+"无法此操作,请查看");
-					continue;
-				}
-				syCarry.setState("4");//0草稿,1仓库已提交(计划签字),2人事行政,3财务经理 ,4已完成
-				syCarry.setCwjlBy(loginUser.getUsername());//财务经理提交人
-				syCarry.setCwjlName(loginUser.getRealname());//财务经理提交人
-				syCarry.setCwjlTime(new Date());//财务经理提交人提交时间
-				syCarryMapper.updateById(syCarry);
-				sb.append("单据"+syCarry.getName()+"审批成功");
-				continue;
+	public String getNextRole(String[] ids){
+		String code = "";
+		for(String o:ids){
+			List<SysUser> userIds = sysUserService.getUserByRoleCode(o,null);
+			if(userIds.size() > 0 ){
+				code = o;
+				break;
 			}
-
 		}
 
-		return sb.toString();
+		return code;
 	}
 
+
 /*
 	@Override
 	@Transactional
@@ -398,6 +629,11 @@ public class SyCarryServiceImpl extends ServiceImpl<SyCarryMapper, SyCarry> impl
 */
 
 
+	/**
+	 * 驳回(一键回退)
+	 * @param id
+	 * @return
+	 */
 	@Override
 	@Transactional
 	public String initial(String id){
@@ -411,8 +647,8 @@ public class SyCarryServiceImpl extends ServiceImpl<SyCarryMapper, SyCarry> impl
 			return "数据不存在,请刷新后重试";
 		}
 		String syState = syCarry.getState();//0草稿,1仓库已提交(计划签字中),2人事行政(审批中),3财务经理(审批中) ,4已完成
-		if(syState.equals("4")){
-			return "财务已审批,无法此操作";
+		if(syState.equals("70")){
+			return "已完成单据,无法此操作";
 		}
 
 		for(SyCarryB o:syCarryB){
@@ -429,7 +665,7 @@ public class SyCarryServiceImpl extends ServiceImpl<SyCarryMapper, SyCarry> impl
 		syCarry.setCkBy(null);//仓库提交人
 		syCarry.setCkName(null);//仓库提交人
 		syCarry.setCkTime(null);//仓库提交人提交时间
-
+		syCarry.setHistoryInfo("空");
 		syCarry.setRsxzBy(null);//人事行政提交人
 		syCarry.setRsxzName(null);//人事行政提交人
 		syCarry.setRsxzTime(null);//人事行政提交人提交时间
@@ -443,7 +679,12 @@ public class SyCarryServiceImpl extends ServiceImpl<SyCarryMapper, SyCarry> impl
 	}
 
 
-
+	/**
+	 * 取消签字
+	 * @param id
+	 * @param headId
+	 * @return
+	 */
 	@Override
 	@Transactional
 	public String signPlanReturn(String id,String headId) {
@@ -510,10 +751,16 @@ public class SyCarryServiceImpl extends ServiceImpl<SyCarryMapper, SyCarry> impl
 
 	}
 
+	/**
+	 * 计划员签字
+	 * @param id
+	 * @return
+	 */
 	@Override
 	@Transactional
 	public String signPlan(String id) {
 		LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+
 		SyCarryB syCarryB = syCarryBMapper.selectById(id);
 		if(syCarryB == null){
 			return "数据不存在,请刷新后重试";
@@ -531,7 +778,10 @@ public class SyCarryServiceImpl extends ServiceImpl<SyCarryMapper, SyCarry> impl
 		if(StringUtils.isNotBlank(jhyBy) && jhyBy.contains(loginUser.getUsername())){
 			return "此条数据以签字,请勿重新操作";
 		}
-
+		SyCarry syCarry = syCarryMapper.selectById(syCarryB.getHeadId());
+		if(syCarry.getState().equals("0")){
+			return "此条数据还未提交,无法此操作";
+		}
 		List<SyCarryB> syCarryB1 = syCarryBMapper.selectByMainId(syCarryB.getHeadId());
 
 		for(SyCarryB o:syCarryB1){
@@ -570,22 +820,98 @@ public class SyCarryServiceImpl extends ServiceImpl<SyCarryMapper, SyCarry> impl
 		}
 		if(ifAll){
 
-			SyCarry syCarry = syCarryMapper.selectById(syCarryB.getHeadId());
-			syCarry.setState("2");//0草稿,1仓库已提交(计划签字),2人事行政,3财务经理
+			// 0   草稿
+			// 1   仓库已提交(计划签字)
+			// 10  SY_BY_001 办公室审批
+			// 20  SY_BY_002 财务经理审批
+			// 30  SY_BY_003 搬运装卸费用审批节点3
+			// 40  SY_BY_004 搬运装卸费用审批节点4
+			// 50  SY_BY_005 搬运装卸费用审批节点5
+			// 60  SY_BY_006 财务总监审批
+			List<SysUser> userIds = sysUserService.getUserByRoleCode("SY_BY_001",null);
+			String roleCode = "";
+			if(userIds.size() == 0){
+				userIds = sysUserService.getUserByRoleCode("SY_BY_002",null);
+			}else{
+				if(StringUtils.isBlank(roleCode)){
+					roleCode = "SY_BY_001";
+					syCarry.setState("10");
+				}
+			}
+			if(userIds.size() == 0){
+				userIds = sysUserService.getUserByRoleCode("SY_BY_003",null);
+			}else{
+				if(StringUtils.isBlank(roleCode)){
+					roleCode = "SY_BY_002";
+					syCarry.setState("20");
+				}
+			}
+			if(userIds.size() == 0){
+				userIds = sysUserService.getUserByRoleCode("SY_BY_004",null);
+			}else{
+				if(StringUtils.isBlank(roleCode)){
+					roleCode = "SY_BY_003";
+					syCarry.setState("30");
+				}
+			}
+			if(userIds.size() == 0){
+				userIds = sysUserService.getUserByRoleCode("SY_BY_005",null);
+			}else{
+				if(StringUtils.isBlank(roleCode)){
+					roleCode = "SY_BY_004";
+					syCarry.setState("40");
+				}
+			}
+			if(userIds.size() == 0){
+				userIds = sysUserService.getUserByRoleCode("SY_BY_006",null);
+			}else{
+				if(StringUtils.isBlank(roleCode)){
+					roleCode = "SY_BY_005";
+					syCarry.setState("50");
+				}
+			}
+			if(userIds.size() == 0){
+				return "审批人不存在,请联系系统管理员维护";
+			}else{
+				if(StringUtils.isBlank(roleCode)){
+					roleCode = "SY_BY_006";
+					syCarry.setState("60");
+				}
+			}
+
+			if(StringUtils.isBlank(roleCode)){
+				return "角色数据异常,请联系系统管理员维护";
+			}
+
+			SysRole sysRole = getUserByRole(roleCode).get(0);
+			syCarry.setRoleCode(sysRole.getRoleCode());
+			syCarry.setRoleText(sysRole.getRoleName());
+
 			syCarryMapper.updateById(syCarry);
 			HashMap<String,Object> taskParam = new HashMap<>();
-			//人事角色
-			List<SysUser> getUserByRoleCode = sysUserService.getUserByRoleCode("SY003",null);
-			for(SysUser o:getUserByRoleCode){
+
+//			List<SysUser> getUserByRoleCode = sysUserService.getUserByRoleCode("SY003",null);
+			for(SysUser o:userIds){
 				iSysBaseAPI.sendSysAnnouncement(loginUser,loginUser.getUsername(),o.getUsername(),"搬运工对账单","您有一个新的搬运工对账单需要审批,请查看: "+syCarry.getName(), CommonConstant.MSG_CATEGORY_2,taskParam);
 			}
 
+
+
 		}
 
 		return "签字成功";
 	}
 
 
+	public List<SysRole> getUserByRole(String code){
+
+		LambdaQueryWrapper<SysRole> query = new LambdaQueryWrapper<SysRole>();
+		query.eq(SysRole::getRoleCode,code);
+		List<SysRole> list2 = sysRoleService.list(query);
+		return list2;
+	}
+
+
 	public static void main(String[] args) {
 		String jhyName = "刘静剑/余兴志";
 		String jhyBy = "T0090,T0089,T0090,T0090";

+ 8 - 0
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/oa/vo/SyCarryPage.java

@@ -23,6 +23,14 @@ public class SyCarryPage {
 	private String id;
 	/**0草稿,1仓库已提交(计划签字),2人事行政,3财务经理*/
 	private String state;
+	/**状态文本(下一个要审批的角色编码)*/
+	private String roleCode;
+	/**状态文本(下一个要审批的角色名称)*/
+	private String roleText;
+	/**
+	 * 历史
+	 */
+	private String historyInfo;
 	/**创建人登录名称*/
   	@Excel(name = "创建人登录名称", width = 15)
 	private String createBy;