Browse Source

订单变更修改

anderx 3 years ago
parent
commit
a9b34f31fb

+ 2 - 0
src/main/java/com/goafanti/common/dao/TOrderTaskMapper.java

@@ -68,4 +68,6 @@ public interface TOrderTaskMapper {
 
 
     List<TChangeTask> selectByAid(String aid);
+
+    Integer getSplitCount(Integer tid);
 }

+ 17 - 10
src/main/java/com/goafanti/common/mapper/TOrderTaskMapper.xml

@@ -1193,17 +1193,20 @@
   </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,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,a.split_id splitId,a.patent_type  patentType
+    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,a.split_id splitId,a.patent_type  patentType,
+            ttm.service_life serviceLife,ttm.service_year serviceYear ,ttm.year_sum yearSum ,ttm.contract_term contractTerm
     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
-                        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 user f on e.buyer_id=f.id
-                        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 left join admin ad on ad.id=a.split_aid where  e.order_status not in (5,7)
-                                                                                                                                                                                                                                                                                               and split_status =2 and a.split_super= #{tid} order by split_id
+    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 user f on e.buyer_id=f.id
+    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 left join admin ad on ad.id=a.split_aid left join t_task_member ttm on a.id=ttm.tid
+    where  e.order_status  in (0,1,2,3,4)
+    and split_status =2 and a.split_super= #{tid} order by split_id
   </select>
   <select id="selectByidGetCname" resultType="java.lang.String">
     select b.cname from business_project a left join business_category b on a.cid =b.id
@@ -1904,6 +1907,10 @@
     where b.id is not null and  noc.process_state &lt; 4 and noc.status in (0,1,2)
     and a.task_receiver = #{aid}
   </select>
+  <select id="getSplitCount" resultType="java.lang.Integer">
+    select count(*) from t_order_task
+    where split_super = #{tid}
+  </select>
 
 
 </mapper>

+ 11 - 0
src/main/java/com/goafanti/common/utils/AsyncUtils.java

@@ -4,6 +4,7 @@ import java.io.UnsupportedEncodingException;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
+import java.util.UUID;
 
 import javax.mail.MessagingException;
 
@@ -64,6 +65,16 @@ public class AsyncUtils {
 		noticeMapper.insertSelective(n);
 	}
 
+	public void addNotic(Integer type, String  aid,String str) {
+		Notice n =new Notice();
+		n.setId(UUID.randomUUID().toString());
+		n.setAid(aid);
+		n.setNoticeType(type);
+		n.setContent(str);
+		n.setReaded(0);//未读
+		addNotice(n);
+	}
+
 	public void addNoticAndEmail(Notice n) {
 		n.setType(NoticeTypes.getType(n.getNoticeType()));
 		AdminListBo a = adminMapper.getDeptNameByAid(n.getAid());

+ 12 - 0
src/main/java/com/goafanti/order/bo/TOrderTaskBo.java

@@ -1,6 +1,7 @@
 package com.goafanti.order.bo;
 
 import java.math.BigDecimal;
+import java.util.List;
 
 import com.goafanti.common.model.TOrderTask;
 import com.goafanti.common.utils.excel.Excel;
@@ -49,6 +50,17 @@ public class TOrderTaskBo extends TOrderTask{
 	private String contractTerm;
 	private Integer	yearSum;
 
+	private List<TOrderTaskListBo> splitList;
+
+
+	public List<TOrderTaskListBo> getSplitList() {
+		return splitList;
+	}
+
+	public void setSplitList(List<TOrderTaskListBo> splitList) {
+		this.splitList = splitList;
+	}
+
 	public String getContractTerm() {
 		return contractTerm;
 	}

+ 53 - 0
src/main/java/com/goafanti/order/bo/TOrderTaskListBo.java

@@ -1,6 +1,7 @@
 package com.goafanti.order.bo;
 
 import java.math.BigDecimal;
+import java.util.Date;
 import java.util.List;
 
 
@@ -73,6 +74,58 @@ public class TOrderTaskListBo {
 	@Excel(name = "专利分类",readConverterExp = "0=申请,1=变更,2=复审,3=优先权,4=恢复请求权,5=无效宣告请求费,6=强制许可请求费,7=强制许可使用裁决请求费,8=登录、印刷费、印花税")
 	private Integer patentType;
 
+	/**
+	 * 服务年限
+	 */
+	private String serviceLife;
+
+	/**
+	 * 本次年份
+	 */
+	private String serviceYear;
+
+	/**
+	 * 服务年限计数
+	 */
+	private Integer yearSum;
+
+	/**
+	 * 合同期限
+	 */
+	private String contractTerm;
+
+	public String getServiceLife() {
+		return serviceLife;
+	}
+
+	public void setServiceLife(String serviceLife) {
+		this.serviceLife = serviceLife;
+	}
+
+	public String getServiceYear() {
+		return serviceYear;
+	}
+
+	public void setServiceYear(String serviceYear) {
+		this.serviceYear = serviceYear;
+	}
+
+	public Integer getYearSum() {
+		return yearSum;
+	}
+
+	public void setYearSum(Integer yearSum) {
+		this.yearSum = yearSum;
+	}
+
+	public String getContractTerm() {
+		return contractTerm;
+	}
+
+	public void setContractTerm(String contractTerm) {
+		this.contractTerm = contractTerm;
+	}
+
 	public Integer getPatentType() {
 		return patentType;
 	}

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

@@ -492,7 +492,7 @@ public class OrderProjectApiController extends CertifyApiController {
 	@RequestMapping(value = "/addMemberProject" ,method = RequestMethod.POST)
 	public Result addMemberProject(InputAddTask t){
 		Result res = new Result();
-		if(org.apache.commons.lang3.StringUtils.isBlank(t.getOrderNo())){
+		if(StringUtils.isBlank(t.getOrderNo())){
 			res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR,"","订单编号"));
 			return res;
 		}
@@ -578,4 +578,35 @@ public class OrderProjectApiController extends CertifyApiController {
 	}
 
 
+	/**
+	 * 新增会员子项目
+	 *
+	 * @return
+	 */
+	@RequestMapping(value = "/addMemberFirstSonProject" ,method = RequestMethod.POST)
+	public Result addMemberFirstSonProject(Integer tid,String serviceYear,String taskComment){
+		Result res = new Result();
+		if(tid==null||StringUtils.isBlank(serviceYear)||StringUtils.isBlank(taskComment)){
+			res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR,"","订单编号"));
+			return res;
+		}
+		return res.data(orderProjectService.addMemberSonProject( tid, serviceYear, taskComment,null));
+
+	}
+	/**
+	 * 新增会员子项目
+	 *
+	 * @return
+	 */
+	@RequestMapping(value = "/addMemberSonProject" ,method = RequestMethod.POST)
+	public Result addMemberSonProject(Integer tid,String serviceYear,String taskComment,Integer memberType){
+		Result res = new Result();
+		if(tid==null||StringUtils.isBlank(serviceYear)||StringUtils.isBlank(taskComment)){
+			res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR,"","订单编号"));
+			return res;
+		}
+		return res.data(orderProjectService.addMemberSonProject( tid, serviceYear, taskComment,memberType));
+
+	}
+
 }

+ 1 - 8
src/main/java/com/goafanti/order/service/OrderNewService.java

@@ -208,14 +208,7 @@ public interface OrderNewService {
 	 */
 	void addNotic(Integer type,  TOrderNewBo b,String str);
 
-	/**
-	 *
-	 * @param type 消息类型
-	 * @param b  订单信息
-	 * @param shiroType  0财务 1特批
-	 * @param  result 0审核 1通过
-	 */
-	void addNoticMember(Integer type,  TOrderNewBo b,Integer shiroType,Integer result);
+
 	Pagination<TOrderNewBo> statisticsOrderList(InputStatisticsOrderList in);
 
 	int updateSalesType(TOrderNew in);

+ 19 - 0
src/main/java/com/goafanti/order/service/OrderProjectService.java

@@ -95,4 +95,23 @@ public interface OrderProjectService {
 	void addMemberLog(Integer id,Integer status ,String remarks);
 
 	List<MemberLogBo> memberLog(Integer id);
+
+	/**
+	 *
+	 * @param tid
+	 * @param serviceYear
+	 * @param taskComment
+	 * @param type 0首次新增 1会员新增
+	 * @return
+	 */
+    int addMemberSonProject(Integer tid, String serviceYear, String taskComment,Integer type);
+
+	/**
+	 *
+	 * @param type 消息类型
+	 * @param b  订单信息
+	 * @param shiroType  0财务 1特批
+	 * @param  result 0审核 1通过
+	 */
+	void addNoticMember(Integer type,  TOrderNewBo b,Integer shiroType,Integer result);
 }

+ 11 - 108
src/main/java/com/goafanti/order/service/impl/OrderNewServiceImpl.java

@@ -238,7 +238,7 @@ public class OrderNewServiceImpl extends BaseMybatisDao<TOrderNewMapper> impleme
 		TOrderNewBo tn = tOrderNewMapper.getSaleIdByOno(t.getOrderNo());
 		addOrderTask(t);
 		orderProjectService.addMemberLog(t.getId(),0,"新增会员项目");
-		addNoticMember(NoticeStatus.MENBER_START.getCode(),tn,null,0);
+		orderProjectService.addNoticMember(NoticeStatus.MENBER_START.getCode(),tn,null,0);
 		return 1;
 	}
 
@@ -358,6 +358,11 @@ public class OrderNewServiceImpl extends BaseMybatisDao<TOrderNewMapper> impleme
 				if(t.getPatentType()!=null) {
 					t.setPatentTypeName(OfficialPatentType.getValueByCode(t.getPatentType()));
 				}
+				//如果有拆分获取拆分数据
+				if (t.getSplitStatus()==1){
+					List<TOrderTaskListBo> l=orderProjectService.splitProjectList(t.getId());
+					t.setSplitList(l);
+				}
 		}
 		return list;
 	}
@@ -1421,120 +1426,18 @@ public class OrderNewServiceImpl extends BaseMybatisDao<TOrderNewMapper> impleme
 			sb=sb.append(str);
 		}
 
-		addNotic(type,aid,sb.toString());
+		asyncUtils.addNotic(type,aid,sb.toString());
 	}
 
-	@Override
-	public void addNoticMember(Integer type,  TOrderNewBo b,Integer shiroType,Integer result) {
-		StringBuffer sb=new StringBuffer();
-		String aid=null;
-		List<Admin>admins=new ArrayList<>();
-		sb.append("客户名称【").append(b.getUserName()).append("】,订单编号【").append(b.getOrderNo()).append("】,");
-		if (type.equals(NoticeStatus.MENBER_START.getCode())){
-			sb=sb.append("发起会员项目,请及时审核");
-			aid=b.getFinanceId();
-		}else if (type.equals(NoticeStatus.MENBER_YES.getCode())){
-			sb=sb.append("会员项目审核");
-			if(shiroType==0){
-				sb=sb.append("财务已通过。");
-				if (result==1) {
-					admins = MemberEnd(b);
-				}else{
-					admins=adminMapper.getAdminRoleList("总裁");
-				}
-			} else if(shiroType==1){
-				sb=sb.append("特批已通过。");
-				admins = MemberEnd(b);
-			}
-		}else if (type.equals(NoticeStatus.MENBER_NO.getCode())){
-			if(shiroType==0){
-				sb=sb.append("财务已驳回。");
-			} else if(shiroType==1){
-				sb=sb.append("特批已驳回。");
-			}
-			aid=b.getSalesmanId();
-		}
-		if (admins!=null&&admins.size()>0){
-			for (Admin admin : admins) {
-				addNotic(type,admin.getId(),sb.toString());
-				sendMemberEmail(type,admin.getId(),sb.toString());
-			}
-		}else {
-			addNotic(type,aid,sb.toString());
-			sendMemberEmail(type,aid,sb.toString());
-		}
-	}
 
-	/**
-	 * 会员项目完成审核调用
-	 * @param b
-	 * @return
-	 */
-	private List<Admin> MemberEnd(TOrderNewBo b) {
-		List<Admin> admins;
-		admins=adminMapper.getAdminRoleList("咨询师管理员");
-		Admin admin = new Admin();
-		admin.setId(b.getSalesmanId());
-		admins.add(admin);
-		pushTOrderNew(b);
-		return admins;
-	}
 
-	/**
-	 * 新建完成会员项目修改订单状态
-	 * @param b
-	 */
-	private void pushTOrderNew(TOrderNewBo b) {
-		List<TOrderTaskBo> l = tOrderTaskMapper.selectOrderTask(b.getOrderNo(), 0);
-		int counts =l.size();
-		int x=0;
-		for (TOrderTaskBo t : l) {
-			if (t.getTaskStatus()>0) {
-				x++;
-			}
-		}
-		TOrderNew n = new TOrderNew();
-		n.setOrderNo(b.getOrderNo());
-		if (x==0) {
-			n.setProcessStatus(4);
-		} else if(x<counts) {
-			n.setProcessStatus(5);
-		} else if(x==counts) {
-			n.setProcessStatus(6);
-		}
-		tOrderNewMapper.updateByPrimaryKeySelective(n);
-	}
 
-	/**
-	 * 发送邮件使用
-	 * @param type
-	 * @param aid
-	 * @param content
-	 */
-	private void sendMemberEmail(Integer type,String aid,String content) {
-		Admin admin = adminMapper.selectByPrimaryKey(aid);
-		EmailBo bo = new EmailBo(NoticeStatus.getValueByCode(type), admin.getEmail(),content);
-		if(StringUtils.isNotBlank(admin.getEmail())) {
-			asyncUtils.send(bo);
-		}
-	}
 
 
-	/**
-	 *
-	 * @param type 通知类型
-	 * @param aid 被通知人
-	 * @param str 信息
-	 */
-	public void addNotic(Integer type, String  aid,String str) {
-		Notice n =new Notice();
-		n.setId(UUID.randomUUID().toString());
-		n.setAid(aid);
-		n.setNoticeType(type);
-		n.setContent(str);
-		n.setReaded(0);//未读
-		asyncUtils.addNotice(n);
-	}
+
+
+
+
 
 
 

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

@@ -114,6 +114,8 @@ public class OrderProjectServiceImpl extends BaseMybatisDao<TOrderTaskMapper> im
 	private UserMidMapper userMidMapper;
 	@Autowired
 	private AsyncUtils	asyncUtils;
+	@Autowired
+	private TTaskMemberMapper tTaskMemberMapper;
 	@Value(value = "${upload.path}")
 	private String 					uploadPath 			= null;
 
@@ -1166,7 +1168,7 @@ public class OrderProjectServiceImpl extends BaseMybatisDao<TOrderTaskMapper> im
 			nt.setProcessStatus(4);
 			notice=NoticeStatus.MENBER_NO.getCode();
 		}
-		orderNewService.addNoticMember(notice, ono, in.getType(),result);
+		addNoticMember(notice, ono, in.getType(),result);
 		addMemberLog(in.getId(),status,in.getRemarks());
 		return tOrderTaskMapper.updateByPrimaryKeySelective(nt);
 	}
@@ -1180,7 +1182,7 @@ public class OrderProjectServiceImpl extends BaseMybatisDao<TOrderTaskMapper> im
 		addMemberLog(t.getId(),0,"修改重新发起");
 		t.setProcessStatus(1);
 		TOrderNewBo ono = tOrderNewMapper.getSaleIdByOno(task.getOrderNo());
-		orderNewService.addNoticMember(NoticeStatus.MENBER_START.getCode(), ono, null,0);
+		addNoticMember(NoticeStatus.MENBER_START.getCode(), ono, null,0);
 		return orderNewService.updateOrderTask(t);
 	}
 	@Override
@@ -1198,5 +1200,138 @@ public class OrderProjectServiceImpl extends BaseMybatisDao<TOrderTaskMapper> im
 		return memberLogMapper.memberLog(id);
 	}
 
+	@Override
+	public int addMemberSonProject(Integer tid, String serviceYear, String taskComment,Integer memberType) {
+		Date date =new Date();
+		TOrderTask tOrderTask = tOrderTaskMapper.selectByPrimaryKey(tid);
+		tOrderTask.setSplitStatus(1);
+		tOrderTask.setSplitAid(TokenManager.getAdminId());
+		tOrderTask.setSplitTime(date);
+		tOrderTaskMapper.updateByPrimaryKey(tOrderTask);
+		tOrderTask.setId(null);
+		tOrderTask.setSplitStatus(2);
+		tOrderTask.setSplitSuper(tid);
+		if (memberType!=null){
+			tOrderTask.setProcessStatus(1);
+			tOrderTask.setMemberType(memberType);
+		}
+		Integer i=tOrderTaskMapper.getSplitCount(tid);
+		i++;
+		tOrderTask.setSplitId(i);
+		tOrderTaskMapper.insertSelective(tOrderTask);
+		TTaskMember t = tTaskMemberMapper.selectByTid(tid);
+		if (t.getServiceLife()!=null||t.getServiceYear()!=null||t.getYearSum()!=null||t.getContractTerm()!=null){
+			TTaskMember ttm=new TTaskMember();
+			ttm.setTid(t.getId());
+			if(t.getServiceLife()!=null)ttm.setServiceLife(t.getServiceLife());
+			if(t.getServiceYear()!=null)ttm.setServiceYear(t.getServiceYear());
+			if(t.getYearSum()!=null)ttm.setYearSum(t.getYearSum());
+			if(t.getContractTerm()!=null)ttm.setContractTerm(t.getContractTerm());
+			tTaskMemberMapper.insertSelective(ttm);
+		}
+		addMemberLog(tOrderTask.getId(),0,"新增会员项目");
+		addNoticMember(NoticeStatus.MENBER_START.getCode(),tOrderTask.getOrderNo(),null,0);
+		return 1;
+	}
+	public void addNoticMember(Integer type,  String orderNo,Integer shiroType,Integer result) {
+		TOrderNewBo tn = tOrderNewMapper.getSaleIdByOno(orderNo);
+		addNoticMember(NoticeStatus.MENBER_START.getCode(),tn,null,0);
+	}
+
+	@Override
+	public void addNoticMember(Integer type,  TOrderNewBo b,Integer shiroType,Integer result) {
+		StringBuffer sb=new StringBuffer();
+		String aid=null;
+		List<Admin>admins=new ArrayList<>();
+		sb.append("客户名称【").append(b.getUserName()).append("】,订单编号【").append(b.getOrderNo()).append("】,");
+		if (type.equals(NoticeStatus.MENBER_START.getCode())){
+			sb=sb.append("发起会员项目,请及时审核");
+			aid=b.getFinanceId();
+		}else if (type.equals(NoticeStatus.MENBER_YES.getCode())){
+			sb=sb.append("会员项目审核");
+			if(shiroType==0){
+				sb=sb.append("财务已通过。");
+				if (result==1) {
+					admins = MemberEnd(b);
+				}else{
+					admins=adminMapper.getAdminRoleList("总裁");
+				}
+			} else if(shiroType==1){
+				sb=sb.append("特批已通过。");
+				admins = MemberEnd(b);
+			}
+		}else if (type.equals(NoticeStatus.MENBER_NO.getCode())){
+			if(shiroType==0){
+				sb=sb.append("财务已驳回。");
+			} else if(shiroType==1){
+				sb=sb.append("特批已驳回。");
+			}
+			aid=b.getSalesmanId();
+		}
+		if (admins!=null&&admins.size()>0){
+			for (Admin admin : admins) {
+				asyncUtils.addNotic(type,admin.getId(),sb.toString());
+				sendMemberEmail(type,admin.getId(),sb.toString());
+			}
+		}else {
+			asyncUtils.addNotic(type,aid,sb.toString());
+			sendMemberEmail(type,aid,sb.toString());
+		}
+	}
+
+	/**
+	 * 会员项目完成审核调用
+	 * @param b
+	 * @return
+	 */
+	private List<Admin> MemberEnd(TOrderNewBo b) {
+		List<Admin> admins;
+		admins=adminMapper.getAdminRoleList("咨询师管理员");
+		Admin admin = new Admin();
+		admin.setId(b.getSalesmanId());
+		admins.add(admin);
+		pushTOrderNew(b);
+		return admins;
+	}
+	/**
+	 * 新建完成会员项目修改订单状态
+	 * @param b
+	 */
+	private void pushTOrderNew(TOrderNewBo b) {
+		List<TOrderTaskBo> l = tOrderTaskMapper.selectOrderTask(b.getOrderNo(), 0);
+		int counts =l.size();
+		int x=0;
+		for (TOrderTaskBo t : l) {
+			if (t.getTaskStatus()>0) {
+				x++;
+			}
+		}
+		TOrderNew n = new TOrderNew();
+		n.setOrderNo(b.getOrderNo());
+		if (x==0) {
+			n.setProcessStatus(4);
+		} else if(x<counts) {
+			n.setProcessStatus(5);
+		} else if(x==counts) {
+			n.setProcessStatus(6);
+		}
+		tOrderNewMapper.updateByPrimaryKeySelective(n);
+	}
+
+	/**
+	 * 发送邮件使用
+	 * @param type
+	 * @param aid
+	 * @param content
+	 */
+	private void sendMemberEmail(Integer type,String aid,String content) {
+		Admin admin = adminMapper.selectByPrimaryKey(aid);
+		EmailBo bo = new EmailBo(NoticeStatus.getValueByCode(type), admin.getEmail(),content);
+		if(com.goafanti.common.utils.StringUtils.isNotBlank(admin.getEmail())) {
+			asyncUtils.send(bo);
+		}
+	}
+
+
 
 }