From 162014c18a5e0fbd509ca7bfca94a7e0b40f2512 Mon Sep 17 00:00:00 2001 From: lizhenhua <1075222162@qq.com> Date: Tue, 26 Aug 2025 16:37:09 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8A=A5=E8=A1=A8=E5=8A=9F=E8=83=BD=E6=9F=A5?= =?UTF-8?q?=E7=9C=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/OrderPlaceMobileBusinessImplV3.java | 8 +- .../order/mobile/dto/StagePayMobileDTO.java | 2 + .../core/reportforms/beans/OrgConsume.java | 27 ++++ .../controller/reportformsController.java | 63 ++++++++++ .../reportforms/mapper/OrgConsumeMapper.java | 29 +++++ .../service/impl/reportformsServiceImpl.java | 119 ++++++++++++++++++ .../service/reportformsService.java | 15 +++ 7 files changed, 260 insertions(+), 3 deletions(-) create mode 100644 bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/reportforms/beans/OrgConsume.java create mode 100644 bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/reportforms/controller/reportformsController.java create mode 100644 bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/reportforms/mapper/OrgConsumeMapper.java create mode 100644 bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/reportforms/service/impl/reportformsServiceImpl.java create mode 100644 bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/reportforms/service/reportformsService.java diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/order/mobile/business/impl/OrderPlaceMobileBusinessImplV3.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/order/mobile/business/impl/OrderPlaceMobileBusinessImplV3.java index e8b5ed9a..4a451f3b 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/order/mobile/business/impl/OrderPlaceMobileBusinessImplV3.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/order/mobile/business/impl/OrderPlaceMobileBusinessImplV3.java @@ -109,7 +109,7 @@ public class OrderPlaceMobileBusinessImplV3 implements OrderPlaceMobileBusiness @Autowired @Lazy protected OrderDeliveryService orderDeliveryService; -// @Autowired + // @Autowired // @Lazy // protected OrderPreBookService orderPreBookService; @Autowired @@ -388,12 +388,14 @@ public class OrderPlaceMobileBusinessImplV3 implements OrderPlaceMobileBusiness stagePayDTO.getCouponId(), stagePayDTO.getSourceType(), null, - null, + null, stagePayDTO.getOpenid(), custInfo, stagePayDTO); unifyPayDTO.setAmount(stagePayDTO.getAmount()); - unifyPayDTO.setRemark("驿站支付"); + unifyPayDTO.setRemark(stagePayDTO.getRemark()+"支付"); + //处理设备sn码问题 + unifyPayDTO.setMachineSn( stagePayDTO.getMerchant()); return payApi.pay(unifyPayDTO); } diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/order/mobile/dto/StagePayMobileDTO.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/order/mobile/dto/StagePayMobileDTO.java index 0394c448..db43d5b2 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/order/mobile/dto/StagePayMobileDTO.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/order/mobile/dto/StagePayMobileDTO.java @@ -21,4 +21,6 @@ public class StagePayMobileDTO extends OrderPayMobileDTO{ @ApiModelProperty("sourceType") private Integer sourceType; + @ApiModelProperty("设备sn") + private String merchant; } diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/reportforms/beans/OrgConsume.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/reportforms/beans/OrgConsume.java new file mode 100644 index 00000000..0615c7eb --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/reportforms/beans/OrgConsume.java @@ -0,0 +1,27 @@ +package com.bonus.canteen.core.reportforms.beans; + +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class OrgConsume { + private Long orgId; + private String orgName; // 食堂名字 + private BigDecimal reserveAmount = BigDecimal.ZERO; // APP预定金额 + private BigDecimal canteenAmount = BigDecimal.ZERO; // 食堂消费 + private BigDecimal superAmount = BigDecimal.ZERO; // 超市消费 + private BigDecimal amount= BigDecimal.ZERO; //详情中都用这个字段做消费 + private String startPayTime;//开始支付时间 + private String endPayTime;//结束支付时间 + private String custName; + private String custNameLike; + + private String flowId; + private Integer flowType; + private String payTime; + /** + * 1:APP预定 2:APP消费 3:食堂消费 4:超市消费 + */ + private Integer conSource; +} diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/reportforms/controller/reportformsController.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/reportforms/controller/reportformsController.java new file mode 100644 index 00000000..e3e03688 --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/reportforms/controller/reportformsController.java @@ -0,0 +1,63 @@ +package com.bonus.canteen.core.reportforms.controller; + +import com.bonus.canteen.core.reportforms.beans.OrgConsume; +import com.bonus.canteen.core.reportforms.service.reportformsService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +@RestController +@RequestMapping({"/api/v2/report"}) +public class reportformsController { + private static final Logger log = LoggerFactory.getLogger(reportformsController.class); + + @Resource + private reportformsService service; + @PostMapping("/consume/list") + public List list(@RequestBody OrgConsume orgConsume) { + return service.getOrgConsumeList(orgConsume); + } + /** + * 食堂预订餐接口查询 + * 通过区域名称查询 + * @param orgConsume + * @return + */ + @PostMapping("/consume/listByArea") + public List listByArea(@RequestBody OrgConsume orgConsume) { + //区域 + String orgName = orgConsume.getOrgName(); + // 去掉里面的“食堂”字样 + if (orgName != null) { + orgName = orgName.replace("食堂", ""); + orgConsume.setOrgName(orgName); + } + if(orgConsume.getConSource() == 1){ + return service.getlistByH5list(orgConsume); + } else if (orgConsume.getConSource() == 3) { + return service.getlistByArealist(orgConsume); + } else if (orgConsume.getConSource() ==4 ) { + return service.getlistBySuperlist(orgConsume); + } + return null; + } + /** + * 超市预订餐接口查询 + */ + @PostMapping("/consume/listBySuper") + public List listBySuper(@RequestBody OrgConsume orgConsume) { + return service.getlistBySuperlist(orgConsume); + } + + /** + * H5预订餐详情查询 + */ + @PostMapping("/consume/listByH5") + public List listByH5(@RequestBody OrgConsume orgConsume) { + return service.getlistByH5list(orgConsume); + } + +} diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/reportforms/mapper/OrgConsumeMapper.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/reportforms/mapper/OrgConsumeMapper.java new file mode 100644 index 00000000..496f7c22 --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/reportforms/mapper/OrgConsumeMapper.java @@ -0,0 +1,29 @@ +package com.bonus.canteen.core.reportforms.mapper; + +import com.bonus.canteen.core.menu.vo.AppletReserveCanteenVO; +import com.bonus.canteen.core.menu.vo.AppletWeekCanteenVO; +import com.bonus.canteen.core.reportforms.beans.OrgConsume; +import org.apache.ibatis.annotations.MapKey; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.time.LocalDate; +import java.util.List; +import java.util.Map; +import java.util.Set; + +@Mapper +public interface OrgConsumeMapper { + + List> selectConsumeRecords(OrgConsume orgConsume); + + List> selectReserveRecords(OrgConsume orgConsume); + + List> selectAreaOrgMap(); + + List getlistByArealist(OrgConsume orgConsume); + + List getlistBySuperlist(OrgConsume orgConsume); + + List getlistByH5list(OrgConsume orgConsume); +} diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/reportforms/service/impl/reportformsServiceImpl.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/reportforms/service/impl/reportformsServiceImpl.java new file mode 100644 index 00000000..a59a083b --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/reportforms/service/impl/reportformsServiceImpl.java @@ -0,0 +1,119 @@ +package com.bonus.canteen.core.reportforms.service.impl; + +import com.bonus.canteen.core.reportforms.beans.OrgConsume; +import com.bonus.canteen.core.reportforms.mapper.OrgConsumeMapper; +import com.bonus.canteen.core.reportforms.service.reportformsService; +import com.bonus.common.houqin.utils.SM4EncryptUtils; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.*; +import java.util.stream.Collectors; + + +@Service +public class reportformsServiceImpl implements reportformsService { + @Resource + private OrgConsumeMapper mapper; + @Override + public List getOrgConsumeList(OrgConsume orgConsume) { + // 查询食堂、超市的所有数据信息 + List> consumeRecords = mapper.selectConsumeRecords(orgConsume); + //查询预订的订单信息 + List> reserveRecords = mapper.selectReserveRecords(orgConsume); + //查询区域关联的字段信息 + List> areaOrgMaps = mapper.selectAreaOrgMap(); + + // area -> org 映射 + Map areaToOrg = new HashMap<>(); + for (Map map : areaOrgMaps) { + areaToOrg.put(map.get("area_name"), map.get("org_name")); + } + + // 初始化结果 + Map resultMap = new HashMap<>(); + for (Map r : reserveRecords) { + String orgName = (String) r.get("orgName"); + BigDecimal reserveAmount = (r.get("reserveAmount") != null) ? + new BigDecimal(r.get("reserveAmount").toString()) : BigDecimal.ZERO; + + OrgConsume oc = new OrgConsume(); + oc.setOrgName(orgName); + oc.setReserveAmount(reserveAmount); + resultMap.put(orgName, oc); + } + // 合并消费记录 + for (Map c : consumeRecords) { + String areaName = (String) c.get("areaName"); + String conSource = (String) c.get("conSource"); + BigDecimal amount = (c.get("amount") != null) ? + new BigDecimal(c.get("amount").toString()).abs() : BigDecimal.ZERO; + String orgName = areaToOrg.get(areaName); + if (orgName == null) { + continue; // 没有映射关系,跳过 + } + OrgConsume oc = resultMap.getOrDefault(orgName, new OrgConsume()); + oc.setOrgName(orgName); + + if ("canteen".equals(conSource)) { + oc.setCanteenAmount(oc.getCanteenAmount().add(amount)); + } else if ("super".equals(conSource)) { + oc.setSuperAmount(oc.getSuperAmount().add(amount)); + } + resultMap.put(orgName, oc); + } + return new ArrayList<>(resultMap.values()); + } + + @Override + public List getlistByArealist(OrgConsume orgConsume) { + List orgConsumes = mapper.getlistByArealist(orgConsume) + .stream() + .peek(c -> { + if (c.getCustName() != null && !c.getCustName().isEmpty()) { + try { + c.setCustName(SM4EncryptUtils.sm4Decrypt(c.getCustName())); + } catch (Exception e) { + e.printStackTrace(); + } + } + }) + .collect(Collectors.toList()); + return orgConsumes; + } + + @Override + public List getlistBySuperlist(OrgConsume orgConsume) { + List orgConsumes = mapper.getlistBySuperlist(orgConsume) + .stream() + .peek(c -> { + if (c.getCustName() != null && !c.getCustName().isEmpty()) { + try { + c.setCustName(SM4EncryptUtils.sm4Decrypt(c.getCustName())); + } catch (Exception e) { + e.printStackTrace(); + } + } + }) + .collect(Collectors.toList()); + return orgConsumes; + } + + @Override + public List getlistByH5list(OrgConsume orgConsume) { + List orgConsumes = mapper.getlistByH5list(orgConsume) + .stream() + .peek(c -> { + if (c.getCustName() != null && !c.getCustName().isEmpty()) { + try { + c.setCustName(SM4EncryptUtils.sm4Decrypt(c.getCustName())); + } catch (Exception e) { + e.printStackTrace(); + } + } + }) + .collect(Collectors.toList()); + return orgConsumes; + } +} diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/reportforms/service/reportformsService.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/reportforms/service/reportformsService.java new file mode 100644 index 00000000..257f2872 --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/reportforms/service/reportformsService.java @@ -0,0 +1,15 @@ +package com.bonus.canteen.core.reportforms.service; + +import com.bonus.canteen.core.reportforms.beans.OrgConsume; + +import java.util.List; + +public interface reportformsService { + List getOrgConsumeList(OrgConsume orgConsume); + + List getlistByArealist(OrgConsume orgConsume); + + List getlistBySuperlist(OrgConsume orgConsume); + + List getlistByH5list(OrgConsume orgConsume); +}