yonge 5 years ago
parent
commit
3a6f45c497

+ 81 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentPaymentRouteOrder.java

@@ -38,6 +38,22 @@ public class StudentPaymentRouteOrder {
     */
     private String feeFlag;
     
+    private Integer userId;
+    
+    private Integer schoolId;
+    
+    private String transNo;
+    
+    private Date payTime;
+    
+    private BigDecimal saleAmount;
+    
+    private BigDecimal serviceAmount;
+    
+    private String memo;
+    
+    private String goodsJson;
+    
     private AuditStatusEnum auditStatus;
     
     private String auditComment;
@@ -90,7 +106,71 @@ public class StudentPaymentRouteOrder {
         this.feeFlag = feeFlag;
     }
 
-    public String getOrderNo() {
+    public Integer getUserId() {
+		return userId;
+	}
+
+	public void setUserId(Integer userId) {
+		this.userId = userId;
+	}
+
+	public Integer getSchoolId() {
+		return schoolId;
+	}
+
+	public void setSchoolId(Integer schoolId) {
+		this.schoolId = schoolId;
+	}
+
+	public String getTransNo() {
+		return transNo;
+	}
+
+	public void setTransNo(String transNo) {
+		this.transNo = transNo;
+	}
+
+	public Date getPayTime() {
+		return payTime;
+	}
+
+	public void setPayTime(Date payTime) {
+		this.payTime = payTime;
+	}
+
+	public BigDecimal getSaleAmount() {
+		return saleAmount;
+	}
+
+	public void setSaleAmount(BigDecimal saleAmount) {
+		this.saleAmount = saleAmount;
+	}
+
+	public BigDecimal getServiceAmount() {
+		return serviceAmount;
+	}
+
+	public void setServiceAmount(BigDecimal serviceAmount) {
+		this.serviceAmount = serviceAmount;
+	}
+
+	public String getMemo() {
+		return memo;
+	}
+
+	public void setMemo(String memo) {
+		this.memo = memo;
+	}
+
+	public String getGoodsJson() {
+		return goodsJson;
+	}
+
+	public void setGoodsJson(String goodsJson) {
+		this.goodsJson = goodsJson;
+	}
+
+	public String getOrderNo() {
         return orderNo;
     }
 

+ 22 - 4
mec-biz/src/main/java/com/ym/mec/biz/service/StudentPaymentRouteOrderService.java

@@ -1,14 +1,15 @@
 package com.ym.mec.biz.service;
 
 
+import java.math.BigDecimal;
+
 import com.ym.mec.biz.dal.dto.PageInfoOrder;
 import com.ym.mec.biz.dal.dto.StudentPaymentRouteOrderDto;
 import com.ym.mec.biz.dal.entity.StudentPaymentRouteOrder;
+import com.ym.mec.biz.dal.enums.AuditStatusEnum;
 import com.ym.mec.biz.dal.page.StudentPaymentOrderQueryInfo;
 import com.ym.mec.common.service.BaseService;
 
-import java.math.BigDecimal;
-
 
 public interface StudentPaymentRouteOrderService extends BaseService<Long, StudentPaymentRouteOrder> {
 
@@ -16,10 +17,27 @@ public interface StudentPaymentRouteOrderService extends BaseService<Long, Stude
 
 	/**
 	 * 添加外部订单
-	 * @param studentPaymentRouteOrderDto
+	 * @param studentPaymentRouteOrder
+	 * @return
+	 */
+	StudentPaymentRouteOrder addOutOrder(StudentPaymentRouteOrder studentPaymentRouteOrder);
+	
+	/**
+	 * 更新外部订单
+	 * @param studentPaymentRouteOrder
+	 * @return
+	 */
+	StudentPaymentRouteOrder updateOutOrder(StudentPaymentRouteOrder studentPaymentRouteOrder);
+	
+	/**
+	 * 审核外部订单
+	 * @param studentPaymentRouteOrderId
+	 * @param auditStatus
+	 * @param memo
+	 * @param operatorId
 	 * @return
 	 */
-	StudentPaymentRouteOrderDto addOutOrder(StudentPaymentRouteOrderDto studentPaymentRouteOrderDto);
+	boolean auditOutOrder(Long studentPaymentRouteOrderId,AuditStatusEnum auditStatus,String memo,Integer operatorId);
 
 	/**
 	 * 添加分润订单

+ 176 - 103
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentPaymentRouteOrderServiceImpl.java

@@ -1,14 +1,40 @@
 package com.ym.mec.biz.service.impl;
 
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.stream.Collectors;
+
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Isolation;
+import org.springframework.transaction.annotation.Transactional;
+
 import com.alibaba.fastjson.JSON;
-import com.ym.mec.biz.dal.dao.*;
+import com.alibaba.fastjson.JSONObject;
+import com.ym.mec.biz.dal.dao.GoodsDao;
+import com.ym.mec.biz.dal.dao.SellOrderDao;
+import com.ym.mec.biz.dal.dao.StudentPaymentOrderDao;
+import com.ym.mec.biz.dal.dao.StudentPaymentRouteOrderDao;
+import com.ym.mec.biz.dal.dao.SysUserCashAccountDao;
 import com.ym.mec.biz.dal.dto.PageInfoOrder;
 import com.ym.mec.biz.dal.dto.StudentPaymentRouteOrderDto;
 import com.ym.mec.biz.dal.entity.Goods;
 import com.ym.mec.biz.dal.entity.SellOrder;
 import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
 import com.ym.mec.biz.dal.entity.StudentPaymentRouteOrder;
-import com.ym.mec.biz.dal.enums.*;
+import com.ym.mec.biz.dal.enums.AccountType;
+import com.ym.mec.biz.dal.enums.AuditStatusEnum;
+import com.ym.mec.biz.dal.enums.DealStatusEnum;
+import com.ym.mec.biz.dal.enums.GroupType;
+import com.ym.mec.biz.dal.enums.OrderTypeEnum;
+import com.ym.mec.biz.dal.enums.SellTypeEnum;
+import com.ym.mec.biz.dal.enums.SporadicChargeTypeEnum;
 import com.ym.mec.biz.dal.page.StudentPaymentOrderQueryInfo;
 import com.ym.mec.biz.service.GoodsService;
 import com.ym.mec.biz.service.SellOrderService;
@@ -18,15 +44,6 @@ import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.service.IdGeneratorService;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.util.collection.MapUtil;
-import org.apache.ibatis.javassist.expr.NewArray;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Isolation;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.math.BigDecimal;
-import java.util.*;
-import java.util.stream.Collectors;
 
 @Service
 public class StudentPaymentRouteOrderServiceImpl extends BaseServiceImpl<Long, StudentPaymentRouteOrder> implements StudentPaymentRouteOrderService {
@@ -88,107 +105,163 @@ public class StudentPaymentRouteOrderServiceImpl extends BaseServiceImpl<Long, S
 
     @Override
     @Transactional(rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED)
-    public StudentPaymentRouteOrderDto addOutOrder(StudentPaymentRouteOrderDto studentPaymentRouteOrderDto) {
+    public StudentPaymentRouteOrder addOutOrder(StudentPaymentRouteOrder studentPaymentRouteOrder) {
         Date nowDate = new Date();
         String orderNo = idGeneratorService.generatorId("payment") + "";
-        studentPaymentRouteOrderDto.setType(OrderTypeEnum.OUTORDER);
-        studentPaymentRouteOrderDto.setMerNos(studentPaymentRouteOrderDto.getMerNo());
-        studentPaymentRouteOrderDto.setOrderNo(orderNo);
-        studentPaymentRouteOrderDto.setGroupType(GroupType.OUTORDER);
-        studentPaymentRouteOrderDto.setRouteOrganId(studentPaymentRouteOrderDto.getOrganId());
-        studentPaymentRouteOrderDto.setExpectAmount(studentPaymentRouteOrderDto.getActualAmount());
-        studentPaymentRouteOrderDto.setStatus(DealStatusEnum.SUCCESS);
-        studentPaymentRouteOrderDto.setCreateTime(studentPaymentRouteOrderDto.getPayTime());
-        studentPaymentRouteOrderDto.setUpdateTime(nowDate);
-        studentPaymentRouteOrderDao.insertOrder(studentPaymentRouteOrderDto);
-        
-        StudentPaymentRouteOrder studentPaymentRouteOrder = new StudentPaymentRouteOrder();
         studentPaymentRouteOrder.setOrderNo(orderNo);
-        studentPaymentRouteOrder.setMerNo(studentPaymentRouteOrderDto.getMerNo());
-        studentPaymentRouteOrder.setRouteOrganId(studentPaymentRouteOrderDto.getOrganId());
-        studentPaymentRouteOrder.setRouteAmount(studentPaymentRouteOrderDto.getActualAmount());
+        studentPaymentRouteOrder.setAuditStatus(AuditStatusEnum.ING);
+        studentPaymentRouteOrder.setCreateTime(nowDate);
+        studentPaymentRouteOrder.setUpdateTime(nowDate);
+        studentPaymentRouteOrder.setRouteAmount(studentPaymentRouteOrder.getSaleAmount().add(studentPaymentRouteOrder.getServiceAmount()));
         studentPaymentRouteOrder.setRouteBalanceAmount(BigDecimal.ZERO);
         studentPaymentRouteOrder.setFeeFlag("N");
+        
         studentPaymentRouteOrderDao.insert(studentPaymentRouteOrder);
-
-        if (studentPaymentRouteOrderDto.getGoodies() != null && studentPaymentRouteOrderDto.getGoodies().size() > 0) {
-            BigDecimal hasRouteAmount = BigDecimal.ZERO;
-            BigDecimal goodsTotalPrice = BigDecimal.ZERO;
-
-            List<Integer> goodsIdList = new ArrayList<>();
-            for (Map.Entry<Integer, Integer> goodsMap : studentPaymentRouteOrderDto.getGoodies().entrySet()) {
-                Goods goods = goodsDao.get(goodsMap.getKey());
-                goodsTotalPrice = goodsTotalPrice.add(goods.getGroupPurchasePrice().multiply(new BigDecimal(goodsMap.getValue())));
-                for (int i = 0; i < goodsMap.getValue(); i++) {
-                    goodsIdList.add(goodsMap.getKey());
-                }
-            }
-            List<SellOrder> sellOrderList = goodsService.subtractStock(goodsIdList, AccountType.INTERNAL);
-
-            int i = 1;
-            for (Map.Entry<Integer, Integer> goodsMap : studentPaymentRouteOrderDto.getGoodies().entrySet()) {
-                Goods goods = goodsDao.get(goodsMap.getKey());
-
-                BigDecimal actualAmount = BigDecimal.ZERO;
-                if (goodsTotalPrice.compareTo(BigDecimal.ZERO) != 0) {
-                    actualAmount = studentPaymentRouteOrderDto.getGoodsAmount().multiply(goods.getGroupPurchasePrice().multiply(new BigDecimal(goodsMap.getValue()))).divide(goodsTotalPrice, 2, BigDecimal.ROUND_HALF_UP);
-                }
-                if (i == studentPaymentRouteOrderDto.getGoodies().size()) {
-                    actualAmount = studentPaymentRouteOrderDto.getGoodsAmount().subtract(hasRouteAmount);
-                }
-                hasRouteAmount = hasRouteAmount.add(actualAmount);
-                i++;
-
-                int complementNum = goods.getComplementGoodsIdList() == null ? 1 : goods.getComplementGoodsIdList().split(",").length;
-                int goodsNum = goodsMap.getValue() * complementNum;
-                BigDecimal complementPrice = goods.getGroupPurchasePrice().multiply(new BigDecimal(goodsMap.getValue()));
-                Map<Integer, BigDecimal> complementGoodsPrice = new HashMap<>();
-                complementGoodsPrice.put(goods.getId(), goods.getGroupPurchasePrice());
-                if (goods.getComplementGoodsIdList() != null) {
-                    List<Goods> complementGoodies = goodsDao.findGoodsByIds(goods.getComplementGoodsIdList());
-                    complementGoodsPrice = complementGoodies.stream().collect(Collectors.toMap(Goods::getId, Goods::getGroupPurchasePrice));
-                    complementPrice = complementGoodies.stream().map(Goods::getGroupPurchasePrice).reduce(BigDecimal.ZERO, BigDecimal::add).multiply(new BigDecimal(goodsMap.getValue()));
-                }
-
-                BigDecimal hasRouteSellOrderActualAmount = BigDecimal.ZERO;
-                for (SellOrder sellOrder : sellOrderList) {
-                    if (!goodsMap.getKey().equals(sellOrder.getParentGoodsId()) && !goodsMap.getKey().equals(sellOrder.getGoodsId())) {
-                        continue;
-                    }
-                    BigDecimal sellOrderActualAmount = BigDecimal.ZERO;
-                    if (complementPrice.compareTo(BigDecimal.ZERO) > 0) {
-                        sellOrderActualAmount = complementGoodsPrice.get(sellOrder.getGoodsId()).multiply(new BigDecimal(sellOrder.getNum())).multiply(actualAmount).divide(complementPrice, 2, BigDecimal.ROUND_HALF_UP);
-                    }
-                    goodsNum = goodsNum - sellOrder.getNum();
-                    if (goodsNum <= 0) {
-                        sellOrderActualAmount = actualAmount.subtract(hasRouteSellOrderActualAmount);
-                    }
-                    hasRouteSellOrderActualAmount = hasRouteSellOrderActualAmount.add(sellOrderActualAmount);
-
-                    sellOrder.setSellTime(studentPaymentRouteOrderDto.getPayTime());
-                    sellOrder.setOrganId(studentPaymentRouteOrderDto.getOrganId());
-                    sellOrder.setCooperationOrganId(studentPaymentRouteOrderDto.getSchoolId());
-                    sellOrder.setTransNo(studentPaymentRouteOrderDto.getTransNo());
-                    sellOrder.setOrderId(studentPaymentRouteOrderDto.getId());
-                    sellOrder.setOrderNo(orderNo);
-                    sellOrder.setActualAmount(sellOrderActualAmount);
-                    sellOrder.setBalanceAmount(BigDecimal.ZERO);
-                    sellOrder.setExpectAmount(sellOrderActualAmount);
-                    sellOrder.setUserId(studentPaymentRouteOrderDto.getUserId());
-                    sellOrder.setPaymentChannel(studentPaymentRouteOrderDto.getPaymentChannel());
-                    sellOrder.setMerNo(studentPaymentRouteOrderDto.getMerNos());
-                    sellOrder.setSellTime(studentPaymentRouteOrderDto.getCreateTime());
-                    sellOrder.setCreateIme(nowDate);
-                    sellOrder.setUpdateTime(nowDate);
-                    sellOrder.setType(SellTypeEnum.SCHOOL_BUY);
-                }
-            }
-            sellOrderDao.batchInsert(sellOrderList);
-        }
-        return studentPaymentRouteOrderDto;
+        
+        return studentPaymentRouteOrder;
     }
 
     @Override
+	public StudentPaymentRouteOrder updateOutOrder(StudentPaymentRouteOrder studentPaymentRouteOrder) {
+    	Date nowDate = new Date();
+    	studentPaymentRouteOrder.setAuditStatus(AuditStatusEnum.ING);
+        studentPaymentRouteOrder.setUpdateTime(nowDate);
+        studentPaymentRouteOrder.setRouteAmount(studentPaymentRouteOrder.getSaleAmount().add(studentPaymentRouteOrder.getServiceAmount()));
+        studentPaymentRouteOrder.setRouteBalanceAmount(BigDecimal.ZERO);
+        studentPaymentRouteOrder.setFeeFlag("N");
+        
+        studentPaymentRouteOrderDao.update(studentPaymentRouteOrder);
+        
+		return studentPaymentRouteOrder;
+	}
+
+	@Override
+    @Transactional(rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED)
+	public boolean auditOutOrder(Long studentPaymentRouteOrderId, AuditStatusEnum auditStatus, String memo, Integer operatorId) {
+		StudentPaymentRouteOrder studentPaymentRouteOrder = studentPaymentRouteOrderDao.get(studentPaymentRouteOrderId);
+		if(studentPaymentRouteOrder == null){
+			throw new BizException("查询订单信息失败");
+		}
+		
+		if(studentPaymentRouteOrder.getAuditStatus() != AuditStatusEnum.ING){
+			throw new BizException("只有“审核中”的订单才能审核");
+		}
+		
+		Date nowDate = new Date();
+		
+		studentPaymentRouteOrder.setUpdateBy(operatorId);
+		studentPaymentRouteOrder.setUpdateTime(nowDate);
+		studentPaymentRouteOrder.setMemo(memo);
+		studentPaymentRouteOrder.setAuditStatus(auditStatus);
+		
+		studentPaymentRouteOrderDao.update(studentPaymentRouteOrder);
+		
+		if(auditStatus == AuditStatusEnum.PASS){
+			StudentPaymentOrder studentPaymentOrder = new StudentPaymentOrder();
+			studentPaymentOrder.setActualAmount(studentPaymentRouteOrder.getRouteAmount());
+			studentPaymentOrder.setMusicGroupId(studentPaymentRouteOrder.getSchoolId()+ "");
+			studentPaymentOrder.setType(OrderTypeEnum.OUTORDER);
+			studentPaymentOrder.setMerNos(studentPaymentRouteOrder.getMerNo());
+			studentPaymentOrder.setOrderNo(studentPaymentRouteOrder.getOrderNo());
+			studentPaymentOrder.setGroupType(GroupType.OUTORDER);
+			studentPaymentOrder.setOrganId(studentPaymentRouteOrder.getRouteOrganId());
+			studentPaymentOrder.setExpectAmount(studentPaymentRouteOrder.getRouteAmount());
+			studentPaymentOrder.setStatus(DealStatusEnum.SUCCESS);
+			studentPaymentOrder.setCreateTime(studentPaymentRouteOrder.getPayTime());
+			studentPaymentOrder.setUpdateTime(nowDate);
+			studentPaymentOrder.setMemo(studentPaymentRouteOrder.getMemo());
+			studentPaymentOrder.setUserId(studentPaymentRouteOrder.getUserId());
+			studentPaymentOrder.setPayTime(studentPaymentRouteOrder.getPayTime());
+			
+	        studentPaymentRouteOrderDao.insertOrder(studentPaymentOrder);
+	        
+	        if (StringUtils.isNoneBlank(studentPaymentRouteOrder.getGoodsJson())) {
+	            BigDecimal hasRouteAmount = BigDecimal.ZERO;
+	            BigDecimal goodsTotalPrice = BigDecimal.ZERO;
+
+	            List<Integer> goodsIdList = new ArrayList<>();
+	            JSONObject jsonObj = JSON.parseObject(studentPaymentRouteOrder.getGoodsJson());
+	            for (Entry<String, Object> goodsMap : jsonObj.entrySet()) {
+	            	Integer goodsId = Integer.parseInt(goodsMap.getKey());
+	            	Integer nums = Integer.parseInt(goodsMap.getValue().toString());
+	                Goods goods = goodsDao.get(goodsId);
+	                goodsTotalPrice = goodsTotalPrice.add(goods.getGroupPurchasePrice().multiply(new BigDecimal(nums)));
+	                for (int i = 0; i < nums; i++) {
+	                    goodsIdList.add(goodsId);
+	                }
+	            }
+	            List<SellOrder> sellOrderList = goodsService.subtractStock(goodsIdList, AccountType.INTERNAL);
+
+	            int i = 1;
+	            for (Entry<String, Object> goodsMap : jsonObj.entrySet()) {
+	            	Integer goodsId = Integer.parseInt(goodsMap.getKey());
+	            	Integer nums = Integer.parseInt(goodsMap.getValue().toString());
+	                Goods goods = goodsDao.get(goodsId);
+
+	                BigDecimal actualAmount = BigDecimal.ZERO;
+	                if (goodsTotalPrice.compareTo(BigDecimal.ZERO) != 0) {
+	                    actualAmount = studentPaymentRouteOrder.getSaleAmount().multiply(goods.getGroupPurchasePrice().multiply(new BigDecimal(nums))).divide(goodsTotalPrice, 2, BigDecimal.ROUND_HALF_UP);
+	                }
+	                if (i == jsonObj.entrySet().size()) {
+	                    actualAmount = studentPaymentRouteOrder.getSaleAmount().subtract(hasRouteAmount);
+	                }
+	                hasRouteAmount = hasRouteAmount.add(actualAmount);
+	                i++;
+
+	                int complementNum = goods.getComplementGoodsIdList() == null ? 1 : goods.getComplementGoodsIdList().split(",").length;
+	                int goodsNum = nums * complementNum;
+	                BigDecimal complementPrice = goods.getGroupPurchasePrice().multiply(new BigDecimal(nums));
+	                Map<Integer, BigDecimal> complementGoodsPrice = new HashMap<>();
+	                complementGoodsPrice.put(goods.getId(), goods.getGroupPurchasePrice());
+	                if (goods.getComplementGoodsIdList() != null) {
+	                    List<Goods> complementGoodies = goodsDao.findGoodsByIds(goods.getComplementGoodsIdList());
+	                    complementGoodsPrice = complementGoodies.stream().collect(Collectors.toMap(Goods::getId, Goods::getGroupPurchasePrice));
+	                    complementPrice = complementGoodies.stream().map(Goods::getGroupPurchasePrice).reduce(BigDecimal.ZERO, BigDecimal::add).multiply(new BigDecimal(nums));
+	                }
+
+	                BigDecimal hasRouteSellOrderActualAmount = BigDecimal.ZERO;
+	                for (SellOrder sellOrder : sellOrderList) {
+	                    if (!goodsMap.getKey().equals(sellOrder.getParentGoodsId()) && !goodsMap.getKey().equals(sellOrder.getGoodsId())) {
+	                        continue;
+	                    }
+	                    BigDecimal sellOrderActualAmount = BigDecimal.ZERO;
+	                    if (complementPrice.compareTo(BigDecimal.ZERO) > 0) {
+	                        sellOrderActualAmount = complementGoodsPrice.get(sellOrder.getGoodsId()).multiply(new BigDecimal(sellOrder.getNum())).multiply(actualAmount).divide(complementPrice, 2, BigDecimal.ROUND_HALF_UP);
+	                    }
+	                    goodsNum = goodsNum - sellOrder.getNum();
+	                    if (goodsNum <= 0) {
+	                        sellOrderActualAmount = actualAmount.subtract(hasRouteSellOrderActualAmount);
+	                    }
+	                    hasRouteSellOrderActualAmount = hasRouteSellOrderActualAmount.add(sellOrderActualAmount);
+
+	                    sellOrder.setSellTime(studentPaymentRouteOrder.getPayTime());
+	                    sellOrder.setOrganId(studentPaymentRouteOrder.getRouteOrganId());
+	                    sellOrder.setCooperationOrganId(studentPaymentRouteOrder.getSchoolId());
+	                    sellOrder.setTransNo(studentPaymentRouteOrder.getTransNo());
+	                    sellOrder.setOrderId(studentPaymentOrder.getId());
+	                    sellOrder.setOrderNo(studentPaymentRouteOrder.getOrderNo());
+	                    sellOrder.setActualAmount(sellOrderActualAmount);
+	                    sellOrder.setBalanceAmount(BigDecimal.ZERO);
+	                    sellOrder.setExpectAmount(sellOrderActualAmount);
+	                    sellOrder.setUserId(studentPaymentRouteOrder.getUserId());
+	                    sellOrder.setPaymentChannel(studentPaymentOrder.getPaymentChannel());
+	                    sellOrder.setMerNo(studentPaymentRouteOrder.getMerNo());
+	                    sellOrder.setSellTime(studentPaymentRouteOrder.getCreateTime());
+	                    sellOrder.setCreateIme(nowDate);
+	                    sellOrder.setUpdateTime(nowDate);
+	                    sellOrder.setType(SellTypeEnum.SCHOOL_BUY);
+	                }
+	            }
+	            sellOrderDao.batchInsert(sellOrderList);
+	        }
+		}
+		
+		
+		
+		return true;
+	}
+
+	@Override
     public StudentPaymentRouteOrder addRouteOrder(String orderNo, Integer routeOrganId, BigDecimal routeBalanceAmount) {
         StudentPaymentRouteOrder studentPaymentRouteOrder = new StudentPaymentRouteOrder();
         studentPaymentRouteOrder.setOrderNo(orderNo);

+ 43 - 5
mec-biz/src/main/resources/config/mybatis/StudentPaymentRouteOrderMapper.xml

@@ -11,6 +11,14 @@
         <result column="mer_no_" property="merNo"/>
         <result column="order_no_" property="orderNo"/>
         <result column="fee_flag_" property="feeFlag"/>
+        <result column="user_id_" property="userId"/>
+        <result column="school_id_" property="schoolId"/>
+        <result column="trans_no_" property="transNo"/>
+        <result column="pay_time_" property="payTime"/>
+        <result column="sale_amount_" property="saleAmount"/>
+        <result column="service_amount_" property="serviceAmount"/>
+        <result column="memo_" property="memo"/>
+        <result column="goods_json_" property="goodsJson"/>
         <result column="audit_status_" property="auditStatus" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler" />
         <result column="audit_comment_" property="auditComment"/>
         <result column="create_time_" property="createTime"/>
@@ -33,7 +41,7 @@
 
     <sql id="Base_Column_List">
         <!--@mbg.generated-->
-        id_, route_organ_id_, route_amount_,route_balance_amount_, mer_no_, order_no_, fee_flag_,audit_status_,audit_comment_,create_time_,create_by_,update_time_,update_by_
+        id_, route_organ_id_, route_amount_,route_balance_amount_, mer_no_, order_no_, fee_flag_,user_id_,school_id_,trans_no_,pay_time_,sale_amount_,service_amount_,memo_,goods_json_,audit_status_,audit_comment_,create_time_,create_by_,update_time_,update_by_
     </sql>
     <select id="get" parameterType="java.lang.Long" resultMap="StudentPaymentRouteOrder">
         <!--@mbg.generated-->
@@ -51,8 +59,8 @@
             parameterType="com.ym.mec.biz.dal.entity.StudentPaymentRouteOrder" useGeneratedKeys="true">
         <!--@mbg.generated-->
         insert into student_payment_route_order (route_organ_id_, route_amount_,route_balance_amount_, mer_no_,
-        order_no_, fee_flag_,audit_status_,audit_comment_,create_time_,update_time_,create_by_,update_by_)
-        values (#{routeOrganId}, #{routeAmount},#{routeBalanceAmount}, #{merNo}, #{orderNo}, #{feeFlag},#{auditStatus,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{auditComment},#{createTime},#{updateTime},#{createBy},#{updateBy})
+        order_no_, fee_flag_,user_id_,school_id_,trans_no_,pay_time_,sale_amount_,service_amount_,memo_,goods_json_,audit_status_,audit_comment_,create_time_,update_time_,create_by_,update_by_)
+        values (#{routeOrganId}, #{routeAmount},#{routeBalanceAmount}, #{merNo}, #{orderNo}, #{feeFlag},#{userId},#{schoolId},#{transNo},#{payTime},#{saleAmount},#{serviceAmount},#{memo},#{goodsJson},#{auditStatus,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{auditComment},#{createTime},#{updateTime},#{createBy},#{updateBy})
     </insert>
     <update id="update" parameterType="com.ym.mec.biz.dal.entity.StudentPaymentRouteOrder">
         <!--@mbg.generated-->
@@ -64,12 +72,42 @@
             <if test="routeAmount != null">
                 route_amount_ = #{routeAmount},
             </if>
+            <if test="routeBalanceAmount != null">
+                route_balance_amount_ = #{routeBalanceAmount},
+            </if>
             <if test="merNo != null">
                 mer_no_ = #{merNo},
             </if>
             <if test="orderNo != null">
                 order_no_ = #{orderNo},
             </if>
+            <if test="feeFlag != null">
+                fee_flag_ = #{feeFlag},
+            </if>
+            <if test="userId != null">
+                user_id_ = #{userId},
+            </if>
+            <if test="schoolId != null">
+                school_id_ = #{schoolId},
+            </if>
+            <if test="transNo != null">
+                trans_no_ = #{transNo},
+            </if>
+            <if test="payTime != null">
+                pay_time_ = #{payTime},
+            </if>
+            <if test="saleAmount != null">
+                sale_amount_ = #{saleAmount},
+            </if>
+            <if test="serviceAmount != null">
+                service_amount_ = #{serviceAmount},
+            </if>
+            <if test="memo != null">
+                memo_ = #{memo},
+            </if>
+            <if test="goodsJson != null">
+                goods_json_ = #{goodsJson},
+            </if>
             <if test="auditStatus != null">
                 audit_status_ = #{auditStatus,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
             </if>
@@ -95,10 +133,10 @@
     <insert id="batchAdd" parameterType="java.util.List" useGeneratedKeys="true" keyColumn="id"
             keyProperty="id">
         INSERT INTO student_payment_route_order
-        (order_no_,route_organ_id_, route_amount_,route_balance_amount_, mer_no_,fee_flag_,audit_status_,audit_comment_,create_time_,update_time_,create_by_,update_by_)
+        (order_no_,route_organ_id_, route_amount_,route_balance_amount_, mer_no_,fee_flag_,usre_id_,school_id_,trans_no_,pay_time_,sale_amount_,service_amount_,memo_,goods_json_,audit_status_,audit_comment_,create_time_,update_time_,create_by_,update_by_)
         VALUE
         <foreach collection="routeOrders" item="routeOrder" separator=",">
-            (#{routeOrder.orderNo},#{routeOrder.routeOrganId},#{routeOrder.routeAmount},#{routeOrder.routeBalanceAmount},#{routeOrder.merNo},#{routeOrder.feeFlag},#{routeOrder.auditStatus,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{routeOrder.auditComment},#{routeOrder.createTime},#{routeOrder.updateTime},#{routeOrder.createBy},#{routeOrder.updateBy})
+            (#{routeOrder.orderNo},#{routeOrder.routeOrganId},#{routeOrder.routeAmount},#{routeOrder.routeBalanceAmount},#{routeOrder.merNo},#{routeOrder.feeFlag},#{routeOrder.userId},#{routeOrder.schoolId},#{routeOrder.transNo},#{routeOrder.payTime},#{routeOrder.saleAmount},#{routeOrder.serviceAmount},#{routeOrder.memo},#{routeOrder.goodsJson},#{routeOrder.auditStatus,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{routeOrder.auditComment},#{routeOrder.createTime},#{routeOrder.updateTime},#{routeOrder.createBy},#{routeOrder.updateBy})
         </foreach>
     </insert>
 

+ 65 - 31
mec-web/src/main/java/com/ym/mec/web/controller/StudentPaymentRouteOrderController.java

@@ -1,39 +1,39 @@
 package com.ym.mec.web.controller;
 
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+
+import java.math.BigDecimal;
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
+
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.EmployeeDao;
 import com.ym.mec.biz.dal.dao.SellOrderDao;
 import com.ym.mec.biz.dal.dao.StudentPaymentOrderDao;
-import com.ym.mec.biz.dal.dao.SysConfigDao;
 import com.ym.mec.biz.dal.dto.BasicUserDto;
 import com.ym.mec.biz.dal.dto.OutOrderInfoDto;
 import com.ym.mec.biz.dal.dto.StudentPaymentRouteOrderDto;
 import com.ym.mec.biz.dal.entity.Employee;
 import com.ym.mec.biz.dal.entity.SellOrder;
-import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
-import com.ym.mec.biz.dal.page.SporadicOrderQueryInfo;
+import com.ym.mec.biz.dal.entity.StudentPaymentRouteOrder;
+import com.ym.mec.biz.dal.enums.AuditStatusEnum;
 import com.ym.mec.biz.dal.page.StudentPaymentOrderQueryInfo;
-import com.ym.mec.biz.service.SellOrderService;
-import com.ym.mec.biz.service.StudentPaymentOrderDetailService;
-import com.ym.mec.biz.service.StudentPaymentOrderService;
 import com.ym.mec.biz.service.StudentPaymentRouteOrderService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.page.PageInfo;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiImplicitParam;
-import io.swagger.annotations.ApiImplicitParams;
-import io.swagger.annotations.ApiOperation;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.web.bind.annotation.*;
-
-import java.math.BigDecimal;
-import java.util.Arrays;
-import java.util.List;
-import java.util.stream.Collectors;
 
 @RequestMapping("routeOrder")
 @Api(tags = "分润订单服务")
@@ -85,26 +85,60 @@ public class StudentPaymentRouteOrderController extends BaseController {
         return succeed(studentPaymentRouteOrderPageInfo);
     }
 
+    @ApiOperation(value = "财务订单列表")
+    @GetMapping("/query")
+    @PreAuthorize("@pcs.hasPermissions('routeOrder/query')")
+    public HttpResponseResult<StudentPaymentRouteOrder> query(Long id) {
+
+        return succeed(studentPaymentRouteOrderService.get(id));
+    }
+
 
     @ApiOperation(value = "添加订单")
     @PostMapping("/add")
     @PreAuthorize("@pcs.hasPermissions('routeOrder/add')")
-    public HttpResponseResult<StudentPaymentRouteOrderDto> add(@RequestBody StudentPaymentRouteOrderDto studentPaymentRouteOrderDto) {
-        if (studentPaymentRouteOrderDto.getUserId() == null) {
-            SysUser sysUser = sysUserFeignService.queryUserInfo();
-            studentPaymentRouteOrderDto.setUserId(sysUser.getId());
+    public HttpResponseResult<StudentPaymentRouteOrder> add(@RequestBody StudentPaymentRouteOrder studentPaymentRouteOrder) {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (studentPaymentRouteOrder.getUserId() == null) {
+            studentPaymentRouteOrder.setUserId(sysUser.getId());
         }
-        if (studentPaymentRouteOrderDto.getSchoolId() != null) {
-            studentPaymentRouteOrderDto.setMusicGroupId(studentPaymentRouteOrderDto.getSchoolId().toString());
+        if (studentPaymentRouteOrder.getServiceAmount() == null) {
+        	studentPaymentRouteOrder.setServiceAmount(BigDecimal.ZERO);
         }
-        if (studentPaymentRouteOrderDto.getServiceAmount() == null) {
-            studentPaymentRouteOrderDto.setServiceAmount(BigDecimal.ZERO);
+        if (studentPaymentRouteOrder.getSaleAmount() == null) {
+        	studentPaymentRouteOrder.setSaleAmount(BigDecimal.ZERO);
         }
-        if (studentPaymentRouteOrderDto.getGoodsAmount() == null) {
-            studentPaymentRouteOrderDto.setGoodsAmount(BigDecimal.ZERO);
+        studentPaymentRouteOrder.setCreateBy(sysUser.getId());
+        studentPaymentRouteOrder.setUpdateBy(sysUser.getId());
+
+        return succeed(studentPaymentRouteOrderService.addOutOrder(studentPaymentRouteOrder));
+    }
+
+
+    @ApiOperation(value = "修改订单")
+    @PostMapping("/update")
+    @PreAuthorize("@pcs.hasPermissions('routeOrder/update')")
+    public HttpResponseResult<StudentPaymentRouteOrder> update(@RequestBody StudentPaymentRouteOrder studentPaymentRouteOrder) {
+    	StudentPaymentRouteOrder originOrder = studentPaymentRouteOrderService.get(studentPaymentRouteOrder.getId());
+    	if(originOrder == null){
+    		return failed("参数不正确");
+    	}
+    	if(originOrder.getAuditStatus() != AuditStatusEnum.REJECT ){
+    		return failed("只有“拒绝”状态才能修改订单");
+    	}
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (studentPaymentRouteOrder.getUserId() == null) {
+            studentPaymentRouteOrder.setUserId(sysUser.getId());
+        }
+        if (studentPaymentRouteOrder.getServiceAmount() == null) {
+        	studentPaymentRouteOrder.setServiceAmount(BigDecimal.ZERO);
         }
-        studentPaymentRouteOrderDto.setActualAmount(studentPaymentRouteOrderDto.getServiceAmount().add(studentPaymentRouteOrderDto.getGoodsAmount()));
-        return succeed(studentPaymentRouteOrderService.addOutOrder(studentPaymentRouteOrderDto));
+        if (studentPaymentRouteOrder.getSaleAmount() == null) {
+        	studentPaymentRouteOrder.setSaleAmount(BigDecimal.ZERO);
+        }
+        studentPaymentRouteOrder.setUpdateBy(sysUser.getId());
+
+        return succeed(studentPaymentRouteOrderService.updateOutOrder(studentPaymentRouteOrder));
     }
 
     @ApiOperation(value = "获取订单信息")