Browse Source

离职技术员、经理转交修改开发

anderx 3 years ago
parent
commit
fbc51a84fc

+ 9 - 1
src/main/java/com/goafanti/common/dao/NewOrderChangeMapper.java

@@ -60,5 +60,13 @@ public interface NewOrderChangeMapper {
      * @param orderNo
      * @return
      */
-    OutProcessName gerProcessName(@Param("id") Integer id, @Param("orderNo") String orderNo);
+    OutProcessName getProcessName(@Param("id") Integer id, @Param("orderNo") String orderNo);
+
+    /**
+     *
+     * @param type 3咨询师 4咨询师经理
+     * @param aid
+     * @return
+     */
+    List<Integer> selectProcess(@Param("type")Integer type, @Param("aid")String aid);
 }

+ 6 - 0
src/main/java/com/goafanti/common/dao/OrderExamineMapper.java

@@ -106,6 +106,12 @@ public interface OrderExamineMapper {
 
 	void updateByOrderNo(@Param("orderNo") String orderNo,@Param("status")Integer status,@Param("type")Integer type);
 
+    /**
+     *
+     * @param aid
+     * @param transferId
+     * @param type 0咨询师 1经理 2咨询师转交经理 3经理转交咨询师
+     */
 	void updateDimissionTransfer(@Param("aid")String aid, @Param("transferId")String transferId, @Param("type")Integer type);
 
     /**

+ 1 - 0
src/main/java/com/goafanti/common/dao/TOrderNewMapper.java

@@ -66,4 +66,5 @@ public interface TOrderNewMapper {
      * @return
      */
     OrderProcessName getProcessName(String orderNo);
+
 }

+ 12 - 1
src/main/java/com/goafanti/common/mapper/NewOrderChangeMapper.xml

@@ -773,7 +773,7 @@ select
       where n.process_state =#{type}
     </update>
 
-  <select id="gerProcessName" resultType="com.goafanti.order.bo.OutProcessName">
+  <select id="getProcessName" resultType="com.goafanti.order.bo.OutProcessName">
     select a.id,a.order_no orderNo ,a.`type`,a.change_amount changeAmount ,a.status,a.process_state processState,
            c.name yxy,mg.name yxjl, yxgly.name yxgly,zxs.name zxs,zxsjl.name zxsjl, zxsgly.name zxsgly,
            fm.name cwzy,cwgly.name cwgly, zc.name zc,dsz.name dsz
@@ -811,4 +811,15 @@ select
                       where c.role_type in ('9997') and a.status ='0' ) cwgly on 1=1
     where a.id= #{id}
   </select>
+    <select id="selectProcess" resultType="java.lang.Integer">
+      select t0.id from (select x.id,min(y.status)status
+                         from (select a.id
+                               from new_order_change a left join t_order_task c on a.order_no =c.order_no
+                               where a.process_state= #{type}
+                                 and c.consultant_id = #{aid} group by a.id)x
+                                left join new_order_change z on x.id=z.id
+                                left join order_examine y on z.order_no=y.order_no
+                         where y.`type` =0 group by x.id)t0
+      where t0.status>0
+    </select>
 </mapper>

+ 16 - 3
src/main/java/com/goafanti/common/mapper/OrderExamineMapper.xml

@@ -335,10 +335,23 @@
   </update>
    <update id="updateDimissionTransfer">
   update order_examine set aid= #{transferId}
+     <if test="type==3">
+       ,type=1
+     </if>
+     <if test="type==4">
+       ,type=0
+     </if>
+
 	where status=0 and aid= #{aid}
-    <if test="type!=null">
-      and type= #{type}
-    </if>
+     <if test="type==0 or type==1">
+       and type= #{type}
+     </if>
+     <if test="type==3 ">
+       and type= 0
+     </if>
+     <if test="type==4 ">
+       and type= 1
+     </if>
   </update>
 
   <delete id="deleteByAidAndStatus">

+ 3 - 0
src/main/java/com/goafanti/common/mapper/TOrderNewMapper.xml

@@ -1632,6 +1632,7 @@ left join department d on o.order_dep = d.id   left join t_order_mid a on o.orde
   </update>
 
 
+
   <select id="selectArrearsDunListByPage" resultType="com.goafanti.order.bo.OutArrearsDunListBo">
     select a.id, b.contract_no contractNo,a.order_no as orderNo,c.nickname as userName,tm.salesman_name as salesmanName,
     b.project_status projectStatus, b.total_amount as totalAmount,b.liquidation_status as liquidationStatus,a.`type`,
@@ -1986,4 +1987,6 @@ left join department d on o.order_dep = d.id   left join t_order_mid a on o.orde
     where a.order_no = #{orderNo}
   </select>
 
+
+
 </mapper>

+ 5 - 0
src/main/java/com/goafanti/common/mapper/TOrderTaskMapper.xml

@@ -1197,6 +1197,11 @@
     </if>
     <if test="type==3">
       ,consultant_id= null
+      ,manager_id=#{transferId,jdbcType=VARCHAR}
+    </if>
+    <if test="type==4">
+      ,consultant_id=#{transferId,jdbcType=VARCHAR}
+      ,manager_id= null
     </if>
     <if test="type==1">
       ,manager_id= null

+ 29 - 62
src/main/java/com/goafanti/order/service/impl/OrderChangeServiceImpl.java

@@ -263,8 +263,7 @@ public class OrderChangeServiceImpl extends BaseMybatisDao<NewOrderChangeMapper>
 		if (nb.getStatus()==4) {
 			throw new BusinessException(new Error( "变更流程已通过审核","变更流程已通过审核"));
 		}
-		boolean zxsFlag=false;
-		boolean zxsjlFlag=false;
+		Date date =new Date();
 		//2通过 3驳回
 		if (status==2) {
 			//变更类型 0退单退款 1项目及金额变更 2仅项目变更 3仅金额变更 4重报 5赠送 6退单不退款 7仅变更合同
@@ -294,28 +293,20 @@ public class OrderChangeServiceImpl extends BaseMybatisDao<NewOrderChangeMapper>
 								nb.getType()==OrderChangeType.XMJJEBG.getCode()||
 								nb.getType()==OrderChangeType.TDTK.getCode()||
 								nb.getType()==OrderChangeType.TDBTK.getCode()){
-							int zxs=orderExamineMapper.checkCountStatus(orderNo,0,null);
-							if (zxs>0){
-								nb.setProcessState(OrderChangeProcess.JSY.getCode());
-							}else {
-								zxsFlag=true;
-								zxsjlFlag=pushZXSJLprocess(nb);
-							}
+							pushZXS(nb, date,1);
 						}else if (nb.getType()==OrderChangeType.JJEBG.getCode()){
 							nb.setProcessState(OrderChangeProcess.JSZJ.getCode());
 						}else if (nb.getType()==OrderChangeType.ZS.getCode()){
 							nb.setProcessState(OrderChangeProcess.CWZY.getCode());
 						}
 					}else if (nb.getProcessState()==OrderChangeProcess.JSY.getCode()){
-						zxsFlag=pushZXSprocess(nb);
+						orderExamineMapper.updateByOrderNoAndAid(orderNo,TokenManager.getAdminId(),0);
+						pushZXS(nb,date,0);
 						//咨询师审核,将自己审核的全部标记已审核
 					}else if (nb.getProcessState()==OrderChangeProcess.JSJL.getCode()){
 						//咨询师经理审核,将自己审核的全部标记已审核
 						orderExamineMapper.updateByOrderNoAndAid(orderNo,TokenManager.getAdminId(),1);
-						int wsh=orderExamineMapper.checkCountStatus(orderNo,1,0);
-						if (wsh==0){
-							pushZXSJLprocess(nb);
-						}
+						pushZXSJL(nb,date,0);
 					}else if (nb.getProcessState()==OrderChangeProcess.JSZJ.getCode()){
 						nb.setProcessState(OrderChangeProcess.CWZY.getCode());
 					}else if (nb.getProcessState()==OrderChangeProcess.CWZY.getCode()){
@@ -378,24 +369,14 @@ public class OrderChangeServiceImpl extends BaseMybatisDao<NewOrderChangeMapper>
 				orderExamineMapper.updateByOrderNoAndAid(nb.getOrderNo(),TokenManager.getAdminId(),0);
 				int wsh=orderExamineMapper.checkCountStatus(nb.getOrderNo(),0,0);
 				if (wsh==0){
-					zxsFlag=true;
-					zxsjlFlag= pushZXSJLprocess( nb);
+					pushZXSJL( nb,date,1);
 				}
 			}else if(rejectState==4){
-				zxsjlFlag=pushZXSJLprocess(nb);
+				pushZXSJL(nb,date,1);
 			}
 		}
 		addOrderChangeLog(remarks, status, orderNo, nb.getId());
-		if (zxsFlag||zxsjlFlag){
-			Date date =new Date();
-			date.setTime(date.getTime()+1000);
-			if (zxsFlag){
-				addOrderChangeLog("无咨询师自动通过", 2, orderNo, nb.getId(),date);
-			}
-			if (zxsjlFlag){
-				addOrderChangeLog("无咨询师经理自动通过", 2, nb.getOrderNo(), nb.getId(),date);
-			}
-		}
+
 
 		sendNotice(status,nb);
 		pushOrderCangeProcess(nb);
@@ -404,27 +385,32 @@ public class OrderChangeServiceImpl extends BaseMybatisDao<NewOrderChangeMapper>
 	}
 
 	/**
-	 *  判断zxs是否全审核,全审核就去判断咨询师经理,跳过就返回x=1,在后续添加日志放到先审核,后添加日志
+	 *
 	 * @param nb
-	 * @return
+	 * @param date
+	 * @param type 0正常审核  1跨流程需要通知
 	 */
-	private boolean pushZXSprocess(NewOrderChangeBo nb) {
-		orderExamineMapper.updateByOrderNoAndAid(nb.getOrderNo(),TokenManager.getAdminId(),0);
-		int wsh=orderExamineMapper.checkCountStatus(nb.getOrderNo(),0,0);
-		if (wsh==0){
-			return pushZXSJLprocess( nb);
+	public void pushZXS(NewOrderChangeBo nb,  Date date,Integer type) {
+		int zxs=orderExamineMapper.checkCountStatus(nb.getOrderNo(),0,null);
+		if (zxs>0){
+			nb.setProcessState(OrderChangeProcess.JSY.getCode());
+		}else {
+			if(type==1){
+				date.setTime(date.getTime()+100);
+				addOrderChangeLog("无咨询师自动通过", 2, nb.getOrderNo(), nb.getId(), date);
+			}
+			pushZXSJL(nb,date,1);
 		}
-		return false;
 	}
 
 	/**
 	 * 咨询师经理,跳过就返回x=1,在后续添加日志放到先审核,后添加日志
 	 * @param nb
+	 * @param type 0正常审核  1跨流程需要通知
 	 * @return
 	 */
-	private boolean pushZXSJLprocess(NewOrderChangeBo nb) {
+	public void pushZXSJL(NewOrderChangeBo nb,Date date,Integer type) {
 		int zxsjl=orderExamineMapper.checkCountStatus(nb.getOrderNo(),1,0);
-		boolean zxsjlFlag=false;
 		if (nb.getType()==OrderChangeType.XMJJEBG.getCode()||
 				nb.getType()==OrderChangeType.TDTK.getCode()||
 				nb.getType()==OrderChangeType.TDBTK.getCode()||
@@ -433,7 +419,10 @@ public class OrderChangeServiceImpl extends BaseMybatisDao<NewOrderChangeMapper>
 			if (zxsjl>0){
 				nb.setProcessState(OrderChangeProcess.JSJL.getCode());
 			}else {
-				zxsjlFlag=true;
+				if (type==1){
+					date.setTime(date.getTime()+100);
+					addOrderChangeLog("无咨询师经理自动通过", 2, nb.getOrderNo(), nb.getId(),date);
+				}
 				//重报 没有技术员跳入财务
 				if (nb.getType()==OrderChangeType.CB.getCode()){
 					nb.setProcessState(OrderChangeProcess.CWZY.getCode());
@@ -443,7 +432,6 @@ public class OrderChangeServiceImpl extends BaseMybatisDao<NewOrderChangeMapper>
 				}
 			}
 		}
-		return zxsjlFlag;
 	}
 
 	private void addOrderChangeLog(String remarks, Integer status, String orderNo, Integer id) {
@@ -716,8 +704,6 @@ public class OrderChangeServiceImpl extends BaseMybatisDao<NewOrderChangeMapper>
 					}
 					//如果自己是审核人员则跳过
 					if (flag){
-						boolean zxsFlag=false;
-						boolean zxsjlFlag=false;
 						if (t.getType()==OrderChangeType.CB.getCode()||
 								t.getType()==OrderChangeType.JXMBG.getCode()||
 								t.getType()==OrderChangeType.XMJJEBG.getCode()||
@@ -725,26 +711,7 @@ public class OrderChangeServiceImpl extends BaseMybatisDao<NewOrderChangeMapper>
 								t.getType()==OrderChangeType.TDBTK.getCode()){
 							//将所有审核重置
 							orderExamineMapper.updateByOrderNo(t.getOrderNo(),null,null);
-							int wsh=orderExamineMapper.checkCountStatus(t.getOrderNo(),0,0);
-							if (wsh==0){
-								zxsFlag=true;
-								zxsjlFlag= pushZXSJLprocess( t);
-							}
-							if (zxsFlag||zxsjlFlag){
-								date.setTime(date.getTime()+1000);
-								if (zxsFlag){
-									addOrderChangeLog("无咨询师自动通过", 2, t.getOrderNo(), t.getId(),date);
-									noc.setProcessState(OrderChangeProcess.JSJL.getCode());
-								}
-								if (zxsjlFlag){
-									addOrderChangeLog("无咨询师经理自动通过", 2, t.getOrderNo(), t.getId(),date);
-									if (t.getType()==OrderChangeType.CB.getCode()){
-										noc.setProcessState(OrderChangeProcess.CWZY.getCode());
-									}else {
-										noc.setProcessState(OrderChangeProcess.JSZJ.getCode());
-									}
-								}
-							}
+							pushZXS(t,date,1);
 						}else if(t.getType()==OrderChangeType.ZS.getCode()){
 							noc.setProcessState(OrderChangeProcess.CWZY.getCode());
 						}else if(t.getType()==OrderChangeType.JJEBG.getCode()){
@@ -1589,7 +1556,7 @@ public class OrderChangeServiceImpl extends BaseMybatisDao<NewOrderChangeMapper>
 	@Override
 	public Object gerProcessName(Integer id) {
 		NewOrderChange newOrderChange=newOrderChangeMapper.selectByPrimaryKey(id);
-		return newOrderChangeMapper.gerProcessName(id,newOrderChange.getOrderNo());
+		return newOrderChangeMapper.getProcessName(id,newOrderChange.getOrderNo());
 	}
 
 	@Override

+ 63 - 69
src/main/java/com/goafanti/permission/service/impl/NewRoleServiceImpl.java

@@ -18,6 +18,8 @@ import com.goafanti.order.bo.TOrderTaskBo;
 import com.goafanti.order.enums.ChangeState;
 import com.goafanti.order.enums.NewProjectStatus;
 import com.goafanti.order.enums.OrderChangeProcess;
+import com.goafanti.order.service.OrderChangeService;
+import com.goafanti.order.service.impl.OrderChangeServiceImpl;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -74,7 +76,7 @@ public class NewRoleServiceImpl extends BaseMybatisDao<RoleMapper> implements Ne
 	private NewOrderChangeMapper newOrderChangeMapper;
 
 	@Autowired
-	private OrderChangeLogMapper	orderChangeLogMapper;
+	private OrderChangeServiceImpl	orderChangeServiceImpl;
 
 
 	@Override
@@ -234,94 +236,86 @@ public class NewRoleServiceImpl extends BaseMybatisDao<RoleMapper> implements Ne
 			}
 			if (s == roleResources.XMRW.getCode()) {
 				// 获取被转角色判断修改对应任务角色
-				pushTechTransfer(aid,transferId,date,admin,tadmin);
+				pushTechTransfer(admin,tadmin,date);
 
 			}
-			if (s!=roleResources.QDYW.getCode()) {
+			if (s==roleResources.QDYW.getCode()) {
 				roleResourcesMapper.updateDimissionTransfer(s,aid,transferId);
 			}
 		}
 		return 1;
 	}
 
-	public  void pushTechTransfer(String aid, String transferId,Date date,Admin admin,Admin tadmin) {
+
+	/**
+	 * @param date 日期
+	 * @param admin 原本管理员
+	 * @param tadmin 转交管理员
+	 */
+	public  void pushTechTransfer(Admin admin,Admin tadmin,Date date) {
 		//获取旧人员与新人员的角色
-		int useType=getTech(aid);
-		int newType=getTech(transferId);
-		//如果不是咨询或者经理不走项目转交
-		if(useType!=-1&&newType!=-1){
-			//获取所有需要修改角色的变更项目
-			List<TChangeTask> list = tOrderTaskMapper.selectByAid(aid);
-			if ((useType==0&&newType==0)||(useType==1&&newType==1)){
-				tOrderTaskMapper.updateDimissionTransfer(aid, transferId, useType);
-				orderExamineMapper.updateDimissionTransfer(aid, transferId,useType);
-			}else if (useType==0&&newType==1){//下转上 下清空
+		List<String>  useType=adminMapper.getAdminRoleListByAid(admin.getId());
+		List<String>  newType=adminMapper.getAdminRoleListByAid(tadmin.getId());
+		String aid=admin.getId();
+		String transferId=tadmin.getId();
+		if (useType.contains(AFTConstants.TECH)&&newType.contains(AFTConstants.TECH)){
+			//System.out.println("同咨询师");
+				tOrderTaskMapper.updateDimissionTransfer(aid, transferId, 0);
+				orderExamineMapper.updateDimissionTransfer(aid, transferId,0);
+			pushChangeDimissionTransfer(aid);
+		}else if (useType.contains(AFTConstants.TECH)&&newType.contains(AFTConstants.TECH_MANAGER)){
+//			System.out.println("不同职业");
 				tOrderTaskMapper.updateDimissionTransfer(aid, transferId, 3);
-				orderExamineMapper.updateDimissionTransfer(aid, transferId,newType);
-				orderExamineMapper.deleteByAidAndStatus(null,aid,useType);
-			}else if (useType==1&&newType==0){//上转下  上清空
-				tOrderTaskMapper.updateDimissionTransfer(aid, transferId, 4);
-				orderExamineMapper.updateDimissionTransfer(aid, transferId,newType);
-				orderExamineMapper.deleteByAidAndStatus(null,aid,useType);
-			}
-			List<Integer> clist=new ArrayList<>();
-			for (TChangeTask tct : list) {
-				TChangeTask nt = new TChangeTask();
-				tct.setId(tct.getId());
-				tct.setReceiverName(tadmin.getName());
-				tChangeTaskMapper.updateByPrimaryKeySelective(tct);
-				if (!clist.contains(tct.getCid()))clist.add(tct.getCid());
-			}
-			for (Integer i : clist) {
-				NewOrderChangeBo changeBo = newOrderChangeMapper.selectById(i);
-				int x=1;
-				if (changeBo.getProcessState()== OrderChangeProcess.JSY.getCode()){
-					x=orderExamineMapper.checkCountStatus(changeBo.getOrderNo(), 0,0);
-
-				}else if (changeBo.getProcessState()==OrderChangeProcess.JSJL.getCode()){
-					  x=orderExamineMapper.checkCountStatus(changeBo.getOrderNo(), 1,0);
-				}
-				if (x==0){
-					OrderChangeLog log=new OrderChangeLog();
-					log.setChangeId(i);
-					log.setCreateTime(date);
-					log.setOrderNo(changeBo.getOrderNo());
-					log.setStatus(2);
-					log.setRemarks("离职转交自动通过");
-					log.setAuditor("1");
-					orderChangeLogMapper.insertSelective(log);
-					changeBo.setProcessState(changeBo.getProcessState()+1);
-					newOrderChangeMapper.updateByPrimaryKeySelective(changeBo);
-				}
-			}
-			newOrderChangeMapper.updateTaskExamineName(aid,transferId,OrderChangeProcess.JSY.getCode());
-			newOrderChangeMapper.updateTaskExamineName(aid,transferId,OrderChangeProcess.JSJL.getCode());
+				orderExamineMapper.updateDimissionTransfer(aid, transferId,3);
+				//如果转交后订单全通过了,则变更+1
+				pushChangeDimissionTransfer(aid);
+		}
+		if (useType.contains(AFTConstants.TECH_MANAGER)&&newType.contains(AFTConstants.TECH_MANAGER)){
+//			System.out.println("同咨询师经理");
+			tOrderTaskMapper.updateDimissionTransfer(aid, transferId, 1);
+			orderExamineMapper.updateDimissionTransfer(aid, transferId,1);
+			pushChangeProcess(aid,4);
+		}else if (useType.contains(AFTConstants.TECH_MANAGER)&&newType.contains(AFTConstants.TECH)){
+//			System.out.println("不同职业");
+			tOrderTaskMapper.updateDimissionTransfer(aid, transferId, 4);
+			orderExamineMapper.updateDimissionTransfer(aid, transferId,4);
+			pushChangeDimissionTransfer(aid);
+		}
 			taskAttributionLogMapper.insertList(aid, transferId, date);
 			tTaskLogMapper.updateDimissionTransfer(aid, transferId);
-		}
 
 	}
 
-	/**
-	 * 判断角色
-	 * @param transferId
-	 * @return 0咨询师 1经理 -1非咨询角色
-	 */
-	private int getTech(String transferId) {
-		List<String>  l=adminMapper.getAdminRoleListByAid(transferId);
-		for (String str : l) {
-			if (str==null){
-				break;
-			}else if (str.equals(AFTConstants.TECH_MANAGER)) {
-				return 1;
-			}else if (str.equals(AFTConstants.TECH)){
-				return 0;
+	private void pushChangeDimissionTransfer(String aid) {
+			pushChangeProcess(aid,3);
+			pushChangeProcess(aid,4);
+
+	}
+
+	private void pushChangeProcess(String aid,Integer type) {
+		List<Integer> list = newOrderChangeMapper.selectProcess(type, aid);
+		if(!list.isEmpty()){
+			Date date =new Date();
+			for (Integer i : list) {
+				NewOrderChangeBo changeBo = orderChangeServiceImpl.orderChangeDetailsById(i);
+				if (type==3)pushZXS(changeBo,date,1);
+				if (type==4)pushZXSJL(changeBo,date,1);
 			}
 		}
+	}
+	public void pushZXS(NewOrderChangeBo nb,  Date date,Integer type) {
+		orderChangeServiceImpl.pushZXS( nb,   date, type);
+		orderChangeServiceImpl.pushOrderCangeProcess(nb);
+		newOrderChangeMapper.updateByPrimaryKeySelective(nb);
+	}
 
-		return -1;
+	public void pushZXSJL(NewOrderChangeBo nb,Date date,Integer type) {
+		orderChangeServiceImpl.pushZXSJL(nb,date,type);
+		orderChangeServiceImpl.pushOrderCangeProcess(nb);
+		newOrderChangeMapper.updateByPrimaryKeySelective(nb);
 	}
 
+
 	@Override
 	public List<RoleResources> ResourcesDetail(String rid) {
 		return roleResourcesMapper.selectByRid(rid);