Browse Source

派单管理

wanghui 7 years ago
parent
commit
2b3849a27c

+ 12 - 0
src/main/java/com/goafanti/admin/controller/AdminSuperviserApiController.java

@@ -344,4 +344,16 @@ public class AdminSuperviserApiController extends CertifyApiController {
 		newAdminService.deleteById(id);
 		return res;
 	}
+	
+	/**
+	 * 查询下级或平级
+	 * @param subOrSame
+	 * @return
+	 */
+	@RequestMapping(value = "/selectAdminByOrg",method = RequestMethod.GET)
+	public Result selectAdminByOrg(){
+		Result res = new Result();
+		res.setData(newAdminService.selectAdminByOrg());
+		return res;
+	}
 }

+ 2 - 0
src/main/java/com/goafanti/admin/service/NewAdminService.java

@@ -64,5 +64,7 @@ public interface NewAdminService {
 	Admin selectAllByid(String id);	
 	
 	int deleteById(String id);
+
+	List<AdminListBo> selectAdminByOrg();
 	
 }

+ 5 - 0
src/main/java/com/goafanti/admin/service/impl/NewAdminServiceImpl.java

@@ -344,4 +344,9 @@ public class NewAdminServiceImpl extends BaseMybatisDao<AdminMapper> implements
 		return 1;
 	}
 
+	@Override
+	public List<AdminListBo> selectAdminByOrg() {
+		return adminMapper.selectSubList(TokenManager.getAdminId());
+	}
+
 }

+ 8 - 0
src/main/java/com/goafanti/common/dao/AdminMapper.java

@@ -4,6 +4,7 @@ import java.util.List;
 
 import org.apache.ibatis.annotations.Param;
 
+import com.goafanti.admin.bo.AdminListBo;
 import com.goafanti.app.bo.AppAdminListBo;
 import com.goafanti.common.model.Admin;
 import com.goafanti.common.model.Role;
@@ -91,5 +92,12 @@ public interface AdminMapper {
 	int updateByUserNo(Admin record);
 	
 	List<String>selectIdBySuperiorId(String superiorId);
+	
+	/**
+	 * 查询下级人员
+	 * @param adminId
+	 * @return
+	 */
+	List<AdminListBo> selectSubList(@Param("adminId")String adminId);
 
 }

+ 25 - 1
src/main/java/com/goafanti/common/mapper/AdminMapper.xml

@@ -575,5 +575,29 @@
 	from admin
 	where
 	superior_id=#{superiorId,jdbcType=VARCHAR}
-  </select>
+  </select>
+  
+  <select id="selectSubList" parameterType="java.lang.String" resultType="com.goafanti.admin.bo.AdminListBo">
+	select
+		a.id,
+		a.user_no as userNo,
+		a.mobile,
+		a.name,
+		a.position,
+		b.name as departmentName
+	from
+		admin a left join department_management b on
+		a.department_id = b.id
+	where
+		a.department_id =(
+			select
+				department_id
+			from
+				admin
+			where
+				id = #{adminId,jdbcType=VARCHAR}
+		)
+	and a.id <![CDATA[ <> ]]> #{adminId,jdbcType=VARCHAR}
+  </select>
+  
 </mapper>

+ 3 - 2
src/main/java/com/goafanti/common/mapper/TOrderChangeMapper.xml

@@ -318,10 +318,11 @@
   
   <select id="selectOrderChange" parameterType="java.lang.String" resultType="com.goafanti.order.bo.OrderChangeBo">
 	 select
-		a.id,
+		a.id as changeId,
 		a.order_no as orderNo,
 		date_format( a.create_time, '%Y-%m-%d %H:%i:%S' ) as createTime,
-		a.change_comment,
+		a.change_comment as changeComment,
+		a.change_status as changeStatus,
 		b.name as creater
 	from
 		t_order_change a left join admin b on

+ 2 - 1
src/main/java/com/goafanti/common/mapper/TOrderMapper.xml

@@ -1228,7 +1228,8 @@
 			e.name as technicianName,
 			a.delete_sign as deleteSign,
 			a.contract_no as contractNo,
-			f.cname as projectType
+			f.cname as projectType,
+			a.change_status as changeStatus
 		from
 			t_order a left join user b on
 			a.buyer_id = b.id left join admin c on

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

@@ -683,9 +683,9 @@
 	  		 select
 				a.id,
 				a.serial_number as serialNumber,
-				a.sign_date as signDate,
+				date_format(a.sign_date,'%Y-%m-%d %H:%i:%S') as signDate,
 				a.sign_comment as signComment,
-				a.complete_date as completeDate,
+				date_format(a.complete_date,'%Y-%m-%d %H:%i:%S') as completeDate,
 				a.complete_comment as completeComment,
 				a.uid,
 				a.status as projectStatus,
@@ -708,9 +708,9 @@
 	  		 select
 				a.id,
 				a.serial_number as serialNumber,
-				a.sign_date as signDate,
+				date_format(a.sign_date,'%Y-%m-%d %H:%i:%S') as signDate,
 				a.sign_comment as signComment,
-				a.complete_date as completeDate,
+				date_format(a.complete_date,'%Y-%m-%d %H:%i:%S') as completeDate,
 				a.complete_comment as completeComment,
 				a.uid,
 				a.status as projectStatus,

+ 18 - 0
src/main/java/com/goafanti/order/bo/OrderChangeBo.java

@@ -1,6 +1,10 @@
 package com.goafanti.order.bo;
 
 public class OrderChangeBo {
+	/** 变更ID **/
+	private String changeId;
+	/** 变更状态 **/
+	private Integer changeStatus;
 	/** 创建人 **/
 	private String creater;
 	/** 创建时间 **/
@@ -9,6 +13,20 @@ public class OrderChangeBo {
 	private String orderNo;
 	/** 变更说明 **/
 	private String changeComment;
+	
+	public String getChangeId() {
+		return changeId;
+	}
+	public void setChangeId(String changeId) {
+		this.changeId = changeId;
+	}
+	
+	public Integer getChangeStatus() {
+		return changeStatus;
+	}
+	public void setChangeStatus(Integer changeStatus) {
+		this.changeStatus = changeStatus;
+	}
 	public String getCreater() {
 		return creater;
 	}

+ 8 - 0
src/main/java/com/goafanti/order/bo/OrderListBo.java

@@ -52,6 +52,8 @@ public class OrderListBo {
 	private String buyerId;
 	/** 卖方 **/
 	private String sellerId;
+	/** 变更状态 **/
+	private Integer changeStatus;
 	/** 可操作状态 **/
 	private OperatorActive active;
 	public String getOrderNo() {
@@ -192,6 +194,12 @@ public class OrderListBo {
 	public void setSellerId(String sellerId) {
 		this.sellerId = sellerId;
 	}
+	public Integer getChangeStatus() {
+		return changeStatus;
+	}
+	public void setChangeStatus(Integer changeStatus) {
+		this.changeStatus = changeStatus;
+	}
 	public OperatorActive getActive() {
 		return active;
 	}

+ 0 - 8
src/main/java/com/goafanti/order/bo/ServiceOrderDetailBo.java

@@ -27,8 +27,6 @@ public class ServiceOrderDetailBo extends OrderListBo{
 	private String technicianId;
 	/** 合同编号 **/
 	private String contractNo;
-	/** 可操作内容 **/
-	private OperatorActive operatorActive;
 	public String getSignTime() {
 		return signTime;
 	}
@@ -107,10 +105,4 @@ public class ServiceOrderDetailBo extends OrderListBo{
 	public void setContractNo(String contractNo) {
 		this.contractNo = contractNo;
 	}
-	public OperatorActive getOperatorActive() {
-		return operatorActive;
-	}
-	public void setOperatorActive(OperatorActive operatorActive) {
-		this.operatorActive = operatorActive;
-	}
 }

+ 19 - 1
src/main/java/com/goafanti/order/controller/AdminOrderApiController.java

@@ -520,6 +520,23 @@ public class AdminOrderApiController extends CertifyApiController {
 	}
 	
 	/**
+	 * 订单退款(测试用)
+	 * @param orderNo
+	 * @param refundAmount
+	 * @return
+	 */
+	@RequestMapping(value = "/testRefund",method = RequestMethod.POST)
+	public Result testRefund(String orderNo,String refundAmount){
+		Result res = new Result();
+		if(StringUtils.isBlank(orderNo) || StringUtils.isBlank(refundAmount)){
+			res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR,"","订单编号和退款金额"));
+			return res;
+		}
+		orderServiceImpl.updateRefundForTest(orderNo, refundAmount);
+		return res;
+	}
+	
+	/**
 	 * 派单
 	 * @param orderNo
 	 * @param financeId
@@ -618,7 +635,7 @@ public class AdminOrderApiController extends CertifyApiController {
 	 * @param changeComment
 	 * @return
 	 */
-	@RequestMapping(value = "/addOrderChange",method = RequestMethod.GET)
+	@RequestMapping(value = "/addOrderChange",method = RequestMethod.POST)
 	public Result addOrderChange(String orderNo,String changeComment){
 		Result res = new Result();
 		if(StringUtils.isBlank(orderNo)){
@@ -671,6 +688,7 @@ public class AdminOrderApiController extends CertifyApiController {
 	 * @param changeStatus
 	 * @return
 	 */
+	@RequestMapping(value = "/updateOrderChange",method = RequestMethod.POST)
 	public Result updateOrderChange(String changeId,String changeComment,Integer changeStatus){
 		Result res = new Result();
 		if(StringUtils.isBlank(changeId)){

+ 1 - 1
src/main/java/com/goafanti/order/enums/LiquidationState.java

@@ -13,7 +13,7 @@ public enum LiquidationState {
 	/** 退款待确认 **/
 	WAIT_FOR_REFUND_CONFIRM(3,"退款待确认"),
 	/** 退款已同意 **/
-	AGREE_REFUND(4,"同意退款"),
+	AGREE_REFUND(4,"退款"),
 	/** 退款已拒绝 **/
 	REFUSE_REFUND(5,"拒绝退款"),
 	/** 退款已完成 **/

+ 10 - 0
src/main/java/com/goafanti/order/service/OrderService.java

@@ -48,6 +48,14 @@ public interface OrderService {
 	int updatePayForFirst(String orderNo, BigDecimal fundAmount,String remarks);
 
 	/**
+	 * 退款操作
+	 * @param orderNo
+	 * @param refundAmount
+	 * @return
+	 */
+	int updateRefundForTest(String orderNo, String refundAmount);
+	
+	/**
 	 * 支付尾款
 	 * @param orderNo 订单编号
 	 * @param fundAmount 金额
@@ -469,4 +477,6 @@ public interface OrderService {
 	 * @return
 	 */
 	int updateOrderChange(String changeId, String changeComment, Integer changeStatus);
+
+	
 }

+ 74 - 40
src/main/java/com/goafanti/order/service/impl/OrderServiceImpl.java

@@ -95,6 +95,7 @@ public class OrderServiceImpl extends BaseMybatisDao<TOrderMapper> implements Or
 	private final double DEFAULT_BROKERAGE_PROPORTION = 0; //佣金比例
 	private final double DEFAULT_COMMODITY_DISCOUNT = 1; //折扣比例
 	private final String DEFAULT_COMMODITY_MODE = "NO_MODE"; //暂无规格
+	private final String DEFUALT_SET_UP_COMMENT = "系统自动生产立项信息,请自行修改或补充";
 	
 	/*
 	 * -------------------------------------------------- APP管理端 --------------------------------------------------------
@@ -183,14 +184,11 @@ public class OrderServiceImpl extends BaseMybatisDao<TOrderMapper> implements Or
 	}
 	
 	/**
-	 * 
 	 * 订单状态流转
-	 * @param orderStatus
-	 * @param intentionStatus
-	 * @param tradingStatus
-	 * @param paymentStatus
-	 * @param liquidationStatus
-	 * @param actionType
+	 * @param orderAction
+	 * @param changeAmount
+	 * @param tOrder
+	 * @param confrim
 	 */
 	public void setOrderState(OrderAction orderAction,BigDecimal changeAmount,TOrder tOrder,boolean confrim){
 		BigDecimal initial = new BigDecimal(0);
@@ -227,12 +225,14 @@ public class OrderServiceImpl extends BaseMybatisDao<TOrderMapper> implements Or
 				tOrder.setActuallyTotalAmount(tOrder.getSignTotalAmount());
 				tOrder.setActuallyFirstPayment(tOrder.getSignFirstPayment());
 				tOrder.setLiquidationStatus(LiquidationState.ALREADY_PAY.getCode());
-				tOrder.setProjectStage(ProjectStage.WAIT_SET_UP.getCode());
+				if(tOrder.getProjectStage() == ProjectStage.NOT_SATISFY_CONDITION.getCode())
+					tOrder.setProjectStage(ProjectStage.WAIT_SET_UP.getCode());
 			}else if(boundary == 1){ //超过首付未达尾款
 				tOrder.setActuallyTotalAmount(tOrder.getActuallyTotalAmount().add(changeAmount));
 				tOrder.setActuallyFirstPayment(tOrder.getSignFirstPayment());
 				tOrder.setLiquidationStatus(LiquidationState.WAIT_PAY_LAST_BALANCE.getCode());
-				tOrder.setProjectStage(ProjectStage.WAIT_SET_UP.getCode());
+				if(tOrder.getProjectStage() == ProjectStage.NOT_SATISFY_CONDITION.getCode())
+					tOrder.setProjectStage(ProjectStage.WAIT_SET_UP.getCode());
 			}else if(boundary == -1){ //首付待付清
 				tOrder.setActuallyTotalAmount(tOrder.getActuallyTotalAmount().add(changeAmount));
 				tOrder.setActuallyFirstPayment(tOrder.getActuallyFirstPayment().add(changeAmount));
@@ -240,7 +240,8 @@ public class OrderServiceImpl extends BaseMybatisDao<TOrderMapper> implements Or
 				tOrder.setActuallyTotalAmount(tOrder.getActuallyTotalAmount().add(changeAmount));
 				tOrder.setActuallyFirstPayment(tOrder.getSignFirstPayment());
 				tOrder.setLiquidationStatus(LiquidationState.WAIT_PAY_LAST_BALANCE.getCode());
-				tOrder.setProjectStage(ProjectStage.WAIT_SET_UP.getCode());
+				if(tOrder.getProjectStage() == ProjectStage.NOT_SATISFY_CONDITION.getCode())
+					tOrder.setProjectStage(ProjectStage.WAIT_SET_UP.getCode());
 			}
 		}else if(orderAction == OrderAction.CONFIRM_PAY_FOR_LAST){ //支付尾款 (审核流水)
 			if(tOrder.getLiquidationStatus() != LiquidationState.WAIT_PAY_LAST_BALANCE.getCode()){
@@ -252,7 +253,6 @@ public class OrderServiceImpl extends BaseMybatisDao<TOrderMapper> implements Or
 			}else if(boundary == -1){
 				tOrder.setActuallyTotalAmount(tOrder.getActuallyTotalAmount().add(changeAmount));
 			}else if(boundary == 0){
-				tOrder.setOrderStatus(OrderState.ALREADY_SIGN.getCode());
 				tOrder.setActuallyTotalAmount(tOrder.getSignTotalAmount());
 				tOrder.setLiquidationStatus(LiquidationState.ALREADY_PAY.getCode());
 			}
@@ -305,12 +305,13 @@ public class OrderServiceImpl extends BaseMybatisDao<TOrderMapper> implements Or
 			}		
 		}else if(orderAction == OrderAction.APPLY_FOR_REFUND){ //退款申请
 			boolean	flag = true;
-			/*if(tOrder.getOrderStatus() != OrderState.BUYER_CANCEL_BEFORE_SIGN.getCode()
+			if(tOrder.getOrderStatus() != OrderState.BUYER_CANCEL_BEFORE_SIGN.getCode()
 					&& tOrder.getOrderStatus() != OrderState.BUYER_CANCEL_AFTER_SIGN.getCode()
 					&& tOrder.getOrderStatus() != OrderState.SELLER_REFUSE_BEFORE_SIGNL.getCode()
 					&& tOrder.getOrderStatus() != OrderState.SELLER_CANCEL_AFTER_SIGN.getCode()){
 				flag = false;
-			}*/
+			}
+			if(tOrder.getChangeStatus() == ChangeState.CHANGING.getCode()) flag = true; // Add 2018/4/9 if normal order in changing can refund 
 			if(tOrder.getLiquidationStatus() == LiquidationState.WAIT_FOR_REFUND_CONFIRM.getCode()
 					|| tOrder.getLiquidationStatus() == LiquidationState.REFUSE_REFUND.getCode()
 					|| tOrder.getLiquidationStatus() == LiquidationState.AGREE_REFUND.getCode()
@@ -323,12 +324,13 @@ public class OrderServiceImpl extends BaseMybatisDao<TOrderMapper> implements Or
 			tOrder.setLiquidationStatus(LiquidationState.WAIT_FOR_REFUND_CONFIRM.getCode());
 		}else if(orderAction == OrderAction.CONFIRM_REFUND){ //退款确认
 			boolean flag = true;
-			/*if(tOrder.getOrderStatus() != OrderState.BUYER_CANCEL_BEFORE_SIGN.getCode()
+			if(tOrder.getOrderStatus() != OrderState.BUYER_CANCEL_BEFORE_SIGN.getCode()
 					&& tOrder.getOrderStatus() != OrderState.BUYER_CANCEL_AFTER_SIGN.getCode()
 					&& tOrder.getOrderStatus() != OrderState.SELLER_REFUSE_BEFORE_SIGNL.getCode()
 					&& tOrder.getOrderStatus() != OrderState.SELLER_CANCEL_AFTER_SIGN.getCode()){
 				flag = false;
-			}*/
+			}
+			if(tOrder.getChangeStatus() == ChangeState.CHANGING.getCode()) flag = true; // Add 2018/4/9 if normal order in changing can refund 
 			if(tOrder.getLiquidationStatus() != LiquidationState.WAIT_FOR_REFUND_CONFIRM.getCode())
 				flag = false;
 			if(tOrder.getActuallyTotalAmount().doubleValue() <= 0)
@@ -342,12 +344,13 @@ public class OrderServiceImpl extends BaseMybatisDao<TOrderMapper> implements Or
 			}	
 		}else if(orderAction == OrderAction.COMPLETE_REFUND){ //完成退款
 			boolean flag = true;
-			/*if(tOrder.getOrderStatus() != OrderState.BUYER_CANCEL_BEFORE_SIGN.getCode()
+			if(tOrder.getOrderStatus() != OrderState.BUYER_CANCEL_BEFORE_SIGN.getCode()
 					&& tOrder.getOrderStatus() != OrderState.BUYER_CANCEL_AFTER_SIGN.getCode()
 					&& tOrder.getOrderStatus() != OrderState.SELLER_REFUSE_BEFORE_SIGNL.getCode()
 					&& tOrder.getOrderStatus() != OrderState.SELLER_CANCEL_AFTER_SIGN.getCode()){
 				flag = false;
-			}*/
+			}
+			if(tOrder.getChangeStatus() == ChangeState.CHANGING.getCode()) flag = true; // Add 2018/4/9 if normal order in changing can refund 
 			if(tOrder.getLiquidationStatus() != LiquidationState.AGREE_REFUND.getCode())
 				flag = false;
 			if(tOrder.getActuallyTotalAmount().doubleValue() <= 0)
@@ -865,7 +868,7 @@ public class OrderServiceImpl extends BaseMybatisDao<TOrderMapper> implements Or
 			flag2 = true;
 		}else if(tOrder.getChangeStatus() == ChangeState.CHANGING.getCode()){
 			flag2 = true;
-			if(tOrder.getActuallyTotalAmount().compareTo(new BigDecimal(signTotalAmount)) > 0){ 	  //实际付款金额超过订单金额 ,应退款处理
+			if(tOrder.getActuallyTotalAmount().compareTo(new BigDecimal(signTotalAmount)) > 0){ 	  //超过全付
 				tOrder.setLiquidationStatus(LiquidationState.AGREE_REFUND.getCode());
 				if(tOrder.getProjectStage() == ProjectStage.NOT_SATISFY_CONDITION.getCode())
 					tOrder.setProjectStage(ProjectStage.WAIT_SET_UP.getCode());
@@ -898,6 +901,9 @@ public class OrderServiceImpl extends BaseMybatisDao<TOrderMapper> implements Or
 		tOrder.setContractNo(contractNo);
 		if(StringUtils.isNotBlank(contractPictureUrl))tOrder.setContractPictureUrl(contractPictureUrl);
 		tOrderMapper.updateByPrimaryKeySelective(tOrder);
+		//如果支付后订单符合待立项,系统自动立项 2018-4-10
+		if(tOrder.getProjectStage() == ProjectStage.WAIT_SET_UP.getCode())
+			updateSetUpProject(tOrder.getOrderNo(),DEFUALT_SET_UP_COMMENT);
 		return 1;
 	}
 
@@ -963,7 +969,8 @@ public class OrderServiceImpl extends BaseMybatisDao<TOrderMapper> implements Or
 			String commodityPrice, String discountPrice,String commodityFirstPayment,String discountFirstPayment, String remarks) {
 		TOrder tOrder = tOrderMapper.selectByPrimaryKey(orderNo);
 			checkOrder(tOrder);
-			if(tOrder.getOrderStatus() != OrderState.WAIT_FOR_SIGN.getCode()){
+			if(tOrder.getOrderStatus() != OrderState.WAIT_FOR_SIGN.getCode() 
+					&& tOrder.getChangeStatus() != ChangeState.CHANGING.getCode()){
 				 throw new BusinessException(new Error(ErrorConstants.NOT_ACCORD_WITH_NEXT, orderNo,""));
 			}else{
 				TOrderDetail detail = new TOrderDetail();
@@ -1004,7 +1011,8 @@ public class OrderServiceImpl extends BaseMybatisDao<TOrderMapper> implements Or
 		TOrderDetail oldDetail = tOrderDetailMapper.selectByPrimaryKey(detailId);
 		TOrder tOrder = tOrderMapper.selectByPrimaryKey(oldDetail.getOrderNo());
 		checkOrder(tOrder);
-		if (tOrder.getOrderStatus() != OrderState.WAIT_FOR_SIGN.getCode()) {
+		if (tOrder.getOrderStatus() != OrderState.WAIT_FOR_SIGN.getCode()
+				&& tOrder.getChangeStatus() != ChangeState.CHANGING.getCode()) {
 			throw new BusinessException(new Error(ErrorConstants.NOT_ACCORD_WITH_NEXT, oldDetail.getOrderNo(), ""));
 		} else {
 			TOrderDetail detail = new TOrderDetail();
@@ -1034,7 +1042,8 @@ public class OrderServiceImpl extends BaseMybatisDao<TOrderMapper> implements Or
 		TOrderDetail detail = tOrderDetailMapper.selectByPrimaryKey(detailId);
 		TOrder tOrder = tOrderMapper.selectByPrimaryKey(detail.getOrderNo());
 		checkOrder(tOrder);
-		if (tOrder.getOrderStatus() != OrderState.WAIT_FOR_SIGN.getCode()) {
+		if (tOrder.getOrderStatus() != OrderState.WAIT_FOR_SIGN.getCode()
+				&& tOrder.getChangeStatus() != ChangeState.CHANGING.getCode()) {
 			throw new BusinessException(new Error(ErrorConstants.NOT_ACCORD_WITH_NEXT, detail.getOrderNo(), ""));
 		} else {
 			BigDecimal totalAmountChange = detail.getCommodityPrice()
@@ -1311,26 +1320,36 @@ public class OrderServiceImpl extends BaseMybatisDao<TOrderMapper> implements Or
 				e.printStackTrace();
 			}
 			bill.setRemarks(remarks);
+			order.setUpdateTime(new Date());
 			if(confrim == AFTConstants.YES){
 				bill.setConfirmTime(confirmTime);
 				bill.setConfirmSign(AuditState.AUDIT_SUCCESS.getCode());
 				checkOrder(order);
 				if(order.getLiquidationStatus() == LiquidationState.WAIT_PAY_FIRST_BALANCE.getCode()
-						&& bill.getTransactionSubject() == TransactionSubject.SUPPLY_PAY.getCode()) //代付+首付状态
+						&& bill.getTransactionSubject() == TransactionSubject.SUPPLY_PAY.getCode())	{ //代付+首付状态
 					setOrderState(OrderAction.CONFIRM_PAY_FOR_FIRST, bill.getTransactionAmount(), order, false); 
-				else if(order.getLiquidationStatus() == LiquidationState.WAIT_PAY_LAST_BALANCE.getCode()
-						&& bill.getTransactionSubject() == TransactionSubject.SUPPLY_PAY.getCode()) //代付+尾款状态
+					tOrderMapper.updateByPrimaryKeySelective(order);
+					//如果支付后订单符合待立项,系统自动立项 2018-4-10
+					if(order.getProjectStage() == ProjectStage.WAIT_SET_UP.getCode())
+						updateSetUpProject(order.getOrderNo(),DEFUALT_SET_UP_COMMENT);
+				} else if(order.getLiquidationStatus() == LiquidationState.WAIT_PAY_LAST_BALANCE.getCode()
+						&& bill.getTransactionSubject() == TransactionSubject.SUPPLY_PAY.getCode())	{ //代付+尾款状态
 					setOrderState(OrderAction.CONFIRM_PAY_FOR_LAST, bill.getTransactionAmount(), order, false);
-				else if(order.getLiquidationStatus() == LiquidationState.AGREE_REFUND.getCode()
-						&& bill.getTransactionSubject() == TransactionSubject.REFUND.getCode()) //待退+退款状态
+					tOrderMapper.updateByPrimaryKeySelective(order);
+					//如果支付后订单符合待立项,系统自动立项 2018-4-10
+					if(order.getProjectStage() == ProjectStage.WAIT_SET_UP.getCode())
+						updateSetUpProject(order.getOrderNo(),DEFUALT_SET_UP_COMMENT);
+				} else if(order.getLiquidationStatus() == LiquidationState.AGREE_REFUND.getCode()
+						&& bill.getTransactionSubject() == TransactionSubject.REFUND.getCode())	{  //待退+退款状态
 					setOrderState(OrderAction.COMPLETE_REFUND, bill.getTransactionAmount(), order, false);
-				else if(order.getLiquidationStatus() == LiquidationState.WAIT_FOR_WITHDRAW.getCode()
-						&& bill.getTransactionSubject() == TransactionSubject.SUPPLY_COLLECT.getCode()) //代收+提现状态
+					tOrderMapper.updateByPrimaryKeySelective(order);
+				}else if(order.getLiquidationStatus() == LiquidationState.WAIT_FOR_WITHDRAW.getCode()
+						&& bill.getTransactionSubject() == TransactionSubject.SUPPLY_COLLECT.getCode()) { //代收+提现状态
 					setOrderState(OrderAction.CONFIRM_WITHDRAW, bill.getTransactionAmount(), order, false); 
-				else 
+					tOrderMapper.updateByPrimaryKeySelective(order);
+				} else {
 					throw new BusinessException(new Error(ErrorConstants.BILL_ALREADY_EXPIRE, billNo , ""));
-				order.setUpdateTime(new Date());
-				tOrderMapper.updateByPrimaryKeySelective(order);
+				}
 			}else if(confrim == AFTConstants.NO){
 				bill.setConfirmTime(confirmTime);
 				bill.setConfirmSign(AuditState.AUDIT_FAIL.getCode());
@@ -1361,7 +1380,6 @@ public class OrderServiceImpl extends BaseMybatisDao<TOrderMapper> implements Or
 		TOrder tOrder = tOrderMapper.selectByPrimaryKey(orderNo);
 		checkOrder(tOrder);
 		if(tOrder.getOrderStatus() != OrderState.ALREADY_SIGN.getCode()
-				|| tOrder.getOrderStage() != OrderStage.SIGNED.getCode()
 				|| tOrder.getApproval() != ApprovalState.WAIT_AUDIT.getCode()){
 			throw new BusinessException(new Error(ErrorConstants.NOT_ACCORD_WITH_NEXT, orderNo , ""));
 		}
@@ -1374,6 +1392,9 @@ public class OrderServiceImpl extends BaseMybatisDao<TOrderMapper> implements Or
 			tOrder.setApproval(ApprovalState.AUDIT_REFUSE.getCode());
 		}
 		tOrderMapper.updateByPrimaryKeySelective(tOrder);
+		//如果支付后订单符合待立项,系统自动立项 2018-4-10
+		if(tOrder.getProjectStage() == ProjectStage.WAIT_SET_UP.getCode())
+			updateSetUpProject(tOrder.getOrderNo(),DEFUALT_SET_UP_COMMENT);
 		return 1;
 	}
 	
@@ -1415,6 +1436,7 @@ public class OrderServiceImpl extends BaseMybatisDao<TOrderMapper> implements Or
 		if(!flag) 
 			throw new BusinessException(new Error(ErrorConstants.ORDER_CAN_NOT_MODIFY, orderNo, ""));
 		tOrder.setProjectStage(ProjectStage.ALREADY_SET_UP.getCode());
+		tOrder.setOrderStage(OrderStage.PROJECT.getCode());
 		tOrder.setUpdateTime(createTime);
 		tOrder.setSetUpTime(createTime);
 		tOrderMapper.updateByPrimaryKeySelective(tOrder);
@@ -1476,6 +1498,20 @@ public class OrderServiceImpl extends BaseMybatisDao<TOrderMapper> implements Or
 	}
 
 	@Override
+	public int updateRefundForTest(String orderNo, String refundAmount) {
+		TOrder tOrder = tOrderMapper.selectByPrimaryKey(orderNo);
+		if(tOrder.getLiquidationStatus() == LiquidationState.AGREE_REFUND.getCode()){
+			addFundRecord(orderNo, "测试用户", DEFAULT_PLATFORM_ID, TokenManager.getUserId(), "", 
+					TransactionSubject.REFUND,PayChannel.UNIONPAY, new BigDecimal(refundAmount), TransactionMode.OFFLINE, AuditState.WAIT_AUDIT);
+			tOrder.setUpdateTime(new Date());
+			tOrderMapper.updateByPrimaryKeySelective(tOrder);
+		}else{
+			throw new BusinessException(new Error(ErrorConstants.ORDER_CAN_NOT_MODIFY, orderNo, ""));
+		}
+		return 1;
+	}
+	
+	@Override
 	public int updateDistributionOrder(String orderNo, String financeId) {
 		TOrder tOrder = tOrderMapper.selectByPrimaryKey(orderNo);
 		checkOrder(tOrder);
@@ -1601,7 +1637,6 @@ public class OrderServiceImpl extends BaseMybatisDao<TOrderMapper> implements Or
 			tOrder.setSellerId(TokenManager.getUserId());
 		}else{
 			tOrder.setBuyerId(TokenManager.getUserId());
-			//tOrder.setBuyerId("123");
 			tOrder.setSellerId(StringUtils.isBlank(bo.getSellerId()) ? DEFAULT_PLATFORM_ID : bo.getSellerId());
 		}
 		tOrder.setOrderType(commodityType);
@@ -1679,15 +1714,13 @@ public class OrderServiceImpl extends BaseMybatisDao<TOrderMapper> implements Or
 	 */
 	private int updateOrderSatusByChange(String orderNo){
 		if(StringUtils.isBlank(orderNo)) return 0;
-		int resultStatus;
-		int allChangeCount = tOrderChangeMapper.selectCountByStatus(ChangeState.CHANGING.getCode(), orderNo);
-		int completeChangeCoumt = tOrderChangeMapper.selectCountByStatus(ChangeState.CHANGED.getCode(), orderNo);
-		if(allChangeCount == 0){
-			resultStatus = ChangeState.UNCHANGE.getCode();
-		} else if(allChangeCount - completeChangeCoumt > 0){
+		int resultStatus = ChangeState.UNCHANGE.getCode();
+		int onChangeCount = tOrderChangeMapper.selectCountByStatus(ChangeState.CHANGING.getCode(), orderNo);
+		if(onChangeCount > 0){
 			resultStatus = ChangeState.CHANGING.getCode();
 		} else {
-			resultStatus = ChangeState.CHANGED.getCode();
+			int completeChangeCoumt = tOrderChangeMapper.selectCountByStatus(ChangeState.CHANGED.getCode(), orderNo);
+			if(completeChangeCoumt>0) resultStatus = ChangeState.CHANGED.getCode();
 		}
 		TOrder tOrder = tOrderMapper.selectByPrimaryKey(orderNo);
 		tOrder.setChangeStatus(resultStatus);
@@ -1702,4 +1735,5 @@ public class OrderServiceImpl extends BaseMybatisDao<TOrderMapper> implements Or
 		tOrderChangeMapper.updateByPrimaryKeySelective(change);
 		return updateOrderSatusByChange(change.getOrderNo());
 	}
+
 }

+ 18 - 0
src/main/java/com/goafanti/techproject/controller/AdminTechProjectApiController.java

@@ -960,4 +960,22 @@ public class AdminTechProjectApiController extends CertifyApiController {
 		}
 		return res;
 	}
+	
+	/**
+	 * 修改项目信息
+	 * @param contractId
+	 * @param signComment
+	 * @param completeComment
+	 * @return
+	 */
+	@RequestMapping(value = "/updateProject", method = RequestMethod.POST)
+	public Result updateProject(String contractId,String signDate,String signComment,String completeDate,String completeComment){
+		Result res = new Result();
+		if(StringUtils.isBlank(contractId)){
+			res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR,"", "项目ID"));
+			return res;
+		}
+		techProjectService.updateProjectTask(contractId,signDate,signComment,completeDate,completeComment);
+		return res;
+	}
 }

+ 13 - 0
src/main/java/com/goafanti/techproject/service/TechProjectService.java

@@ -151,4 +151,17 @@ public interface TechProjectService {
 	 * @return
 	 */
 	int updateTransferProject(String contractId, String projectReceiveId);
+
+	/**
+	 * 修改项目信息
+	 * @param contractId
+	 * @param signDate
+	 * @param signComment
+	 * @param completeDate
+	 * @param completeComment
+	 * @return
+	 */
+	int updateProjectTask(String contractId, String signDate, String signComment, String completeDate,
+			String completeComment);
+
 }

+ 18 - 0
src/main/java/com/goafanti/techproject/service/impl/TechProjectServiceImpl.java

@@ -458,4 +458,22 @@ public class TechProjectServiceImpl extends BaseMybatisDao<TechProjectMapper> im
 		return 0;
 	}
 
+	@Override
+	public int updateProjectTask(String contractId, String signDate, String signComment, String completeDate,
+			String completeComment) {
+		Contract contract = new Contract();
+		contract.setId(contractId);
+		contract.setSignComment(signComment);
+		contract.setCompleteComment(completeComment);
+		try {
+			if(StringUtils.isNotBlank(signDate))
+				contract.setSignDate(DateUtils.parseDate(signDate, AFTConstants.YYYYMMDDHHMMSS));
+			if(StringUtils.isNotBlank(completeDate))
+				contract.setCompleteDate(DateUtils.parseDate(completeDate,  AFTConstants.YYYYMMDDHHMMSS));
+		} catch (ParseException e) {
+			e.printStackTrace();
+		}
+		return contractMapper.updateByPrimaryKeySelective(contract);
+	}
+
 }