guoshilong
2023-11-21 195a89f78b78503aa13732799d342719310051b3
水位库容曲线填报
1 files modified
6 files added
438 ■■■■■ changed files
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/controller/TbResStagCapDiscController.java 66 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/entity/TbResStagCapDisc.java 126 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/TbResStagCapDiscMapper.java 12 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/TbResStagCapDiscMapper.xml 11 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/ITbResStagCapDiscService.java 15 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/impl/TbAttResBaseServiceImpl.java 6 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/impl/TbResStagCapDiscServiceImpl.java 202 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/controller/TbResStagCapDiscController.java
New file
@@ -0,0 +1,66 @@
package cn.gistack.sm.sjztmd.controller;
import cn.gistack.sm.sjztmd.entity.TbAttResBase;
import cn.gistack.sm.sjztmd.entity.TbFileStorageLocation;
import cn.gistack.sm.sjztmd.entity.TbResStagCapDisc;
import cn.gistack.sm.sjztmd.service.ITbResStagCapDiscService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.StringUtil;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@Slf4j
@Api(tags = "中台水位库容信息填报")
@RestController
@RequestMapping("/sjztmd/tbResStagCapDisc")
@AllArgsConstructor
public class TbResStagCapDiscController {
    ITbResStagCapDiscService tbResStagCapDiscService;
    /**
     * 新增
     * @return
     */
    @ApiOperation(value = "水位库容信息-添加", notes = "水位库容信息-添加")
    @PostMapping(value = "/addAll")
    public R addAll(@RequestBody List<TbResStagCapDisc> list) {
        Boolean addAll = tbResStagCapDiscService.addAll(list);
        return R.status(addAll);
    }
    /**
     * 根据水库获取水位库容信息
     * @return
     */
    @ApiOperation(value = "水位库容信息-根据水库获取水位库容信息", notes = "水位库容信息-根据水库获取水位库容信息")
    @GetMapping(value = "/getAll")
    public R getAll(TbResStagCapDisc tbResStagCapDisc) {
        if (StringUtil.isBlank(tbResStagCapDisc.getResGuid())) {
            return R.fail("水库id不能为空");
        }
        List<TbResStagCapDisc> list = tbResStagCapDiscService.getAll(tbResStagCapDisc);
        return R.data(list);
    }
    /**
     * 审核
     * @return
     */
    @ApiOperation(value = "水位库容信息-审核", notes = "水位库容信息-审核")
    @PostMapping(value = "/audit")
    public R audit(@RequestBody List<TbResStagCapDisc> list) {
        return R.status(tbResStagCapDiscService.auditByGuid(list));
    }
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/entity/TbResStagCapDisc.java
New file
@@ -0,0 +1,126 @@
package cn.gistack.sm.sjztmd.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
@Data
@TableName("\"tb_res_stag_cap_disc\"")
@ApiModel(value = "水位库容填报", description = "水位库容填报")
public class TbResStagCapDisc {
    /**
     * 主键
     */
    @ApiModelProperty(value = "主键")
    @TableField("\"guid\"")
    @TableId("\"guid\"")
    private String guid;
    /**
     * 水位
     */
    @ApiModelProperty(value = "水位(米)")
    @TableField("\"stag\"")
    private Double stag;
    /**
     * 面积
     */
    @ApiModelProperty(value = "面积(平方千米)")
    @TableField("\"area\"")
    private Double area;
    /**
     * 库容
     */
    @ApiModelProperty(value = "库容(万立方米)")
    @TableField("\"cap\"")
    private Double cap;
    /**
     * 库容
     */
    @ApiModelProperty(value = "溢洪道(秒每立方米)")
    @TableField("\"spillway\"")
    private Double spillway;
    /**
     * 库容
     */
    @ApiModelProperty(value = "非常溢洪道(秒每立方米)")
    @TableField("\"emergency_spillway\"")
    private Double emergencySpillway;
    /**
     * 库容
     */
    @ApiModelProperty(value = "总泄量(秒每立方米)")
    @TableField("\"total_discharge\"")
    private Double totalDischarge;
    /**
     * 库容
     */
    @ApiModelProperty(value = "序号")
    @TableField("\"order_id\"")
    private Double orderId;
    /**
     * 库容
     */
    @ApiModelProperty(value = "水库guid")
    @TableField("\"res_guid\"")
    private String resGuid;
    /**
     * 创建时间
     */
    @ApiModelProperty(value = "创建时间 ")
    @TableField("\"create_time\"")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;
    /**
     * 创建时间
     */
    @ApiModelProperty(value = "修改时间 ")
    @TableField("\"update_time\"")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updateTime;
    /**
     * 操作记录
     */
    @ApiModelProperty(value = "操作记录 ")
    @TableField("\"log\"")
    private String log;
    /**
     * 填报状态(0:填写中,1:审核中,2:审核通过)
     */
    @ApiModelProperty(value = "填报状态(0:填写中,1:审核中,2:审核通过) ")
    @TableField("\"check_state\"")
    @JsonSerialize(using = ToStringSerializer.class)
    private Integer checkState;
    /**
     * 审核记录
     */
    @ApiModelProperty(value = "审核记录 ")
    @TableField("\"check_log\"")
    private String checkLog;
    @TableField(exist = false)
    private String reason;
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/TbResStagCapDiscMapper.java
New file
@@ -0,0 +1,12 @@
package cn.gistack.sm.sjztmd.mapper;
import cn.gistack.sm.sjztmd.entity.TbResStagCapDisc;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Service;
public interface TbResStagCapDiscMapper extends BaseMapper<TbResStagCapDisc> {
    void deleteByResGuid(@Param("resGuid") String resGuid);
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/TbResStagCapDiscMapper.xml
New file
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="cn.gistack.sm.sjztmd.mapper.TbResStagCapDiscMapper">
    <!--namespace根据自己需要创建的的mapper的路径和名称填写-->
    <delete id="deleteByResGuid">
        delete from SJZT_MD."tb_res_stag_cap_disc" where "res_guid" = #{resGuid}
    </delete>
</mapper>
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/ITbResStagCapDiscService.java
New file
@@ -0,0 +1,15 @@
package cn.gistack.sm.sjztmd.service;
import cn.gistack.sm.sjztmd.entity.TbRelResUser;
import cn.gistack.sm.sjztmd.entity.TbResStagCapDisc;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
public interface ITbResStagCapDiscService extends IService<TbResStagCapDisc> {
    Boolean addAll(List<TbResStagCapDisc> list);
    List<TbResStagCapDisc> getAll(TbResStagCapDisc tbResStagCapDisc);
    Boolean auditByGuid(List<TbResStagCapDisc> list);
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/impl/TbAttResBaseServiceImpl.java
@@ -243,6 +243,7 @@
        CompletableFuture<List<Map<String,Object>>> tbAttResWaterBlock = getTbInfo("tb_att_res_water_block",resGuid,executor);
        CompletableFuture<List<Map<String,Object>>> tbAttResWaterDelivery = getTbInfo("tb_att_res_water_delivery",resGuid,executor);
        CompletableFuture<List<Map<String,Object>>> tbFileStorageLocation = getTbInfo("tb_file_storage_location",resGuid,executor);
        CompletableFuture<List<Map<String,Object>>> tbResStagCapDisc = getTbInfo("tb_res_stag_cap_disc",resGuid,executor);
        //等待所有任务执行完成
        try {
            CompletableFuture.allOf(
@@ -259,7 +260,9 @@
                tbAttResSafetyMonitor,
                tbAttResStagChar,
                tbAttResWaterBlock,
                tbAttResWaterDelivery).get();
                tbAttResWaterDelivery,
                tbResStagCapDisc
            ).get();
            // 数据处理
            list.addAll(tbAttResBaseInfo.get());
            list.addAll(tbAttResEngBene.get());
@@ -275,6 +278,7 @@
            list.addAll(tbAttResWaterBlock.get());
            list.addAll(tbAttResWaterDelivery.get());
            list.addAll(tbFileStorageLocation.get());
            list.addAll(tbResStagCapDisc.get());
        } catch (InterruptedException e) {
            e.printStackTrace();
        } catch (ExecutionException e) {
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/impl/TbResStagCapDiscServiceImpl.java
New file
@@ -0,0 +1,202 @@
package cn.gistack.sm.sjztmd.service.impl;
import cn.gistack.sm.sjztmd.entity.TbFileStorageLocation;
import cn.gistack.sm.sjztmd.entity.TbRelResUser;
import cn.gistack.sm.sjztmd.entity.TbResStagCapDisc;
import cn.gistack.sm.sjztmd.mapper.TbRelResUserMapper;
import cn.gistack.sm.sjztmd.mapper.TbResStagCapDiscMapper;
import cn.gistack.sm.sjztmd.service.ITbAttResBaseService;
import cn.gistack.sm.sjztmd.service.ITbResStagCapDiscService;
import cn.gistack.system.user.feign.IUserClient;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.tool.utils.StringUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
@Service
@DS("zt")
@Transactional(rollbackFor = Exception.class)
public class TbResStagCapDiscServiceImpl extends ServiceImpl<TbResStagCapDiscMapper, TbResStagCapDisc> implements ITbResStagCapDiscService {
    @Autowired
    private IUserClient userClient;
    @Autowired
    private ITbAttResBaseService tbAttResBaseService;
    @Override
    public Boolean addAll(List<TbResStagCapDisc> list) {
        //先把该水库的数据全部删除
        String resGuid = list.get(0).getResGuid();
        baseMapper.deleteByResGuid(resGuid);
        Date now = DateUtil.now();
        //循环数组
        list.forEach(tbResStagCapDisc -> {
            //如果guid为空表示新增数据
            if (StringUtil.isBlank(tbResStagCapDisc.getGuid())){
                tbResStagCapDisc.setCreateTime(now);
                tbResStagCapDisc.setUpdateTime(now);
                //更新操作日志
                setUpdateLog(tbResStagCapDisc,tbResStagCapDisc);
                baseMapper.insert(tbResStagCapDisc);
            }else{
                //更新数据
                tbResStagCapDisc.setUpdateTime(now);
                //更新操作日志
                setUpdateLog(tbResStagCapDisc,tbResStagCapDisc);
                baseMapper.insert(tbResStagCapDisc);
            }
        });
        return true;
    }
    @Override
    public List<TbResStagCapDisc> getAll(TbResStagCapDisc tbResStagCapDisc) {
        List<TbResStagCapDisc> list = list(Condition.getQueryWrapper(tbResStagCapDisc)
            .orderByAsc("order_id")
        );
        return list;
    }
    @Override
    public Boolean auditByGuid(List<TbResStagCapDisc> list) {
        boolean b = false;
        boolean edit = false;
        // 编辑标记
        if (list.get(0).getCheckState()==4){
            edit = true;
        }
        for (int i = 0; i < list.size(); i++) {
            TbResStagCapDisc tbResStagCapDisc = list.get(i);
            //更新操作日志
            setUpdateLog(tbResStagCapDisc,tbResStagCapDisc);
            //更新审核日志
            setUpdateCheckLog(tbResStagCapDisc,tbResStagCapDisc);
            // 驳回情况下将状态修改回0即已填写未提交状态
            if (tbResStagCapDisc.getCheckState()==3){
                tbResStagCapDisc.setCheckState(0);
            }
            Date now = DateUtil.now();
            //更新数据
            tbResStagCapDisc.setUpdateTime(now);
            b = updateById(tbResStagCapDisc);
        }
        if (b){
            if (!edit) {
                tbAttResBaseService.updateFinalState(list.get(0).getResGuid(), list.get(0).getCheckState());
            }
            return true;
        }
        return true;
    }
    /**
     * @param older
     * @param newer
     * 更新审核记录
     */
    private void setUpdateCheckLog(TbResStagCapDisc older, TbResStagCapDisc newer) {
        String fillName = "";
        if (newer.getCheckState()==2){
            fillName = "审核";
        }
        if (newer.getCheckState()==3){
            fillName = "退回" + (null==newer.getReason()?"":":" + newer.getReason());
        }
        // 拼接
        String time = new SimpleDateFormat("yyyy-MM-dd HH:mm").format(new Date());
        String userName = AuthUtil.getUser().getUserName();
        String phone = userClient.userInfoById(AuthUtil.getUserId()).getData().getPhone();
        StringBuilder builder = new StringBuilder();
        builder.append(time)
            .append(",")
            .append(fillName)
            .append(",")
            .append(userName)
            .append(",")
            .append(phone)
            .append(";");
        // 判断是否存在
        if (null==older){
            // 填报
            newer.setCheckLog(builder.toString());
        }else {
            StringBuilder stringBuilder = new StringBuilder(null==older.getCheckLog()?"":older.getCheckLog());
            stringBuilder.append(builder);
            // 填报
            newer.setCheckLog(stringBuilder.toString());
        }
    }
    /**
     * @param older
     * @param newer
     * 更新操作记录
     */
    private void setUpdateLog(TbResStagCapDisc older,TbResStagCapDisc newer) {
        String fillName = "";
        if (newer.getCheckState()==0){
            fillName = "编辑";
        }
        if (newer.getCheckState()==1){
            fillName = "提交";
        }
        if (newer.getCheckState()==2){
            fillName = "审核";
        }
        if (newer.getCheckState()==3){
            fillName = "退回" + (null==newer.getCheckLog()?"":":" + newer.getCheckLog());
        }
        if (newer.getCheckState()==4){
            fillName = "编辑";
            newer.setCheckState(older.getCheckState());
        }
        // 拼接
        String time = new SimpleDateFormat("yyyy-MM-dd HH:mm").format(new Date());
        String userName = AuthUtil.getUser().getUserName();
        String phone = userClient.userInfoById(AuthUtil.getUserId()).getData().getPhone();
        StringBuilder builder = new StringBuilder();
        builder.append(time)
            .append(",")
            .append(fillName)
            .append(",")
            .append(userName)
            .append(",")
            .append(phone)
            .append(";");
        // 判断是否存在
        if (null==older){
            // 填报
            newer.setLog(builder.toString());
        }else {
            StringBuilder stringBuilder = new StringBuilder(null==older.getLog()?"":older.getLog());
            stringBuilder.append(builder);
            // 填报
            newer.setLog(stringBuilder.toString());
        }
    }
}