Browse Source

项目拆分问题处理

Signed-off-by: anderx <312518615@qq.com>
anderx 5 years ago
parent
commit
f33e001b01

+ 14 - 6
src/main/java/com/goafanti/common/mapper/TOrderTaskMapper.xml

@@ -1026,7 +1026,7 @@
   
   
    <select id="selectOrderTaskListByPage" resultType="com.goafanti.order.bo.TOrderTaskListBo">
-  			select  a.id,a.commodity_name as taskName,a.order_no as orderNo,c.cname,d.name as receiverName,a.project_status as projectStatus,e.contract_no contractNo,
+  	select  a.id,a.commodity_name as taskName,a.order_no as orderNo,c.cname,d.name as receiverName,a.project_status as projectStatus,e.contract_no contractNo,a.task_receiver taskReceiver,
     a.task_status as taskStatus,date_format(a.task_distribution_time,'%Y-%m-%d') as taskDate, a.commodity_quantity as commodityQuantity,e.approval,l.refund_status outsourceStatus,
     ifnull(i.alreadyNumber,0) as alreadyNumber,f.nickname as userName,h.name as depName, j.name as outsourceName ,ifnull(k.hours,0) hours,a.split_status splitStatus
     from t_order_task a left join business_project b on a.commodity_id=b.id left join business_category c on b.cid=c.id 
@@ -1034,9 +1034,14 @@
     left join department h on e.order_dep=h.id left join (select task_id , sum(already_number) as alreadyNumber from task_progress 
     group by task_id) i on a.id=i.task_id  left join (select order_no,max(name)as name from outsource_organization group by order_no) j 
     on a.order_no=j.order_no left join task_hours_count k on a.id=k.tid and a.task_receiver=k.aid left join t_order_outsource l
-    on a.id=l.tid where e.delete_sign !=1  and e.order_status not in (5,7)  and a.split_status !=2 and a.outsource= #{outsource,jdbcType=INTEGER}
-    <if test="specially == 0 or specially == 1">
+    on a.id=l.tid where e.delete_sign !=1  and e.order_status not in (5,7)  
+    and a.outsource= #{outsource,jdbcType=INTEGER}
     and a.task_receiver= #{aid,jdbcType=VARCHAR}
+    <if test="specially == 0 ">
+    and a.split_status !=1 
+    </if>
+    <if test="specially == 1 ">
+    and a.split_status !=2 
     </if>
     <if test="orderNo != null">
   	and a.order_no= #{orderNo,jdbcType=VARCHAR}
@@ -1086,10 +1091,13 @@
    <select id="selectOrderTaskListCount" resultType="java.lang.Integer">
   	select  count(*) from t_order_task a left join admin d on a.task_receiver=d.id left join t_order_new e on a.order_no=e.order_no
     left join admin g on e.salesman_id=g.id left join department h on g.department_id=h.id where e.delete_sign !=1 and e.order_status not in (5,7)
-    and a.split_status !=2
     and a.outsource= #{outsource,jdbcType=INTEGER}
-    <if test="specially == 0 or specially == 1">
     and a.task_receiver= #{aid,jdbcType=VARCHAR}
+    <if test="specially == 0 ">
+    and a.split_status !=1 
+    </if>
+    <if test="specially == 1 ">
+    and a.split_status !=2 
     </if>
     <if test="orderNo != null">
   	and a.order_no= #{orderNo,jdbcType=VARCHAR}
@@ -1353,7 +1361,7 @@ from t_order_task a left join business_project b on a.commodity_id=b.id left joi
   </select>
   
   <select id="splitProjectList" resultType="com.goafanti.order.bo.TOrderTaskListBo">
-     select  a.id,a.commodity_name as taskName,a.order_no as orderNo,c.cname,d.name as receiverName,a.project_status as projectStatus,e.contract_no contractNo,
+     select  a.id,a.commodity_name as taskName,a.order_no as orderNo,c.cname,d.name as receiverName,a.project_status as projectStatus,e.contract_no contractNo,a.task_receiver taskReceiver,
     a.task_status as taskStatus,date_format(a.task_distribution_time,'%Y-%m-%d') as taskDate, a.commodity_quantity as commodityQuantity,e.approval,l.refund_status outsourceStatus,
     ifnull(i.alreadyNumber,0) as alreadyNumber,f.nickname as userName,h.name as depName, j.name as outsourceName ,ifnull(k.hours,0) hours,a.split_status splitStatus,
     a.split_super splitSuper,date_format(a.split_time,'%Y-%m-%d %H:%i:%S') splitTimes,ad.name splitAname

+ 2 - 2
src/main/java/com/goafanti/common/utils/ExportExcelUtil.java

@@ -473,7 +473,7 @@ public class ExportExcelUtil {
 					//当前列的只
 					String o ;
 					switch (comment[i]) {
-					case "任务编号": o = ob.getId(); break;
+					case "任务编号": o = ob.getId().toString(); break;
 					case "任务名称": o = ob.getTaskName(); break;
 					case "订单编号": o = ob.getOrderNo(); break;
 					case "业务别类": o = ob.getCname();break;
@@ -520,7 +520,7 @@ public class ExportExcelUtil {
 					String o="" ;
 					switch (comment[i]) {
 					//"任务编号","任务名称","订单编号","业务别类","客户名称","任务状态","项目状态","分配时间","订单部门"
-					case "任务编号": o = ob.getId(); setWidth(sheet, i, o,1); break;
+					case "任务编号": o = ob.getId().toString(); setWidth(sheet, i, o,1); break;
 					case "任务名称": o = ob.getTaskName(); setWidth(sheet, i, o,1);break;
 					case "订单编号": o = ob.getOrderNo();setWidth(sheet, i, o,1); break;
 					case "业务别类": o = ob.getCname();setWidth(sheet, i, o,1);break;

+ 30 - 3
src/main/java/com/goafanti/order/bo/TOrderTaskListBo.java

@@ -1,9 +1,12 @@
 package com.goafanti.order.bo;
 
 import java.math.BigDecimal;
+import java.util.List;
+
+import com.goafanti.core.shiro.token.TokenManager;
 
 public class TOrderTaskListBo {
-	private String id;
+	private Integer id;
 	private String taskName;
 	private String orderNo;
 	private String userName;
@@ -32,6 +35,11 @@ public class TOrderTaskListBo {
 	private String	splitSuper;
 	private String splitTimes;
 	private String splitAname;
+	private String taskReceiver;
+	private List<TOrderTaskListBo> splitList;
+	//判断是不是自己的单 0 是 1否
+	//private Integer distributeSign;
+	
 	
 	public String getSplitSuper() {
 		return splitSuper;
@@ -69,10 +77,10 @@ public class TOrderTaskListBo {
 	public void setSignTime(String signTime) {
 		this.signTime = signTime;
 	}
-	public String getId() {
+	public Integer getId() {
 		return id;
 	}
-	public void setId(String id) {
+	public void setId(Integer id) {
 		this.id = id;
 	}
 	public String getTaskName() {
@@ -201,5 +209,24 @@ public class TOrderTaskListBo {
 	public void setSplitStatus(Integer splitStatus) {
 		this.splitStatus = splitStatus;
 	}
+	public List<TOrderTaskListBo> getSplitList() {
+		return splitList;
+	}
+	public void setSplitList(List<TOrderTaskListBo> splitList) {
+		this.splitList = splitList;
+	}
+	public Integer getDistributeSign() {
+		if (TokenManager.getAdminId().equals(getTaskReceiver())) {
+			return 0;
+		}
+		return 1;
+	}
+	public String getTaskReceiver() {
+		return taskReceiver;
+	}
+	public void setTaskReceiver(String taskReceiver) {
+		this.taskReceiver = taskReceiver;
+	}
+	
 	
 }

+ 0 - 5
src/main/java/com/goafanti/order/controller/AdminNewOrderApiController.java

@@ -3,16 +3,13 @@ package com.goafanti.order.controller;
 
 
 import java.io.IOException;
-import java.io.OutputStream;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
-import java.util.Date;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
 import org.apache.commons.lang3.StringUtils;
-import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
@@ -22,10 +19,8 @@ import com.goafanti.common.bo.Result;
 import com.goafanti.common.constant.ErrorConstants;
 import com.goafanti.common.controller.CertifyApiController;
 import com.goafanti.common.model.TOrderNew;
-import com.goafanti.common.model.TOrderOutsource;
 import com.goafanti.common.model.TOrderRefundWithBLOBs;
 import com.goafanti.common.model.TOrderTask;
-import com.goafanti.order.bo.OrderOutsourceDtails;
 import com.goafanti.order.enums.ApprovalNewState;
 import com.goafanti.order.enums.OrderNewState;
 import com.goafanti.order.service.OrderNewService;

+ 1 - 0
src/main/java/com/goafanti/order/controller/OrderProjectApiController.java

@@ -50,6 +50,7 @@ public class OrderProjectApiController extends CertifyApiController {
 	
 	/**
 	 * 任务派单列表
+	 * specially  0我的任务  1任务派单
 	 */
 	@RequestMapping(value="/orderTaskList" ,method = RequestMethod.GET)
 	public Result orderTaskList(String name,String orderNo,String taskId,Integer taskStatus,String adminName,Integer specially,String depId  ,

+ 31 - 2
src/main/java/com/goafanti/order/service/impl/OrderProjectServiceImpl.java

@@ -207,7 +207,15 @@ public class OrderProjectServiceImpl extends BaseMybatisDao<TOrderTaskMapper> im
 		if (null != taskStatus) params.put("taskStatus", taskStatus);
 		params.put("outsource", outsource==null?0:outsource);
 		if (outsourceStatus !=null) params.put("outsourceStatus", outsourceStatus);
+		
 		Pagination<TOrderTaskListBo> p = (Pagination<TOrderTaskListBo>)findPage("selectOrderTaskListByPage", "selectOrderTaskListCount", params, pageNo, pageSize);
+		List<TOrderTaskListBo> list=(List<TOrderTaskListBo>) p.getList();
+		for (TOrderTaskListBo t : list) {
+			if(t.getSplitStatus()==1) {
+				List<TOrderTaskListBo> l=splitProjectList(t.getId());
+				t.setSplitList(l);
+			}
+		}
 		return p;
 	}
 
@@ -325,7 +333,28 @@ public class OrderProjectServiceImpl extends BaseMybatisDao<TOrderTaskMapper> im
 			}
 		}
 		//项目触发发催款
-		pushOrderDun(t,task2);
+		if (task2.getSplitStatus()==0) {
+			pushOrderDun(t,task2);
+		}else if (task2.getSplitStatus()==2){
+			//查出父项目
+			List<TOrderTaskListBo> list=tOrderTaskMapper.splitProjectList(task2.getSplitSuper());
+			//设置一个比较大的流程数字,然后取最小的
+			Integer i=OrderProjectStatus.XMJD10.getCode();
+			for (TOrderTaskListBo tt : list) {
+				if (tt.getProjectStatus()<i) i=tt.getProjectStatus();
+			}
+			TOrderTask fatherTask=new TOrderTask();
+			fatherTask.setId(task2.getSplitSuper());
+			fatherTask.setProjectStatus(i);
+			tOrderTaskMapper.updateByPrimaryKeySelective(fatherTask);
+			TOrderTask task3=tOrderTaskMapper.selectByPrimaryKey(task2.getSplitSuper());
+			//设置父任务
+			TOrderTaskDetailBo t2=new TOrderTaskDetailBo();
+			t2.setOrderNo(t.getOrderNo());
+			t2.setId(task2.getId().toString());
+			t2.setProjectStatus(task3.getProjectStatus());
+			pushOrderDun(t2,task3);
+		}
 		
 		if (task2.getSuperId()!=null) {//是否有父项目
 			TOrderTask task3 =tOrderTaskMapper.selectBySuperId(task2.getSuperId());
@@ -587,7 +616,7 @@ public class OrderProjectServiceImpl extends BaseMybatisDao<TOrderTaskMapper> im
     				case "订单部门": o = ob.getDepName(); break;
     				case "订单负责人": o = ob.getSalesmanName(); break;
     				case "项目类别": o =ob.getCname(); break;
-    				case "项目编号": o = ob.getId(); break;
+    				case "项目编号": o = ob.getId().toString(); break;
     				case "项目名称": o = ob.getTaskName(); break;
     				case  "是否外包": o = ob.getOutsource()==1?"是":"否"; break;
     				case "项目负责人": o = ob.getReceiverName(); break;