From 6630fbaf54a4c36fb4e7bf6bfd5ee62e6f56e4ed Mon Sep 17 00:00:00 2001 From: liurunyu <lry9898@163.com> Date: 星期四, 05 六月 2025 17:52:14 +0800 Subject: [PATCH] Merge branch 'master' of http://8.140.179.55:20000/r/pipIrr-SV --- pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoIr/IrIntakeOperateMapper.java | 8 pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrIntakeControllerMapper.xml | 5 pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/dto/ActiveCard.java | 1 pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/dto/CardSimple.java | 30 +++ pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoTermRecharge.java | 11 pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/dto/DtoReissue.java | 60 ++++++ pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrIntakeControllerMapper.java | 7 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoTermActiveCard.java | 36 +++ pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/CardCtrl.java | 58 +++++ pipIrr-platform/pipIrr-global/src/main/resources/mapper/IrIntakeOperateMapper.xml | 7 pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/irrigatePlan/IrrigatePlanSv.java | 7 pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/irrigation/IrrigationSv.java | 3 pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/enums/RechargeTypeENUM.java | 21 ++ pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/CardSv.java | 236 ++++++++++++++++++++++- pipIrr-platform/pipIrr-global/src/main/resources/mapper/IrIrrigatePlanMapper.xml | 2 pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/command/CommandSv.java | 44 +++ pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml | 2 pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/dto/DtoRecharge.java | 6 18 files changed, 508 insertions(+), 36 deletions(-) diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoIr/IrIntakeOperateMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoIr/IrIntakeOperateMapper.java index c79dda6..e991aff 100644 --- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoIr/IrIntakeOperateMapper.java +++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoIr/IrIntakeOperateMapper.java @@ -39,6 +39,14 @@ int updateByCommandId(@Param("commandId") Long commandId, @Param("commandResult") Byte commandResult, @Param("failureFactors") String failureFactors); /** + * 鏍规嵁涓婚敭淇敼鍛戒护ID + * @param commandId + * @param id + * @return + */ + int updateCommandId(@Param("commandId") Long commandId, @Param("id") Long id); + + /** * 鏍规嵁璁″垝ID鑾峰彇寰呯粓姝㈢殑鍙栨按鍙D锛堝凡鍙戝竷寮�鍙戝懡浠わ紝鏃犺鏄惁鎴愬姛锛� * @param planId * @return diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrIntakeControllerMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrIntakeControllerMapper.java index 09e26e5..d3a4f83 100644 --- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrIntakeControllerMapper.java +++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrIntakeControllerMapper.java @@ -59,4 +59,11 @@ * @return */ int updateByIntakeSelective(PrIntakeController record); + + /** + * 鏍规嵁鍙栨按鍙D鑾峰彇鍙栨按鍙e悕绉� + * @param intakeId + * @return + */ + String getIntakeNameById(@Param("intakeId") Long intakeId); } \ No newline at end of file diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoTermActiveCard.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoTermActiveCard.java new file mode 100644 index 0000000..e138fc3 --- /dev/null +++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoTermActiveCard.java @@ -0,0 +1,36 @@ +package com.dy.pipIrrGlobal.voSe; + +import com.alibaba.fastjson2.annotation.JSONField; +import com.alibaba.fastjson2.writer.ObjectWriterImplToString; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import lombok.Data; + +import java.util.Date; + +/** + * @author ZhuBaoMin + * @date 2025-06-04 11:45 + * @LastEditTime 2025-06-04 11:45 + * @Description 鍏呭�兼満寮�鍗¤繑鍥炶鍥惧璞� + */ + +@Data +@JsonPropertyOrder({"projectNo", "cardNum", "balance", "waterPrice", "time", "orderNo"}) +public class VoTermActiveCard { + public static final long serialVersionUID = 202506041146001L; + + private Integer projectNo; + + @JSONField(serializeUsing= ObjectWriterImplToString.class) + private Long cardNum; + + private Float balance; + + private Double waterPrice; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date time; + + private String orderNo; +} diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoTermRecharge.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoTermRecharge.java index e0d69f8..10af526 100644 --- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoTermRecharge.java +++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoTermRecharge.java @@ -12,11 +12,11 @@ * @author ZhuBaoMin * @date 2025-05-08 15:59 * @LastEditTime 2025-05-08 15:59 - * @Description + * @Description 鍏呭�兼満鍏呭�艰繑鍥炶鍥惧璞� */ @Data -@JsonPropertyOrder({"projectNo", "cardNum", "balance", "waterPrice", "time", "orderNo"}) +@JsonPropertyOrder({"projectNo", "cardNum", "orderNo"}) public class VoTermRecharge { public static final long serialVersionUID = 202505081559001L; @@ -24,13 +24,6 @@ @JSONField(serializeUsing= ObjectWriterImplToString.class) private Long cardNum; - - private Float balance; - - private Double waterPrice; - - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") - private Date time; private String orderNo; } diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml b/pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml index e37b6d4..b4d514e 100644 --- a/pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml +++ b/pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml @@ -85,7 +85,7 @@ pipIrr: global: - dev: false #鏄惁寮�鍙戦樁娈碉紝true鎴杅alse + dev: true #鏄惁寮�鍙戦樁娈碉紝true鎴杅alse dsName: ym #寮�鍙戦樁娈碉紝璁剧疆涓存椂鐨勬暟鎹簱鍚嶇О nginx: root: D:/apps/pipIrr/nginx-1.27.0 diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/IrIntakeOperateMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/IrIntakeOperateMapper.xml index cf9d2c9..6dc8edc 100644 --- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/IrIntakeOperateMapper.xml +++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/IrIntakeOperateMapper.xml @@ -156,6 +156,13 @@ where command_id = #{commandId} </update> + <!--鏍规嵁涓婚敭淇敼鍛戒护ID--> + <update id="updateCommandId"> + update ir_intake_operate + set command_id = #{commandId} + where id = #{id} + </update> + <!--鏍规嵁璁″垝ID鑾峰彇寰呯粓姝㈢殑鍙栨按鍙D锛堝凡鍙戝竷寮�鍙戝懡浠わ紝鏃犺鏄惁鎴愬姛锛�--> <select id="getToTerminateIntakeIds" resultType="java.lang.Long"> SELECT diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/IrIrrigatePlanMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/IrIrrigatePlanMapper.xml index 2837fc5..1545ca5 100644 --- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/IrIrrigatePlanMapper.xml +++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/IrIrrigatePlanMapper.xml @@ -434,7 +434,7 @@ FROM ir_irrigate_schedule sche INNER JOIN ir_plan_schedule ps ON schedule_id = sche.id WHERE ps.plan_id = #{planId} - LIMIT 1 +<!-- LIMIT 1--> ) AS has_intersection </select> diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrIntakeControllerMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrIntakeControllerMapper.xml index f025aee..6abdee5 100644 --- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrIntakeControllerMapper.xml +++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrIntakeControllerMapper.xml @@ -210,4 +210,9 @@ </set> where intakeId = #{intakeid,jdbcType=BIGINT} </update> + + <!--鏍规嵁鍙栨按鍙D鑾峰彇鍙栨按鍙e悕绉�--> + <select id="getIntakeNameById" resultType="java.lang.String"> + SELECT name AS intakeName FROM pr_intake WHERE id = #{intakeId} + </select> </mapper> \ No newline at end of file diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/CardCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/CardCtrl.java index 1c6cc15..33a1ec5 100644 --- a/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/CardCtrl.java +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/CardCtrl.java @@ -3,14 +3,15 @@ import com.dy.common.aop.SsoAop; import com.dy.common.webUtil.BaseResponse; import com.dy.common.webUtil.BaseResponseUtils; +import com.dy.pipIrrGlobal.voSe.VoTermActiveCard; import com.dy.pipIrrGlobal.voSe.VoTermRecharge; import com.dy.pipIrrTerminal.card.dto.ActiveCard; -import io.swagger.v3.oas.annotations.tags.Tag; +import com.dy.pipIrrTerminal.card.dto.DtoRecharge; +import com.dy.pipIrrTerminal.card.dto.DtoReissue; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.http.MediaType; -import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -34,10 +35,15 @@ public class CardCtrl { private final CardSv cardSv; - @PostMapping(path = "activeTermCard", consumes = MediaType.APPLICATION_JSON_VALUE) - @Transactional(rollbackFor = Exception.class) + /** + * 寮�鍗★紙鍚厖鍊硷級 + * @param po + * @param bindingResult + * @return + */ + @PostMapping(path = "termActiveCard", consumes = MediaType.APPLICATION_JSON_VALUE) @SsoAop() - public BaseResponse<VoTermRecharge> activeTermCard(@RequestBody @Valid ActiveCard po, BindingResult bindingResult) { + public BaseResponse<VoTermActiveCard> termActiveCard(@RequestBody @Valid ActiveCard po, BindingResult bindingResult) { if (bindingResult != null && bindingResult.hasErrors()) { return BaseResponseUtils.buildErrorMsg(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); } @@ -49,4 +55,46 @@ return BaseResponseUtils.buildSuccess(map_result.get("content")) ; } + + /** + * 鍏呭�� + * @param po + * @param bindingResult + * @return + */ + @PostMapping(path = "termRecharge", consumes = MediaType.APPLICATION_JSON_VALUE) + @SsoAop() + public BaseResponse<VoTermRecharge> termRecharge(@RequestBody @Valid DtoRecharge po, BindingResult bindingResult) { + if (bindingResult != null && bindingResult.hasErrors()) { + return BaseResponseUtils.buildErrorMsg(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); + } + + Map map_result = cardSv.addRecharge(po); + if(map_result.get("success").equals(false)) { + return BaseResponseUtils.buildErrorMsg(map_result.get("msg").toString()); + } + return BaseResponseUtils.buildSuccess(map_result.get("content")) ; + + } + + /** + * 琛ュ崱 + * @param po + * @param bindingResult + * @return + */ + @PostMapping(path = "termReissue", consumes = MediaType.APPLICATION_JSON_VALUE) + @SsoAop() + public BaseResponse<VoTermRecharge> termReissue(@RequestBody @Valid DtoReissue po, BindingResult bindingResult) { + if (bindingResult != null && bindingResult.hasErrors()) { + return BaseResponseUtils.buildErrorMsg(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); + } + + Map map_result = cardSv.reissue(po); + if(map_result.get("success").equals(false)) { + return BaseResponseUtils.buildErrorMsg(map_result.get("msg").toString()); + } + return BaseResponseUtils.buildSuccess(map_result.get("content")) ; + + } } diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/CardSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/CardSv.java index e244ab3..ded6fa1 100644 --- a/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/CardSv.java +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/CardSv.java @@ -1,22 +1,28 @@ package com.dy.pipIrrTerminal.card; -import com.dy.common.webUtil.BaseResponse; import com.dy.pipIrrGlobal.daoPr.PrWaterPriceMapper; import com.dy.pipIrrGlobal.daoSe.SeCardOperateMapper; import com.dy.pipIrrGlobal.daoSe.SeClientCardMapper; import com.dy.pipIrrGlobal.daoSe.SeClientMapper; +import com.dy.pipIrrGlobal.daoSe.SeRechargeHistoryMapper; import com.dy.pipIrrGlobal.pojoSe.SeCardOperate; import com.dy.pipIrrGlobal.pojoSe.SeClientCard; +import com.dy.pipIrrGlobal.pojoSe.SeRechargeHistory; +import com.dy.pipIrrGlobal.voSe.VoTermActiveCard; import com.dy.pipIrrGlobal.voSe.VoTermRecharge; import com.dy.pipIrrTerminal.card.dto.ActiveCard; +import com.dy.pipIrrTerminal.card.dto.CardSimple; import com.dy.pipIrrTerminal.card.dto.DtoRecharge; +import com.dy.pipIrrTerminal.card.dto.DtoReissue; import com.dy.pipIrrTerminal.card.enums.CardStateENUM; import com.dy.pipIrrTerminal.card.enums.LastOperateENUM; import com.dy.pipIrrTerminal.card.enums.OperateTypeENUM; +import com.dy.pipIrrTerminal.card.enums.RechargeTypeENUM; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; @@ -44,6 +50,9 @@ @Autowired private PrWaterPriceMapper prWaterPriceMapper; + @Autowired + private SeRechargeHistoryMapper seRechargeHistoryMapper; + @Value("${project.projectNo}") private Integer projectNo; @@ -66,6 +75,70 @@ } return false; + } + + /** + * 鏍规嵁姘村崱缂栧彿鍒ゆ柇璇ュ崱鏄惁鍙互鍏呭�� + * @param po + * @return true:鍙互鍏呭�� + */ + public Map canRecharge(DtoRecharge po) { + Map map = new HashMap<>(); + map.put("success", false); + map.put("content", null); + + String stateName = Optional.ofNullable(seClientCardMapper.getCardStateByCardNum(po.getCardNum())).orElse(""); + // 鍗曠嫭鍏呭�兼椂鍗$墖蹇呴』涓烘甯� + if((po.getRechargeType() == RechargeTypeENUM.RECHARGE.getCode()) && !stateName.equals("姝e父")) { + map.put("msg", stateName + ", " + "姘村崱鐘舵�佷笉鏀寔褰撳墠鎿嶄綔"); + return map; + } + + map.put("success", true); + return map; + } + + /** + * 鏍规嵁姘村崱缂栧彿鍒ゆ柇璇ュ崱鏄惁鍙互琛ュ崱 + * @param po + * @return true:鍙互琛ュ崱 + */ + public Map canReissue(DtoReissue po) { + Map map = new HashMap<>(); + map.put("success", false); + map.put("content", null); + + Long cardNum = po.getCardNum(); + Integer lostCount = seClientCardMapper.getLostCount(cardNum); + Integer replacedCount = seClientCardMapper.getReplacedCount(cardNum); + if(lostCount == 0 || replacedCount > 0) { + map.put("msg", "姘村崱鏈寕澶辨垨宸茶ˉ鍗★紝涓嶈兘琛ュ崱"); + return map; + } + + Float reissueAmount = po.getReissueAmount(); + if (reissueAmount != null && reissueAmount > 0) { + Double tradeAmount = seCardOperateMapper.getTradeAmountByCardNo(cardNum); + if (tradeAmount != null && tradeAmount > 0) { + map.put("msg", "鍘熷崱鎸傚け鏃跺凡閫�娆撅紝琛ュ崱鏃朵笉鑳借ˉ璐圭敤"); + return map; + } + } + + Map map_card = Optional.ofNullable(seClientCardMapper.getCardIdAndClientNum(cardNum)).orElse(new HashMap()); + if (map_card == null || map_card.size() <= 0) { + map.put("msg", "鍗″彿閿欒锛岃鍗′笉瀛樺湪"); + return map; + } + + CardSimple card = new CardSimple(); + card.setCardId(Long.parseLong(map_card.get("cardId").toString())); + card.setClientId(Long.parseLong(map_card.get("clientId").toString())); + card.setProtocol(map_card.get("protocol").toString()); + + map.put("success", true); + map.put("content", card); + return map; } /** @@ -124,7 +197,6 @@ } return dtf.format(dateTime) + sb.toString(); } - public Map addCardAndOperate(ActiveCard po, Long cardNum, String orderNo) { Map map = new HashMap<>(); @@ -188,11 +260,20 @@ return map; } + /** + * 寮�鍗¢檮鍔犲厖鍊� + * @param po + * @param cardNum + * @return + */ public Map plusRecharge(ActiveCard po, Long cardNum) { Map map = new HashMap<>(); map.put("success", false); map.put("content", null); + /** + * 娣诲姞姘村崱鎿嶄綔璁板綍 + */ DtoRecharge dtoRecharge = new DtoRecharge(); dtoRecharge.setCardNum(cardNum); dtoRecharge.setAmount(po.getAmount()); @@ -202,17 +283,21 @@ dtoRecharge.setMoney(0f); dtoRecharge.setGift(0f); dtoRecharge.setPrice(0f); - //BaseResponse<Boolean> job = cardOperateSv.addRecharge(dtoRecharge); - BaseResponse<Boolean> job = null; - if (!job.getCode().equals("0001")) { + Map map_plusRecharge = addRecharge(dtoRecharge); + if (!map_plusRecharge.get("success").equals(true)) { map.put("msg", "寮�鍗″け璐�-鍏呭�煎紓甯�"); return map; } - map.put("success", true); return map; } + /** + * 婵�娲绘垨琛ュ崱 + * @param po + * @return + */ + @Transactional(rollbackFor = Exception.class) public Map activeOrReissueTermCard(ActiveCard po) { Map map = new HashMap<>(); map.put("success", false); @@ -250,12 +335,100 @@ Float balance = Optional.ofNullable(seClientCardMapper.getMoneyByCardNum(cardNum)).orElse(0f); Double waterPrice = prWaterPriceMapper.getPrice(); + VoTermActiveCard voTermActiveCard = new VoTermActiveCard(); + voTermActiveCard.setProjectNo(projectNo); + voTermActiveCard.setCardNum(cardNum); + voTermActiveCard.setBalance(balance); + voTermActiveCard.setWaterPrice(waterPrice); + voTermActiveCard.setTime(new Date()); + voTermActiveCard.setOrderNo(orderNo); + + map.put("success", true); + map.put("msg", "鎿嶄綔鎴愬姛"); + map.put("content", voTermActiveCard); + return map; + } + + /** + * 鍏呭�� + * @param po + * @return + */ + @Transactional(rollbackFor = Exception.class) + public Map addRecharge(DtoRecharge po) { + Map map = new HashMap<>(); + map.put("success", false); + map.put("content", null); + + Map map_canRecharge = canRecharge(po); + if(map_canRecharge.get("success").equals(false)) { + map.put("msg", map_canRecharge.get("msg").toString()); + return map; + } + + /** + * 渚濇嵁姘村崱缂栧彿鑾峰彇姘村崱琛ㄤ富閿強鍐滄埛缂栧彿 + */ + Map map_cardAndClient = seClientCardMapper.getCardIdAndClientNum(po.getCardNum()); + if (map_cardAndClient == null || map_cardAndClient.size() <= 0) { + map.put("msg", "鍗″彿閿欒锛岃鍗′笉瀛樺湪"); + return map; + } + Long cardId = Long.parseLong(map_cardAndClient.get("cardId").toString()); + Long clientId = Long.parseLong(map_cardAndClient.get("clientId").toString()); + String orderNo = generateOrderNo(); + + /** + * 娣诲姞姘村崱鍏呭�兼搷浣滆褰� + */ + SeCardOperate seCardOperate = new SeCardOperate(); + seCardOperate.setCardId(cardId); + seCardOperate.setClientId(clientId); + seCardOperate.setMoney(po.getMoney()); + seCardOperate.setTradeAmount(po.getAmount()); + seCardOperate.setGift(po.getGift()); + seCardOperate.setOperateType(OperateTypeENUM.RECHARGE.getCode()); + seCardOperate.setPaymentId(po.getPaymentId()); + seCardOperate.setPrice(po.getPrice()); + seCardOperate.setRemarks(po.getRemarks()); + seCardOperate.setOperator(po.getOperator()); + seCardOperate.setOperateDt(new Date()); + seCardOperate.setOrderNo(orderNo); + seCardOperate.setOperateValid((byte) 1); + seCardOperateMapper.insert(seCardOperate); + Long rec = Optional.ofNullable(seCardOperate.getId()).orElse(0L); + if (rec == 0) { + map.put("msg", "鍏呭�煎け璐�-鍏呭�艰褰曞啓鍏ュ紓甯�"); + return map; + } + + /** + * 娣诲姞鍏呭�煎巻鍙茶褰� + */ + SeRechargeHistory seRechargeHistory = new SeRechargeHistory(); + seRechargeHistory.setCardid(cardId); + seRechargeHistory.setClientid(clientId); + seRechargeHistory.setMoney(po.getMoney()); + seRechargeHistory.setAmount(po.getAmount()); + seRechargeHistory.setGift(po.getGift()); + Float afterRecharge = po.getMoney() + po.getAmount() + po.getGift(); + seRechargeHistory.setAfterrecharge(afterRecharge); + seRechargeHistory.setPaymentid(po.getPaymentId()); + seRechargeHistory.setPrice(po.getPrice()); + seRechargeHistory.setRemarks(po.getRemarks()); + seRechargeHistory.setOperator(po.getOperator()); + seRechargeHistory.setOperatedt(new Date()); + seRechargeHistory.setOperateValid((byte) 1); + seRechargeHistoryMapper.insert(seRechargeHistory); + Long rec_seRechargeHistory = Optional.ofNullable(seRechargeHistory.getId()).orElse(0L); + if (rec_seRechargeHistory == 0) { + map.put("msg", "鍏呭�煎け璐�-鍏呭�煎巻鍙茶褰曞啓鍏ュ紓甯�"); + return map; + } + VoTermRecharge voTermRecharge = new VoTermRecharge(); voTermRecharge.setProjectNo(projectNo); - voTermRecharge.setCardNum(cardNum); - voTermRecharge.setBalance(balance); - voTermRecharge.setWaterPrice(waterPrice); - voTermRecharge.setTime(new Date()); + voTermRecharge.setCardNum(po.getCardNum()); voTermRecharge.setOrderNo(orderNo); map.put("success", true); @@ -264,4 +437,47 @@ return map; } + /** + * 琛ュ崱 + * @param po + * @return + */ + @Transactional(rollbackFor = Exception.class) + public Map reissue(DtoReissue po) { + Map map = new HashMap<>(); + map.put("success", false); + map.put("content", null); + + Map map_canReissue = canReissue(po); + if(map_canReissue.get("success").equals(false)) { + map.put("msg", map_canReissue.get("msg").toString()); + return map; + } + CardSimple card = (CardSimple) map_canReissue.get("content"); + Long cardId = card.getCardId(); + Long clientId = card.getClientId(); + String protocol = card.getProtocol(); + + /** + * 娣诲姞寮�鍗¤褰曪紝閫�杩橀噾棰濆啿鍒版柊鍗′腑 + */ + ActiveCard activeCard = new ActiveCard(); + activeCard.setProtocol(protocol); + activeCard.setCardAddr(po.getCardAddr()); + activeCard.setClientId(clientId); + activeCard.setOriginalCardId(cardId); + activeCard.setCardCost(po.getCardCost()); + activeCard.setAmount(po.getReissueAmount()); + activeCard.setPaymentId(po.getPaymentId()); + activeCard.setRemarks(po.getRemarks()); + activeCard.setOperator(po.getOperator()); + + Map map_newCard = activeOrReissueTermCard(activeCard); + VoTermActiveCard voTermActiveCard = (VoTermActiveCard) map_newCard.get("content"); + + map.put("success", true); + map.put("msg", "鎿嶄綔鎴愬姛"); + map.put("content", voTermActiveCard); + return map; + } } diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/dto/ActiveCard.java b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/dto/ActiveCard.java index 5e5f365..6082c9c 100644 --- a/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/dto/ActiveCard.java +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/dto/ActiveCard.java @@ -66,4 +66,5 @@ */ @NotNull(message = "鎿嶄綔浜轰笉鑳戒负绌�") private Long operator; + } diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/dto/CardSimple.java b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/dto/CardSimple.java new file mode 100644 index 0000000..a7bf744 --- /dev/null +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/dto/CardSimple.java @@ -0,0 +1,30 @@ +package com.dy.pipIrrTerminal.card.dto; + +import lombok.Data; + +/** + * @author ZhuBaoMin + * @date 2025-06-04 16:26 + * @LastEditTime 2025-06-04 16:26 + * @Description 姘村崱绠�鍗曚俊鎭� + */ + +@Data +public class CardSimple { + public static final long serialVersionUID = 202506041628001L; + + /** + * 姘村崱ID + */ + private Long cardId; + + /** + * 鍐滄埛ID + */ + private Long clientId; + + /** + * 鍗忚鍚嶇О + */ + private String protocol; +} diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/dto/DtoRecharge.java b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/dto/DtoRecharge.java index 0497da6..1ff7254 100644 --- a/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/dto/DtoRecharge.java +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/dto/DtoRecharge.java @@ -70,4 +70,10 @@ */ @Positive(message = "鎿嶄綔浜虹紪鍙峰繀椤讳负澶т簬0鐨勬暣鏁�") private Long operator; + + /** + * 鍏呭�肩被鍨嬶細1-寮�鍗″悓姝ュ厖鍊硷紝2-鍏呭�� + */ + @NotNull(message = "鍏呭�肩被鍨嬩笉鑳戒负绌�") + private Byte rechargeType; } diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/dto/DtoReissue.java b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/dto/DtoReissue.java new file mode 100644 index 0000000..9e5321a --- /dev/null +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/dto/DtoReissue.java @@ -0,0 +1,60 @@ +package com.dy.pipIrrTerminal.card.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import lombok.*; + +/** + * @author ZhuBaoMin + * @date 2025-06-04 14:42 + * @LastEditTime 2025-06-04 14:42 + * @Description 琛ュ崱浼犲叆瀵硅薄 + */ + +@Data +@Builder +@ToString +@NoArgsConstructor +@AllArgsConstructor +public class DtoReissue { + public static final long serialVersionUID = 202506041446001L; + /** + * 姘村崱鍦板潃 + */ + @NotBlank(message = "姘村崱鍦板潃涓嶈兘涓虹┖") + private String cardAddr; + + /** + * 姘村崱缂栧彿 + */ + @NotNull(message = "姘村崱缂栧彿涓嶈兘涓虹┖") + private Long cardNum; + + /** + * 鍗$墖璐圭敤 + */ + private Integer cardCost; + + /** + * 閫�杩橀噾棰� + */ + private Float reissueAmount; + + /** + * 鏀粯鏂瑰紡 + */ + @NotNull(message = "鏀粯鏂瑰紡涓嶈兘涓虹┖") + private Long paymentId; + + /** + * 澶囨敞淇℃伅 + */ + private String remarks; + + /** + * 鎿嶄綔浜虹紪鍙� + */ + @NotNull(message = "鎿嶄綔浜轰笉鑳戒负绌�") + private Long operator; +} diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/enums/RechargeTypeENUM.java b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/enums/RechargeTypeENUM.java new file mode 100644 index 0000000..45642e6 --- /dev/null +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/enums/RechargeTypeENUM.java @@ -0,0 +1,21 @@ +package com.dy.pipIrrTerminal.card.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @author ZhuBaoMin + * @date 2025-05-09 20:12 + * @LastEditTime 2025-05-09 20:12 + * @Description + */ + +@Getter +@AllArgsConstructor +public enum RechargeTypeENUM { + PLUS((byte)1, "寮�鍗″悓姝ュ厖鍊�"), + RECHARGE((byte)2, "鍏呭��"); + + private final Byte code; + private final String message; +} diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/command/CommandSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/command/CommandSv.java index 6bbaac0..8e2a50c 100644 --- a/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/command/CommandSv.java +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/command/CommandSv.java @@ -22,6 +22,7 @@ import com.dy.pipIrrGlobal.command.ComSupport; import com.dy.pipIrrGlobal.command.dto.Param; import com.dy.pipIrrGlobal.daoIr.IrIntakeOperateMapper; +import com.dy.pipIrrGlobal.daoPr.PrIntakeControllerMapper; import com.dy.pipIrrGlobal.daoPr.PrIntakeMapper; import com.dy.pipIrrGlobal.daoPr.PrIntakeVcMapper; import com.dy.pipIrrGlobal.daoPr.PrWaterPriceMapper; @@ -40,6 +41,8 @@ import com.dy.pipIrrWechat.command.dto.AutomaticClose; import com.dy.pipIrrWechat.command.dto.ValveClose; import com.dy.pipIrrWechat.command.dto.ValveOpen; +import com.dy.pipIrrWechat.irrigatePlan.IrrigatePlanSv; +import com.dy.pipIrrWechat.irrigation.IrrigationSv; import com.dy.pipIrrWechat.result.WechatResultCode; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -72,6 +75,8 @@ private final RmOpenCloseValveLastMapper rmOpenCloseValveLastMapper; //private final PrCommonIntakesMapper prCommonIntakesMapper; private final IrIntakeOperateMapper irIntakeOperateMapper; + private final IrrigationSv irrigationSv; + private final PrIntakeControllerMapper prIntakeControllerMapper; @Value("${mw.rtuCallbackUrl_wx}") private String rtuCallbackUrl_wx; @@ -85,7 +90,7 @@ private String pro_mw = "mw"; private String key_mw = "comSendUrl"; @Autowired - public CommandSv(RmCommandHistoryMapper rmCommandHistoryMapper,RmOpenCloseValveLastMapper rmOpenCloseValveLastMapper, SeVirtualCardMapper seVirtualCardMapper, PrIntakeMapper prIntakeMapper, PrWaterPriceMapper prWaterPriceMapper, PrIntakeVcMapper prIntakeVcMapper, SeClientCardMapper seClientCardMapper, RmIrrigateProfileMapper rmIrrigateProfileMapper, Environment env, IrIntakeOperateMapper irIntakeOperateMapper) { + public CommandSv(RmCommandHistoryMapper rmCommandHistoryMapper,RmOpenCloseValveLastMapper rmOpenCloseValveLastMapper, SeVirtualCardMapper seVirtualCardMapper, PrIntakeMapper prIntakeMapper, PrWaterPriceMapper prWaterPriceMapper, PrIntakeVcMapper prIntakeVcMapper, SeClientCardMapper seClientCardMapper, RmIrrigateProfileMapper rmIrrigateProfileMapper, Environment env, IrIntakeOperateMapper irIntakeOperateMapper, IrrigationSv irrigationSv, PrIntakeControllerMapper prIntakeControllerMapper) { this.rmCommandHistoryMapper = rmCommandHistoryMapper; this.rmOpenCloseValveLastMapper = rmOpenCloseValveLastMapper; //this.prCommonIntakesMapper = prCommonIntakesMapper; @@ -97,6 +102,8 @@ this.rmIrrigateProfileMapper = rmIrrigateProfileMapper; this.env = env; this.irIntakeOperateMapper = irIntakeOperateMapper; + this.irrigationSv = irrigationSv; + this.prIntakeControllerMapper = prIntakeControllerMapper; } /** * 铏氭嫙鍗D鎹㈣櫄鎷熷崱瀵硅薄 @@ -127,6 +134,7 @@ com.type = "innerCommand"; comSendUrl = env.getProperty(pro_mw + "." + DataSourceContext.get() + "." + key_mw); JSONObject response = (JSONObject) JSON.toJSON(sendCom2Mw(com)); + String aa = response.toJSONString(); JSONArray jsonArray = new JSONArray(); if(response != null && response.getString("code").equals("0001")) { @@ -268,8 +276,10 @@ Long operator = automaticClose.getOperator(); Byte openType = automaticClose.getOpenType(); Long comId = new IDLongGenerator().generate(); + String intakeName = Optional.ofNullable(prIntakeControllerMapper.getIntakeNameById(intakeId)).orElse(""); // 濡傛灉鏄疆鐏� + Long operateId = null; if(openType != null && openType == 1) { IrIntakeOperate irIntakeOperate = new IrIntakeOperate(); irIntakeOperate.setPlanId(planId); @@ -279,8 +289,8 @@ irIntakeOperate.setStartTime(startTime); irIntakeOperate.setDuration(duration); - Long id = addIntakeOperate(irIntakeOperate); - if(id == null) { + operateId = addIntakeOperate(irIntakeOperate); + if(operateId == null) { Map map = new HashMap<>(); map.put("success", false); map.put("msg", "娣诲姞鍙栨按鍙f搷浣滆褰曞け璐�"); @@ -307,7 +317,7 @@ Map map = new HashMap<>(); map.put("success", false); - map.put("msg", WechatResultCode.PLEASE_SELECT_A_VC.getMessage() + "(" + intakeId + ")"); + map.put("msg", WechatResultCode.PLEASE_SELECT_A_VC.getMessage() + "(" + intakeName + ")"); map.put("content", null); return map; } @@ -320,14 +330,14 @@ Map map = new HashMap<>(); map.put("success", false); - map.put("msg", WechatResultCode.PLEASE_SELECT_A_VC.getMessage() + "(" + intakeId + ")"); + map.put("msg", WechatResultCode.PLEASE_SELECT_A_VC.getMessage() + "(" + intakeName + ")"); map.put("content", null); return map; } String vcNum = vc.getVcNum().toString(); Double moneyRemain = vc.getMoney(); if(moneyRemain < 100) { - irIntakeOperateMapper.updateByCommandId(comId, (byte)2, "铏氭嫙鍗′綑棰濅笉瓒筹紝璇峰厖鍊�" + "(" + intakeId + ")"); + irIntakeOperateMapper.updateByCommandId(comId, (byte)2, "铏氭嫙鍗′綑棰濅笉瓒筹紝璇峰厖鍊�" + "(" + intakeName + ")"); Map map = new HashMap<>(); map.put("success", false); map.put("msg", "铏氭嫙鍗′綑棰濅笉瓒筹紝璇峰厖鍊�"); @@ -338,6 +348,7 @@ // 鑾峰彇姘翠环 Double waterPrice = getPrice(); if(waterPrice == null) { + irIntakeOperateMapper.updateByCommandId(comId, (byte)2, WechatResultCode.NO_WATER_PRICE.getMessage() + "(" + intakeName + ")"); Map map = new HashMap<>(); map.put("success", false); map.put("msg", WechatResultCode.NO_WATER_PRICE.getMessage()); @@ -348,7 +359,7 @@ // 鍙栨按鍙D鎹㈤榾鎺у櫒鍦板潃鍙婇�氳鍗忚 JSONObject job_rtu = getRtu(intakeId, null); if(job_rtu == null) { - irIntakeOperateMapper.updateByCommandId(comId, (byte)2, WechatResultCode.RTU_NOT_EXIST.getMessage() + "(" + intakeId + ")"); + irIntakeOperateMapper.updateByCommandId(comId, (byte)2, WechatResultCode.RTU_NOT_EXIST.getMessage() + "(" + intakeName + ")"); Map map = new HashMap<>(); map.put("success", false); @@ -364,11 +375,22 @@ // 鐢熸垚璁㈠崟鍙� String orderNo = generateOrderNo(); if(orderNo == null) { - irIntakeOperateMapper.updateByCommandId(comId, (byte)2, WechatResultCode.NO_ORDER_NUMBER.getMessage() + "(" + intakeId + ")"); + irIntakeOperateMapper.updateByCommandId(comId, (byte)2, WechatResultCode.NO_ORDER_NUMBER.getMessage() + "(" + intakeName + ")"); Map map = new HashMap<>(); map.put("success", false); map.put("msg", WechatResultCode.NO_ORDER_NUMBER.getMessage()); + map.put("content", null); + return map; + } + + // 鍒ゆ柇闃�鎺у櫒鏄惁宸茬粡寮�闃� + Boolean isOpen = irrigationSv.getOpenCloseStatus(rtuAddr); + if(isOpen) { + irIntakeOperateMapper.updateByCommandId(comId, (byte)2, intakeName + " 闃�闂ㄤ负鎵撳紑鐘舵��"); + Map map = new HashMap<>(); + map.put("success", false); + map.put("msg", intakeName + " 闃�闂ㄤ负鎵撳紑鐘舵��"); map.put("content", null); return map; } @@ -419,8 +441,12 @@ BaseResponse<Boolean> result = dealWithCommandResult(myParam); // 濡傛灉鍛戒护鎵ц澶辫触锛屽垯鍐嶆鎵ц鍛戒护 if(!result.isSuccess()) { - myParam.setComId(new IDLongGenerator().generate()); + Long newComId = new IDLongGenerator().generate(); + myParam.setComId(newComId); result = dealWithCommandResult(myParam); + + // 鏍规嵁operateId淇敼鍙栨按鍙f搷浣滆褰曚腑鐨刢ommandId + irIntakeOperateMapper.updateCommandId(newComId, operateId); } Map map = new HashMap<>(); diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/irrigatePlan/IrrigatePlanSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/irrigatePlan/IrrigatePlanSv.java index a0bd00b..86c013c 100644 --- a/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/irrigatePlan/IrrigatePlanSv.java +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/irrigatePlan/IrrigatePlanSv.java @@ -285,6 +285,13 @@ for (VoIrrigateSchedule schedule : schedules) { Long groupId = schedule.getGroupId(); List<Long> intakeIds = getIntakeIdsByGroupId(groupId); + if(intakeIds == null || intakeIds.size() <= 0) { + Map map = new HashMap<>(); + map.put("success", false); + map.put("msg", "褰撳墠杞亴缁勫唴娌℃湁鏈夋晥鐨勫彇姘村彛"); + map.put("content", null); + return map; + } for (Long intakeId : intakeIds) { if (schedule.getDuration() > 0) { // 浠婂彂甯冪亴婧夋椂闀垮ぇ浜�0鐨� diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/irrigation/IrrigationSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/irrigation/IrrigationSv.java index b853e64..f5d7255 100644 --- a/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/irrigation/IrrigationSv.java +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/irrigation/IrrigationSv.java @@ -191,7 +191,8 @@ return false; } - if(response.getJSONObject("content").getJSONObject("attachment").get("valveOpenTrueCloseFalse").equals("true")) { + // if(response.getJSONObject("content").getJSONObject("attachment").get("valveOpenTrueCloseFalse").equals("true")) { + if(response.getJSONObject("content").getJSONObject("attachment").getBoolean("valveOpenTrueCloseFalse")) { return true; } else { -- Gitblit v1.8.0