Administrator
2023-12-09 ad9e62f780178797361c8fc0f6f20f8d94cb5036
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.loss;
 
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.SeLoss;
import com.dy.pipIrrGlobal.voSe.VoLoss;
import com.dy.pipIrrSell.clientCard.ClientCardSv;
import com.dy.pipIrrSell.clientCard.LastOperateENUM;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
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.time.format.DateTimeFormatter;
import java.util.Date;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
 
/**
 * @author ZhuBaoMin
 * @date 2023/12/6 9:54
 * @LastEditTime 2023/12/6 9:54
 * @Description
 */
 
@Slf4j
@Tag(name = "挂失管理", description = "挂失操作")
@RestController
@RequestMapping(path="loss")
@RequiredArgsConstructor
public class LossCtrl {
    private final LossSv lossSv;
    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 = VoLoss.class))}
            )
    })
    @GetMapping(path = "/getLosses", consumes = MediaType.APPLICATION_JSON_VALUE)
    @SsoAop("-1")
    public BaseResponse<QueryResultVo<List<VoLoss>>> getLosses(@RequestBody @Parameter(description = "查询form表单json数据", required = true) QueryVo vo){
        try {
            QueryResultVo<List<VoLoss>> res = lossSv.getLosses(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("-1")//@SsoAop(power = "-1")
    public BaseResponse<Boolean> add(@RequestBody @Parameter(description = "form表单json数据", required = true) @Valid DtoLoss po, @Parameter(hidden = true) BindingResult bindingResult){
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        if(bindingResult != null && bindingResult.hasErrors()){
            return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
        }
 
        /**
         * cardId           水卡编号(非传入参数,由cardAddr反查)
         * cardAddr         水卡地址
         * clientId         农户编号
         * money            余额
         * refund           退款金额
         * remarks          备注
         * operator         操作人编号
         * lossTime         挂失时间
         */
        Long cardId = 0L;
        String cardAddr = po.getCardAddr();
        Long clientId = po.getClientId();
        Float money = po.getMoney();
        Float refund = po.getRefund();
        String remarks = po.getRemarks();
        Long operator = po.getOperator();
        Date lossTime = new Date();
 
        /**
         * 依据水卡地址获取水卡编号(主键)
         */
        cardId = Optional.ofNullable(clientCardSv.getCardIdByAddr(cardAddr)).orElse(0L);
        if(cardId == 0) {
            return BaseResponseUtils.buildFail("卡号错误,该卡不存在");
        }
 
        /**
         * 修改农户卡信息:
         *      挂失时间
         *      最后操作类型-4
         */
        SeClientCard seClientCard = new SeClientCard();
        seClientCard.setId(cardId);
        seClientCard.setLossdtdt(lossTime);
        seClientCard.setLastoper(LastOperateENUM.LOSS.getCode());
        Integer rec_updateClientCard = Optional.ofNullable(clientCardSv.UpdateClientCard(seClientCard)).orElse(0);
        if(rec_updateClientCard == 0) {
            return BaseResponseUtils.buildFail("挂失失败-农户卡挂失异常");
        }
 
        /**
         * 添加挂失记录
         */
        SeLoss seLoss = new SeLoss();
        seLoss.setCardid(cardId);
        seLoss.setClientid(clientId);
        seLoss.setMoney(money);
        seLoss.setRefund(refund);
        seLoss.setRemarks(remarks);
        seLoss.setOperator(operator);
        seLoss.setOperatedt(lossTime);
        Long rec = Optional.ofNullable(lossSv.add(seLoss)).orElse(0L);
        if(rec == 0) {
            return BaseResponseUtils.buildFail("挂失失败-挂失记录写入异常");
        }
 
        return BaseResponseUtils.buildSuccess(true) ;
    }
}