guoshilong
2023-11-22 363d13fd798185779d670764abbbd68ecb984dea
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/impl/TbResStagCapDiscServiceImpl.java
@@ -1,5 +1,6 @@
package cn.gistack.sm.sjztmd.service.impl;
import cn.gistack.sm.sjztmd.entity.TbAttResRsbVerspi;
import cn.gistack.sm.sjztmd.entity.TbFileStorageLocation;
import cn.gistack.sm.sjztmd.entity.TbRelResUser;
import cn.gistack.sm.sjztmd.entity.TbResStagCapDisc;
@@ -23,6 +24,7 @@
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.stream.Collectors;
@Service
@DS("zt")
@@ -36,32 +38,38 @@
   private ITbAttResBaseService tbAttResBaseService;
   @Override
   public Boolean addAll(List<TbResStagCapDisc> list) {
      //先把该水库的数据全部删除
      String resGuid = list.get(0).getResGuid();
      baseMapper.deleteByResGuid(resGuid);
      Date now = DateUtil.now();
   public Boolean addAll(List<TbResStagCapDisc> newList) {
      boolean edit = false;
      // 编辑标记
      if (newList.get(0).getCheckState()==4){
         edit = true;
      }
      // 查询是否存在
      List<TbResStagCapDisc> oldList = baseMapper.getDetailByResGuid(newList.get(0).getResGuid());
      // 更新日志
      setUpdateLog(oldList,newList);
      // 创建或更新数据
      boolean flag = addOrUpdate(oldList,newList);
      if (flag){
//         if (!edit) {
//            tbAttResBaseService.updateFinalState(newList.get(0).getResGuid(), 0);
//         }
         return true;
      }
      // 返回
      return false;
      //循环数组
      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;
   }
   /**
    * 查询水库填报详情信息
    * @param resGuid
    * @return
    */
   @Override
   public List<TbResStagCapDisc> getDetailByResGuid(String resGuid) {
      return baseMapper.getDetailByResGuid(resGuid);
   }
   @Override
@@ -73,130 +81,184 @@
   }
   @Override
   public Boolean auditByGuid(List<TbResStagCapDisc> list) {
      boolean b = false;
   public Boolean auditByGuid(List<TbResStagCapDisc> newList) {
      boolean edit = false;
      // 编辑标记
      if (list.get(0).getCheckState()==4){
      if (newList.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);
          updateById(tbResStagCapDisc);
      }
//      if (b){
      // 查询是否存在
      List<TbResStagCapDisc> oldList = baseMapper.getDetailByResGuid(newList.get(0).getResGuid());
      // 更新操作日志
      setUpdateLog(oldList,newList);
      // 更新审核日志
      setUpdateCheckLog(oldList,newList);
      // 更新数据
      boolean batch = updateBatchById(newList);
      if (batch){
//         if (!edit) {
//            tbAttResBaseService.updateFinalState(list.get(0).getResGuid(), list.get(0).getCheckState());
//            tbAttResBaseService.updateFinalState(newList.get(0).getResGuid(), newList.get(0).getCheckState());
//         }
//         return true;
//      }
      return true;
         return true;
      }
      // 返回
      return false;
   }
   /**
    * @param older
    * @param newer
    * @param oldList
    * @param newList
    * 更新审核记录
    */
   private void setUpdateCheckLog(TbResStagCapDisc older, TbResStagCapDisc newer) {
      String fillName = "";
      if (newer.getCheckState()==2){
         fillName = "审核";
      }
      if (newer.getCheckState()==3){
         fillName = "退回" + (null==newer.getReason()?"":":" + newer.getReason());
      }
   private void setUpdateCheckLog(List<TbResStagCapDisc> oldList,List<TbResStagCapDisc> newList) {
      // 遍历
      for (TbResStagCapDisc newer : newList) {
         String fillName = "";
         if (newer.getCheckState() == 2) {
            fillName = "审核";
         }
         if (newer.getCheckState() == 3) {
            fillName = "退回" + (null == newer.getCheckLog() ? "" : ":" + newer.getCheckLog());
            for (TbResStagCapDisc older : oldList) {
               if (older.getGuid().equals(newer.getGuid())){
                  // 退回时进行设置状态为填写中
                  newer.setCheckState(0);
               }
            }
         }
      // 拼接
      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());
         // 拼接
         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==newer.getGuid() || newer.getGuid().equals("")){
            // 填报
            newer.setCheckLog(builder.toString());
         } else {
            for (TbResStagCapDisc older : oldList) {
               if (older.getGuid().equals(newer.getGuid())){
                  StringBuilder stringBuilder = new StringBuilder(null == older.getCheckLog() ? "" : older.getCheckLog());
                  stringBuilder.append(builder);
                  // 填报
                  newer.setCheckLog(stringBuilder.toString());
               }
            }
         }
      }
   }
   /**
    * @param older
    * @param newer
    * @param oldList
    * @param newList
    * 更新操作记录
    */
   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());
      }
   private void setUpdateLog(List<TbResStagCapDisc> oldList,List<TbResStagCapDisc> newList) {
      // 遍历
      for (TbResStagCapDisc newer : newList){
         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 = "编辑";
            // 找到相关的 guid 数据
            if (oldList.size()>0){
               newer.setCheckState(oldList.get(0).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());
         // 拼接
         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==newer.getGuid() || newer.getGuid().equals("")){
            // 填报
            newer.setLog(builder.toString());
         }else {
            for (TbResStagCapDisc older : oldList) {
               if (older.getGuid().equals(newer.getGuid())){
                  StringBuilder stringBuilder = new StringBuilder(null==older.getLog()?"":older.getLog());
                  stringBuilder.append(builder);
                  // 填报
                  newer.setLog(stringBuilder.toString());
               }
            }
         }
      }
   }
   /**
    * 新增或更新数据
    * @param oldList
    * @param newList
    * @return
    */
   @Transactional(rollbackFor = Exception.class)
   public boolean addOrUpdate(List<TbResStagCapDisc> oldList, List<TbResStagCapDisc> newList) {
      // 取旧数据和新提交数据差集--删除
      // 去除前一天已填报的人员手机号集合
      List<TbResStagCapDisc> removeList = oldList.stream().filter(vo -> !newList.stream().map(e ->
         e.getGuid()).collect(Collectors.toList()).contains(vo.getGuid())).collect(Collectors.toList());
      // 取旧数据和新提交数据交集--更新
      List<TbResStagCapDisc> updateList = newList.stream().filter(vo -> oldList.stream().map(e ->
         e.getGuid()).collect(Collectors.toList()).contains(vo.getGuid())).collect(Collectors.toList());
      // 取新数提交据和旧数据交集--新增
      List<TbResStagCapDisc> addList = newList.stream().filter(vo -> !oldList.stream().map(e ->
         e.getGuid()).collect(Collectors.toList()).contains(vo.getGuid())).collect(Collectors.toList());
      boolean addFlag = true;
      boolean updateFlag = true;
      boolean removeFlag = true;
      if (addList.size()>0){
         // 批量新增
         addFlag = saveBatch(addList);
//         tbAttResBaseService.updateFinalState(addList.get(0).getResGuid(),addList.get(0).getCheckState());
      }
      if (updateList.size()>0){
         // 批量更新
         addFlag = updateBatchById(updateList);
//         tbAttResBaseService.updateFinalState(updateList.get(0).getResGuid(),updateList.get(0).getCheckState());
      }
      if (removeList.size()>0){
         // 批量删除
         removeFlag = removeBatchByIds(removeList);
      }
      if (addFlag && updateFlag && removeFlag){
         return true;
      }
      // 返回
      return false;
   }
}