浏览代码

Merge branch 'online1' of http://git.dayaedu.com/yonge/mec

 Conflicts:
	mec-biz/src/main/java/com/ym/mec/biz/dal/dao/IndexBaseMonthDataDao.java
	mec-biz/src/main/resources/config/mybatis/IndexBaseMonthDataMapper.xml
zouxuan 4 年之前
父节点
当前提交
5409f82ed2
共有 34 个文件被更改,包括 1369 次插入294 次删除
  1. 2 2
      mec-auth/mec-auth-server/src/main/resources/logback-spring.xml
  2. 6 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/IndexBaseMonthDataDao.java
  3. 18 4
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ReplacementInstrumentActivityDao.java
  4. 24 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ReplacementInstrumentCooperationDao.java
  5. 0 10
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ReplacementInstrumentActivityStatDto.java
  6. 20 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ReplacementInstrumentActivityStatHead.java
  7. 43 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ReplacementPayDto.java
  8. 23 2
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ReplacementInstrumentActivity.java
  9. 185 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ReplacementInstrumentCooperation.java
  10. 2 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/GroupType.java
  11. 1 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/IndexDataType.java
  12. 2 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/MessageTypeEnum.java
  13. 2 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/OrderTypeEnum.java
  14. 44 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/ReplacementInstrumentCooperationQueryInfo.java
  15. 20 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/ReplacementInstrumentQueryInfo.java
  16. 21 3
      mec-biz/src/main/java/com/ym/mec/biz/service/ReplacementInstrumentActivityService.java
  17. 32 0
      mec-biz/src/main/java/com/ym/mec/biz/service/ReplacementInstrumentCooperationService.java
  18. 5 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/IndexBaseMonthDataServiceImpl.java
  19. 5 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/OrganizationServiceImpl.java
  20. 304 70
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ReplacementInstrumentActivityServiceImpl.java
  21. 112 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ReplacementInstrumentCooperationServiceImpl.java
  22. 6 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SellOrderServiceImpl.java
  23. 4 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentPaymentOrderServiceImpl.java
  24. 22 0
      mec-biz/src/main/resources/config/mybatis/IndexBaseMonthDataMapper.xml
  25. 197 156
      mec-biz/src/main/resources/config/mybatis/ReplacementInstrumentActivityMapper.xml
  26. 106 0
      mec-biz/src/main/resources/config/mybatis/ReplacementInstrumentCooperationMapper.xml
  27. 7 1
      mec-biz/src/main/resources/config/mybatis/ReplacementInstrumentMapper.xml
  28. 1 1
      mec-biz/src/main/resources/config/mybatis/StudentMapper.xml
  29. 22 11
      mec-student/src/main/java/com/ym/mec/student/controller/ReplacementInstrumentActivityController.java
  30. 7 7
      mec-student/src/main/java/com/ym/mec/student/controller/ReplacementInstrumentController.java
  31. 23 20
      mec-web/src/main/java/com/ym/mec/web/controller/ReplacementInstrumentActivityController.java
  32. 18 0
      mec-web/src/main/java/com/ym/mec/web/controller/ReplacementInstrumentController.java
  33. 82 0
      mec-web/src/main/java/com/ym/mec/web/controller/ReplacementInstrumentCooperationController.java
  34. 3 3
      mec-web/src/main/resources/logback-spring.xml

+ 2 - 2
mec-auth/mec-auth-server/src/main/resources/logback-spring.xml

@@ -27,8 +27,8 @@
 		</encoder>
 	</appender>
 
-	<logger name="com.ym.mec" level="INFO" />
-	<root level="INFO">
+	<logger name="com.ym.mec" level="WARN" />
+	<root level="WARN">
 		<appender-ref ref="stdout" />
 		<appender-ref ref="file" />
 	</root>

+ 6 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/IndexBaseMonthDataDao.java

@@ -246,6 +246,8 @@ public interface IndexBaseMonthDataDao extends BaseDAO<Long, IndexBaseMonthData>
 
     List<IndexBaseMonthData> getFinanceActualData(@Param("dayStr") String dayStr);
 
+    List<IndexBaseMonthData> getTotalAmountData(@Param("dayStr") String dayStr);
+
     List<IndexBaseMonthData> getFinancePayDataWithTimely(@Param("startDate") String startDate,
                                                          @Param("endDate") String endDate,
                                                          @Param("organIds") List<Integer> organIds);
@@ -266,4 +268,8 @@ public interface IndexBaseMonthDataDao extends BaseDAO<Long, IndexBaseMonthData>
      * @return java.util.List<java.util.Map<java.lang.Integer,java.lang.Integer>>
      */
     List<Map<Integer, Integer>> countOrganTeacherServeInfo(Map<String, Object> params);
+
+    List<IndexBaseMonthData> getTotalAmountDataWithTimely(@Param("startDate") String startDate,
+                                                            @Param("endDate") String endDate,
+                                                            @Param("organIds") List<Integer> organIds);
 }

+ 18 - 4
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ReplacementInstrumentActivityDao.java

@@ -1,20 +1,34 @@
 package com.ym.mec.biz.dal.dao;
 
+import java.util.List;
+import java.util.Map;
+
+import org.apache.ibatis.annotations.Param;
+
 import com.ym.mec.biz.dal.dto.ReplacementInstrumentActivityStatDto;
 import com.ym.mec.biz.dal.dto.ReplacementInstrumentActivityStatHead;
 import com.ym.mec.biz.dal.entity.ReplacementInstrumentActivity;
 import com.ym.mec.common.dal.BaseDAO;
 
-import java.util.List;
-import java.util.Map;
-
 public interface ReplacementInstrumentActivityDao extends BaseDAO<Integer, ReplacementInstrumentActivity> {
 
 
-    ReplacementInstrumentActivity findByUserId(Integer userId);
+    ReplacementInstrumentActivity findByUserId(@Param("cooperationOrganId") Integer cooperationOrganId, @Param("userId")Integer userId);
 
     List<ReplacementInstrumentActivityStatDto> queryReplacements(Map<String, Object> params);
+
     int countReplacements(Map<String, Object> params);
 
     ReplacementInstrumentActivityStatHead countReplacementsInfo(Integer cooperationOrganId);
+
+    int openPay(@Param("cooperationOrganId") Integer cooperationOrganId);
+
+    ReplacementInstrumentActivity getLock(@Param("id") Integer id);
+
+    /**
+     * 获取开启缴费推送的人
+     * @param cooperationOrganId
+     * @return
+     */
+    List<ReplacementInstrumentActivityStatDto> getPushUsers(@Param("cooperationOrganId") Integer cooperationOrganId);
 }

+ 24 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ReplacementInstrumentCooperationDao.java

@@ -0,0 +1,24 @@
+package com.ym.mec.biz.dal.dao;
+
+import com.ym.mec.biz.dal.entity.ReplacementInstrumentCooperation;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+
+public interface ReplacementInstrumentCooperationDao extends com.ym.mec.common.dal.BaseDAO<Integer, ReplacementInstrumentCooperation> {
+
+    /**
+     * 获取合作单位的活动
+     *
+     * @param cooperationId
+     * @return
+     */
+    ReplacementInstrumentCooperation getByCooperationId(@Param("cooperationId") Integer cooperationId);
+
+    /**
+     * 统计个合作单位的转化率
+     * @return
+     */
+    List<ReplacementInstrumentCooperation> countAllReplacementsInfo();
+}

+ 0 - 10
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ReplacementInstrumentActivityStatDto.java

@@ -11,8 +11,6 @@ public class ReplacementInstrumentActivityStatDto extends ReplacementInstrumentA
 
     private String subjectName;
 
-    private String studentName;
-
     /** 品牌 */
     private String brand;
 
@@ -27,14 +25,6 @@ public class ReplacementInstrumentActivityStatDto extends ReplacementInstrumentA
         this.subjectName = subjectName;
     }
 
-    public String getStudentName() {
-        return studentName;
-    }
-
-    public void setStudentName(String studentName) {
-        this.studentName = studentName;
-    }
-
     public String getBrand() {
         return brand;
     }

+ 20 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ReplacementInstrumentActivityStatHead.java

@@ -8,6 +8,8 @@ import java.math.BigDecimal;
  */
 public class ReplacementInstrumentActivityStatHead {
 
+    private int openPay;
+
     private String cooperationOrganName;
 
     private BigDecimal surveyNum;
@@ -16,6 +18,16 @@ public class ReplacementInstrumentActivityStatHead {
 
     private BigDecimal replacementRate = new BigDecimal(0);
 
+    private BigDecimal paymentRate = new BigDecimal(0);
+
+    public int getOpenPay() {
+        return openPay;
+    }
+
+    public void setOpenPay(int openPay) {
+        this.openPay = openPay;
+    }
+
     public String getCooperationOrganName() {
         return cooperationOrganName;
     }
@@ -47,4 +59,12 @@ public class ReplacementInstrumentActivityStatHead {
     public void setReplacementRate(BigDecimal replacementRate) {
         this.replacementRate = replacementRate;
     }
+
+    public BigDecimal getPaymentRate() {
+        return paymentRate;
+    }
+
+    public void setPaymentRate(BigDecimal paymentRate) {
+        this.paymentRate = paymentRate;
+    }
 }

+ 43 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ReplacementPayDto.java

@@ -0,0 +1,43 @@
+package com.ym.mec.biz.dal.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+
+import java.math.BigDecimal;
+
+public class ReplacementPayDto {
+    @ApiModelProperty(value = "调查id", required = true)
+    private Integer id;
+
+    @ApiModelProperty(value = "支付金额", required = true)
+    private BigDecimal amount;
+
+    @ApiModelProperty(value = "是否使用余额", required = true)
+    private Boolean isUseBalance = false;
+
+    @ApiModelProperty(value = "重新支付", required = true)
+    private Boolean isRePay = false;
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public BigDecimal getAmount() {
+        return amount;
+    }
+
+    public void setAmount(BigDecimal amount) {
+        this.amount = amount;
+    }
+
+    public Boolean getUseBalance() {
+        return isUseBalance;
+    }
+
+    public void setUseBalance(Boolean useBalance) {
+        isUseBalance = useBalance;
+    }
+}

+ 23 - 2
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ReplacementInstrumentActivity.java

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.dal.entity;
 
+import io.swagger.annotations.ApiModelProperty;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 
 /**
@@ -43,6 +44,11 @@ public class ReplacementInstrumentActivity {
 	/** 乐器编号 */
 	private Integer instrumentsId;
 	
+	private String otherSuggestion;
+
+	@ApiModelProperty(value = "缴费状态 0-未缴费 1-缴费中 2-已缴费")
+	private Integer payStatus = 0;
+	
 	/**  */
 	private java.util.Date createTime;
 	
@@ -145,6 +151,14 @@ public class ReplacementInstrumentActivity {
 		return this.instrumentsId;
 	}
 			
+	public String getOtherSuggestion() {
+		return otherSuggestion;
+	}
+
+	public void setOtherSuggestion(String otherSuggestion) {
+		this.otherSuggestion = otherSuggestion;
+	}
+
 	public void setCreateTime(java.util.Date createTime){
 		this.createTime = createTime;
 	}
@@ -160,10 +174,17 @@ public class ReplacementInstrumentActivity {
 	public java.util.Date getUpdateTime(){
 		return this.updateTime;
 	}
-			
+
+	public Integer getPayStatus() {
+		return payStatus;
+	}
+
+	public void setPayStatus(Integer payStatus) {
+		this.payStatus = payStatus;
+	}
+
 	@Override
 	public String toString() {
 		return ToStringBuilder.reflectionToString(this);
 	}
-
 }

+ 185 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ReplacementInstrumentCooperation.java

@@ -0,0 +1,185 @@
+package com.ym.mec.biz.dal.entity;
+
+import com.ym.mec.biz.dal.enums.YesOrNoEnum;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@ApiModel(value = "com-ym-mec-biz-dal-entity-ReplacementInstrumentCooperation")
+public class ReplacementInstrumentCooperation {
+    @ApiModelProperty(value = "")
+    private Integer id;
+
+    /**
+     * 分部id
+     */
+    @ApiModelProperty(value = "分部id")
+    private Integer organId;
+
+    /**
+     * 合作单位id
+     */
+    @ApiModelProperty(value = "合作单位id")
+    private Integer cooperationOrganId;
+
+    /**
+     * 是否开启缴费 0-未开启 1-已开启
+     */
+    @ApiModelProperty(value = "是否开启缴费 0-未开启 1-已开启")
+    private YesOrNoEnum openPay = YesOrNoEnum.NO;
+
+    /**
+     * 创建时间
+     */
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+
+    /**
+     * 更新时间
+     */
+    @ApiModelProperty(value = "更新时间")
+    private Date updateTime;
+
+    @ApiModelProperty(value = "分部")
+    private String organName;
+
+    @ApiModelProperty(value = "合作单位")
+    private String cooperationOrganName;
+
+    @ApiModelProperty(value = "调查人数")
+    private Integer activeNum = 0;
+
+    @ApiModelProperty(value = "置换人数")
+    private Integer replaceNum = 0;
+
+    @ApiModelProperty(value = "支付人数")
+    private Integer payNum = 0;
+
+    @ApiModelProperty(value = "置换率")
+    private BigDecimal replaceScale = BigDecimal.ZERO;
+
+    @ApiModelProperty(value = "缴费率")
+    private BigDecimal payScale = BigDecimal.ZERO;
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public Integer getOrganId() {
+        return organId;
+    }
+
+    public void setOrganId(Integer organId) {
+        this.organId = organId;
+    }
+
+    public Integer getCooperationOrganId() {
+        return cooperationOrganId;
+    }
+
+    public void setCooperationOrganId(Integer cooperationOrganId) {
+        this.cooperationOrganId = cooperationOrganId;
+    }
+
+    public YesOrNoEnum getOpenPay() {
+        return openPay;
+    }
+
+    public void setOpenPay(YesOrNoEnum openPay) {
+        this.openPay = openPay;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(getClass().getSimpleName());
+        sb.append(" [");
+        sb.append("Hash = ").append(hashCode());
+        sb.append(", id=").append(id);
+        sb.append(", organId=").append(organId);
+        sb.append(", cooperationOrganId=").append(cooperationOrganId);
+        sb.append(", openPay=").append(openPay);
+        sb.append(", createTime=").append(createTime);
+        sb.append(", updateTime=").append(updateTime);
+        sb.append("]");
+        return sb.toString();
+    }
+
+    public String getOrganName() {
+        return organName;
+    }
+
+    public void setOrganName(String organName) {
+        this.organName = organName;
+    }
+
+    public String getCooperationOrganName() {
+        return cooperationOrganName;
+    }
+
+    public void setCooperationOrganName(String cooperationOrganName) {
+        this.cooperationOrganName = cooperationOrganName;
+    }
+
+    public Integer getActiveNum() {
+        return activeNum;
+    }
+
+    public void setActiveNum(Integer activeNum) {
+        this.activeNum = activeNum;
+    }
+
+    public Integer getReplaceNum() {
+        return replaceNum;
+    }
+
+    public void setReplaceNum(Integer replaceNum) {
+        this.replaceNum = replaceNum;
+    }
+
+    public BigDecimal getReplaceScale() {
+        return replaceScale;
+    }
+
+    public void setReplaceScale(BigDecimal replaceScale) {
+        this.replaceScale = replaceScale;
+    }
+
+    public Integer getPayNum() {
+        return payNum;
+    }
+
+    public void setPayNum(Integer payNum) {
+        this.payNum = payNum;
+    }
+
+    public BigDecimal getPayScale() {
+        return payScale;
+    }
+
+    public void setPayScale(BigDecimal payScale) {
+        this.payScale = payScale;
+    }
+}

+ 2 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/GroupType.java

@@ -13,7 +13,8 @@ public enum GroupType implements BaseEnum<String, GroupType> {
 	GOODS_SELL("商品销售"),
 	OUTORDER("外部订单"),
 	SUBJECT_CHANGE("声部更换"),
-	MAINTENANCE("乐保");
+	MAINTENANCE("乐保"),
+	REPLACEMENT("乐器置换");
 
 	private String desc;
 

+ 1 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/IndexDataType.java

@@ -40,6 +40,7 @@ public enum IndexDataType implements BaseEnum<String, IndexDataType> {
     FINANCE_PAY("FINANCE_PAY","财务支出", false, false),
     FINANCE_BALANCE_AMOUNT("FINANCE_BALANCE_AMOUNT","余额收入", false, false),
     FINANCE_AMOUNT("FINANCE_AMOUNT","现金收入", false, false),
+    TOTAL_AMOUNT("TOTAL_AMOUNT","总收入", false, false),
 
     //业务数据
     HOMEWORK_CREATE_RATE("HOMEWORK_CREATE_RATE","作业布置率", true, true),

+ 2 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/MessageTypeEnum.java

@@ -168,7 +168,8 @@ public enum MessageTypeEnum implements BaseEnum<String, MessageTypeEnum> {
     SMS_MUSIC_GROUP_PARENT_MEETING_NOTICE("SMS_MUSIC_GROUP_PARENT_MEETING_NOTICE","乐团家长会通知"),
     SMS_INSPECTION_NOTICE("SMS_INSPECTION_NOTICE","巡查日程提醒"),
     TEACHER_SERVE_PUSH("TEACHER_SERVE_PUSH", "服务指标未完成提醒"),
-    MAINTENANCE_NOTICE_PUSH("MAINTENANCE_NOTICE_PUSH", "乐保到期提醒");
+    MAINTENANCE_NOTICE_PUSH("MAINTENANCE_NOTICE_PUSH", "乐保到期提醒"),
+    REPLACEMENT_PAY_PUSH("REPLACEMENT_PAY_PUSH", "乐器置换支付提醒");
 
 
 

+ 2 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/OrderTypeEnum.java

@@ -22,7 +22,8 @@ public enum OrderTypeEnum implements BaseEnum<String, OrderTypeEnum> {
 	REPAIR("REPAIR","乐器维修"),
 	SUBJECT_CHANGE("SUBJECT_CHANGE","声部更换"),
 	DEGREE_REGISTRATION("DEGREE_REGISTRATION", "考级报名"),
-	MAINTENANCE("MAINTENANCE","乐保");
+	MAINTENANCE("MAINTENANCE","乐保"),
+	REPLACEMENT("REPLACEMENT","乐器置换");
 
 
 	private String code;

+ 44 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/ReplacementInstrumentCooperationQueryInfo.java

@@ -0,0 +1,44 @@
+package com.ym.mec.biz.dal.page;
+
+
+import com.ym.mec.biz.dal.enums.YesOrNoEnum;
+import com.ym.mec.common.page.QueryInfo;
+import io.swagger.annotations.ApiModelProperty;
+
+public class ReplacementInstrumentCooperationQueryInfo extends QueryInfo {
+
+    @ApiModelProperty(value="学校名称或编号")
+    private String search;
+
+    @ApiModelProperty(value="分部id")
+    private String organId;
+
+    @ApiModelProperty(value="是否开启缴费 0 -否 1-是")
+    private YesOrNoEnum openPay;
+
+    @Override
+    public String getSearch() {
+        return search;
+    }
+
+    @Override
+    public void setSearch(String search) {
+        this.search = search;
+    }
+
+    public String getOrganId() {
+        return organId;
+    }
+
+    public void setOrganId(String organId) {
+        this.organId = organId;
+    }
+
+    public YesOrNoEnum getOpenPay() {
+        return openPay;
+    }
+
+    public void setOpenPay(YesOrNoEnum openPay) {
+        this.openPay = openPay;
+    }
+}

+ 20 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/ReplacementInstrumentQueryInfo.java

@@ -7,6 +7,10 @@ public class ReplacementInstrumentQueryInfo extends QueryInfo {
 
     private Integer subjectId;
 
+    private String brand;
+
+    private String specification;
+
     public Integer getSubjectId() {
         return subjectId;
     }
@@ -14,4 +18,20 @@ public class ReplacementInstrumentQueryInfo extends QueryInfo {
     public void setSubjectId(Integer subjectId) {
         this.subjectId = subjectId;
     }
+
+    public String getBrand() {
+        return brand;
+    }
+
+    public void setBrand(String brand) {
+        this.brand = brand;
+    }
+
+    public String getSpecification() {
+        return specification;
+    }
+
+    public void setSpecification(String specification) {
+        this.specification = specification;
+    }
 }

+ 21 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/ReplacementInstrumentActivityService.java

@@ -1,18 +1,36 @@
 package com.ym.mec.biz.service;
 
 import com.ym.mec.biz.dal.dto.ReplacementInstrumentActivityStatDto;
+import com.ym.mec.biz.dal.dto.ReplacementPayDto;
 import com.ym.mec.biz.dal.entity.ReplacementInstrumentActivity;
+import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
 import com.ym.mec.biz.dal.page.ReplacementInstrumentActivityQueryInfo;
-import com.ym.mec.biz.dal.page.ReplacementInstrumentQueryInfo;
 import com.ym.mec.common.page.PageInfo;
-import com.ym.mec.common.page.QueryInfo;
 import com.ym.mec.common.service.BaseService;
 
+import java.util.Map;
+
 public interface ReplacementInstrumentActivityService extends BaseService<Integer, ReplacementInstrumentActivity> {
 
     Object add(ReplacementInstrumentActivity replacementInstrumentActivity);
 
-    ReplacementInstrumentActivity findByUserId(Integer userId);
+    ReplacementInstrumentActivity findByUserId(Integer cooperationOrganId, Integer userId);
 
     PageInfo<ReplacementInstrumentActivityStatDto> queryReplacementsStat(ReplacementInstrumentActivityQueryInfo queryInfo);
+
+    /**
+     * 乐器置换的支付
+     * @param replacementPayDto
+     * @return
+     * @throws Exception
+     */
+    Map pay(ReplacementPayDto replacementPayDto) throws Exception;
+
+    /**
+     * 支付回调处理
+     * @param studentPaymentOrder
+     * @return
+     */
+    Boolean orderCallback(StudentPaymentOrder studentPaymentOrder);
+
 }

+ 32 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/ReplacementInstrumentCooperationService.java

@@ -0,0 +1,32 @@
+package com.ym.mec.biz.service;
+
+import com.ym.mec.biz.dal.entity.ReplacementInstrumentCooperation;
+import com.ym.mec.biz.dal.page.ReplacementInstrumentCooperationQueryInfo;
+import com.ym.mec.common.page.PageInfo;
+import com.ym.mec.common.service.BaseService;
+
+public interface ReplacementInstrumentCooperationService extends BaseService<Integer, ReplacementInstrumentCooperation> {
+
+    /**
+     * 开启缴费
+     * @param id
+     * @return
+     */
+    ReplacementInstrumentCooperation openPay(Integer id);
+
+
+    /**
+     * 获取合作单位的活动
+     * @param cooperationId
+     * @return
+     */
+    ReplacementInstrumentCooperation getByCooperationId(Integer cooperationId);
+
+
+    /**
+     * 获取合作单位乐器置换列表
+     * @param queryInfo
+     * @return
+     */
+    PageInfo<ReplacementInstrumentCooperation> getPageList(ReplacementInstrumentCooperationQueryInfo queryInfo);
+}

+ 5 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/IndexBaseMonthDataServiceImpl.java

@@ -110,6 +110,7 @@ public class IndexBaseMonthDataServiceImpl extends BaseServiceImpl<Long, IndexBa
 		typeDateMap.put(IndexDataType.FINANCE_PAY,indexBaseMonthDataDao.getFinancePayDataWithTimely(startDate.toString(), endDate.toString(), new ArrayList<>(organIds)));
 		typeDateMap.put(IndexDataType.FINANCE_BALANCE_AMOUNT,indexBaseMonthDataDao.getFinanceBalanceDataWithTimely(startDate.toString(), endDate.toString(), new ArrayList<>(organIds)));
 		typeDateMap.put(IndexDataType.FINANCE_AMOUNT,indexBaseMonthDataDao.getFinanceActualDataWithTimely(startDate.toString(), endDate.toString(), new ArrayList<>(organIds)));
+		typeDateMap.put(IndexDataType.TOTAL_AMOUNT,indexBaseMonthDataDao.getTotalAmountDataWithTimely(startDate.toString(), endDate.toString(), new ArrayList<>(organIds)));
 
 
 		for (IndexDataType dataType : IndexDataType.values()) {
@@ -131,6 +132,7 @@ public class IndexBaseMonthDataServiceImpl extends BaseServiceImpl<Long, IndexBa
 			typeDateMap.put(dataType, new ArrayList<>(Arrays.asList(indexBaseMonthData)));
 		}
 
+		BigDecimal totalAmount = BigDecimal.ZERO;
 		for (Map.Entry<IndexDataType, List<IndexBaseMonthData>> typeDateMapEntry : typeDateMap.entrySet()) {
 			Set<String> hasMonths = typeDateMapEntry.getValue().stream().map(d -> DateUtil.dateToString(d.getMonth(), "yyyy-MM-dd")).collect(Collectors.toSet());
 			LocalDate currentMonthDate = startDate;
@@ -168,7 +170,8 @@ public class IndexBaseMonthDataServiceImpl extends BaseServiceImpl<Long, IndexBa
 			IndexBaseDto indexBaseData = new IndexBaseDto(typeDateMapEntry.getKey(),typeDateMapEntry.getKey().getMsg());
 			indexBaseData.setIndexMonthData(typeDateMapEntry.getValue(), currentMonth);
 			if(IndexDataType.FINANCE_PAY.equals(typeDateMapEntry.getKey()) || IndexDataType.FINANCE_AMOUNT.equals(typeDateMapEntry.getKey()) ||
-				IndexDataType.FINANCE_BALANCE_AMOUNT.equals(typeDateMapEntry.getKey())){
+				IndexDataType.FINANCE_BALANCE_AMOUNT.equals(typeDateMapEntry.getKey()) ||
+					IndexDataType.TOTAL_AMOUNT.equals(typeDateMapEntry.getKey())){
 				indexBaseData.setPercent(typeDateMapEntry.getValue().stream().map(IndexBaseMonthData::getPercent).reduce(BigDecimal.ZERO, BigDecimal::add));
 			}
 			result.add(indexBaseData);
@@ -225,6 +228,7 @@ public class IndexBaseMonthDataServiceImpl extends BaseServiceImpl<Long, IndexBa
 		saveData(indexBaseMonthDataDao.getFinancePayData(dayStr),dayStr,IndexDataType.FINANCE_PAY);
 		saveData(indexBaseMonthDataDao.getFinanceBalanceData(dayStr),dayStr,IndexDataType.FINANCE_BALANCE_AMOUNT);
 		saveData(indexBaseMonthDataDao.getFinanceActualData(dayStr),dayStr,IndexDataType.FINANCE_AMOUNT);
+		saveData(indexBaseMonthDataDao.getTotalAmountData(dayStr),dayStr,IndexDataType.TOTAL_AMOUNT);
 
 		//业务数据
 		saveData(indexBaseMonthDataDao.getHomeworkData(dayStr, null), monday.toString(), IndexDataType.HOMEWORK_CREATE_RATE);

+ 5 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/OrganizationServiceImpl.java

@@ -91,6 +91,11 @@ public class OrganizationServiceImpl extends BaseServiceImpl<Integer, Organizati
 		Organization organization = organizationDao.get(id);
 		Map<Integer, String> gradeMap = new HashMap<>();
 
+		if(Objects.isNull(organization)){
+			gradeMap.put(GradeTypeEnum.SIX_PLUS.getCode(), GradeTypeEnum.SIX_PLUS.getDesc());
+			return gradeMap;
+		}
+
 		if(organization.getGradeType().equals(GradeTypeEnum.FIVE_PLUS)){
 			FivePlusGradeEnum[] fivePlusGradeEnums = FivePlusGradeEnum.values();
 			for (FivePlusGradeEnum fivePlusGradeEnum : fivePlusGradeEnums) {

+ 304 - 70
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ReplacementInstrumentActivityServiceImpl.java

@@ -3,93 +3,327 @@ package com.ym.mec.biz.service.impl;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.CooperationOrganDao;
+import com.ym.mec.biz.dal.dao.ReplacementInstrumentDao;
+import com.ym.mec.biz.dal.dao.SysConfigDao;
 import com.ym.mec.biz.dal.dto.ReplacementInstrumentActivityStatDto;
 import com.ym.mec.biz.dal.dto.ReplacementInstrumentActivityStatHead;
-import com.ym.mec.biz.dal.entity.CooperationOrgan;
+import com.ym.mec.biz.dal.dto.ReplacementPayDto;
+import com.ym.mec.biz.dal.entity.*;
+import com.ym.mec.biz.dal.enums.*;
 import com.ym.mec.biz.dal.page.ReplacementInstrumentActivityQueryInfo;
 import com.ym.mec.biz.dal.page.ReplacementInstrumentQueryInfo;
+import com.ym.mec.biz.service.*;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.page.QueryInfo;
+import com.ym.mec.common.service.IdGeneratorService;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
+import com.ym.mec.thirdparty.message.MessageSenderPluginContext;
 import com.ym.mec.util.collection.MapUtil;
+import com.ym.mec.util.date.DateUtil;
+
 import org.apache.poi.ss.formula.functions.T;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
-import com.ym.mec.biz.dal.entity.ReplacementInstrumentActivity;
-import com.ym.mec.biz.service.ReplacementInstrumentActivityService;
+
 import com.ym.mec.biz.dal.dao.ReplacementInstrumentActivityDao;
+
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+
+import java.math.BigDecimal;
+import java.util.*;
 
 @Service
 public class ReplacementInstrumentActivityServiceImpl extends BaseServiceImpl<Integer, ReplacementInstrumentActivity> implements ReplacementInstrumentActivityService {
-	
-	@Autowired
-	private ReplacementInstrumentActivityDao replacementInstrumentActivityDao;
-	@Autowired
-	private SysUserFeignService sysUserFeignService;
-	@Autowired
-	private CooperationOrganDao cooperationOrganDao;
-
-	@Override
-	public BaseDAO<Integer, ReplacementInstrumentActivity> getDAO() {
-		return replacementInstrumentActivityDao;
-	}
-
-	@Override
-	@Transactional(rollbackFor = Exception.class)
-	public Object add(ReplacementInstrumentActivity replacementInstrumentActivity) {
-		SysUser sysUser = sysUserFeignService.queryUserInfo();
-		if (sysUser == null) {
-			throw new BizException("用户信息获取失败,请重新登陆");
-		}
-		replacementInstrumentActivity.setUserId(sysUser.getId());
-		//如果用户是43分部,那么修改用户信息
-		//如果提交过调查问卷,那么覆盖之前的记录
-		ReplacementInstrumentActivity activity = replacementInstrumentActivityDao.findByUserId(sysUser.getId());
-		if(activity != null){
-			//覆盖之前的数据
-			replacementInstrumentActivity.setId(activity.getId());
-			replacementInstrumentActivityDao.update(replacementInstrumentActivity);
-		}else {
-			replacementInstrumentActivityDao.insert(replacementInstrumentActivity);
-		}
-		return replacementInstrumentActivity;
-	}
-
-	@Override
-	public ReplacementInstrumentActivity findByUserId(Integer userId) {
-		return replacementInstrumentActivityDao.findByUserId(userId);
-	}
-
-	@Override
-	public PageInfo<ReplacementInstrumentActivityStatDto> queryReplacementsStat(ReplacementInstrumentActivityQueryInfo queryInfo) {
-		PageInfo<ReplacementInstrumentActivityStatDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
-		Map<String, Object> params = new HashMap<String, Object>();
-		MapUtil.populateMap(params, queryInfo);
-
-		int count = replacementInstrumentActivityDao.countReplacements(params);
-
-		if(queryInfo.getPage()==1){
-			ReplacementInstrumentActivityStatHead head = replacementInstrumentActivityDao.countReplacementsInfo(queryInfo.getCooperationOrganId());
-			CooperationOrgan cooperationOrgan = cooperationOrganDao.get(queryInfo.getCooperationOrganId());
-			head.setCooperationOrganName(cooperationOrgan.getName());
-			pageInfo.setStatInfo(head);
-		}
-
-		pageInfo.setTotal(count);
-		params.put("offset", pageInfo.getOffset());
-		List<ReplacementInstrumentActivityStatDto> dataList = replacementInstrumentActivityDao.queryReplacements(params);
-		if (!CollectionUtils.isEmpty(dataList)) {
-
-		}
-		pageInfo.setRows(dataList);
-		return pageInfo;
-	}
+
+    @Autowired
+    private ReplacementInstrumentActivityDao replacementInstrumentActivityDao;
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+    @Autowired
+    private CooperationOrganDao cooperationOrganDao;
+    @Autowired
+    private ReplacementInstrumentDao replacementInstrumentDao;
+    @Autowired
+    private SysUserCashAccountService sysUserCashAccountService;
+    @Autowired
+    private IdGeneratorService idGeneratorService;
+    @Autowired
+    private StudentPaymentOrderService studentPaymentOrderService;
+    @Autowired
+    private StudentPaymentRouteOrderService studentPaymentRouteOrderService;
+    @Autowired
+    private SysConfigDao sysConfigDao;
+    @Autowired
+    private PayService payService;
+    @Autowired
+    private ContractService contractService;
+    @Autowired
+    private SysUserCashAccountDetailService sysUserCashAccountDetailService;
+    @Autowired
+    private SysMessageService sysMessageService;
+    
+    @Autowired
+    private CooperationOrganService cooperationOrganService;
+
+    private final Logger logger = LoggerFactory.getLogger(this.getClass());
+
+    @Override
+    public BaseDAO<Integer, ReplacementInstrumentActivity> getDAO() {
+        return replacementInstrumentActivityDao;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Object add(ReplacementInstrumentActivity replacementInstrumentActivity) {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            throw new BizException("用户信息获取失败,请重新登陆");
+        }
+        replacementInstrumentActivity.setUserId(sysUser.getId());
+        //如果用户是43分部,那么修改用户信息
+        if(sysUser.getOrganId() == 43){
+        	CooperationOrgan cooperationOrgan = cooperationOrganService.get(replacementInstrumentActivity.getCooperationOrganId());
+            if (cooperationOrgan != null) {
+            	sysUser.setOrganId(cooperationOrgan.getOrganId());
+            	sysUser.setUpdateTime(new Date());
+            	sysUserFeignService.updateSysUser(sysUser);
+            }
+        }
+        //如果提交过调查问卷,那么覆盖之前的记录
+        ReplacementInstrumentActivity activity = replacementInstrumentActivityDao.findByUserId(replacementInstrumentActivity.getCooperationOrganId(), sysUser.getId());
+        if (activity != null) {
+            //覆盖之前的数据
+            replacementInstrumentActivity.setId(activity.getId());
+            replacementInstrumentActivityDao.update(replacementInstrumentActivity);
+        } else {
+            replacementInstrumentActivityDao.insert(replacementInstrumentActivity);
+        }
+        return replacementInstrumentActivity;
+    }
+
+    @Override
+    public ReplacementInstrumentActivity findByUserId(Integer cooperationOrganId, Integer userId) {
+        return replacementInstrumentActivityDao.findByUserId(cooperationOrganId, userId);
+    }
+
+    @Override
+    public PageInfo<ReplacementInstrumentActivityStatDto> queryReplacementsStat(ReplacementInstrumentActivityQueryInfo queryInfo) {
+        PageInfo<ReplacementInstrumentActivityStatDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+        Map<String, Object> params = new HashMap<String, Object>();
+        MapUtil.populateMap(params, queryInfo);
+
+        if (Objects.isNull(queryInfo.getCooperationOrganId())) {
+            throw new BizException("请指定合作单位");
+        }
+
+        int count = replacementInstrumentActivityDao.countReplacements(params);
+
+        if (queryInfo.getPage() == 1) {
+            ReplacementInstrumentActivityStatHead head = replacementInstrumentActivityDao.countReplacementsInfo(queryInfo.getCooperationOrganId());
+            CooperationOrgan cooperationOrgan = cooperationOrganDao.get(queryInfo.getCooperationOrganId());
+            head.setCooperationOrganName(cooperationOrgan.getName());
+            pageInfo.setStatInfo(head);
+        }
+
+        pageInfo.setTotal(count);
+        params.put("offset", pageInfo.getOffset());
+        List<ReplacementInstrumentActivityStatDto> dataList = replacementInstrumentActivityDao.queryReplacements(params);
+        if (!CollectionUtils.isEmpty(dataList)) {
+
+        }
+        pageInfo.setRows(dataList);
+        return pageInfo;
+    }
+
+    @Override
+    public Map pay(ReplacementPayDto replacementPayDto) throws Exception {
+        ReplacementInstrumentActivity replacementInstrumentActivity = replacementInstrumentActivityDao.getLock(replacementPayDto.getId());
+        if (replacementInstrumentActivity == null) {
+            throw new BizException("乐器置换不存在,请核查");
+        }
+        if (replacementInstrumentActivity.getInstrumentsId() == null || replacementInstrumentActivity.getInstrumentsId() == 0) {
+            throw new BizException("没有置换的乐器,请核查");
+        }
+        Integer userId = replacementInstrumentActivity.getUserId();
+        ReplacementInstrument replacementInstrument = replacementInstrumentDao.get(replacementInstrumentActivity.getInstrumentsId());
+        BigDecimal orderAmount = replacementInstrument.getSalePrice();
+        BigDecimal amount = replacementPayDto.getAmount(); //扣除余额之前的金额
+        if (amount.compareTo(replacementInstrument.getSalePrice()) != 0) {
+            throw new BizException("商品价格不符");
+        }
+
+        String channelType = "";
+        Date nowDate = new Date();
+
+        BigDecimal balance = BigDecimal.ZERO;
+        if (replacementPayDto.getUseBalance() && amount.compareTo(BigDecimal.ZERO) > 0) {
+            SysUserCashAccount userCashAccount = sysUserCashAccountService.getLocked(userId);
+            if (userCashAccount == null) {
+                throw new BizException("用户账户找不到");
+            }
+            if (userCashAccount.getBalance() != null && userCashAccount.getBalance().compareTo(BigDecimal.ZERO) > 0) {
+                balance = amount.compareTo(userCashAccount.getBalance()) >= 0 ? userCashAccount.getBalance() : amount;
+                amount = amount.subtract(balance);
+                sysUserCashAccountService.updateBalance(userId, balance.negate(), PlatformCashAccountDetailTypeEnum.PAY_FEE, "乐保购买");
+            }
+        }
+
+        CooperationOrgan cooperationOrgan = cooperationOrganDao.get(replacementInstrumentActivity.getCooperationOrganId());
+
+        String orderNo = idGeneratorService.generatorId("payment") + "";
+        StudentPaymentOrder studentPaymentOrder = new StudentPaymentOrder();
+
+        studentPaymentOrder.setPaymentChannel("BALANCE");
+        studentPaymentOrder.setUserId(userId);
+        studentPaymentOrder.setGroupType(GroupType.REPLACEMENT);
+        studentPaymentOrder.setOrderNo(orderNo);
+        studentPaymentOrder.setType(OrderTypeEnum.REPLACEMENT);
+        studentPaymentOrder.setExpectAmount(orderAmount);
+        studentPaymentOrder.setActualAmount(amount);
+        studentPaymentOrder.setBalancePaymentAmount(balance);
+        studentPaymentOrder.setStatus(DealStatusEnum.ING);
+        studentPaymentOrder.setMusicGroupId(replacementInstrumentActivity.getId().toString());
+        studentPaymentOrder.setRemitFee(BigDecimal.ZERO);
+        studentPaymentOrder.setCourseRemitFee(BigDecimal.ZERO);
+        studentPaymentOrder.setOrganId(cooperationOrgan.getOrganId());
+        studentPaymentOrder.setRoutingOrganId(cooperationOrgan.getOrganId());
+        studentPaymentOrder.setCreateTime(nowDate);
+        studentPaymentOrder.setUpdateTime(nowDate);
+        studentPaymentOrderService.insert(studentPaymentOrder);
+        //修改支付状态
+        replacementInstrumentActivity.setPayStatus(1);
+        replacementInstrumentActivity.setUpdateTime(nowDate);
+        replacementInstrumentActivityDao.update(replacementInstrumentActivity);
+
+        studentPaymentOrder.setVersion(0);
+        if (amount.compareTo(BigDecimal.ZERO) == 0) {
+            studentPaymentRouteOrderService.addRouteOrder(orderNo, cooperationOrgan.getOrganId(), balance);
+            Map<String, String> notifyMap = new HashMap<>();
+            notifyMap.put("tradeState", "1");
+            notifyMap.put("merOrderNo", studentPaymentOrder.getOrderNo());
+            notifyMap.put("channelType", channelType);
+            notifyMap.put("orderNo", "");
+            studentPaymentOrderService.updateOrder(notifyMap);
+            return notifyMap;
+        }
+
+        String orderSubject = "乐器置换";
+        String receiver = "replacement";
+
+        String baseApiUrl = sysConfigDao.findConfigValue("base_api_url");
+
+        Map payMap = payService.getPayMap(
+                amount,
+                balance,
+                orderNo,
+                baseApiUrl + "/api-student/studentOrder/notify",
+                baseApiUrl + "/api-student/studentOrder/paymentResult?orderNo=" + orderNo,
+                orderSubject,
+                orderSubject,
+                cooperationOrgan.getOrganId(),
+                receiver
+        );
+
+        studentPaymentOrder.setOrganId(cooperationOrgan.getOrganId());
+        studentPaymentOrder.setMerNos((String) payMap.get("routingMerNos"));
+        studentPaymentOrder.setPaymentChannel((String) payMap.get("type"));
+        studentPaymentOrder.setUpdateTime(nowDate);
+        studentPaymentOrderService.update(studentPaymentOrder);
+        return payMap;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean orderCallback(StudentPaymentOrder studentPaymentOrder) {
+        Date nowDate = new Date();
+        //更新订单信息
+        studentPaymentOrder.setUpdateTime(nowDate);
+        int updateCount = studentPaymentOrderService.update(studentPaymentOrder);
+        if (updateCount <= 0) {
+            throw new BizException("订单更新失败");
+        }
+        //更新维修单信息
+        ReplacementInstrumentActivity replacementInstrumentActivity = replacementInstrumentActivityDao.getLock(Integer.parseInt(studentPaymentOrder.getMusicGroupId()));
+        if (replacementInstrumentActivity == null) {
+            throw new BizException("置换信息不存在");
+        }
+
+        Integer userId = studentPaymentOrder.getUserId();
+
+        Map<Integer, String> map = new HashMap<>();
+        map.put(userId, userId.toString());
+
+        //支付成功
+        if (studentPaymentOrder.getStatus() == DealStatusEnum.SUCCESS) {
+            replacementInstrumentActivity.setPayStatus(2);
+            replacementInstrumentActivity.setUpdateTime(nowDate);
+            if (this.update(replacementInstrumentActivity) <= 0) {
+                throw new BizException("置换信息更新失败");
+            }
+
+            //插入交易明细
+            BigDecimal amount = studentPaymentOrder.getActualAmount();
+            if (amount.compareTo(BigDecimal.ZERO) > 0) {
+                SysUserCashAccount cashAccount = sysUserCashAccountService.get(userId);
+                //充值
+                SysUserCashAccountDetail rechargeDetail = new SysUserCashAccountDetail();
+                rechargeDetail.setAmount(amount);
+                rechargeDetail.setBalance(cashAccount.getBalance().add(amount));
+                rechargeDetail.setComment("缴费前充值");
+                rechargeDetail.setCreateTime(nowDate);
+                rechargeDetail.setStatus(DealStatusEnum.SUCCESS);
+                rechargeDetail.setTransNo(studentPaymentOrder.getTransNo());
+                rechargeDetail.setType(PlatformCashAccountDetailTypeEnum.RECHARGE);
+                rechargeDetail.setUpdateTime(nowDate);
+                rechargeDetail.setUserId(userId);
+                rechargeDetail.setChannel(studentPaymentOrder.getPaymentChannel());
+                rechargeDetail.setComAmount(studentPaymentOrder.getComAmount());
+                rechargeDetail.setPerAmount(studentPaymentOrder.getPerAmount());
+                sysUserCashAccountDetailService.insert(rechargeDetail);
+
+                //缴费
+                SysUserCashAccountDetail paymentDetail = new SysUserCashAccountDetail();
+                paymentDetail.setAmount(amount.negate());
+                paymentDetail.setBalance(cashAccount.getBalance());
+                paymentDetail.setComment("乐器置换");
+                paymentDetail.setCreateTime(nowDate);
+                paymentDetail.setStatus(DealStatusEnum.SUCCESS);
+                paymentDetail.setTransNo(studentPaymentOrder.getTransNo());
+                paymentDetail.setType(PlatformCashAccountDetailTypeEnum.PAY_FEE);
+                paymentDetail.setUpdateTime(nowDate);
+                paymentDetail.setUserId(userId);
+                rechargeDetail.setChannel(studentPaymentOrder.getPaymentChannel());
+                sysUserCashAccountDetailService.insert(paymentDetail);
+            }
+            try {
+                contractService.transferProduceContract(userId, null);
+            } catch (Exception e) {
+                logger.error("产品协议生成失败", e);
+            }
+            return true;
+        }
+
+        if (studentPaymentOrder.getStatus() == DealStatusEnum.CLOSE || studentPaymentOrder.getStatus() == DealStatusEnum.FAILED) {
+
+            replacementInstrumentActivity.setPayStatus(0);
+            replacementInstrumentActivity.setUpdateTime(nowDate);
+            if (this.update(replacementInstrumentActivity) <= 0) {
+                throw new BizException("置换信息更新失败");
+            }
+
+            if (studentPaymentOrder.getBalancePaymentAmount() != null && studentPaymentOrder.getBalancePaymentAmount().compareTo(BigDecimal.ZERO) > 0) {
+                sysUserCashAccountService.updateBalance(studentPaymentOrder.getUserId(), studentPaymentOrder.getBalancePaymentAmount(), PlatformCashAccountDetailTypeEnum.REFUNDS, "乐保购买支付失败");
+            }
+
+            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.SMS_SPORADIC_PAYMENT_FAILED, map, null, 0, null, "STUDENT",
+                    studentPaymentOrder.getActualAmount(), "乐器置换");
+            return false;
+        }
+        return false;
+    }
 }

+ 112 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ReplacementInstrumentCooperationServiceImpl.java

@@ -0,0 +1,112 @@
+package com.ym.mec.biz.service.impl;
+
+import com.ym.mec.biz.dal.dao.ReplacementInstrumentActivityDao;
+import com.ym.mec.biz.dal.dao.ReplacementInstrumentCooperationDao;
+import com.ym.mec.biz.dal.dao.SysConfigDao;
+import com.ym.mec.biz.dal.dto.ReplacementInstrumentActivityStatDto;
+import com.ym.mec.biz.dal.entity.ReplacementInstrumentActivity;
+import com.ym.mec.biz.dal.entity.ReplacementInstrumentCooperation;
+import com.ym.mec.biz.dal.enums.MessageTypeEnum;
+import com.ym.mec.biz.dal.enums.YesOrNoEnum;
+import com.ym.mec.biz.dal.page.ReplacementInstrumentCooperationQueryInfo;
+import com.ym.mec.biz.service.ReplacementInstrumentCooperationService;
+import com.ym.mec.biz.service.SysMessageService;
+import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.common.exception.BizException;
+import com.ym.mec.common.page.PageInfo;
+import com.ym.mec.common.service.impl.BaseServiceImpl;
+import com.ym.mec.thirdparty.message.MessageSenderPluginContext;
+import com.ym.mec.util.date.DateUtil;
+import com.ym.mec.util.http.HttpUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.math.BigDecimal;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@Service
+public class ReplacementInstrumentCooperationServiceImpl extends BaseServiceImpl<Integer, ReplacementInstrumentCooperation> implements ReplacementInstrumentCooperationService {
+
+    @Autowired
+    private ReplacementInstrumentCooperationDao replacementInstrumentCooperationDao;
+    @Autowired
+    private ReplacementInstrumentActivityDao replacementInstrumentActivityDao;
+    @Autowired
+    private SysMessageService sysMessageService;
+    @Autowired
+    private SysConfigDao sysConfigDao;
+
+    @Override
+    public BaseDAO<Integer, ReplacementInstrumentCooperation> getDAO() {
+        return replacementInstrumentCooperationDao;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public ReplacementInstrumentCooperation openPay(Integer id) {
+        ReplacementInstrumentCooperation replacementInstrumentCooperation = replacementInstrumentCooperationDao.get(id);
+        if (replacementInstrumentCooperation == null) {
+            throw new BizException("合作单位乐器置换活动不存在");
+        }
+        if (YesOrNoEnum.YES.equals(replacementInstrumentCooperation.getOpenPay())) {
+            throw new BizException("已开启缴费,不能重复开启");
+        }
+        replacementInstrumentCooperation.setOpenPay(YesOrNoEnum.YES);
+        replacementInstrumentCooperationDao.update(replacementInstrumentCooperation);
+
+        //发送推送链接
+        //家长您好!您订购的 {乐器品牌}品牌乐器已经开始接受预定,请点击{链接地址}完成付款,付款后15个工作日以内到货,如有疑问请咨询乐团管理老师。
+        List<ReplacementInstrumentActivityStatDto> pushUsers = replacementInstrumentActivityDao.getPushUsers(replacementInstrumentCooperation.getCooperationOrganId());
+
+        replacementInstrumentActivityDao.openPay(replacementInstrumentCooperation.getCooperationOrganId());
+
+        Map<Integer, String> userMap = new HashMap<>();
+        Map<Integer, String> userPhoneMap = new HashMap<>();
+
+        String baseApiUrl = sysConfigDao.findConfigValue("base_api_url");
+        String pushUrl = baseApiUrl + "/#/auditionActive/1?id=";
+        for (ReplacementInstrumentActivityStatDto pushUser : pushUsers) {
+            userMap.clear();
+            userPhoneMap.clear();
+            userMap.put(pushUser.getUserId(), pushUser.getUserId().toString());
+            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.REPLACEMENT_PAY_PUSH,
+                    userMap, null, 0, "5?" + pushUrl + pushUser.getId(), "STUDENT", pushUser.getBrand(), "");
+
+            userPhoneMap.put(pushUser.getUserId(), pushUser.getMobileNo());
+            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS, MessageTypeEnum.REPLACEMENT_PAY_PUSH,
+                    userPhoneMap, null, 0, null, "STUDENT", pushUser.getBrand(), HttpUtil.getSortUrl(pushUrl + pushUser.getId()));
+        }
+
+        return replacementInstrumentCooperation;
+    }
+
+    @Override
+    public ReplacementInstrumentCooperation getByCooperationId(Integer cooperationId) {
+        return replacementInstrumentCooperationDao.getByCooperationId(cooperationId);
+    }
+
+    @Override
+    public PageInfo<ReplacementInstrumentCooperation> getPageList(ReplacementInstrumentCooperationQueryInfo queryInfo) {
+        PageInfo<ReplacementInstrumentCooperation> pageInfo = queryPage(queryInfo);
+        if (pageInfo.getRows().size() > 0) {
+            List<ReplacementInstrumentCooperation> replacementInstruments = replacementInstrumentCooperationDao.countAllReplacementsInfo();
+            for (ReplacementInstrumentCooperation row : pageInfo.getRows()) {
+                for (ReplacementInstrumentCooperation replacementInstrument : replacementInstruments) {
+                    if (!row.getCooperationOrganId().equals(replacementInstrument.getCooperationOrganId())) continue;
+                    row.setActiveNum(replacementInstrument.getActiveNum());
+                    row.setReplaceNum(replacementInstrument.getReplaceNum());
+                    row.setReplaceScale(new BigDecimal(replacementInstrument.getReplaceNum()).multiply(new BigDecimal(100)).divide(new BigDecimal(replacementInstrument.getActiveNum()), 2, BigDecimal.ROUND_HALF_UP));
+                    row.setPayScale(
+                            replacementInstrument.getReplaceNum() <= 0 ? new BigDecimal("0.00") :
+                                    new BigDecimal(replacementInstrument.getPayNum()).multiply(new BigDecimal(100)).divide(new BigDecimal(replacementInstrument.getReplaceNum()), 2, BigDecimal.ROUND_HALF_UP)
+                    );
+                }
+            }
+
+        }
+        return pageInfo;
+    }
+}

+ 6 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SellOrderServiceImpl.java

@@ -378,6 +378,12 @@ public class SellOrderServiceImpl extends BaseServiceImpl<Integer, SellOrder> im
             sellAmount.put("balance", order.getBalancePaymentAmount() == null ? BigDecimal.ZERO : order.getBalancePaymentAmount());
             return sellAmount;
         }
+        //乐器置换
+        if (order.getType().equals(OrderTypeEnum.REPLACEMENT)) {
+            sellAmount.put("actualAmount", order.getActualAmount());
+            sellAmount.put("balance", order.getBalancePaymentAmount() == null ? BigDecimal.ZERO : order.getBalancePaymentAmount());
+            return sellAmount;
+        }
 
         //乐器维修
         if (order.getType().equals(OrderTypeEnum.REPAIR)) {

+ 4 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentPaymentOrderServiceImpl.java

@@ -88,6 +88,8 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
     private GoodsDao goodsDao;
     @Autowired
     private StudentInstrumentService studentInstrumentService;
+    @Autowired
+    private ReplacementInstrumentActivityService replacementInstrumentActivityService;
 
     @Override
     public BaseDAO<Long, StudentPaymentOrder> getDAO() {
@@ -367,6 +369,8 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
             degreeRegistrationService.updateStatus(order);
         }else if (order.getType().equals(OrderTypeEnum.MAINTENANCE)) {
             studentInstrumentService.orderCallback(order);
+        }else if (order.getType().equals(OrderTypeEnum.REPLACEMENT)) {
+            replacementInstrumentActivityService.orderCallback(order);
         }
     }
 

+ 22 - 0
mec-biz/src/main/resources/config/mybatis/IndexBaseMonthDataMapper.xml

@@ -1187,6 +1187,14 @@
 		WHERE spo.status_ = 'SUCCESS' AND DATE_FORMAT(spo.pay_time_,'%Y-%m-%d') = #{dayStr}
 		GROUP BY spo.organ_id_
 	</select>
+	<select id="getTotalAmountData" resultMap="IndexBaseMonthData">
+		SELECT spo.organ_id_,SUM(spo.actual_amount_ + spo.balance_payment_amount_) total_num_,
+			   SUM(spo.actual_amount_ + spo.balance_payment_amount_) activate_num_,
+			   SUM(spo.actual_amount_ + spo.balance_payment_amount_) percent_,#{dayStr} month_
+		FROM student_payment_order spo
+		WHERE spo.status_ = 'SUCCESS' AND DATE_FORMAT(spo.pay_time_,'%Y-%m-%d') = #{dayStr}
+		GROUP BY spo.organ_id_
+	</select>
 
 	<select id="getFinancePayDataWithTimely"  resultMap="IndexBaseMonthData">
 		SELECT SUM(fe.amount_) total_num_,SUM(fe.amount_) activate_num_,SUM(fe.amount_) percent_,fe.organ_id_,DATE_FORMAT(fe.create_time_,'%Y-%m-%d') month_
@@ -1229,6 +1237,20 @@
 		</if>
 		GROUP BY DATE_FORMAT(spo.pay_time_,'%Y-%m-%d')
 	</select>
+	<select id="getTotalAmountDataWithTimely" resultMap="IndexBaseMonthData">
+		SELECT spo.organ_id_,SUM(spo.actual_amount_ + spo.balance_payment_amount_) total_num_,
+			   SUM(spo.actual_amount_ + spo.balance_payment_amount_) activate_num_,
+			   SUM(spo.actual_amount_ + spo.balance_payment_amount_) percent_,DATE_FORMAT(spo.pay_time_,'%Y-%m-%d') month_
+		FROM student_payment_order spo
+		WHERE spo.status_ = 'SUCCESS' AND DATE_FORMAT(spo.pay_time_,'%Y-%m-%d') BETWEEN #{startDate} AND #{endDate}
+		<if test="organIds!=null and organIds.size()>0">
+			AND spo.organ_id_ IN
+			<foreach collection="organIds" item="organId" open="(" close=")" separator=",">
+				#{organId}
+			</foreach>
+		</if>
+		GROUP BY DATE_FORMAT(spo.pay_time_,'%Y-%m-%d')
+	</select>
 
 	<sql id="queryTeacherServeInfoCondition">
 		<where>

+ 197 - 156
mec-biz/src/main/resources/config/mybatis/ReplacementInstrumentActivityMapper.xml

@@ -5,160 +5,201 @@
 不要修改此文件。所有改动将在下次重新自动生成时丢失。
 -->
 <mapper namespace="com.ym.mec.biz.dal.dao.ReplacementInstrumentActivityDao">
-	
-	<resultMap type="com.ym.mec.biz.dal.entity.ReplacementInstrumentActivity" id="ReplacementInstrumentActivity">
-		<result column="id_" property="id" />
-		<result column="cooperation_organ_id_" property="cooperationOrganId" />
-		<result column="user_id_" property="userId" />
-		<result column="user_name_" property="userName" />
-		<result column="grade_" property="grade" />
-		<result column="classes_" property="classes" />
-		<result column="mobile_no_" property="mobileNo" />
-		<result column="subject_id_" property="subjectId" />
-		<result column="question_result_" property="questionResult" />
-		<result column="instruments_id_" property="instrumentsId" />
-		<result column="open_flag_" property="openFlag" />
-		<result column="create_time_" property="createTime" />
-		<result column="update_time_" property="updateTime" />
-	</resultMap>
-
-	<resultMap id="ReplacementInstrumentActivityStatDto" type="com.ym.mec.biz.dal.dto.ReplacementInstrumentActivityStatDto" extends="ReplacementInstrumentActivity">
-		<result property="subjectName" column="subject_name_"/>
-		<result property="studentName" column="student_name_"/>
-		<result property="brand" column="brand_"/>
-		<result property="specification" column="specification_"/>
-	</resultMap>
-	
-	<!-- 根据主键查询一条记录 -->
-	<select id="get" resultMap="ReplacementInstrumentActivity" >
-		SELECT * FROM replacement_instrument_activity WHERE id_ = #{id} 
-	</select>
-	
-	<!-- 全查询 -->
-	<select id="findAll" resultMap="ReplacementInstrumentActivity">
-		SELECT * FROM replacement_instrument_activity ORDER BY id_
-	</select>
-	
-	<!-- 向数据库增加一条记录 -->
-	<insert id="insert" parameterType="com.ym.mec.biz.dal.entity.ReplacementInstrumentActivity" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
-		INSERT INTO replacement_instrument_activity (cooperation_organ_id_,user_id_,user_name_,grade_,classes_,mobile_no_,subject_id_,question_result_,instruments_id_,create_time_,update_time_)
-		VALUES(#{cooperationOrganId},#{userId},#{userName},#{grade},#{classes},#{mobileNo},#{subjectId},#{questionResult},#{instrumentsId},NOW(),NOW())
-	</insert>
-	
-	<!-- 根据主键查询一条记录 -->
-	<update id="update" parameterType="com.ym.mec.biz.dal.entity.ReplacementInstrumentActivity">
-		UPDATE replacement_instrument_activity <set>
-		<if test="subjectId != null">
-		subject_id_ = #{subjectId},
-		</if>
-		<if test="openFlag != null">
-		open_flag_ = #{openFlag},
-		</if>
-		<if test="userId != null">
-		user_id_ = #{userId},
-		</if>
-		<if test="cooperationOrganId != null">
-		cooperation_organ_id_ = #{cooperationOrganId},
-		</if>
-		<if test="userName != null">
-		user_name_ = #{userName},
-		</if>
-		<if test="questionResult != null">
-		question_result_ = #{questionResult},
-		</if>
-		<if test="updateTime != null">
-		update_time_ = #{updateTime},
-		</if>
-		<if test="instrumentsId != null">
-		instruments_id_ = #{instrumentsId},
-		</if>
-		<if test="mobileNo != null">
-		mobile_no_ = #{mobileNo},
-		</if>
-		<if test="classes != null">
-		classes_ = #{classes},
-		</if>
-		<if test="grade != null">
-		grade_ = #{grade},
-		</if>
-		</set> WHERE id_ = #{id}
-	</update>
-	
-	<!-- 根据主键删除一条记录 -->
-	<delete id="delete" >
-		DELETE FROM replacement_instrument_activity WHERE id_ = #{id} 
-	</delete>
-	
-	<!-- 分页查询 -->
-	<select id="queryPage" resultMap="ReplacementInstrumentActivity" parameterType="map">
-		SELECT * FROM replacement_instrument_activity ORDER BY id_ <include refid="global.limit"/>
-	</select>
-	
-	<!-- 查询当前表的总记录数 -->
-	<select id="queryCount" resultType="int">
-		SELECT COUNT(*) FROM replacement_instrument_activity
-	</select>
-	<select id="findByUserId" resultMap="ReplacementInstrumentActivity">
-		SELECT * FROM replacement_instrument_activity WHERE user_id_ = #{userId} LIMIT 1
-	</select>
-
-	<sql id="queryReplacementsCondition">
-		<where>
-			<if test="cooperationOrganId!=null">
-				AND ria.cooperation_organ_id_ = #{cooperationOrganId}
-			</if>
-			<if test="subjectId!=null">
-				AND ria.subject_id_ = #{subjectId}
-			</if>
-			<if test="brand!=null and brand!=''">
-				AND ri.brand_ = #{brand}
-			</if>
-			<if test="specification!=null and specification!=''">
-				AND ri.specification_ = #{specification}
-			</if>
-			<if test="search!=null and search!=''">
-				AND (ria.mobile_no_ LIKE CONCAT('%', #{search}, '%') OR stu.username_ LIKE CONCAT('%', #{search}, '%'))
-			</if>
-		</where>
-	</sql>
-
-	<select id="queryReplacements" resultMap="ReplacementInstrumentActivityStatDto">
-		SELECT
-			ria.subject_id_,
-			sub.name_ subject_name_,
-			stu.username_ student_name_,
-			ria.mobile_no_,
-			ri.brand_,
-			ri.specification_
-		FROM
-			replacement_instrument_activity ria
-			LEFT JOIN replacement_instrument ri ON ria.instruments_id_ = ri.id_
-			LEFT JOIN sys_user stu ON ria.user_id_ = stu.id_
-			LEFT JOIN `subject` sub ON ria.subject_id_ = sub.id_
-		<include refid="queryReplacementsCondition" />
-		ORDER BY ria.update_time_ DESC
-		<include refid="global.limit"></include>
-	</select>
-
-	<select id="countReplacements" resultType="int">
-		SELECT
-			COUNT(ria.id_)
-		FROM
-		replacement_instrument_activity ria
-		LEFT JOIN replacement_instrument ri ON ria.instruments_id_ = ri.id_
-		LEFT JOIN sys_user stu ON ria.user_id_ = stu.id_
-		LEFT JOIN `subject` sub ON ria.subject_id_ = sub.id_
-		<include refid="queryReplacementsCondition" />
-	</select>
-
-	<select id="countReplacementsInfo"
-			resultType="com.ym.mec.biz.dal.dto.ReplacementInstrumentActivityStatHead">
-		SELECT
-			COUNT(DISTINCT ria.user_id_) surveyNum,
-			COUNT(DISTINCT IF(ria.instruments_id_ IS NOT NULL, ria.user_id_, NULL)) replacementNum,
-			TRUNCATE(COUNT(IF(ria.instruments_id_ IS NOT NULL, ria.user_id_, NULL))/COUNT(DISTINCT ria.user_id_)*100, 2) replacementRate
-		FROM
-			replacement_instrument_activity ria
-		WHERE ria.cooperation_organ_id_ = #{cooperationOrganId}
-	</select>
+
+    <resultMap type="com.ym.mec.biz.dal.entity.ReplacementInstrumentActivity" id="ReplacementInstrumentActivity">
+        <result column="id_" property="id"/>
+        <result column="cooperation_organ_id_" property="cooperationOrganId"/>
+        <result column="user_id_" property="userId"/>
+        <result column="user_name_" property="userName"/>
+        <result column="grade_" property="grade"/>
+        <result column="classes_" property="classes"/>
+        <result column="mobile_no_" property="mobileNo"/>
+        <result column="subject_id_" property="subjectId"/>
+        <result column="question_result_" property="questionResult"/>
+        <result column="instruments_id_" property="instrumentsId"/>
+        <result column="other_suggestion_" property="otherSuggestion"/>
+        <result column="open_flag_" property="openFlag"/>
+        <result column="pay_status_" property="payStatus"/>
+        <result column="create_time_" property="createTime"/>
+        <result column="update_time_" property="updateTime"/>
+    </resultMap>
+
+    <resultMap id="ReplacementInstrumentActivityStatDto"
+               type="com.ym.mec.biz.dal.dto.ReplacementInstrumentActivityStatDto"
+               extends="ReplacementInstrumentActivity">
+        <result property="subjectName" column="subject_name_"/>
+        <result property="brand" column="brand_"/>
+        <result property="specification" column="specification_"/>
+    </resultMap>
+
+    <!-- 根据主键查询一条记录 -->
+    <select id="get" resultMap="ReplacementInstrumentActivity">
+        SELECT *
+        FROM replacement_instrument_activity
+        WHERE id_ = #{id}
+    </select>
+
+    <!-- 全查询 -->
+    <select id="findAll" resultMap="ReplacementInstrumentActivity">
+        SELECT *
+        FROM replacement_instrument_activity
+        ORDER BY id_
+    </select>
+
+    <!-- 向数据库增加一条记录 -->
+    <insert id="insert" parameterType="com.ym.mec.biz.dal.entity.ReplacementInstrumentActivity" useGeneratedKeys="true"
+            keyColumn="id" keyProperty="id">
+        INSERT INTO replacement_instrument_activity (cooperation_organ_id_, user_id_, user_name_, grade_, classes_,
+                                                     mobile_no_, subject_id_, question_result_, instruments_id_,
+                                                     other_suggestion_, create_time_, update_time_)
+        VALUES (#{cooperationOrganId}, #{userId}, #{userName}, #{grade}, #{classes}, #{mobileNo}, #{subjectId},
+                #{questionResult}, #{instrumentsId}, #{otherSuggestion}, NOW(), NOW())
+    </insert>
+
+    <!-- 根据主键查询一条记录 -->
+    <update id="update" parameterType="com.ym.mec.biz.dal.entity.ReplacementInstrumentActivity">
+        UPDATE replacement_instrument_activity
+        <set>
+            <if test="subjectId != null">
+                subject_id_ = #{subjectId},
+            </if>
+            <if test="openFlag != null">
+                open_flag_ = #{openFlag},
+            </if>
+            <if test="payStatus != null">
+                pay_status_ = #{payStatus},
+            </if>
+            <if test="userId != null">
+                user_id_ = #{userId},
+            </if>
+            <if test="cooperationOrganId != null">
+                cooperation_organ_id_ = #{cooperationOrganId},
+            </if>
+            <if test="userName != null">
+                user_name_ = #{userName},
+            </if>
+            <if test="questionResult != null">
+                question_result_ = #{questionResult},
+            </if>
+            <if test="updateTime != null">
+                update_time_ = #{updateTime},
+            </if>
+            instruments_id_ = #{instrumentsId},
+            other_suggestion_ = #{otherSuggestion},
+            <if test="mobileNo != null">
+                mobile_no_ = #{mobileNo},
+            </if>
+            <if test="classes != null">
+                classes_ = #{classes},
+            </if>
+            <if test="grade != null">
+                grade_ = #{grade},
+            </if>
+        </set>
+        WHERE id_ = #{id}
+    </update>
+
+    <!-- 根据主键删除一条记录 -->
+    <delete id="delete">
+        DELETE
+        FROM replacement_instrument_activity
+        WHERE id_ = #{id}
+    </delete>
+
+    <!-- 分页查询 -->
+    <select id="queryPage" resultMap="ReplacementInstrumentActivity" parameterType="map">
+        SELECT * FROM replacement_instrument_activity ORDER BY id_
+        <include refid="global.limit"/>
+    </select>
+
+    <!-- 查询当前表的总记录数 -->
+    <select id="queryCount" resultType="int">
+        SELECT COUNT(*)
+        FROM replacement_instrument_activity
+    </select>
+    <select id="findByUserId" resultMap="ReplacementInstrumentActivity">
+        SELECT *
+        FROM replacement_instrument_activity
+        WHERE user_id_ = #{userId} and cooperation_organ_id_ = #{cooperationOrganId}
+        LIMIT 1
+    </select>
+
+    <sql id="queryReplacementsCondition">
+        <where>
+            <if test="cooperationOrganId!=null">
+                AND ria.cooperation_organ_id_ = #{cooperationOrganId}
+            </if>
+            <if test="subjectId!=null">
+                AND ria.subject_id_ = #{subjectId}
+            </if>
+            <if test="brand!=null and brand!=''">
+                AND ri.brand_ = #{brand}
+            </if>
+            <if test="specification!=null and specification!=''">
+                AND ri.specification_ = #{specification}
+            </if>
+            <if test="search!=null and search!=''">
+                AND (ria.mobile_no_ LIKE CONCAT('%', #{search}, '%') OR ria.user_name_ LIKE CONCAT('%', #{search}, '%'))
+            </if>
+        </where>
+    </sql>
+
+    <select id="queryReplacements" resultMap="ReplacementInstrumentActivityStatDto">
+        SELECT
+        ria.subject_id_,
+        sub.name_ subject_name_,
+        ria.user_name_,
+        ria.mobile_no_,
+        ria.pay_status_,
+        ri.brand_,
+        ri.specification_
+        FROM
+        replacement_instrument_activity ria
+        LEFT JOIN replacement_instrument ri ON ria.instruments_id_ = ri.id_
+        LEFT JOIN `subject` sub ON ria.subject_id_ = sub.id_
+        <include refid="queryReplacementsCondition"/>
+        ORDER BY ria.id_ DESC
+        <include refid="global.limit"></include>
+    </select>
+
+    <select id="countReplacements" resultType="int">
+        SELECT
+        COUNT(ria.id_)
+        FROM
+        replacement_instrument_activity ria
+        LEFT JOIN replacement_instrument ri ON ria.instruments_id_ = ri.id_
+        LEFT JOIN `subject` sub ON ria.subject_id_ = sub.id_
+        <include refid="queryReplacementsCondition"/>
+    </select>
+
+    <select id="countReplacementsInfo"
+            resultType="com.ym.mec.biz.dal.dto.ReplacementInstrumentActivityStatHead">
+        SELECT ric.open_pay_ openPay,
+               COUNT(DISTINCT ria.user_id_)                                            surveyNum,
+               COUNT(DISTINCT IF(ria.instruments_id_ IS NOT NULL, ria.user_id_, NULL)) replacementNum,
+               TRUNCATE(COUNT(IF(ria.instruments_id_ IS NOT NULL, ria.user_id_, NULL)) / COUNT(DISTINCT ria.user_id_) * 100, 2) replacementRate,
+               TRUNCATE(COUNT(IF(ria.pay_status_ = 2, ria.user_id_, NULL)) / COUNT(DISTINCT IF(ria.instruments_id_ IS NOT NULL, ria.user_id_, NULL)) * 100, 2) paymentRate
+        FROM replacement_instrument_activity ria
+            LEFT JOIN replacement_instrument_cooperation ric ON ria.cooperation_organ_id_=ric.cooperation_organ_id_
+        WHERE ria.cooperation_organ_id_ = #{cooperationOrganId}
+    </select>
+
+    <update id="openPay" parameterType="integer">
+        UPDATE replacement_instrument_activity
+        SET open_flag_ = 1
+        WHERE cooperation_organ_id_ = #{cooperationOrganId}
+          AND open_flag_ = 0 AND instruments_id_ > 0
+    </update>
+
+    <select id="getLock" resultMap="ReplacementInstrumentActivity">
+        SELECT * FROM replacement_instrument_activity WHERE id_ = #{id} FOR UPDATE
+    </select>
+
+    <select id="getPushUsers" resultMap="ReplacementInstrumentActivityStatDto">
+        SELECT ria.*,su.phone_ mobile_no_,ri.brand_ FROM replacement_instrument_activity ria
+        LEFT JOIN sys_user su ON su.id_ = ria.user_id_
+        LEFT JOIN replacement_instrument ri ON ri.id_ = ria.instruments_id_
+        WHERE cooperation_organ_id_ = #{cooperationOrganId}
+        AND open_flag_ = 0 AND instruments_id_ > 0
+    </select>
 </mapper>

+ 106 - 0
mec-biz/src/main/resources/config/mybatis/ReplacementInstrumentCooperationMapper.xml

@@ -0,0 +1,106 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ym.mec.biz.dal.dao.ReplacementInstrumentCooperationDao">
+    <resultMap id="ReplacementInstrumentCooperation" type="com.ym.mec.biz.dal.entity.ReplacementInstrumentCooperation">
+        <!--@mbg.generated-->
+        <!--@Table replacement_instrument_cooperation-->
+        <result column="id_" property="id"/>
+        <result column="organ_id_" property="organId"/>
+        <result column="cooperation_organ_id_" property="cooperationOrganId"/>
+        <result column="open_pay_" property="openPay" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+        <result column="organName" property="organName"/>
+        <result column="cooperationOrganName" property="cooperationOrganName"/>
+        <result column="create_time_" property="createTime"/>
+        <result column="update_time_" property="updateTime"/>
+    </resultMap>
+
+    <!-- 根据主键查询一条记录 -->
+    <select id="get" resultMap="ReplacementInstrumentCooperation">
+        SELECT *
+        FROM replacement_instrument_cooperation
+        WHERE id_ = #{id}
+    </select>
+    <insert id="insert" parameterType="com.ym.mec.biz.dal.entity.ReplacementInstrumentCooperation"
+            useGeneratedKeys="true" keyColumn="id" keyProperty="id">
+        <!--@mbg.generated-->
+        insert into replacement_instrument_cooperation (id_, organ_id_, cooperation_organ_id_, open_pay_, create_time_,
+        update_time_
+        )
+        values (#{id}, #{organId}, #{cooperationOrganId},
+        #{openPay,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}, #{createTime}, #{updateTime}
+        )
+    </insert>
+
+    <delete id="delete">
+        <!--@mbg.generated-->
+        delete from replacement_instrument_cooperation WHERE id_ = #{id}
+    </delete>
+    <update id="update" parameterType="com.ym.mec.biz.dal.entity.ReplacementInstrumentCooperation">
+        <!--@mbg.generated-->
+        update replacement_instrument_cooperation
+        <set>
+            <if test="organId != null">
+                organ_id_ = #{organId},
+            </if>
+            <if test="cooperationOrganId != null">
+                cooperation_organ_id_ = #{cooperationOrganId},
+            </if>
+            <if test="openPay != null">
+                open_pay_ = #{openPay,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+            </if>
+            <if test="createTime != null">
+                create_time_ = #{createTime},
+            </if>
+            <if test="updateTime != null">
+                update_time_ = NOW(),
+            </if>
+        </set>
+        WHERE id_ = #{id}
+    </update>
+
+    <!-- 分页查询 -->
+    <select id="queryPage" resultMap="ReplacementInstrumentCooperation" parameterType="map">
+        SELECT ric.*,o.name_ organName,co.name_ cooperationOrganName FROM replacement_instrument_cooperation ric
+        LEFT JOIN cooperation_organ co ON co.id_ = ric.cooperation_organ_id_
+        LEFT JOIN organization o ON o.id_ = ric.organ_id_
+        <include refid="queryPageSql"/>
+        ORDER BY ric.id_ DESC
+        <include refid="global.limit"/>
+    </select>
+    <sql id="queryPageSql">
+        <where>
+            <if test="organId != null">
+                AND FIND_IN_SET(ric.organ_id_ , #{organId})
+            </if>
+            <if test="openPay != null">
+                AND ric.open_pay_ = #{openPay,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+            </if>
+            <if test="search != null and search != ''">
+                AND (ric.cooperation_organ_id_ = #{search} OR co.name_ LIKE CONCAT('%',#{search},'%'))
+            </if>
+        </where>
+    </sql>
+
+    <!-- 查询当前表的总记录数 -->
+    <select id="queryCount" resultType="int">
+        SELECT COUNT(*) FROM replacement_instrument_cooperation ric
+        LEFT JOIN cooperation_organ co ON co.id_ = ric.cooperation_organ_id_
+        <include refid="queryPageSql"/>
+    </select>
+
+    <select id="getByCooperationId" resultMap="ReplacementInstrumentCooperation">
+        SELECT *
+        FROM replacement_instrument_cooperation
+        WHERE cooperation_organ_id_ = #{cooperationId}
+    </select>
+
+    <select id="countAllReplacementsInfo" resultType="com.ym.mec.biz.dal.entity.ReplacementInstrumentCooperation">
+        SELECT cooperation_organ_id_              cooperationOrganId,
+               COUNT(*)                           activeNum,
+               SUM(IF(instruments_id_ > 0, 1, 0)) replaceNum,
+               SUM(IF(pay_status_ = 2, 1, 0)) payNum
+        FROM replacement_instrument_activity
+        GROUP BY cooperation_organ_id_
+    </select>
+
+</mapper>

+ 7 - 1
mec-biz/src/main/resources/config/mybatis/ReplacementInstrumentMapper.xml

@@ -84,7 +84,13 @@
 	<sql id="queryPageSql">
 		<where>
 			<if test="subjectId != null">
-				subject_id_ = #{subjectId}
+				AND subject_id_ = #{subjectId}
+			</if>
+			<if test="brand != null">
+				AND brand_ = #{brand}
+			</if>
+			<if test="specification != null">
+				AND specification_ = #{specification}
 			</if>
 		</where>
 	</sql>

+ 1 - 1
mec-biz/src/main/resources/config/mybatis/StudentMapper.xml

@@ -19,7 +19,7 @@
         <result column="update_time_" property="updateTime"/>
         <result column="care_package_" property="carePackage"/>
         <result column="come_on_package_" property="comeOnPackage"/>
-        <result column="current_grade_num" property="currentGradeNum"/>
+        <result column="current_grade_num_" property="currentGradeNum"/>
         <result column="current_class_" property="currentClass"/>
     </resultMap>
 

+ 22 - 11
mec-student/src/main/java/com/ym/mec/student/controller/ReplacementInstrumentActivityController.java

@@ -2,6 +2,7 @@ package com.ym.mec.student.controller;
 
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.dto.ReplacementPayDto;
 import com.ym.mec.biz.dal.entity.CooperationOrgan;
 import com.ym.mec.biz.dal.entity.ReplacementInstrumentActivity;
 import com.ym.mec.biz.dal.entity.Student;
@@ -9,8 +10,11 @@ import com.ym.mec.biz.service.CooperationOrganService;
 import com.ym.mec.biz.service.ReplacementInstrumentActivityService;
 import com.ym.mec.biz.service.StudentService;
 import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.exception.BizException;
 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;
@@ -47,33 +51,33 @@ public class ReplacementInstrumentActivityController extends BaseController {
         if (user == null) {
             return failed(HttpStatus.FORBIDDEN, "请登录");
         }
-        ReplacementInstrumentActivity replacementInstrumentActivity = replacementInstrumentActivityService.findByUserId(user.getId());
-        if(replacementInstrumentActivity == null){
+        ReplacementInstrumentActivity replacementInstrumentActivity = replacementInstrumentActivityService.findByUserId(cooperationOrganId, user.getId());
+        if (replacementInstrumentActivity == null) {
             Student student = studentService.get(user.getId());
             replacementInstrumentActivity = new ReplacementInstrumentActivity();
             replacementInstrumentActivity.setUserId(user.getId());
             replacementInstrumentActivity.setClasses(student.getCurrentClass());
-            if(student.getCurrentGradeNum() != null){
+            if (student.getCurrentGradeNum() != null) {
                 replacementInstrumentActivity.setGrade(student.getCurrentGradeNum().toString());
             }
             replacementInstrumentActivity.setCooperationOrganId(cooperationOrganId);
-            replacementInstrumentActivity.setUserName(StringUtils.isEmpty(user.getUsername())?user.getRealName():user.getUsername());
+            replacementInstrumentActivity.setUserName(StringUtils.isEmpty(user.getUsername()) ? user.getRealName() : user.getUsername());
             replacementInstrumentActivity.setMobileNo(user.getPhone());
             String subjectIdList = student.getSubjectIdList();
-            if(StringUtils.isNotEmpty(subjectIdList)){
+            if (StringUtils.isNotEmpty(subjectIdList)) {
                 replacementInstrumentActivity.setSubjectId(Integer.parseInt(subjectIdList.split(",")[0]));
             }
-            CooperationOrgan cooperationOrgan = cooperationOrganService.get(cooperationOrganId);
-            if(cooperationOrgan != null){
-                replacementInstrumentActivity.setCooperationOrganName(cooperationOrgan.getName());
-            }
+        }
+        CooperationOrgan cooperationOrgan = cooperationOrganService.get(cooperationOrganId);
+        if (cooperationOrgan != null) {
+            replacementInstrumentActivity.setCooperationOrganName(cooperationOrgan.getName());
         }
         return succeed(replacementInstrumentActivity);
     }
 
     @ApiOperation(value = "修改调查问卷")
     @PostMapping("/update")
-    public Object update (ReplacementInstrumentActivity replacementInstrumentActivity) {
+    public Object update(ReplacementInstrumentActivity replacementInstrumentActivity) {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         if (sysUser == null) {
             throw new BizException("用户信息获取失败,请重新登陆");
@@ -84,11 +88,18 @@ public class ReplacementInstrumentActivityController extends BaseController {
 
     @ApiOperation(value = "获取调查问卷")
     @GetMapping("/get")
-    public Object get (Integer id) {
+    public Object get(Integer id) {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         if (sysUser == null) {
             throw new BizException("用户信息获取失败,请重新登陆");
         }
         return succeed(replacementInstrumentActivityService.get(id));
     }
+
+    @ApiOperation(value = "置换支付")
+    @PostMapping("/pay")
+    @ApiImplicitParams({@ApiImplicitParam(name = "replacementPayDto", value = "支付参数", required = true, dataType = "ReplacementPayDto")})
+    public HttpResponseResult pay(ReplacementPayDto replacementPayDto) throws Exception {
+        return succeed(replacementInstrumentActivityService.pay(replacementPayDto));
+    }
 }

+ 7 - 7
mec-student/src/main/java/com/ym/mec/student/controller/ReplacementInstrumentController.java

@@ -1,18 +1,19 @@
 package com.ym.mec.student.controller;
 
-import com.ym.mec.auth.api.client.SysUserFeignService;
-import com.ym.mec.auth.api.entity.SysUser;
-import com.ym.mec.biz.dal.page.ReplacementInstrumentQueryInfo;
-import com.ym.mec.biz.service.ReplacementInstrumentService;
-import com.ym.mec.common.controller.BaseController;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+
 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.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.page.ReplacementInstrumentQueryInfo;
+import com.ym.mec.biz.service.ReplacementInstrumentService;
+import com.ym.mec.common.controller.BaseController;
+
 @RequestMapping("replacementInstrument")
 @Api(tags = "乐器置换商品服务")
 @RestController
@@ -25,7 +26,6 @@ public class ReplacementInstrumentController extends BaseController {
 
     @ApiOperation(value = "分页查询列表")
     @GetMapping("/queryPage")
-    @PreAuthorize("@pcs.hasPermissions('managerDownload/queryPage')")
     public Object queryPage(ReplacementInstrumentQueryInfo queryInfo) {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         if (sysUser == null) {

+ 23 - 20
mec-web/src/main/java/com/ym/mec/web/controller/ReplacementInstrumentActivityController.java

@@ -3,9 +3,10 @@ package com.ym.mec.web.controller;
 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.ReplacementInstrumentActivityDao;
 import com.ym.mec.biz.dal.dto.ReplacementInstrumentActivityStatDto;
 import com.ym.mec.biz.dal.entity.Employee;
-import com.ym.mec.biz.dal.page.ManagerDownloadQueryInfo;
+import com.ym.mec.biz.dal.entity.ReplacementInstrumentActivity;
 import com.ym.mec.biz.dal.page.ReplacementInstrumentActivityQueryInfo;
 import com.ym.mec.biz.service.ReplacementInstrumentActivityService;
 import com.ym.mec.common.controller.BaseController;
@@ -21,6 +22,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import java.util.Arrays;
+import java.util.Date;
 import java.util.List;
 
 @RequestMapping("replacementInstrumentActivity")
@@ -34,10 +36,12 @@ public class ReplacementInstrumentActivityController extends BaseController {
     private SysUserFeignService sysUserFeignService;
     @Autowired
     private EmployeeDao employeeDao;
+    @Autowired
+    private ReplacementInstrumentActivityDao replacementInstrumentActivityDao;
 
     @ApiOperation(value = "分页查询列表")
     @GetMapping("/queryPage")
-    @PreAuthorize("@pcs.hasPermissions('managerDownload/queryPage')")
+    @PreAuthorize("@pcs.hasPermissions('replacementInstrumentActivity/queryPage')")
     public Object queryPage(ReplacementInstrumentActivityQueryInfo queryInfo) {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         if (sysUser == null) {
@@ -46,11 +50,11 @@ public class ReplacementInstrumentActivityController extends BaseController {
         Employee employee = employeeDao.get(sysUser.getId());
         if (StringUtils.isEmpty(queryInfo.getOrganId())) {
             queryInfo.setOrganId(employee.getOrganIdList());
-        }else if(StringUtils.isEmpty(employee.getOrganIdList())){
+        } else if (StringUtils.isEmpty(employee.getOrganIdList())) {
             return failed("用户所在分部异常");
-        }else {
+        } else {
             List<String> list = Arrays.asList(employee.getOrganIdList().split(","));
-            if(!list.containsAll(Arrays.asList(queryInfo.getOrganId().split(",")))){
+            if (!list.containsAll(Arrays.asList(queryInfo.getOrganId().split(",")))) {
                 return failed("非法请求");
             }
         }
@@ -60,21 +64,20 @@ public class ReplacementInstrumentActivityController extends BaseController {
     @ApiOperation(value = "统计信息查询")
     @GetMapping("/queryReplacementsStat")
     public HttpResponseResult<PageInfo<ReplacementInstrumentActivityStatDto>> queryReplacementsStat(ReplacementInstrumentActivityQueryInfo queryInfo) {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed("用户信息获取失败");
-        }
-        Employee employee = employeeDao.get(sysUser.getId());
-        if (StringUtils.isEmpty(queryInfo.getOrganId())) {
-            queryInfo.setOrganId(employee.getOrganIdList());
-        }else if(StringUtils.isEmpty(employee.getOrganIdList())){
-            return failed("用户所在分部异常");
-        }else {
-            List<String> list = Arrays.asList(employee.getOrganIdList().split(","));
-            if(!list.containsAll(Arrays.asList(queryInfo.getOrganId().split(",")))){
-                return failed("非法请求");
-            }
-        }
         return succeed(replacementInstrumentActivityService.queryReplacementsStat(queryInfo));
     }
+
+    @ApiOperation(value = "修改")
+    @GetMapping("/update")
+    @PreAuthorize("@pcs.hasPermissions('replacementInstrumentActivity/update')")
+    public HttpResponseResult<ReplacementInstrumentActivity> update(ReplacementInstrumentActivity replacementInstrumentActivity) {
+        ReplacementInstrumentActivity oldReplacementInstrumentActivity = replacementInstrumentActivityDao.getLock(replacementInstrumentActivity.getId());
+        if (oldReplacementInstrumentActivity.getInstrumentsId().equals(replacementInstrumentActivity.getInstrumentsId())) {
+            return succeed();
+        }
+        oldReplacementInstrumentActivity.setInstrumentsId(replacementInstrumentActivity.getInstrumentsId());
+        oldReplacementInstrumentActivity.setUpdateTime(new Date());
+        replacementInstrumentActivityService.update(replacementInstrumentActivity);
+        return succeed(replacementInstrumentActivity);
+    }
 }

+ 18 - 0
mec-web/src/main/java/com/ym/mec/web/controller/ReplacementInstrumentController.java

@@ -1,9 +1,14 @@
 package com.ym.mec.web.controller;
 
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.page.ReplacementInstrumentQueryInfo;
 import com.ym.mec.biz.service.ReplacementInstrumentService;
 import com.ym.mec.common.controller.BaseController;
 import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 
 @RequestMapping("replacementInstrument")
@@ -13,5 +18,18 @@ public class ReplacementInstrumentController extends BaseController {
 
     @Autowired
     private ReplacementInstrumentService replacementInstrumentService;
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+
+    @ApiOperation(value = "分页查询列表")
+    @GetMapping("/queryPage")
+    @PreAuthorize("@pcs.hasPermissions('replacementInstrument/queryPage')")
+    public Object queryPage(ReplacementInstrumentQueryInfo queryInfo) {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            return failed("用户信息获取失败");
+        }
+        return succeed(replacementInstrumentService.queryPage(queryInfo));
+    }
 
 }

+ 82 - 0
mec-web/src/main/java/com/ym/mec/web/controller/ReplacementInstrumentCooperationController.java

@@ -0,0 +1,82 @@
+package com.ym.mec.web.controller;
+
+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.entity.Employee;
+import com.ym.mec.biz.dal.entity.ReplacementInstrumentCooperation;
+import com.ym.mec.biz.dal.page.ReplacementInstrumentCooperationQueryInfo;
+import com.ym.mec.biz.service.ReplacementInstrumentCooperationService;
+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.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.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Arrays;
+import java.util.Date;
+import java.util.List;
+
+@RequestMapping("replacementInstrumentCooperation")
+@Api(tags = "收费类型服务")
+@RestController
+public class ReplacementInstrumentCooperationController extends BaseController {
+
+    @Autowired
+    private ReplacementInstrumentCooperationService replacementInstrumentCooperationService;
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+    @Autowired
+    private EmployeeDao employeeDao;
+
+    @ApiOperation(value = "分页查询列表")
+    @GetMapping("/queryPage")
+    @PreAuthorize("@pcs.hasPermissions('replacementInstrumentCooperation/queryPage')")
+    public HttpResponseResult<PageInfo<ReplacementInstrumentCooperation>> queryPage(ReplacementInstrumentCooperationQueryInfo queryInfo) {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            return failed("用户信息获取失败");
+        }
+        Employee employee = employeeDao.get(sysUser.getId());
+        if (StringUtils.isEmpty(queryInfo.getOrganId())) {
+            queryInfo.setOrganId(employee.getOrganIdList());
+        } else if (StringUtils.isEmpty(employee.getOrganIdList())) {
+            return failed("用户所在分部异常");
+        } else {
+            List<String> list = Arrays.asList(employee.getOrganIdList().split(","));
+            if (!list.containsAll(Arrays.asList(queryInfo.getOrganId().split(",")))) {
+                return failed("非法请求");
+            }
+        }
+        return succeed(replacementInstrumentCooperationService.getPageList(queryInfo));
+    }
+
+    @ApiOperation(value = "新增合作单位置换活动")
+    @PostMapping("/add")
+    @PreAuthorize("@pcs.hasPermissions('replacementInstrumentCooperation/add')")
+    public HttpResponseResult<ReplacementInstrumentCooperation> add(ReplacementInstrumentCooperation replacementInstrumentCooperation) {
+        ReplacementInstrumentCooperation hasOld = replacementInstrumentCooperationService.getByCooperationId(replacementInstrumentCooperation.getCooperationOrganId());
+        if (hasOld != null) {
+            return failed("合作单位链接已生成,不能重复生成");
+        }
+        Date nowDate = new Date();
+        replacementInstrumentCooperation.setCreateTime(nowDate);
+        replacementInstrumentCooperation.setUpdateTime(nowDate);
+        replacementInstrumentCooperationService.insert(replacementInstrumentCooperation);
+        return succeed(replacementInstrumentCooperation);
+    }
+
+    @ApiOperation(value = "开启缴费")
+    @PostMapping("/openPay")
+    @PreAuthorize("@pcs.hasPermissions('replacementInstrumentCooperation/openPay')")
+    public HttpResponseResult<ReplacementInstrumentCooperation> openPay(Integer id) {
+        return succeed(replacementInstrumentCooperationService.openPay(id));
+    }
+}

+ 3 - 3
mec-web/src/main/resources/logback-spring.xml

@@ -43,7 +43,7 @@
 		</encoder>
 	</appender>
 
-	<logger name="com.ym.mec" level="INFO" />
+	<logger name="com.ym.mec" level="WARN" />
 
 	<logger name="com.ym.mec.thirdparty" level="INFO"
 			additivity="false">
@@ -52,14 +52,14 @@
 
 	<!--开发环境:打印控制台 -->
 	<springProfile name="dev">
-		<root level="INFO">
+		<root level="WARN">
 			<appender-ref ref="stdout" />
 			<appender-ref ref="file" />
 		</root>
 	</springProfile>
 
 	<springProfile name="test">
-		<root level="INFO">
+		<root level="WARN">
 			<appender-ref ref="stdout" />
 			<appender-ref ref="file" />
 		</root>