浏览代码

大屏-低空不欠债完成情况

wangming 6 月之前
父节点
当前提交
0bc0d6dd76

+ 30 - 0
business-common/src/main/java/com/rongwei/bscommon/sys/dao/ZhcxLowaltitudeDebtfreeCheckDao.java

@@ -2,6 +2,10 @@ package com.rongwei.bscommon.sys.dao;
 
 import com.rongwei.bsentity.domain.ZhcxLowaltitudeDebtfreeCheckDo;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.rongwei.bsentity.vo.lowaltiude.LowaltitedeDebtfreddCheckVo;
+import org.apache.ibatis.annotations.Select;
+
+import java.util.List;
 
 /**
  * <p>
@@ -12,4 +16,30 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  * @since 2024-10-29
  */
 public interface ZhcxLowaltitudeDebtfreeCheckDao extends BaseMapper<ZhcxLowaltitudeDebtfreeCheckDo> {
+
+    @Select("SELECT " +
+            " c.*, " +
+            " m.PROJECTID, " +
+            " m.PROJECTCODE, " +
+            " m.HOISTINGPLANDATE, " +
+            " m.FINALASSEMBLEDATE, " +
+            " m.PROJECTENAME, " +
+            " m.PROJECTNAME, " +
+            " m.MACHINENOID, " +
+            " m.MACHINENO " +
+            "FROM " +
+            " ZHCX_LOWALTITUDE_DEBTFREE_CHECK c " +
+            "JOIN ZHCX_LOWALTITUDE_DEBTFREE_CHECK_MAIN m ON " +
+            " m.ID = c.MAINID " +
+            "WHERE " +
+            " EXISTS ( " +
+            " SELECT " +
+            "  * " +
+            " FROM " +
+            "  ZHCX_SHIP_OFFSHORE_DETAIL d " +
+            " WHERE " +
+            "  d.PROJECTID = m.PROJECTID " +
+            "  AND d.MACHINEID = m.MACHINENOID " +
+            "  AND d.DELETED = '0')")
+    List<LowaltitedeDebtfreddCheckVo> getStatisticalIndicators();
 }

+ 11 - 0
business-common/src/main/java/com/rongwei/bscommon/sys/dao/ZhcxProjectDeviceIndicatorDao.java

@@ -2,6 +2,8 @@ package com.rongwei.bscommon.sys.dao;
 
 import com.rongwei.bsentity.domain.ZhcxProjectDeviceIndicatorDo;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.rongwei.bsentity.dto.project.indicator.DelPhysicalParam;
+import org.apache.ibatis.annotations.Delete;
 
 /**
  * <p>
@@ -13,4 +15,13 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  */
 public interface ZhcxProjectDeviceIndicatorDao extends BaseMapper<ZhcxProjectDeviceIndicatorDo> {
 
+    @Delete("<script>" +
+            "delete from ZHCX_PROJECT_DEVICE_INDICATOR " +
+            "<where>" +
+            "<if test='prjId != null'>and PROJECTID = #{prjId}</if>" +
+            "<if test='machineId != null'>and MACHINEID = #{machineId}</if>" +
+            "<if test='type != null'>and TYPE = #{type}</if>" +
+            "</where>" +
+            "</script>")
+    void delPhysical(DelPhysicalParam param);
 }

+ 6 - 0
business-common/src/main/java/com/rongwei/bscommon/sys/service/ZhcxLowaltitudeDebtfreeCheckService.java

@@ -47,4 +47,10 @@ public interface ZhcxLowaltitudeDebtfreeCheckService extends IService<ZhcxLowalt
      * @param req
      */
     void updateCheck4Power(SaveCheckRequest req);
+
+    /**
+     * 添加统计指标
+     *
+     */
+    void addUpComplateIndicators();
 }

+ 7 - 0
business-common/src/main/java/com/rongwei/bscommon/sys/service/ZhcxProjectDeviceIndicatorService.java

@@ -2,6 +2,7 @@ package com.rongwei.bscommon.sys.service;
 
 import com.rongwei.bsentity.domain.ZhcxProjectDeviceIndicatorDo;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.rongwei.bsentity.dto.project.indicator.DelPhysicalParam;
 
 /**
  * <p>
@@ -13,4 +14,10 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface ZhcxProjectDeviceIndicatorService extends IService<ZhcxProjectDeviceIndicatorDo> {
 
+    /**
+     * 物理删除
+     *
+     * @param param
+     */
+    void delPhysical(DelPhysicalParam param);
 }

+ 133 - 0
business-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ZhcxLowaltitudeDebtfreeCheckServiceImpl.java

@@ -3,6 +3,8 @@ package com.rongwei.bscommon.sys.service.impl;
 import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.db.handler.HandleHelper;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -15,13 +17,18 @@ import com.rongwei.bsentity.dto.lowaltitude.AddHoistingPlanDateRequest;
 import com.rongwei.bsentity.dto.lowaltitude.DeleteCheckRequest;
 import com.rongwei.bsentity.dto.lowaltitude.SaveCheckDetailDto;
 import com.rongwei.bsentity.dto.lowaltitude.SaveCheckRequest;
+import com.rongwei.bsentity.dto.project.indicator.DelPhysicalParam;
+import com.rongwei.bsentity.vo.lowaltiude.LowaltitedeDebtfreddCheckVo;
 import com.rongwei.rwadmincommon.system.service.SysGeneralCRUDService;
 import com.rongwei.rwcommon.base.exception.CustomException;
+import com.rongwei.rwcommon.utils.SecurityUtil;
 import com.rongwei.rwcommon.vo.generalsql.GeneralUpdateVo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -61,6 +68,12 @@ public class ZhcxLowaltitudeDebtfreeCheckServiceImpl extends ServiceImpl<ZhcxLow
     @Autowired
     private SysGeneralCRUDService generalCRUDService;
 
+    @Autowired
+    private ZhcxLowaltitudeDebtfreeCheckDao dao;
+
+    @Autowired
+    private ZhcxProjectDeviceIndicatorService projectDeviceIndicatorService;
+
     /**
      * 添加吊装日期
      *
@@ -282,6 +295,126 @@ public class ZhcxLowaltitudeDebtfreeCheckServiceImpl extends ServiceImpl<ZhcxLow
         lowaltitudeDebtfreeCheckMainService.saveMain4Power(req, checkDo);
     }
 
+    /**
+     * 添加统计指标
+     *
+     */
+    @Override
+    public void addUpComplateIndicators() {
+
+        //删除低空数据
+        DelPhysicalParam param = DelPhysicalParam.builder()
+                .type("lowaltitude_complate")
+                .build();
+        projectDeviceIndicatorService.delPhysical(param);
+
+        final List<LowaltitedeDebtfreddCheckVo> debtfreddCheckVos = dao.getStatisticalIndicators();
+
+        if(ObjectUtil.isEmpty(debtfreddCheckVos)) {
+            return ;
+        }
+
+        /**
+         * 存放统计数据
+         * key:项目id_机号id
+         * value:{
+         *     numerator: 0,  //分子
+         *     denominator: 0 //分母
+         * }
+         */
+        Map<String, JSONObject> prjMachineMap = new HashMap<>();
+
+        //数据分组并统计
+        debtfreddCheckVos.stream().forEach(item -> {
+            StringBuilder keySb = new StringBuilder();
+            keySb.append(item.getProjectid()).append("_").append(item.getMachinenoid());
+
+            JSONObject valueObj = prjMachineMap.get(keySb.toString());
+            if(ObjectUtil.isNull(valueObj)) {
+                valueObj = new JSONObject();
+                valueObj.put("numerator", BigDecimal.ZERO);//分子
+                valueObj.put("denominator", BigDecimal.ZERO);//分母
+
+                valueObj.put("hoistingplandate", item.getHoistingplandate());
+                valueObj.put("finalassembledate", item.getFinalassembledate());
+                valueObj.put("projectid", item.getProjectid());
+                valueObj.put("projectcode", item.getProjectcode());
+                valueObj.put("projectename", item.getProjectename());
+                valueObj.put("projectname", item.getProjectname());
+                valueObj.put("machinenoid", item.getMachinenoid());
+                valueObj.put("machineno", item.getMachineno());
+            }
+
+            //获取完成情况
+            String completionstatus = getCompletionstatus(item);
+
+            final String[] split = completionstatus.split("//");
+            valueObj.put("numerator", valueObj.getBigDecimal("numerator").add(new BigDecimal(split[0])));
+            valueObj.put("denominator", valueObj.getBigDecimal("denominator").add(new BigDecimal(split[1])));
+
+            prjMachineMap.put(keySb.toString(), valueObj);
+        });
+
+        List<ZhcxProjectDeviceIndicatorDo> list = new ArrayList<>();
+        for(String key : prjMachineMap.keySet()) {
+            final JSONObject row = prjMachineMap.get(key);
+
+            ZhcxProjectDeviceIndicatorDo indicator = new ZhcxProjectDeviceIndicatorDo();
+            indicator.setId(SecurityUtil.getUUID());
+            indicator.setDate(row.getDate("finalassembledate"));
+            indicator.setDeleted("0");
+            indicator.setProjectid(row.getString("projectid"));
+            indicator.setProjectcode(row.getString("projectcode"));
+            indicator.setProjectname(row.getString("projectname"));
+            indicator.setProjectshortname(row.getString("projectename"));
+            indicator.setMachineid(row.getString("machinenoid"));
+            indicator.setMachineno(row.getString("machineno"));
+            indicator.setDisplayboard("红");
+            indicator.setIndicatorname("低空不欠债完成情况");
+            indicator.setType("lowaltitude_complate");
+            indicator.setSort(1);
+
+            indicator.setCompleted(row.getInteger("numerator"));
+            indicator.setTotal(row.getInteger("denominator"));
+
+            if(ObjectUtil.isNull(row.getInteger("denominator"))) { //分母为空,完成率为0
+                indicator.setCompletionrate(BigDecimal.ZERO);
+            } else {
+                BigDecimal completionRate = row.getBigDecimal("numerator")
+                        .divide(row.getBigDecimal("denominator"))
+                        .multiply(new BigDecimal("100"))
+                        .setScale(2, RoundingMode.DOWN);
+                indicator.setCompletionrate(completionRate);
+            }
+            list.add(indicator);
+        }
+
+        if(ObjectUtil.isEmpty(list)) {
+            return ;
+        }
+
+        projectDeviceIndicatorService.saveBatch(list);
+
+    }
+
+    /**
+     * 获取完成情况
+     *
+     * @param check
+     * @return
+     */
+    private String getCompletionstatus(ZhcxLowaltitudeDebtfreeCheckDo check) {
+        if(ObjectUtil.isNotEmpty(check.getPowercompletionstatus())) {
+            return check.getCompletionstatus();
+        }
+
+        if(ObjectUtil.isNotEmpty(check.getCompletionstatus())) {//总装完成情况
+            return check.getCompletionstatus();
+        }
+
+        return "0/0";
+    }
+
     /**
      * 更新检查表
      *

+ 14 - 0
business-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ZhcxProjectDeviceIndicatorServiceImpl.java

@@ -4,6 +4,8 @@ import com.rongwei.bsentity.domain.ZhcxProjectDeviceIndicatorDo;
 import com.rongwei.bscommon.sys.dao.ZhcxProjectDeviceIndicatorDao;
 import com.rongwei.bscommon.sys.service.ZhcxProjectDeviceIndicatorService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.rongwei.bsentity.dto.project.indicator.DelPhysicalParam;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 /**
@@ -17,4 +19,16 @@ import org.springframework.stereotype.Service;
 @Service
 public class ZhcxProjectDeviceIndicatorServiceImpl extends ServiceImpl<ZhcxProjectDeviceIndicatorDao, ZhcxProjectDeviceIndicatorDo> implements ZhcxProjectDeviceIndicatorService {
 
+    @Autowired
+    private ZhcxProjectDeviceIndicatorDao dao;
+
+    /**
+     * 物理删除
+     *
+     * @param param
+     */
+    @Override
+    public void delPhysical(DelPhysicalParam param) {
+        dao.delPhysical(param);
+    }
 }

+ 17 - 0
business-entity/src/main/java/com/rongwei/bsentity/dto/project/indicator/DelPhysicalParam.java

@@ -0,0 +1,17 @@
+package com.rongwei.bsentity.dto.project.indicator;
+
+import lombok.*;
+
+@Setter
+@Getter
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class DelPhysicalParam {
+
+    private String prjId;
+
+    private String machineId;
+
+    private String type;
+}

+ 46 - 0
business-entity/src/main/java/com/rongwei/bsentity/vo/lowaltiude/LowaltitedeDebtfreddCheckVo.java

@@ -0,0 +1,46 @@
+package com.rongwei.bsentity.vo.lowaltiude;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.rongwei.bsentity.domain.ZhcxLowaltitudeDebtfreeCheckDo;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class LowaltitedeDebtfreddCheckVo extends ZhcxLowaltitudeDebtfreeCheckDo {
+
+    /**
+     * 项目id
+     */
+    private String projectid;
+
+    /**
+     * 项目工号
+     */
+    private String projectcode;
+    /**
+     * 项目简称
+     */
+    private String projectename;
+    /**
+     * 项目名称
+     */
+    private String projectname;
+    /**
+     * 机号id
+     */
+    private String machinenoid;
+    /**
+     * 机号
+     */
+    private String machineno;
+
+    /**
+     * 计划吊装日期
+     */
+    private Date hoistingplandate;
+    /**
+     * 总装日期
+     */
+    private Date finalassembledate;
+}

+ 11 - 1
business-server/src/main/java/com/rongwei/bsserver/controller/DebtfreeController.java

@@ -85,6 +85,16 @@ public class DebtfreeController {
         return R.ok();
     }
 
-
+    /**
+     * 添加大屏低空完成情况
+     *
+     * @return
+     */
+    @PostMapping("/addUpComplateIndicators")
+    @ResponseBody
+    public R addUpComplateIndicators() {
+        zhcxLowaltitudeDebtfreeCheckService.addUpComplateIndicators();
+        return R.ok();
+    }
 
 }