Explorar o código

变更开发

Signed-off-by: anderx <312518615@qq.com>
anderx %!s(int64=6) %!d(string=hai) anos
pai
achega
5e5334a8db

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

@@ -108,6 +108,5 @@ public interface TOrderTaskMapper {
 
 	List<String> listNameByDepAndName(@Param("orderNo")String orderNo, @Param("type")Integer type);
 
-	
 
 }

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

@@ -758,6 +758,9 @@ select
 	<if test="complete ==3">
 	 and   a.status = 2
 	</if>
+	<if test="complete ==4">
+	 and   a.status = 4
+	</if>
 	order by a.create_time desc
 	<if test="page_sql != null">
 			${page_sql}
@@ -843,9 +846,12 @@ select
 	<if test="complete ==2 and processState == 8">
 	 and a.process_state = 8  and  (a.status = 4 or a.status = 2)
 	</if>
-		<if test="complete ==3">
+	<if test="complete ==3">
 	 and   a.status = 2
 	</if>
+	<if test="complete ==4">
+	 and   a.status = 4
+	</if>
 	</select>
 	<update id="addRefundInvoice" >
 	update  new_order_change

+ 6 - 4
src/main/java/com/goafanti/common/mapper/TChanggeDunMapper.xml

@@ -461,9 +461,11 @@
   </insert>
   
   <select id="selectByCid" resultType="com.goafanti.order.bo.TChanggeDunOut">
-      select a.id,a.order_no orderNo, a.tid, a.project_type projectType, a.dun_type dunType, a.wait_day waitDay, b.set_up_amount setUpAmount,
-  a.effective_count effectiveCount, a.aid, a.create_time createTime ,b.commodity_name commodityName,a.money,a.status,
-  a.appropriation_ratio appropriationRatio from t_changge_dun a left join t_order_task b on a.tid=b.id 
-    where cid= #{id}
+  select a.id,a.order_no orderNo, a.tid, a.project_type projectType, a.dun_type dunType, a.wait_day waitDay, 
+  	  b.set_up_amount setUpAmount, a.effective_count effectiveCount, a.aid, a.create_time createTime ,
+  	  ifnull(c.commodity_name,d.commodity_name) commodityName,a.money,a.status, a.appropriation_ratio appropriationRatio
+  	  from t_changge_dun a left join t_order_task b on a.tid=b.id left join t_changge_task c on a.tid=c.tid 
+  	  left join t_changge_task d on a.tid=d.id
+    	where a.cid= #{id}
   </select>
 </mapper>

+ 4 - 1
src/main/java/com/goafanti/common/mapper/TOrderTaskMapper.xml

@@ -246,12 +246,15 @@
       #{consultantId,jdbcType=VARCHAR}, #{managerId,jdbcType=VARCHAR}, #{attachmentUrl,jdbcType=LONGVARCHAR}
       )
   </insert>
-  <insert id="insertSelective" parameterType="com.goafanti.common.model.TOrderTask">
+  <insert id="insertSelective" parameterType="com.goafanti.common.model.TOrderTask" >
     <!--
       WARNING - @mbg.generated
       This element is automatically generated by MyBatis Generator, do not modify.
       This element was generated on Wed Nov 20 10:18:39 CST 2019.
     -->
+    <selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">
+      select LAST_INSERT_ID() as id
+      </selectKey>
     insert into t_order_task
     <trim prefix="(" suffix=")" suffixOverrides=",">
       <if test="id != null">

+ 45 - 0
src/main/java/com/goafanti/order/bo/TChanggeDunOut.java

@@ -1,11 +1,18 @@
 package com.goafanti.order.bo;
 
+import java.math.BigDecimal;
+import java.util.Calendar;
+
+import com.goafanti.common.constant.AFTConstants;
 import com.goafanti.common.model.TChanggeDun;
+import com.goafanti.common.utils.DateUtils;
 import com.goafanti.order.enums.NewOrderDunType;
 
 public class TChanggeDunOut extends TChanggeDun{
 	private String dunTypeName;
 	private String commodityName;
+	private String startDate;
+	private BigDecimal setUpAmount;
 	public String getDunTypeName() {
 		if(super.getDunType()!=null&&super.getProjectType()!=null) {
 			return NewOrderDunType.getValueByCode(Integer.valueOf(""+super.getProjectType()+super.getDunType()));
@@ -18,4 +25,42 @@ public class TChanggeDunOut extends TChanggeDun{
 	public void setCommodityName(String commodityName) {
 		this.commodityName = commodityName;
 	}
+	public String getStartDate() {
+		//会员显示到期时间
+		if(super.getCreateTime()!=null&&super.getEffectiveCount()!=null) {
+			Calendar calendar=Calendar.getInstance();   
+	  		calendar.setTime(super.getCreateTime());
+	  		calendar.add(Calendar.DATE, super.getEffectiveCount()*180);
+	  		return DateUtils.formatDate(calendar.getTime(), AFTConstants.YYYYMMDD);
+		}
+		//财税显示催款时间 大于9则年份+2,小于10年份+1
+		if (super.getDunType()==2&&super.getProjectType()==5) {
+			Calendar calendar=Calendar.getInstance();   
+	  		calendar.setTime(super.getCreateTime());
+	  		int year = calendar.get(Calendar.YEAR);  
+		        //获取月份,0表示1月份
+		        int month = calendar.get(Calendar.MONTH) + 1;
+		        if(month<10)year=year+1;
+		        if(month>9)year=year+2;
+		        calendar.set(year, 5, 1);
+		        return DateUtils.formatDate(calendar.getTime(), AFTConstants.YYYYMMDD);
+		}
+		return startDate;
+	}
+	public BigDecimal getMoney() {
+		if(getDunType()!=null&&getProjectType()!=null){
+			if(Integer.valueOf(""+getProjectType()+getDunType())==33&&
+					super.getMoney()==null&&
+					super.getAppropriationRatio()!=null&&getSetUpAmount()!=null) {
+				return super.getAppropriationRatio().multiply(getSetUpAmount());
+			}
+		}
+		return super.getMoney();
+	}
+	public BigDecimal getSetUpAmount() {
+		return setUpAmount;
+	}
+	public void setSetUpAmount(BigDecimal setUpAmount) {
+		this.setUpAmount = setUpAmount;
+	}
 }

+ 97 - 16
src/main/java/com/goafanti/order/service/impl/OrderChangeServiceImpl.java

@@ -3,6 +3,7 @@ package com.goafanti.order.service.impl;
 import java.io.IOException;
 import java.io.OutputStream;
 import java.math.BigDecimal;
+import java.sql.ResultSet;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Date;
@@ -12,6 +13,7 @@ import java.util.Map;
 import java.util.UUID;
 
 import javax.servlet.http.HttpServletResponse;
+import javax.swing.text.html.parser.Entity;
 
 import org.apache.poi.xssf.usermodel.XSSFCell;
 import org.apache.poi.xssf.usermodel.XSSFRow;
@@ -47,8 +49,10 @@ import com.goafanti.common.model.TChanggeDun;
 import com.goafanti.common.model.TChanggeTask;
 import com.goafanti.common.model.TOrderDun;
 import com.goafanti.common.model.TOrderNew;
+import com.goafanti.common.model.TOrderTask;
 import com.goafanti.common.model.Admin;
 import com.goafanti.common.model.NewOrderChange;
+import com.goafanti.common.model.NewOrderDun;
 import com.goafanti.common.utils.ExportExcelUtil;
 import com.goafanti.common.utils.StringUtils;
 import com.goafanti.core.mybatis.BaseMybatisDao;
@@ -381,7 +385,10 @@ public class OrderChangeServiceImpl extends BaseMybatisDao<NewOrderChangeMapper>
 		
 	}
 	
-	private void changgeAdopt(NewOrderChangeBo nb) {
+	/**
+	 * 变更完成复制出原订单镜像
+	 */
+	private void changeAdopt(NewOrderChangeBo nb) {
 		TOrderNew t1=tOrderNewMapper.selectByPrimaryKey(nb.getOrderNo());
 		List<TOrderDun> td1=tOrderDunMapper.selectByOrderNo(nb.getOrderNo());
 		List<OutNewOrderDunBo> td2=newOrderDunMapper.selectListNewOrderDun(nb.getOrderNo(), null, null);
@@ -414,22 +421,9 @@ public class OrderChangeServiceImpl extends BaseMybatisDao<NewOrderChangeMapper>
 		nb.setStatus(4);
 		//将订单恢复正常
 		TOrderNew orderNew =new TOrderNew();
-		TOrderNew additionalOrder =new TOrderNew();
-		String additionalOrderNo;
 		orderNew.setOrderNo(nb.getOrderNo());
 		orderNew.setDeleteSign(3);//设置为变更中
 		orderNew.setPrimaryOrder(newOrderNo);
-		if (nb.getType()==4||nb.getType()==5) {//重报或者赠送
-			additionalOrderNo=idGenerator.generateId().toString();
-			orderNew.setAdditionalOrder(additionalOrderNo);
-			additionalOrder.setOrderNo(additionalOrderNo);
-			additionalOrder.setCreater(TokenManager.getAdminId());
-			additionalOrder.setContractNo(t1.getContractNo());
-			additionalOrder.setSalesmanId(t1.getSalesmanId());
-			additionalOrder.setOrderType(t1.getOrderType());
-			additionalOrder.setBuyerId(t1.getBuyerId());	
-			tOrderNewMapper.insertSelective(additionalOrder);
-		}
 		tOrderNewMapper.updateByPrimaryKeySelective(orderNew);
 		
 	}
@@ -517,14 +511,101 @@ public class OrderChangeServiceImpl extends BaseMybatisDao<NewOrderChangeMapper>
 	}
 	@Override
 	public int pushCompleteOrderChange(NewOrderChangeBo nb) {
-		changgeAdopt(nb);
+		changeAdopt(nb);
+		TOrderNew o=pushChange(nb);
 		List<String> alist = new ArrayList<>();
-		TOrderNew o=tOrderNewMapper.selectByPrimaryKey(nb.getOrderNo());
 		alist.add(o.getSalesmanId());
 		newOrderChangeMapper.updateByPrimaryKeySelective(nb);
 		orderNewService.pushGeneralSendNoticeAndEmail(alist,NoticeStatus.ORDER_CHANGE_END.getCode(), o.getOrderNo(), TokenManager.getAdminId(),0);
 		return 1;
 	}
+	/**
+	 * 修改订单数据
+	 * @param nb
+	 */
+	private TOrderNew pushChange(NewOrderChangeBo nb) {
+		TOrderNew o=tOrderNewMapper.selectByPrimaryKey(nb.getOrderNo());
+		NewOrderChangeBo nob=newOrderChangeMapper.selectById(nb.getId());
+//		变更类型 0退单退款 1项目及金额变更 2仅项目变更 3仅金额变更 4重报 5赠送
+		//退单退款不需改变内容
+		if (nob.getType()==OrderChangeType.XMJJEBG.getCode()) {
+			o.setTotalAmount(nob.getTotalAmount());
+			//处理项目及催款
+			pushTaskAndDun(nob.getId(),nob.getOrderNo());
+		}else if (nob.getType()==OrderChangeType.JXMBG.getCode()) {
+			pushTaskAndDun(nob.getId(),nob.getOrderNo());
+		}else if (nob.getType()==OrderChangeType.JJEBG.getCode()) {
+			o.setTotalAmount(nob.getTotalAmount());
+		}else if (nob.getType()==OrderChangeType.CB.getCode()||nob.getType()==OrderChangeType.ZC.getCode()) {
+			pushTaskAndDun(nob.getId(),nob.getOrderNo());
+		}
+		tOrderNewMapper.updateByPrimaryKeySelective(o);
+		return o; 
+	}
+
+	private void pushTaskAndDun(Integer id,String orderNo) {
+		List<TOrderTaskBo> listot=tOrderTaskMapper.selectOrderTask(orderNo);
+		List<TChanggeTaskOut> listct=tChanggeTaskMapper.selectByCid(id);
+		for (TOrderTaskBo ot : listot) {
+			boolean flag=true;
+			for (TChanggeTaskOut ct : listct) {
+				if (ot.getId()==ct.getTid()) {
+					flag=false;
+				}
+				if (!flag) continue;
+			}
+			if(flag)tOrderTaskMapper.deleteByPrimaryKey(ot.getId());
+		}
+		for (TChanggeTaskOut cd : listct) {
+			if (cd.getTid()==null) {
+			TOrderTask ot=new TOrderTask();
+			ot.setOrderNo(cd.getOrderNo());
+			ot.setCommodityId(cd.getCommodityId());
+			ot.setOrderNo(cd.getOrderNo());
+			ot.setCommodityName(cd.getCommodityName());
+			ot.setCommodityPrice(cd.getCommodityPrice());
+			ot.setCommodityQuantity(cd.getCommodityQuantity());
+			ot.setTaskComment(cd.getTaskComment());
+			ot.setMain(cd.getMain());
+			ot.setTaskStatus(0);
+			tOrderTaskMapper.insertSelective(ot);
+			cd.setTid(ot.getId());
+			tChanggeTaskMapper.updateByPrimaryKeySelective(cd);
+			}
+		}
+		List<TChanggeDunOut> listcd=tChanggeDunMapper.selectByCid(id);new ArrayList<>();
+		List<OutNewOrderDunBo> listDun=newOrderDunMapper.selectListNewOrderDun(orderNo,null,null);
+		for (OutNewOrderDunBo nb2 : listDun) {
+			boolean flag=true;
+			for (TChanggeDunOut cd2 : listcd) {
+				if (nb2.getId()==cd2.getDid()) {
+					flag=false;
+				}
+				if (!flag) continue;
+			}
+			if(flag)newOrderDunMapper.deleteByPrimaryKey(nb2.getId());
+		}
+		for (TChanggeDunOut cd : listcd) {
+			if (cd.getDid()==null) {
+			NewOrderDun nd=new NewOrderDun();
+			nd.setOrderNo(cd.getOrderNo());
+			nd.setAid(cd.getAid());
+			nd.setAppropriationRatio(cd.getAppropriationRatio());
+			nd.setTid(cd.getTid());
+			nd.setProjectType(cd.getProjectType());
+			nd.setDunType(cd.getDunType());
+			nd.setMoney(cd.getMoney());
+			nd.setWaitDay(cd.getWaitDay());
+			nd.setStartTime(cd.getStartTime());
+			nd.setEffectiveCount(cd.getEffectiveCount());
+			newOrderDunMapper.insertSelective(nd);
+			}
+		}
+		
+
+		
+	}
+
 	@Override
 	public Map<String, Object> listOrderInvoiceAndBill(String orderNo) {
 		Map<String, Object> map=new HashMap<>();