Browse Source

Merge branch 'zx_saas_goods' into test

刘俊驰 1 year ago
parent
commit
d4fc585443
19 changed files with 326 additions and 159 deletions
  1. 2 2
      mec-application/src/main/java/com/ym/mec/student/controller/StudentOrderController.java
  2. 12 2
      mec-application/src/main/java/com/ym/mec/web/controller/GoodsController.java
  3. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SysAreaDao.java
  4. 3 95
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/CooperationCalenderRefundDto.java
  5. 70 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/MusicGroupCalenderRefundPeriodWrapper.java
  6. 67 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/MusicGroupPaymentCalenderAddressWrapper.java
  7. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/GoodsService.java
  8. 6 6
      mec-biz/src/main/java/com/ym/mec/biz/service/SellOrderService.java
  9. 2 1
      mec-biz/src/main/java/com/ym/mec/biz/service/SysAreaService.java
  10. 38 28
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/GoodsServiceImpl.java
  11. 57 10
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupPaymentCalenderServiceImpl.java
  12. 29 12
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SellOrderServiceImpl.java
  13. 17 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysAreaServiceImpl.java
  14. 5 1
      mec-biz/src/main/resources/config/mybatis/MusicGroupCalenderRefundPeriodMapper.xml
  15. 1 1
      mec-biz/src/main/resources/config/mybatis/StudentPaymentRouteOrderMapper.xml
  16. 7 0
      mec-biz/src/main/resources/config/mybatis/SysAreaMapper.xml
  17. 4 0
      mec-common/common-core/src/main/java/com/ym/mec/common/dto/PmsProductDto.java
  18. 1 0
      mec-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/impl/OmsOrderServiceImpl.java
  19. 2 0
      mec-mall/mall-admin/src/main/resources/config/mybatis/PmsProductDao.xml

+ 2 - 2
mec-application/src/main/java/com/ym/mec/student/controller/StudentOrderController.java

@@ -888,7 +888,7 @@ public class StudentOrderController extends BaseController {
         return succeed(musicGroupRegCalender);
     }
 
-    @GetMapping("fixSellOrder")
+    /*@GetMapping("fixSellOrder")
     public HttpResponseResult<List<SellOrder>> fixSellOrder(String orderNo) {
         StudentPaymentOrder order = studentPaymentOrderService.findOrderByOrderNo(orderNo);
         List<SellOrder> sellOrders = new ArrayList<>();
@@ -915,7 +915,7 @@ public class StudentOrderController extends BaseController {
         }
         return succeed(sellOrders);
 
-    }
+    }*/
 
     @ApiImplicitParams({
             @ApiImplicitParam(name = "queryDate", dataType = "String", value = "年月"),

+ 12 - 2
mec-application/src/main/java/com/ym/mec/web/controller/GoodsController.java

@@ -26,6 +26,8 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.Arrays;
+import java.util.Collections;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
@@ -49,8 +51,16 @@ public class GoodsController extends BaseController {
     @ApiOperation(value = "新增商品(教材、辅件)")
     @PostMapping("/add")
     @PreAuthorize("@pcs.hasPermissions('goods/add')")
-    public Object add(@RequestBody GoodsWrapper.Goods goods){
-        goodsService.addGoods(goods,sysUserService.getUserId());
+    public Object add(@RequestBody GoodsWrapper.Goods goods) {
+        goodsService.addGoods(Collections.singletonList(goods), sysUserService.getUserId());
+        return succeed();
+    }
+
+    @ApiOperation(value = "新增商品(教材、辅件)")
+    @PostMapping("/addBatch")
+    @PreAuthorize("@pcs.hasPermissions('goods/addBatch')")
+    public Object addBatch(@RequestBody List<GoodsWrapper.Goods> goodsList) {
+        goodsService.addGoods(goodsList, sysUserService.getUserId());
         return succeed();
     }
 

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SysAreaDao.java

@@ -27,4 +27,6 @@ public interface SysAreaDao extends BaseDAO<Integer, SysArea> {
     SysArea getParentArea(Integer id);
 
     SysArea queryByCode(String code);
+
+    List<SysArea> queryByIds(@Param("areaIds") List<String> areaIds);
 }

+ 3 - 95
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/CooperationCalenderRefundDto.java

@@ -2,9 +2,11 @@ package com.ym.mec.biz.dal.dto;
 
 
 import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
 
 import java.math.BigDecimal;
 
+@Data
 public class CooperationCalenderRefundDto {
 
     @ApiModelProperty(value = "缴费项目编号",required = false)
@@ -43,99 +45,5 @@ public class CooperationCalenderRefundDto {
     @ApiModelProperty(value = "合同",required = false)
     private String contractUrl;
 
-    public String getContractUrl() {
-        return contractUrl;
-    }
-
-    public void setContractUrl(String contractUrl) {
-        this.contractUrl = contractUrl;
-    }
-
-    public Long getCalenderId() {
-        return calenderId;
-    }
-
-    public void setCalenderId(Long calenderId) {
-        this.calenderId = calenderId;
-    }
-
-    public String getMusicGroupId() {
-        return musicGroupId;
-    }
-
-    public void setMusicGroupId(String musicGroupId) {
-        this.musicGroupId = musicGroupId;
-    }
-
-    public String getMusicGroupName() {
-        return musicGroupName;
-    }
-
-    public void setMusicGroupName(String musicGroupName) {
-        this.musicGroupName = musicGroupName;
-    }
-
-    public String getBatchNo() {
-        return batchNo;
-    }
-
-    public void setBatchNo(String batchNo) {
-        this.batchNo = batchNo;
-    }
-
-    public String getPaymentType() {
-        return paymentType;
-    }
-
-    public void setPaymentType(String paymentType) {
-        this.paymentType = paymentType;
-    }
-
-    public String getCalenderFeeType() {
-        return calenderFeeType;
-    }
-
-    public void setCalenderFeeType(String calenderFeeType) {
-        this.calenderFeeType = calenderFeeType;
-    }
-
-    public BigDecimal getReceivable() {
-        return receivable;
-    }
-
-    public void setReceivable(BigDecimal receivable) {
-        this.receivable = receivable;
-    }
-
-    public BigDecimal getIncome() {
-        return income;
-    }
-
-    public void setIncome(BigDecimal income) {
-        this.income = income;
-    }
-
-    public BigDecimal getPrepaidFee() {
-        return prepaidFee;
-    }
-
-    public void setPrepaidFee(BigDecimal prepaidFee) {
-        this.prepaidFee = prepaidFee;
-    }
-
-    public String getNextRefundDate() {
-        return nextRefundDate;
-    }
-
-    public void setNextRefundDate(String nextRefundDate) {
-        this.nextRefundDate = nextRefundDate;
-    }
-
-    public String getRefundStatus() {
-        return refundStatus;
-    }
-
-    public void setRefundStatus(String refundStatus) {
-        this.refundStatus = refundStatus;
-    }
+    private String memo;
 }

+ 70 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/MusicGroupCalenderRefundPeriodWrapper.java

@@ -0,0 +1,70 @@
+package com.ym.mec.biz.dal.wrapper;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+
+import java.math.BigDecimal;
+
+public class MusicGroupCalenderRefundPeriodWrapper {
+
+
+    @Data
+    public static class MusicGroupCalenderRefundPeriod {
+
+        /**  */
+        private Integer id;
+
+        @ApiModelProperty(value = "分部",required = false)
+        private Integer organId;
+
+        @ApiModelProperty(value = "合作单位编号",required = false)
+        private Integer cooperationOrganId;
+
+        @ApiModelProperty(value = "缴费项目编号",required = false)
+        private Long calenderId;
+
+        @ApiModelProperty(value = "回款时间",required = false)
+        private String refundDate;
+
+        @ApiModelProperty(value = "回款金额",required = false)
+        private java.math.BigDecimal refundAmount;
+
+        @ApiModelProperty(value = "已回款金额",required = false)
+        private java.math.BigDecimal income = BigDecimal.ZERO;
+
+        @ApiModelProperty(value = "剩余待回款金额",required = false)
+        private java.math.BigDecimal subRefundAmount;
+
+        @ApiModelProperty(value = "是否完成回款",required = false)
+        private Boolean refundFlag = false;
+
+        @ApiModelProperty(value = "订单编号",required = false)
+        private String orderNos;
+
+        @ApiModelProperty(value = "备注",required = false)
+        private String memo;
+
+        @ApiModelProperty(value = "责任人",required = false)
+        private Integer responsiblePerson;
+
+
+        @ApiModelProperty(value = "责任人",required = false)
+        private String responsiblePersonName;
+
+        @ApiModelProperty(value = "是否发送回款提醒",required = false)
+        private Boolean sendRemind = false;
+
+        /**  */
+        private java.util.Date createTime;
+
+        /**  */
+        private java.util.Date updateTime;
+
+        @Override
+        public String toString() {
+            return ToStringBuilder.reflectionToString(this);
+        }
+
+    }
+}

+ 67 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/MusicGroupPaymentCalenderAddressWrapper.java

@@ -0,0 +1,67 @@
+package com.ym.mec.biz.dal.wrapper;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+public class MusicGroupPaymentCalenderAddressWrapper {
+
+
+    @Data
+    public static class MusicGroupPaymentCalenderAddress{
+        @ApiModelProperty(value = "主键")
+        private Long id;
+
+        @ApiModelProperty(value = "缴费项目编号")
+        private Long calenderId;
+
+        @ApiModelProperty("订单编号")
+        private String orderNo;
+
+        @ApiModelProperty("是否发货")
+        private Boolean deliveryFlag = false;
+
+        @ApiModelProperty(value = "收货人")
+        private String name;
+
+        @ApiModelProperty(value = "收货人手机号")
+        private String phone;
+
+        @ApiModelProperty(value = "省")
+        private String province;
+
+        @ApiModelProperty(value = "市")
+        private String city;
+
+        @ApiModelProperty(value = "区")
+        private String region;
+
+
+        @ApiModelProperty(value = "省")
+        private String provinceName;
+
+        @ApiModelProperty(value = "市")
+        private String cityName;
+
+        @ApiModelProperty(value = "区")
+        private String regionName;
+
+        @ApiModelProperty(value = "邮编")
+        private String postCode;
+
+        @ApiModelProperty(value = "详细地址")
+        private String address;
+
+        @ApiModelProperty(value = "创建时间")
+        private Date createTime;
+
+        @ApiModelProperty(value = "更新时间")
+        private Date updateTime;
+    }
+}

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/GoodsService.java

@@ -25,7 +25,7 @@ public interface GoodsService extends BaseService<Integer, Goods> {
 
     List<Goods> exportGoods(GoodsQueryInfo queryInfo);
 
-    void addGoods(GoodsWrapper.Goods goods, Integer operatorId);
+    void addGoods(List<GoodsWrapper.Goods> goodsList, Integer operatorId);
 
 //    void addGoodsProcurement(GoodsProcurement goodsProcurement);
 

+ 6 - 6
mec-biz/src/main/java/com/ym/mec/biz/service/SellOrderService.java

@@ -1,10 +1,7 @@
 package com.ym.mec.biz.service;
 
 
-import com.ym.mec.biz.dal.entity.MusicGroup;
-import com.ym.mec.biz.dal.entity.SellOrder;
-import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
-import com.ym.mec.biz.dal.entity.StudentPaymentOrderDetail;
+import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.KitGroupPurchaseTypeEnum;
 import com.ym.mec.common.dto.OrderCreate;
 import com.ym.mec.common.service.BaseService;
@@ -12,6 +9,7 @@ import com.ym.mec.common.service.BaseService;
 import java.math.BigDecimal;
 import java.util.List;
 import java.util.Map;
+import java.util.function.Function;
 
 
 public interface SellOrderService extends BaseService<Integer, SellOrder> {
@@ -87,8 +85,10 @@ public interface SellOrderService extends BaseService<Integer, SellOrder> {
 
     void mallRefundByOrderId(List<SellOrder> sellOrders);
 
-    List<SellOrder> initSellOrder(StudentPaymentOrder order, String musicGroupId, List<Integer> goodsIds, KitGroupPurchaseTypeEnum kitGroupPurchaseType,Boolean saveFlag);
+    List<SellOrder> initSellOrder(StudentPaymentOrder order, String musicGroupId, List<Integer> goodsIds,
+                                  KitGroupPurchaseTypeEnum kitGroupPurchaseType,Boolean saveFlag);
 
     List<SellOrder> initSellOrder(StudentPaymentOrder order, String musicGroupId, List<Integer> goodsIds, KitGroupPurchaseTypeEnum kitGroupPurchaseType,
-                                  BigDecimal totalBalance, BigDecimal expectTotalAmount, BigDecimal couponRemitAmount, BigDecimal actualTotalAmount,Boolean saveFlag);
+                                  BigDecimal totalBalance, BigDecimal expectTotalAmount, BigDecimal couponRemitAmount,
+                                  BigDecimal actualTotalAmount,Boolean saveFlag);
 }

+ 2 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/SysAreaService.java

@@ -2,10 +2,10 @@ package com.ym.mec.biz.service;
 
 import com.ym.mec.biz.dal.dto.TreeDto;
 import com.ym.mec.biz.dal.entity.SysArea;
-import com.ym.mec.biz.dal.page.OrganizationQueryInfo;
 import com.ym.mec.common.service.BaseService;
 
 import java.util.List;
+import java.util.Map;
 
 public interface SysAreaService extends BaseService<Integer, SysArea> {
 
@@ -35,4 +35,5 @@ public interface SysAreaService extends BaseService<Integer, SysArea> {
      */
     SysArea queryByCode(String code);
 
+    Map<String,String> getNameMapByIds(List<String> areaIds);
 }

+ 38 - 28
mec-biz/src/main/java/com/ym/mec/biz/service/impl/GoodsServiceImpl.java

@@ -200,39 +200,49 @@ public class GoodsServiceImpl extends BaseServiceImpl<Integer, Goods>  implement
 
 	@Override
 	@Transactional(rollbackFor = Exception.class)
-	public void addGoods(GoodsWrapper.Goods goods, Integer operatorId) {
-		if(StringUtils.isBlank(goods.getSn())){
-			throw new BizException("请指定商品货号");
+	public void addGoods(List<GoodsWrapper.Goods> goodsList, Integer operatorId) {
+		List<String> snList = goodsList.stream().map(GoodsWrapper.Goods::getSn).collect(Collectors.toList());
+		if (snList.size() != new HashSet<>(snList).size()) {
+			throw new BizException("商品货号重复");
 		}
-		Goods existsGood = goodsDao.lockBySn(goods.getSn());
-		if(Objects.nonNull(existsGood)){
+		List<Goods> bySns = goodsDao.findBySns(snList);
+		if (!CollectionUtils.isEmpty(bySns)) {
 			throw new BizException("商品货号重复");
 		}
-		List<GoodsWrapper.GoodsSub> goodsSubList = goods.getGoodsSubList();
-		//获取最小的库存数
-		String skuIds = goodsSubList.stream().map(e -> e.getSku().toString()).collect(Collectors.joining(","));
-		PmsProductQueryParamDto paramDto = new PmsProductQueryParamDto();
-		paramDto.setSkuStockIds(skuIds);
+		for (GoodsWrapper.Goods goods : goodsList) {
+			if (StringUtils.isBlank(goods.getSn())) {
+				throw new BizException("请指定商品货号");
+			}
+			Goods existsGood = goodsDao.lockBySn(goods.getSn());
+			if (Objects.nonNull(existsGood)) {
+				throw new BizException("商品货号重复");
+			}
+			List<GoodsWrapper.GoodsSub> goodsSubList = goods.getGoodsSubList();
+			//获取最小的库存数
+			String skuIds = goodsSubList.stream().map(e -> e.getSku().toString()).collect(Collectors.joining(","));
+			PmsProductQueryParamDto paramDto = new PmsProductQueryParamDto();
+			paramDto.setSkuStockIds(skuIds);
 //		paramDto.setPublishStatus(1);
-		paramDto.setPageSize(1000);
-		paramDto.setPageNum(1);
-		paramDto.setJson(JSON.toJSONString(paramDto));
-		List<PmsProductDto> productList = mallFeignService.getProductList(paramDto).getRows();
-		if(CollectionUtils.isEmpty(productList)){
-			throw new BizException("子商品不存在");
+			paramDto.setPageSize(1000);
+			paramDto.setPageNum(1);
+			paramDto.setJson(JSON.toJSONString(paramDto));
+			List<PmsProductDto> productList = mallFeignService.getProductList(paramDto).getRows();
+			if (CollectionUtils.isEmpty(productList)) {
+				throw new BizException("子商品不存在");
+			}
+			//获取最小库存数量
+			Integer stock = productList.stream().map(PmsProductDto::getStock).min(Integer::compareTo).get();
+			goods.setStockCount(stock);
+			goods.setSellCount(0);
+			Goods goodsRecord = JSON.parseObject(JSON.toJSONString(goods), Goods.class);
+			goodsRecord.setStatus(YesOrNoEnum.NO);
+			BigDecimal organCostPrice = goodsSubList.stream().map(GoodsWrapper.GoodsSub::getGoodsPrice).reduce(BigDecimal.ZERO, BigDecimal::add);
+			goodsRecord.setOrganCostPrice(organCostPrice);
+			goodsDao.insert(goodsRecord);
+			List<GoodsSub> goodsSubs = JSON.parseArray(JSON.toJSONString(goodsSubList), GoodsSub.class);
+			goodsSubs.forEach(next -> next.setGoodsId(goodsRecord.getId()));
+			goodsSubService.saveBatch(goodsSubs);
 		}
-		//获取最小库存数量
-		Integer stock = productList.stream().map(PmsProductDto::getStock).min(Integer::compareTo).get();
-		goods.setStockCount(stock);
-		goods.setSellCount(0);
-		Goods goodsRecord = JSON.parseObject(JSON.toJSONString(goods), Goods.class);
-		goodsRecord.setStatus(YesOrNoEnum.NO);
-		BigDecimal organCostPrice = goodsSubList.stream().map(GoodsWrapper.GoodsSub::getGoodsPrice).reduce(BigDecimal.ZERO, BigDecimal::add);
-		goodsRecord.setOrganCostPrice(organCostPrice);
-		goodsDao.insert(goodsRecord);
-		List<GoodsSub> goodsSubs = JSON.parseArray(JSON.toJSONString(goodsSubList), GoodsSub.class);
-		goodsSubs.forEach(next -> next.setGoodsId(goodsRecord.getId()));
-		goodsSubService.saveBatch(goodsSubs);
 	}
 
 	/*@Override

+ 57 - 10
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupPaymentCalenderServiceImpl.java

@@ -14,6 +14,8 @@ import com.ym.mec.biz.dal.entity.MusicGroupStudentFee.PaymentStatus;
 import com.ym.mec.biz.dal.enums.*;
 import com.ym.mec.biz.dal.page.BaseOrganQueryInfo;
 import com.ym.mec.biz.dal.page.MusicGroupPaymentCalenderQueryInfo;
+import com.ym.mec.biz.dal.wrapper.MusicGroupCalenderRefundPeriodWrapper;
+import com.ym.mec.biz.dal.wrapper.MusicGroupPaymentCalenderAddressWrapper;
 import com.ym.mec.biz.event.source.GroupEventSource;
 import com.ym.mec.biz.event.source.SendSeoMessageSource;
 import com.ym.mec.biz.service.*;
@@ -147,6 +149,9 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
     @Autowired
     private GoodsDao goodsDao;
 
+    @Autowired
+    private SysAreaService sysAreaService;
+
     @Override
     public BaseDAO<Long, MusicGroupPaymentCalender> getDAO() {
         return musicGroupPaymentCalenderDao;
@@ -288,7 +293,9 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
             // 不是进行中,只能创建一次缴费
             if (musicGroup.getStatus() != MusicGroupStatusEnum.PROGRESS && musicGroupPaymentCalender.getPaymentType() != GOODS_PURCHASE) {
                 List<MusicGroupPaymentCalender> list = musicGroupPaymentCalenderDao.findByMusicGroupId(musicGroupId);
-                if (list.size() > 0) {
+                //排除商品采购
+                List<MusicGroupPaymentCalender> collect = list.stream().filter(e -> e.getPaymentType() != GOODS_PURCHASE).collect(Collectors.toList());
+                if (collect.size() > 0) {
                     throw new BizException("创建失败,已经存在缴费信息");
                 }
             }
@@ -452,8 +459,8 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
                 for (MusicGroupPaymentCalenderGoods e : musicGroupPaymentBaseCalender.getCalenderGoodsList()) {
                     Goods goods = goodsMap.get(e.getGoodsId());
                     e.setGoodsSn(goods.getSn());
-                    e.setTotalPrice(goods.getGroupPurchasePrice().multiply(new BigDecimal(e.getNum())));
-                    e.setSinglePrice(goods.getGroupPurchasePrice());
+                    e.setTotalPrice(goods.getDiscountPrice().multiply(new BigDecimal(e.getNum())));
+                    e.setSinglePrice(goods.getDiscountPrice());
                     e.setCalenderId(calenderId);
                     List<ComplementGoodsDto> childGoods = goodsSubService.getBaseMapper().queryChildGoods(e.getGoodsId());
                     if(CollectionUtils.isEmpty(childGoods)){
@@ -574,7 +581,21 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
         }
         //获取商品采购信息
         result.put("goods",musicGroupPaymentCalenderGoodsService.lambdaQuery().eq(MusicGroupPaymentCalenderGoods::getCalenderId,calenderId).list());
-        result.put("address",musicGroupPaymentCalenderAddressService.lambdaQuery().eq(MusicGroupPaymentCalenderAddress::getCalenderId,calenderId).one());
+        MusicGroupPaymentCalenderAddress one = musicGroupPaymentCalenderAddressService.lambdaQuery().eq(MusicGroupPaymentCalenderAddress::getCalenderId, calenderId).one();
+        MusicGroupPaymentCalenderAddressWrapper.MusicGroupPaymentCalenderAddress musicGroupPaymentCalenderAddress = JSON
+            .parseObject(JSON.toJSONString(one), MusicGroupPaymentCalenderAddressWrapper.MusicGroupPaymentCalenderAddress.class);
+
+        // 查询地区信息
+        List<String> areaIds = new ArrayList<>();
+        areaIds.add(one.getProvince());
+        areaIds.add(one.getCity());
+        areaIds.add(one.getRegion());
+        areaIds = areaIds.stream().filter(StringUtils::isNotBlank).distinct().collect(Collectors.toList());
+        Map<String, String> nameMapByIds = sysAreaService.getNameMapByIds(areaIds);
+        musicGroupPaymentCalenderAddress.setProvinceName(nameMapByIds.getOrDefault(one.getProvince(),""));
+        musicGroupPaymentCalenderAddress.setCityName(nameMapByIds.getOrDefault(one.getCity(),""));
+        musicGroupPaymentCalenderAddress.setRegionName(nameMapByIds.getOrDefault(one.getRegion(),""));
+        result.put("address", musicGroupPaymentCalenderAddress);
         return result;
     }
 
@@ -595,7 +616,24 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
         }
         //如果是学校缴费并且金额不为0,返回费用信息
         if (calender.getPayUserType() == SCHOOL && calender.getCurrentTotalAmount().compareTo(BigDecimal.ZERO) > 0){
-            result.put("calenderRefundPeriods",musicGroupCalenderRefundPeriodService.findByCalenderId(id));
+            List<MusicGroupCalenderRefundPeriod> list = musicGroupCalenderRefundPeriodService.findByCalenderId(id);
+            if (CollectionUtils.isEmpty(list)) {
+
+                result.put("calenderRefundPeriods", list);
+            } else {
+                List<MusicGroupCalenderRefundPeriodWrapper.MusicGroupCalenderRefundPeriod> parseArray = JSON.parseArray(JSON.toJSONString(list), MusicGroupCalenderRefundPeriodWrapper.MusicGroupCalenderRefundPeriod.class);
+
+                List<Integer> userIds = list.stream().map(o -> o.getResponsiblePerson()).filter(Objects::nonNull).distinct().collect(Collectors.toList());
+                if (CollectionUtils.isNotEmpty(userIds)) {
+                    Map<Long, SysUser> mapByIds = sysUserService.getMapByIds(userIds);
+                    parseArray.forEach(o -> {
+                        if (o.getResponsiblePerson() != null) {
+                            o.setResponsiblePersonName(mapByIds.getOrDefault(o.getResponsiblePerson().longValue(),new SysUser()).getRealName());
+                        }
+                    });
+                }
+                result.put("calenderRefundPeriods", parseArray);
+            }
         }
 
         if (calender.getOrganId() != null) {
@@ -1069,6 +1107,13 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
                 if (CollectionUtils.isEmpty(goods)) {
                     throw new BizException("商品信息不存在");
                 }
+                // 查询地区信息
+                List<String> areaIds = new ArrayList<>();
+                areaIds.add(address.getProvince());
+                areaIds.add(address.getCity());
+                areaIds.add(address.getRegion());
+                areaIds = areaIds.stream().filter(StringUtils::isNotBlank).distinct().collect(Collectors.toList());
+                Map<String, String> nameMapByIds = sysAreaService.getNameMapByIds(areaIds);
                 OrderCreate orderCreate = new OrderCreate();
                 String orderNo = idGeneratorService.generatorId("payment") + "";
                 address.setOrderNo(orderNo);
@@ -1083,9 +1128,9 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
                 orderCreate.setReceiverName(address.getName());
                 orderCreate.setReceiverPostCode(address.getPostCode());
                 orderCreate.setReceiverPhone(address.getPhone());
-                orderCreate.setReceiverProvince(address.getProvince());
-                orderCreate.setReceiverCity(address.getCity());
-                orderCreate.setReceiverRegion(address.getRegion());
+                orderCreate.setReceiverProvince(nameMapByIds.getOrDefault(address.getProvince(),""));
+                orderCreate.setReceiverCity(nameMapByIds.getOrDefault(address.getCity(),""));
+                orderCreate.setReceiverRegion(nameMapByIds.getOrDefault(address.getRegion(),""));
                 orderCreate.setReceiverDetailAddress(address.getAddress());
                 orderCreate.setStatus(1);
                 List<OrderCreate.OrderItem> orderItems = new ArrayList<>();
@@ -1099,7 +1144,7 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
                     for (int i = 0; i < goodsDtoList.size(); i++) {
                         ComplementGoodsDto goodsDto = goodsDtoList.get(i);
                         OrderCreate.OrderItem orderItemCreate = new OrderCreate.OrderItem();
-                        orderItemCreate.setProductQuantity(1);
+                        orderItemCreate.setProductQuantity(e.getNum());
                         orderItemCreate.setProductSkuId(goodsDto.getSkuStockId().longValue());
                         //如果是最后一件商品
                         if (i == goodsDtoList.size() - 1) {
@@ -1306,7 +1351,9 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
     		throw new BizException("缴费项目[{}]查询失败", calenderId);
     	}
     	
-    	if(musicGroupPaymentCalender.getStatus() != PaymentCalenderStatusEnum.DRAFT && musicGroupPaymentCalender.getStatus() != PaymentCalenderStatusEnum.REJECT){
+    	if(musicGroupPaymentCalender.getStatus() != PaymentCalenderStatusEnum.DRAFT
+                && musicGroupPaymentCalender.getStatus() != PaymentCalenderStatusEnum.REJECT
+        && musicGroupPaymentBaseCalender.getPaymentType() != GOODS_PURCHASE){
     		throw new BizException("当前缴费项目状态不支持修改");
     	}
     	

+ 29 - 12
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SellOrderServiceImpl.java

@@ -2,13 +2,16 @@ package com.ym.mec.biz.service.impl;
 
 
 import static com.ym.mec.biz.dal.enums.GroupType.GOODS_SELL;
+import static com.ym.mec.biz.dal.enums.GroupType.MUSIC;
 import static com.ym.mec.biz.dal.enums.OrderDetailTypeEnum.*;
 import static com.ym.mec.biz.dal.enums.OrderDetailTypeEnum.ORGAN_SHARE_PROFIT;
 
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.util.*;
+import java.util.function.Consumer;
 import java.util.function.Function;
+import java.util.function.Supplier;
 import java.util.stream.Collectors;
 
 import com.alibaba.fastjson.JSON;
@@ -271,7 +274,7 @@ public class SellOrderServiceImpl extends BaseServiceImpl<Integer, SellOrder> im
     public List<SellOrder> addOrderDetail2SellOrder(List<StudentPaymentOrderDetail> orderDetails,
                                                     StudentPaymentOrder studentPaymentOrder, MusicGroup musicGroup,BigDecimal balancePaymentAmount) {
         //过去非商品详情
-        List<StudentPaymentOrderDetail> goodsOrderDetails = orderDetails.stream().filter(e -> StringUtils.isEmpty(e.getGoodsIdList())).collect(Collectors.toList());
+        List<StudentPaymentOrderDetail> goodsOrderDetails = orderDetails.stream().filter(e -> StringUtils.isNotEmpty(e.getGoodsIdList())).collect(Collectors.toList());
         if(CollectionUtils.isEmpty(goodsOrderDetails)){
             throw new BizException("商品详情为空");
         }
@@ -289,11 +292,17 @@ public class SellOrderServiceImpl extends BaseServiceImpl<Integer, SellOrder> im
         //剩余待分配现金
         BigDecimal subDetailActualAmount = detailTotalPrice.subtract(balancePaymentAmount);
         for (int i = 0; i < goodsOrderDetails.size(); i++) {
-            StudentPaymentOrderDetail orderDetail = orderDetails.get(i);
+            StudentPaymentOrderDetail orderDetail = goodsOrderDetails.get(i);
             //获取支付金额比例
-            BigDecimal ratioAmount = orderDetail.getPrice().divide(detailTotalPrice, 6, BigDecimal.ROUND_HALF_UP);
-            //获取优惠券金额比例
-            BigDecimal ratioCouponAmount = orderDetail.getRemitFee().divide(detailTotalRemitPrice, 6, BigDecimal.ROUND_HALF_UP);
+            BigDecimal ratioAmount = BigDecimal.ZERO;
+            if(detailTotalPrice.compareTo(BigDecimal.ZERO) > 0){
+                ratioAmount = orderDetail.getPrice().divide(detailTotalPrice, 6, BigDecimal.ROUND_HALF_UP);
+            }
+            BigDecimal ratioCouponAmount = BigDecimal.ZERO;
+            if (detailTotalRemitPrice.compareTo(BigDecimal.ZERO) > 0) {
+                //获取优惠券金额比例
+                ratioCouponAmount = orderDetail.getRemitFee().divide(detailTotalRemitPrice, 6, BigDecimal.ROUND_HALF_UP);
+            }
             //获取分配的余额
             BigDecimal detailBalance;
             //获取分配的优惠券金额
@@ -319,7 +328,7 @@ public class SellOrderServiceImpl extends BaseServiceImpl<Integer, SellOrder> im
                 subDetailActualAmount = subDetailActualAmount.subtract(detailActualAmount);
             }
             List<Integer> goodsIds = Arrays.asList(orderDetail.getGoodsIdList().split(",")).stream().map(Integer::parseInt).collect(Collectors.toList());
-            sellOrders.addAll(this.initSellOrder(studentPaymentOrder, musicGroup.getId(), goodsIds, null,
+            sellOrders.addAll(this.initSellOrder(studentPaymentOrder, musicGroup.getId(), goodsIds, orderDetail.getKitGroupPurchaseType(),
                     detailBalance, orderDetail.getPrice(), couponRemitFee, detailActualAmount, false));
         }
 
@@ -552,7 +561,7 @@ public class SellOrderServiceImpl extends BaseServiceImpl<Integer, SellOrder> im
     public List<OrderCreate.OrderItem> convertMallOrder(List<SellOrder> sellOrderList) {
         List<OrderCreate.OrderItem> orderItems = new ArrayList<>();
         for (SellOrder e : sellOrderList) {
-            List<GoodsSub> list = goodsSubService.lambdaQuery().eq(GoodsSub::getGoodsId, e.getGoodsId()).list();
+            List<GoodsSub> list = goodsSubService.lambdaQuery().eq(GoodsSub::getGoodsId, e.getParentGoodsId()).list();
             if(CollectionUtils.isEmpty(list)){
                 throw new RuntimeException("子商品不存在,请联系管理员");
             }
@@ -627,7 +636,8 @@ public class SellOrderServiceImpl extends BaseServiceImpl<Integer, SellOrder> im
     @Override
     @Transactional(rollbackFor = Exception.class)
     public List<SellOrder> initSellOrder(StudentPaymentOrder order, String musicGroupId, List<Integer> goodsIds, KitGroupPurchaseTypeEnum kitGroupPurchaseType,
-                                         BigDecimal totalBalance, BigDecimal expectTotalAmount, BigDecimal couponRemitAmount, BigDecimal actualTotalAmount,Boolean saveFlag) {
+                                         BigDecimal totalBalance, BigDecimal expectTotalAmount, BigDecimal couponRemitAmount,
+                                         BigDecimal actualTotalAmount, Boolean saveFlag) {
         //可用优惠券金额
         BigDecimal subCouponRemitAmount = couponRemitAmount;
         //可用总金额
@@ -649,6 +659,9 @@ public class SellOrderServiceImpl extends BaseServiceImpl<Integer, SellOrder> im
         String skuIds = goodsSubService.lambdaQuery().in(GoodsSub::getGoodsId, goodies.stream().map(Goods::getId).collect(Collectors.toList())).list()
                 .stream().map(e->e.getSku().toString()).collect(Collectors.joining(","));
         paramDto.setSkuStockIds(skuIds);
+        paramDto.setPageSize(1000);
+        paramDto.setPageNum(1);
+        paramDto.setJson(JSON.toJSONString(paramDto));
         PageInfo<PmsProductDto> productList = mallFeignService.getProductList(paramDto);
         if (org.springframework.util.CollectionUtils.isEmpty(productList.getRows())) {
             throw new BizException("商城商品不存在");
@@ -669,7 +682,8 @@ public class SellOrderServiceImpl extends BaseServiceImpl<Integer, SellOrder> im
             BigDecimal actualAmount;
 
             if (goodsTotalPrice.compareTo(BigDecimal.ZERO) > 0) {
-                goodsRatioAmount = nowGoods.getGroupPurchasePrice().divide(goodsTotalPrice, 6, RoundingMode.HALF_UP);
+                goodsRatioAmount = order.getGroupType() == MUSIC ?nowGoods.getGroupPurchasePrice():nowGoods.getDiscountPrice()
+                        .divide(goodsTotalPrice, 6, RoundingMode.HALF_UP);
             }
             if(i == goodies.size() - 1){
                 expectAmount = subExpectTotalAmount;
@@ -695,7 +709,8 @@ public class SellOrderServiceImpl extends BaseServiceImpl<Integer, SellOrder> im
             //剩余实际金额
             BigDecimal subActualAmount = actualAmount;
             //租赁、免费的没有销售收入,有销售成本
-            if (nowGoods.getType().equals(GoodsType.INSTRUMENT) && (kitGroupPurchaseType.equals(KitGroupPurchaseTypeEnum.LEASE) || kitGroupPurchaseType.equals(KitGroupPurchaseTypeEnum.FREE))) {
+            if (nowGoods.getType().equals(GoodsType.INSTRUMENT) && kitGroupPurchaseType != null &&
+                    (kitGroupPurchaseType.equals(KitGroupPurchaseTypeEnum.LEASE) || kitGroupPurchaseType.equals(KitGroupPurchaseTypeEnum.FREE))) {
                 goodsBalance = BigDecimal.ZERO;
                 expectAmount = BigDecimal.ZERO;
             }
@@ -768,7 +783,8 @@ public class SellOrderServiceImpl extends BaseServiceImpl<Integer, SellOrder> im
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public List<SellOrder> initSellOrder(StudentPaymentOrder order, String musicGroupId, List<Integer> goodsIds, KitGroupPurchaseTypeEnum kitGroupPurchaseType,Boolean saveFlag) {
+    public List<SellOrder> initSellOrder(StudentPaymentOrder order, String musicGroupId, List<Integer> goodsIds,
+                                         KitGroupPurchaseTypeEnum kitGroupPurchaseType,Boolean saveFlag) {
         BigDecimal totalBalance = order.getBalancePaymentAmount();
         if (totalBalance == null) {
             totalBalance = BigDecimal.ZERO;
@@ -776,7 +792,8 @@ public class SellOrderServiceImpl extends BaseServiceImpl<Integer, SellOrder> im
         BigDecimal expectTotalAmount = order.getExpectAmount();
         BigDecimal couponRemitAmount = order.getCouponRemitFee();
         BigDecimal actualTotalAmount = order.getActualAmount();
-        return this.initSellOrder(order, musicGroupId, goodsIds, kitGroupPurchaseType, totalBalance, expectTotalAmount, couponRemitAmount, actualTotalAmount,saveFlag==null?true:saveFlag);
+        return this.initSellOrder(order, musicGroupId, goodsIds, kitGroupPurchaseType, totalBalance, expectTotalAmount,
+                couponRemitAmount, actualTotalAmount,saveFlag==null?true:saveFlag);
     }
 
     public Map<String, BigDecimal> calcSellAmount(StudentPaymentOrder order,BigDecimal cloudBalanceIncome,BigDecimal cloudIncome) {

+ 17 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysAreaServiceImpl.java

@@ -12,9 +12,13 @@ import com.ym.mec.common.service.impl.BaseServiceImpl;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
 
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.Optional;
+import java.util.stream.Collectors;
 
 @Service
 public class SysAreaServiceImpl extends BaseServiceImpl<Integer, SysArea> implements SysAreaService {
@@ -52,6 +56,19 @@ public class SysAreaServiceImpl extends BaseServiceImpl<Integer, SysArea> implem
         return sysAreaDao.queryByCode(code);
     }
 
+    @Override
+    public Map<String, String> getNameMapByIds(List<String> areaIds) {
+        if (CollectionUtils.isEmpty(areaIds)) {
+            return new HashMap<>();
+        }
+        List<SysArea> sysAreas = sysAreaDao.queryByIds(areaIds);
+        if (CollectionUtils.isEmpty(sysAreas)) {
+            return new HashMap<>();
+        }
+
+        return sysAreas.stream().collect(Collectors.toMap(o -> o.getId().toString(), SysArea::getName,(o1,o2)->o1));
+    }
+
     private SysArea getTree(SysArea area){
 		//得到根节点对象
 		//获取子节点list

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

@@ -31,6 +31,9 @@
 			<if test="bean.memo != null and bean.memo != ''">
 				memo_ = #{bean.memo},
 			</if>
+			<if test="bean.refundDate != null and bean.refundDate != ''">
+				refund_date_ = #{bean.refundDate},
+			</if>
 			<if test="bean.subRefundAmount != null">
 				sub_refund_amount_ = #{bean.subRefundAmount},
 			</if>
@@ -157,6 +160,7 @@
 		<result property="receivable" column="receivable_"/>
 		<result property="prepaidFee" column="prepaidFee"/>
 		<result property="income" column="income_"/>
+		<result property="memo" column="memo_"/>
 		<result property="nextRefundDate" column="nextRefundDate"/>
 		<result property="refundStatus" column="refundStatus"/>
 		<result property="contractUrl" column="contract_url_"/>
@@ -189,7 +193,7 @@
 		</if>
 	</sql>
 	<select id="queryCoopCalender" resultMap="CooperationCalenderRefundDto">
-		select crp.calender_id_,mgpc.music_group_id_,mg.name_ music_group_name_,mgpc.batch_no_,mgpc.payment_type_,mgpc.calender_fee_type_,
+		select crp.calender_id_,crp.memo_,mgpc.music_group_id_,mg.name_ music_group_name_,mgpc.batch_no_,mgpc.payment_type_,mgpc.calender_fee_type_,
 			   SUM(crp.refund_amount_) receivable_,SUM(crp.sub_refund_amount_) prepaidFee,SUM(crp.income_) income_,
 			   MIN(CASE WHEN crp.refund_flag_ = 0 THEN crp.refund_date_ ELSE NULL END) nextRefundDate,crp.organ_id_,mgpc.contract_url_
 		from music_group_calender_refund_period crp

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

@@ -60,7 +60,7 @@ calender_id_,create_time_,create_by_,update_time_,update_by_,tenant_id_,type_
     </sql>
     <select id="get" parameterType="java.lang.Long" resultMap="StudentPaymentRouteOrderMap">
         <!--@mbg.generated-->
-       SELECT spro.*,u.username_,u.phone_,s.name_ school_name_,o.name_ organ_name_,ou.username_ operator_name_ FROM student_payment_route_order spro
+       SELECT spro.*,u.username_,u.phone_,s.name_ school_name_,o.name_ organ_name_,ou.real_name_ operator_name_ FROM student_payment_route_order spro
         left join sys_user u on spro.user_id_ = u.id_
         left join sys_user ou on ou.id_ = spro.create_by_
         left join school s on s.id_ = spro.school_id_

+ 7 - 0
mec-biz/src/main/resources/config/mybatis/SysAreaMapper.xml

@@ -87,4 +87,11 @@
     <select id="queryByCode" resultMap="SysArea">
        SELECT * FROM sys_area WHERE code_ = #{code}
     </select>
+
+    <select id="queryByIds" resultMap="SysArea">
+        SELECT * FROM sys_area WHERE id_ IN
+        <foreach collection="areaIds" item="id" open="(" close=")" separator=",">
+            #{id}
+        </foreach>
+    </select>
 </mapper>

+ 4 - 0
mec-common/common-core/src/main/java/com/ym/mec/common/dto/PmsProductDto.java

@@ -38,6 +38,10 @@ public class PmsProductDto implements Serializable {
     private Long productCategoryId;
     //商品分类名称
     private String productCategoryName;
+    // 商品图片
+    private String pic;
+    // 商品详情
+    private String detailHtml;
 
 
     //"商品销售属性,json格式"

+ 1 - 0
mec-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/impl/OmsOrderServiceImpl.java

@@ -725,6 +725,7 @@ public class OmsOrderServiceImpl implements OmsOrderService {
             omsOrderItem.setOrderId(detail.getId());
             omsOrderItem.setOrderSn(detail.getOrderSn());
             omsOrderItem.setProductId(pmsProduct.getId());
+            omsOrderItem.setProductSn(pmsProduct.getProductSn());
             omsOrderItem.setProductPic(pmsProduct.getPic());
             omsOrderItem.setProductName(pmsProduct.getName());
             omsOrderItem.setProductBrand(pmsProduct.getBrandName());

+ 2 - 0
mec-mall/mall-admin/src/main/resources/config/mybatis/PmsProductDao.xml

@@ -125,6 +125,8 @@
         t1.price as price,
         t.brand_id as brandId,
         t.product_category_id as productCategoryId,
+        t.pic as pic,
+        t.detail_html as detailHtml,
         t1.sp_data as spData
         from pms_product t
         left join pms_sku_stock t1 on t.id = t1.product_id