Administrator
2023-12-29 9e095f66c1547e4af8a0b21e2276187cd5d4b2a0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
package com.dy.pipIrrSell.reversal;
 
import com.dy.common.aop.SsoAop;
import com.dy.common.webUtil.BaseResponse;
import com.dy.common.webUtil.BaseResponseUtils;
import com.dy.common.webUtil.QueryResultVo;
import com.dy.common.webUtil.ResultCodeMsg;
import com.dy.pipIrrGlobal.pojoSe.SeClientCard;
import com.dy.pipIrrGlobal.pojoSe.SeReversal;
import com.dy.pipIrrGlobal.voSe.VoReversal;
import com.dy.pipIrrSell.clientCard.ClientCardSv;
import com.dy.pipIrrSell.clientCard.LastOperateENUM;
import com.dy.pipIrrSell.result.SellResultCode;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.media.Content;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.responses.ApiResponses;
import io.swagger.v3.oas.annotations.tags.Tag;
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.*;
 
import java.util.*;
 
/**
 * @author ZhuBaoMin
 * @date 2023/12/6 16:03
 * @LastEditTime 2023/12/6 16:03
 * @Description
 */
 
@Slf4j
@Tag(name = "冲正管理", description = "冲正操作")
@RestController
@RequestMapping(path="reversal")
@RequiredArgsConstructor
public class ReversalCtrl {
    private final ReversalSv reversalSv;
    private final ClientCardSv clientCardSv;
 
    @Operation(summary = "获得一页冲正记录", description = "返回一页冲正数据")
    @ApiResponses(value = {
            @ApiResponse(
                    responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
                    description = "返回一页冲正数据(BaseResponse.content:QueryResultVo[{}])",
                    content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
                            schema = @Schema(implementation = VoReversal.class))}
            )
    })
    @GetMapping(path = "/getReversals")
    @SsoAop()
    public BaseResponse<QueryResultVo<List<VoReversal>>> getReversals(QueryVo vo){
        try {
            QueryResultVo<List<VoReversal>> res = reversalSv.getReversals(vo);
            return BaseResponseUtils.buildSuccess(res);
        } catch (Exception e) {
            log.error("获取冲正记录异常", e);
            return BaseResponseUtils.buildException(e.getMessage()) ;
        }
    }
 
    @Operation(summary = "添加冲正记录", description = "添加冲正记录")
    @ApiResponses(value = {
            @ApiResponse(
                    responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
                    description = "操作结果:true:成功,false:失败(BaseResponse.content)",
                    content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
                            schema = @Schema(implementation = Boolean.class))}
            )
    })
    @PostMapping(path = "add", consumes = MediaType.APPLICATION_JSON_VALUE)
    @Transactional(rollbackFor = Exception.class)
    @SsoAop()
    public BaseResponse<Boolean> add(@RequestBody @Valid DtoReversal po, BindingResult bindingResult){
        if(bindingResult != null && bindingResult.hasErrors()){
            return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
        }
 
        /**
         * cardId           水卡编号(非传入参数,由cardAddr反查,修改农户卡使用)
         * clientId         农户编号(非传入参数,由cardNum反查)
         * cardNum          水卡地址
         * cardBalance      卡片余额
         * systemBalance    系统余额
         * remarks          备注
         * operator         操作人编号
         * reversalTime     冲正
         */
        Long cardId = 0L;
        String cardNum = po.getCardNum();
        Long clientId = 0L;
        Float cardBalance = po.getCardBalance();
        Float systemBalance = po.getSystemBalance();
        String remarks = po.getRemarks();
        Long operator = po.getOperator();
        Date reversalTime = new Date();
 
        /**
         * 依据水卡编号获取水卡表主键及农户编号
         */
        Map map = Optional.ofNullable(clientCardSv.getCardIdAndClientNum(cardNum)).orElse(new HashMap());
        if(map == null || map.size() <= 0) {
            return BaseResponseUtils.buildFail(SellResultCode.CARD_NUMBER_MISTAKE.getMessage());
        }
        cardId = Long.parseLong(map.get("cardId").toString());
        clientId = Long.parseLong(map.get("clientId").toString());
 
        /**
         * 修改农户卡信息:
         *      挂失时间
         *      最后操作类型-4
         */
        SeClientCard seClientCard = new SeClientCard();
        seClientCard.setId(cardId);
        seClientCard.setReversaldt(reversalTime);
        seClientCard.setMoney(cardBalance);
        seClientCard.setLastoper(LastOperateENUM.REVERSAL.getCode());
        Integer rec_updateClientCard = Optional.ofNullable(clientCardSv.UpdateClientCard(seClientCard)).orElse(0);
        if(rec_updateClientCard == 0) {
            return BaseResponseUtils.buildFail(SellResultCode.RECHARGE_FAIL_WRITE_CLIENT_CARD_ERROR.getMessage());
        }
 
        /**
         * 添加冲正记录
         */
        SeReversal reversal = new SeReversal();
        //reversal.setCardnum(cardNum);
        //reversal.setClientnum(clientNum);
        reversal.setCardid(cardId);
        reversal.setClientid(clientId);
        reversal.setCardbalance(cardBalance);
        reversal.setSystembalance(systemBalance);
        reversal.setRemarks(remarks);
        reversal.setOperator(operator);
        reversal.setOperatedt(reversalTime);
        Long rec = Optional.ofNullable(reversalSv.add(reversal)).orElse(0L);
        if(rec == 0) {
            return BaseResponseUtils.buildFail(SellResultCode.REVERSAL_FAIL_WRITE_REVERSAL_ERROR.getMessage());
        }
 
        return BaseResponseUtils.buildSuccess(true) ;
    }
}