瀏覽代碼

更改数据

高雄 1 年之前
父節點
當前提交
47ee034692

+ 9 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/board/mapper/CockpitMapper.java

@@ -23,6 +23,15 @@ public interface CockpitMapper extends BaseMapper {
 
     List<WebGA38InfoDto> orgGA38(@Param("orgPath") String orgPath, @Param("date") Date date);
 
+    /**
+     * 新版统计驾驶舱安防设施建设达标率
+     * @param orgPath
+     * @param date
+     * @param type
+     * @return
+     */
+    List<OrgGA38StatisticVo> selectOrgGA38(@Param("orgPath") String orgPath, @Param("date") Date date,@Param("type") int type);
+
     OrgInfoVo orgInfo(@Param("orgPath") String orgPath);
 
     OrgSecurityInfoVo orgSecurityInfo(@Param("orgPath") String orgPath);

+ 55 - 25
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/board/service/impl/CockpitServiceImpl.java

@@ -156,38 +156,69 @@ public class CockpitServiceImpl implements CockpitService {
     public List<OrgGA38StatisticVo> orgGA38(TaskStatisticDto dto) {
         Date date = getStartDate(dto.getPeriod());
         SysOrg org = getOrgThrowIfNull(dto.getOrgId());
-        List<WebGA38InfoDto> data = cockpitMapper.orgGA38(org.getPath(), date);
-         //GA38 只统计营业网点 OrgTypeEnum.LIHANG_ZIZHU_YINGHANG.getCode(),
-        List<OrgGA38StatisticVo> r = getGA38Children(org, Arrays.asList( OrgTypeEnum.YINGYE_WANGDIAN.getCode()));
-        for (WebGA38InfoDto orgVo : data) {
-            for (OrgGA38StatisticVo statisticVo : r) {
-                if (orgVo.getPath().startsWith(statisticVo.getOrgPath())) {
-                    statisticVo.setTotal(1 + statisticVo.getTotal());
-                    statisticVo.setGa382021(orgVo.getGa382021() + statisticVo.getGa382021());
-                    statisticVo.setGa382015(orgVo.getGa382015() + statisticVo.getGa382015());
-                    if (orgVo.getGa382021() > 0 || orgVo.getGa382015() > 0) {
-                        statisticVo.setReachCount(1 + statisticVo.getReachCount());
-                    }
+        List<OrgGA38StatisticVo> orgGA38StatisticVos = new ArrayList<>();
+
+        /**
+         * 业务逻辑如下:
+         * 1、只统计营业网点的GA38达标情况
+         * 2、省联社、地区行社查看汇总数据,直接子集的汇总数据
+         * 3、行社查看所有网点的数据,不能走直接子集的汇总数据,只能统计每个网点的数据。
+         */
+        if(OrgTypeEnum.SHEGN_LIAN_SHE.getCode().equals(org.getType())){
+            //统计省联社,获取每个地区行社的数据
+            orgGA38StatisticVos = cockpitMapper.selectOrgGA38(org.getPath(), date, 1);
+            return orgGA38StatisticVos;
+
+
+         /*   //如果是省联社和地区行社查询时
+            List<WebGA38InfoDto> data = cockpitMapper.orgGA38(org.getPath(), date);
+            //GA38 只统计营业网点 OrgTypeEnum.LIHANG_ZIZHU_YINGHANG.getCode(),
+            List<OrgGA38StatisticVo> r = getGA38Children(org, Arrays.asList( OrgTypeEnum.YINGYE_WANGDIAN.getCode()));
+            for (WebGA38InfoDto orgVo : data) {
+                for (OrgGA38StatisticVo statisticVo : r) {
+                    if (orgVo.getPath().startsWith(statisticVo.getOrgPath())) {
+                        statisticVo.setTotal(1 + statisticVo.getTotal());
+                        statisticVo.setGa382021(orgVo.getGa382021() + statisticVo.getGa382021());
+                        statisticVo.setGa382015(orgVo.getGa382015() + statisticVo.getGa382015());
+                        if (orgVo.getGa382021() > 0 || orgVo.getGa382015() > 0) {
+                            statisticVo.setReachCount(1 + statisticVo.getReachCount());
+                        }
 //                    statisticVo.setReachCount(orgVo.getReachCount() + statisticVo.getReachCount());
+                    }
                 }
             }
+
+            r.forEach(i -> {
+                i.setReachRate(NumberUtils.computeRate(i.getTotal(), i.getReachCount()));
+            });
+
+            r.sort(new Comparator<OrgGA38StatisticVo>() {
+                @Override
+                public int compare(OrgGA38StatisticVo o1, OrgGA38StatisticVo o2) {
+                    return NumberUtil.compare(o2.getReachRate(), o1.getReachRate());
+                }
+            });
+
+            r.sort(Comparator.comparing(OrgGA38StatisticVo::getReachRate));
+            Collections.reverse(r);
+
+            return r;*/
         }
 
-        r.forEach(i -> {
-            i.setReachRate(NumberUtils.computeRate(i.getTotal(), i.getReachCount()));
-        });
+        if(OrgTypeEnum.DIQU_HANG_SHE.getCode().equals(org.getType()) || "地区行社".equals(org.getName())){
+            orgGA38StatisticVos = cockpitMapper.selectOrgGA38(org.getPath(), date, 2);
+            return orgGA38StatisticVos;
+        }
 
-        r.sort(new Comparator<OrgGA38StatisticVo>() {
-            @Override
-            public int compare(OrgGA38StatisticVo o1, OrgGA38StatisticVo o2) {
-                return NumberUtil.compare(o2.getReachRate(), o1.getReachRate());
-            }
-        });
+        if(OrgTypeEnum.HANG_SHE.getCode().equals(org.getType())){
+            //如果统计的具体行社,则要先查出所有网点
+            orgGA38StatisticVos = cockpitMapper.selectOrgGA38(org.getPath(), date, 3);
+            return orgGA38StatisticVos;
+        }
+
+        return orgGA38StatisticVos;
 
-        r.sort(Comparator.comparing(OrgGA38StatisticVo::getReachRate));
-        Collections.reverse(r);
 
-        return r;
     }
 
     /**
@@ -399,7 +430,6 @@ public class CockpitServiceImpl implements CockpitService {
         if (ObjectUtil.isNull(org)) {
             throw new ServiceException("机构不存在");
         }
-
         return org;
     }
 //

+ 57 - 0
soc-modules/soc-modules-core/src/main/resources/mapper/board/CockpitMapper.xml

@@ -164,6 +164,7 @@
 --           and (o.type = 4 OR o.type = 5)
           and o.type = 4
           and o.path like concat(#{orgPath}, '%')
+
     </select>
     <select id="orgInfo" resultType="com.xunmei.core.board.vo.web.OrgInfoVo">
         select sum(if(o.type = 3, 1, 0))                                     as hangsheCount,
@@ -262,4 +263,60 @@
                  INNER JOIN sys_org_map m on o.`code` = m.org_code
         WHERE o.path like CONCAT((SELECT path from sys_org WHERE id = #{orgId}), '%')
     </select>
+    <select id="selectOrgGA38" resultType="com.xunmei.core.board.vo.web.OrgGA38StatisticVo">
+        select
+            t.org_name,
+            t.total,
+            t.ga382021,
+            t.ga382015,
+            t.ga38 as reach_count,
+            FORMAT(t.ga38/t.total,4) as reach_rate
+        from (
+                 SELECT
+                     m.org_name,
+                     m.tj_sort,
+                     count(*) as total,
+                     sum(if(m.ga382021 is null or m.ga382021 = 0, 0, 1))  as ga382021,
+                     sum(if(m.ga38 is null or m.ga38 = 0, 0, 1)) as ga38,
+                     sum(if(m.ga382021current is null or m.ga382021current = 0, 0, 1))   as ga382021current,
+                     sum(if(m.ga382015 is null or m.ga382015 = 0, 0, 1))                 as ga382015,
+                     sum(if(m.ga382015current is null or m.ga382015current = 0, 0, 1))   as ga382015current
+                 from
+                     (select *FROM
+                         (
+                         <if test="type == 3">
+                             SELECT id ,if(breviary is null,short_name,breviary) as org_name,path,sort as tj_sort FROM sys_org WHERE type = 4 AND deleted = 0 and path LIKE CONCAT(#{orgPath},'%') ) a
+                         </if>
+                         <if test="type == 1">
+                             SELECT id ,path FROM sys_org WHERE type = 4 AND deleted = 0 and path LIKE CONCAT(#{orgPath},'%') ) a
+                             LEFT JOIN (SELECT path as dq_path,breviary as org_name,sort as tj_sort FROM sys_org where `name` LIKE CONCAT('%','地区行社') and deleted = 0) c on a.path like CONCAT(c.dq_path,'%')
+                         </if>
+                         <if test="type == 2">
+                             SELECT id ,path FROM sys_org WHERE type = 4 AND deleted = 0 and path LIKE CONCAT(#{orgPath},'%') ) a
+                             LEFT JOIN (SELECT path as dq_path,if(breviary is null,short_name,breviary) as org_name,sort as tj_sort FROM sys_org where type = 3 and deleted = 0) c on a.path like CONCAT(c.dq_path,'%')
+                         </if>
+
+                             LEFT JOIN (
+                             SELECT
+                                 org_id,
+                                 sum( standard = 1 ) AS ga382021,
+                                 sum(
+                                         IF
+                                             ( standard = 1 AND   date_of_compliance >= '2022-01-01', 1, 0 )) AS ga382021current,
+                                 sum( standard = 2 ) AS ga382015,
+                                 sum(standard =1 or standard = 2) as ga38,
+                                 sum(
+                                         IF
+                                             ( standard = 2 AND date_of_compliance >= '2022-01-01', 1, 0 )) AS ga382015current
+                             FROM
+                                 sys_org_physical_defense_construction
+                             WHERE
+                                 type = 1
+                               and standard != 3
+                             GROUP BY
+                                 org_id
+                         ) b ON a.id = b.org_id
+                     ) m GROUP BY m.org_name,m.tj_sort
+             ) t ORDER BY t.tj_sort;
+    </select>
 </mapper>

+ 1 - 1
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/mapper/SysOrgMapper.java

@@ -119,7 +119,7 @@ public interface SysOrgMapper extends BaseMapper<SysOrg> {
 
     Map getSelfEquipment(String orgPath);
 
-    Map getCenterConstruction(Long orgId);
+    Map getCenterConstruction(String orgPath);
 
     Map getCamera(String orgPath);
 

+ 142 - 73
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysOrgServiceImpl.java

@@ -22,7 +22,9 @@ import com.xunmei.common.core.util.BeanHelper;
 import com.xunmei.common.core.utils.DateUtils;
 import com.xunmei.common.core.web.page.TableDataInfo;
 import com.xunmei.common.redis.utils.RedisUtils;
+import com.xunmei.common.security.utils.DictUtils;
 import com.xunmei.common.security.utils.SecurityUtils;
+import com.xunmei.system.api.domain.SysDictData;
 import com.xunmei.system.api.domain.SysOrg;
 import com.xunmei.system.api.vo.FindOrgTypes;
 import com.xunmei.system.api.vo.SysOrgVO;
@@ -33,6 +35,7 @@ import com.xunmei.system.util.ConstructionDetailExport;
 import com.xunmei.system.util.OrgPhysicalDefenseConstructionExport;
 import com.xunmei.system.util.SecurityWorkExport;
 import io.netty.util.internal.StringUtil;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.Async;
@@ -119,41 +122,57 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
 
     @Override
     public List<OrgPhysicalDefenseConstructionExport> excel(SysOrg dept) {
-        if (null == dept.getId()) {
-            dept.setId(SecurityUtils.getLoginUser().getOrgId());
-        }
-        SysOrg sysOrg = baseMapper.selectSysOrgById(dept.getId());
-        List<SysOrg> sysOrgs;
-        if (sysOrg.getType() < 3 || sysOrg.getShortName().endsWith("地区行社") || sysOrg.getType() == 9) {
-            sysOrgs = this.selectSysOrgByPathAndType(sysOrg.getPath(), 3);
-        } else if (sysOrg.getType() == 3) {
-            sysOrgs = this.selectSysOrgByPathAndType(sysOrg.getPath(), 4);
-        } else {
-            return Collections.emptyList();
+
+        /**
+         * 查询机构锁定,如果前端未传递查询机构id,则设置机构id为当前登录人机构id
+         */
+        Long orgId = dept.getId();
+        if (null == orgId) {
+            orgId = SecurityUtils.getLoginUser().getOrgId();
         }
-        List<OrgPhysicalDefenseConstructionExport> orgPhysicalDefenseConstructionExports = new ArrayList<>();
-        sysOrgs.forEach(s -> {
-            OrgPhysicalDefenseConstructionExport orgPhysicalDefenseConstructionExport = new OrgPhysicalDefenseConstructionExport();
-            SysOrg sysOrg1;
-            if (sysOrg.getType() < 3 || sysOrg.getShortName().endsWith("地区行社") || sysOrg.getType() == 9) {
-                sysOrg1 = sysOrgMapper.selectSysOrgById(s.getParentId());
-            } else {
-                sysOrg1 = sysOrgMapper.selectSysOrgById(sysOrgMapper.selectSysOrgById(s.getParentId()).getParentId());
-                if (-1 == sysOrg1.getShortName().indexOf("地区行社")) {
-                    sysOrg1 = sysOrgMapper.selectSysOrgById(sysOrgMapper.selectSysOrgById(sysOrgMapper.selectSysOrgById(s.getParentId()).getParentId()).getParentId());
-                }
-            }
-            OrgPhysicalDefenseConstructionExport orgPhysicalDefenseConstructionExport1 = baseMapper.complianceStatus(s.getPath());
-            BeanUtils.copyProperties(orgPhysicalDefenseConstructionExport1, orgPhysicalDefenseConstructionExport);
-            orgPhysicalDefenseConstructionExport.setCity(sysOrg1.getShortName().indexOf("地区行社") == -1 ? sysOrg1.getShortName().substring(0, 2) : sysOrg1.getShortName().split("地区行社")[0]);
-            Integer integer = baseMapper.selectNetworkNumberByPath(s.getPath());
+        SysOrg sysOrg = baseMapper.selectSysOrgById(orgId);
+
+
+        /**
+         * 根据查询机构确定要查的范围:
+         * 1、如果是省联社,办事处,地区行社,需要导出的是行社数据。
+         * 2、如果是行社,需要导出的是营业网点数据。
+         */
+        List<SysOrg> sysOrgs = new ArrayList<>();
+        if (sysOrg.getType() < OrgTypeEnum.HANG_SHE.getCode()
+                || sysOrg.getShortName().endsWith("地区行社")
+                || sysOrg.getType() == OrgTypeEnum.DIQU_HANG_SHE.getCode()) {
+            //判断机构为 省联社,地区行社,办事处时,查询区域内的 行社数据
+            sysOrgs = this.selectSysOrgByPathAndType(sysOrg.getPath(), OrgTypeEnum.HANG_SHE.getCode());
+        } else if (sysOrg.getType() == OrgTypeEnum.HANG_SHE.getCode()) {
+            //判断查询机构为行社时 查询行社内的营业网点
+            sysOrgs = this.selectSysOrgByPathAndType(sysOrg.getPath(), OrgTypeEnum.YINGYE_WANGDIAN.getCode());
+        }
+
+        /**
+         *根据查询机构机构,统计查询数据
+         */
+        List<OrgPhysicalDefenseConstructionExport> excelData = getExcelData(sysOrgs);
+        return excelData;
+    }
+
+    /**
+     * 组装数据
+     * @param orgs
+     * @return
+     */
+    private List<OrgPhysicalDefenseConstructionExport> getExcelData(List<SysOrg> orgs){
+        List<OrgPhysicalDefenseConstructionExport> data = new ArrayList<>();
+        OrgPhysicalDefenseConstructionExport export = null;
+        for (SysOrg s : orgs) {
+            export = baseMapper.complianceStatus(s.getPath());
+            Integer orgSize = baseMapper.selectNetworkNumberByPath(s.getPath());
             Double avg = 0d;
-            if (integer != 0 || orgPhysicalDefenseConstructionExport1.getReachNumber() != 0) {
-                avg = (double) orgPhysicalDefenseConstructionExport1.getReachNumber() / integer * 100;
+            if (orgSize != 0 || export.getReachNumber() != 0) {
+                avg = (double) export.getReachNumber() / orgSize * 100;
             }
-            orgPhysicalDefenseConstructionExport.setReachRate(String.valueOf(Double.valueOf(String.format("%.2f", avg))) + "%");
-            orgPhysicalDefenseConstructionExport.setNetworkNumber(integer);
-            orgPhysicalDefenseConstructionExport.setOrgName(s.getShortName());
+            export.setReachRate(Double.valueOf(String.format("%.2f", avg)) + "%");
+            export.setNetworkNumber(orgSize);
 
             //年度完成
             LocalDate currentDate = LocalDate.now();
@@ -163,41 +182,72 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
             Integer s2 = baseMapper.oldRectificationStatus(s.getPath(), year);
             //未完成改造
             Integer s3 = baseMapper.noRectificationStatus(s.getPath(), year);
-            orgPhysicalDefenseConstructionExport.setNewYearReachNumber(s1);
-            orgPhysicalDefenseConstructionExport.setNewYeaTransformOldReachNumber(s2);
-            orgPhysicalDefenseConstructionExport.setNewYeaTransformInconformityNumber(s3);
-            orgPhysicalDefenseConstructionExports.add(orgPhysicalDefenseConstructionExport);
-        });
-        return orgPhysicalDefenseConstructionExports;
+            export.setNewYearReachNumber(s1);
+            export.setNewYeaTransformOldReachNumber(s2);
+            export.setNewYeaTransformInconformityNumber(s3);
+
+            data.add(export);
+        }
+
+        return data;
+    }
+
+    private List<SysOrg> getOrgs(SysOrg org){
+        List<SysOrg> sysOrgs = new ArrayList<>();
+        if (org.getType() < OrgTypeEnum.HANG_SHE.getCode()
+                || org.getShortName().endsWith("地区行社")
+                || org.getType() == OrgTypeEnum.DIQU_HANG_SHE.getCode()) {
+            sysOrgs = this.selectSysOrgByPathAndType(org.getPath(), OrgTypeEnum.HANG_SHE.getCode());
+        } else if (org.getType() == OrgTypeEnum.HANG_SHE.getCode()) {
+            sysOrgs = this.selectSysOrgByPathAndType(org.getPath(), OrgTypeEnum.YINGYE_WANGDIAN.getCode());
+        }
+        return sysOrgs;
+    }
+
+    private List<SecurityWorkExport> getExportData(List<SysOrg> sysOrgs){
+        List<SecurityWorkExport> exports = new ArrayList<>();
+        SecurityWorkExport export = null;
+        for (SysOrg sysOrg : sysOrgs) {
+            export = new SecurityWorkExport();
+            export.setXh(sysOrg.getAffiliatedArea());
+            export.setCity(sysOrg.getAffiliatedBank());
+            export.setOrgName(sysOrg.getShortName());
+
+            //营业网点数量
+            Integer orgSize = baseMapper.selectNetworkNumberByPath(sysOrg.getPath());
+            export.setNetworkNumber(orgSize);
+
+            //营业网点达标
+            Integer reachNumber = baseMapper.getReachNumber(sysOrg.getPath());
+            export.setReachNumber(reachNumber);
+
+            //自有产权
+            Integer ownership = baseMapper.getOwnership(sysOrg.getPath());
+            export.setOwnPropertyNumber(ownership);
+        }
+        return exports;
     }
 
     @Override
     public List<SecurityWorkExport> securityWorkExport(SysOrg sysOrg) {
+
+        Long orgId = sysOrg.getId();
         if (null == sysOrg.getId()) {
-            sysOrg.setId(SecurityUtils.getLoginUser().getOrgId());
-        }
-        SysOrg sysOrg2 = baseMapper.selectSysOrgById(sysOrg.getId());
-        List<SysOrg> sysOrgs;
-        if (sysOrg2.getType() < 3 || sysOrg2.getShortName().endsWith("地区行社") || sysOrg2.getType() == 9) {
-            sysOrgs = this.selectSysOrgByPathAndType(sysOrg2.getPath(), 3);
-        } else if (sysOrg2.getType() == 3) {
-            sysOrgs = this.selectSysOrgByPathAndType(sysOrg2.getPath(), 4);
-        } else {
-            return Collections.emptyList();
+            orgId = SecurityUtils.getLoginUser().getOrgId();
         }
+        SysOrg org = baseMapper.selectSysOrgById(orgId);
+        List<SysOrg> sysOrgs = getOrgs(org);
         List<SecurityWorkExport> securityWorkExportList = new ArrayList<>();
+        List<SysDictData> brands = DictUtils.getDictCache("org_platform_brand");
+        Map<String,String> brandMap = new HashMap<>();
+        for (SysDictData brand : brands) {
+            brandMap.put(brand.getDictValue(),brand.getDictLabel());
+        }
+
+
         sysOrgs.forEach(s -> {
             SecurityWorkExport securityWorkExport = new SecurityWorkExport();
-            SysOrg sysOrg1;
-            if (sysOrg2.getType() < 3 || sysOrg2.getShortName().endsWith("地区行社") || sysOrg2.getType() == 9) {
-                sysOrg1 = baseMapper.selectSysOrgById(s.getParentId());
-            } else {
-                sysOrg1 = baseMapper.selectSysOrgById(baseMapper.selectSysOrgById(s.getParentId()).getParentId());
-                if (-1 == sysOrg1.getShortName().indexOf("地区行社")) {
-                    sysOrg1 = baseMapper.selectSysOrgById(baseMapper.selectSysOrgById(baseMapper.selectSysOrgById(s.getParentId()).getParentId()).getParentId());
-                }
-            }
-            securityWorkExport.setCity(sysOrg1.getShortName().indexOf("地区行社") == -1 ? sysOrg1.getShortName().substring(0, 2) : sysOrg1.getShortName().split("地区行社")[0]);
+
             securityWorkExport.setOrgName(s.getShortName());
             Integer integer = baseMapper.selectNetworkNumberByPath(s.getPath());
             securityWorkExport.setNetworkNumber(integer);
@@ -208,8 +258,12 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
             Integer ownership = baseMapper.getOwnership(s.getPath());
             securityWorkExport.setOwnPropertyNumber(ownership);
             //区域外网点
+            /**
+             * 区域内和区域外是反着的,0是区域内,1是区域外
+             */
             Integer outside = baseMapper.getOutside(s.getPath());
             securityWorkExport.setAreaOutsideNumber(outside);
+
             //业务库
             Map library = baseMapper.getLibrary(s.getPath());
             securityWorkExport.setBusinessLibraryTotal(Integer.valueOf(library.get("total").toString()));
@@ -217,17 +271,21 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
             securityWorkExport.setTwoLibrary(Integer.valueOf(library.get("two").toString()));
             securityWorkExport.setThreeLibrary(Integer.valueOf(library.get("three").toString()));
             securityWorkExport.setFourLibrary(Integer.valueOf(library.get("four").toString()));
+
             //保管箱库
             Integer collectLibrary = baseMapper.getCollectLibrary(s.getPath());
             securityWorkExport.setCollectLibrary(collectLibrary);
+
             //在行式
             Map onLine = baseMapper.getOnLine(s.getPath());
             securityWorkExport.setOnLineTotal(Integer.valueOf(onLine.get("onLineTotal").toString()));
             securityWorkExport.setOnLineReachNumber(Integer.valueOf(onLine.get("onLineReachNumber").toString()));
+
             //离行式
             Map departure = baseMapper.getDeparture(s.getPath());
             securityWorkExport.setDepartureTotal(Integer.valueOf(departure.get("departureTotal").toString()));
             securityWorkExport.setDepartureReachNumber(Integer.valueOf(departure.get("departureReachNumber").toString()));
+
             //自助设备
             Map selfEquipment = baseMapper.getSelfEquipment(s.getPath());
             securityWorkExport.setSelfServiceDevicesTotal(Integer.valueOf(selfEquipment.get("selfServiceDevicesTotal").toString()));
@@ -235,53 +293,72 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
             securityWorkExport.setOnLineThroughWalls(Integer.valueOf(selfEquipment.get("onLineThroughWalls").toString()));
             securityWorkExport.setDepartureLobbyImplement(Integer.valueOf(selfEquipment.get("departureLobbyImplement").toString()));
             securityWorkExport.setDepartureThroughWalls(Integer.valueOf(selfEquipment.get("departureThroughWalls").toString()));
+
+
             //中心建设时间
-            Map centerConstruction = baseMapper.getCenterConstruction(s.getId());
+            //获取当前机构辖区内的监控中心数据
+
+            Map centerConstruction = baseMapper.getCenterConstruction(s.getPath());
             if (null != centerConstruction) {
                 securityWorkExport.setCenterConstructionTime(centerConstruction.get("centerConstructionTime").toString());
                 securityWorkExport.setTransformTime(centerConstruction.get("transformTime").toString());
-                securityWorkExport.setBrand(centerConstruction.get("brand").toString());
+                securityWorkExport.setBrand(brandMap.get(centerConstruction.get("brand").toString()));
             }
 
             //高清摄像头
             Map camera = baseMapper.getCamera(s.getPath());
             securityWorkExport.setCameraTotal(Integer.valueOf(camera.get("cameraTotal").toString()));
             securityWorkExport.setDefinitionNumber(Integer.valueOf(camera.get("definitionNumber").toString()));
+
+
             //是否实现远程控制
             Map remote = baseMapper.getRemote(s.getPath());
             securityWorkExport.setCashAddingRoom(Integer.valueOf(remote.get("cashAddingRoom").toString()));
             securityWorkExport.setRemoteCount(Integer.valueOf(remote.get("remoteCount").toString()));
+
+
             //夜间值守
             Map duty = baseMapper.getDuty(s.getPath());
             securityWorkExport.setLocalDutyNetworkNumber(Integer.valueOf(duty.get("localDutyNetworkNumber").toString()));
             securityWorkExport.setRemoteDutyNetworkNumber(Integer.valueOf(duty.get("remoteDutyNetworkNumber").toString()));
+
+
+
             //独立机构
             Integer alone = baseMapper.getAlone(s.getPath());
             securityWorkExport.setIsAlone(alone);
+
             //部门负责人
             Integer y = baseMapper.getManager(s.getPath(), "Y");
             Integer n = baseMapper.getManager(s.getPath(), "N");
             securityWorkExport.setManagerFullTime(y);
             securityWorkExport.setManagerPartTime(n);
+
+
             //部门负责人持证
             Integer managerCertificate = baseMapper.getManagerCertificate(s.getPath());
             securityWorkExport.setManagerCertificate(managerCertificate);
+
             //是否设主任
             String isMonitor = baseMapper.getIsMonitor(s.getPath(), "2");
             String isMonitor1 = baseMapper.getIsMonitor(s.getPath(), "5");
             securityWorkExport.setIsLeader(isMonitor);
             securityWorkExport.setIsTechnology(isMonitor1);
+
             //监控中心人员
             Map monitorPeople = baseMapper.getMonitorPeople(s.getPath());
             securityWorkExport.setMonitorTotal(Integer.valueOf(monitorPeople.get("monitorTotal").toString()));
             securityWorkExport.setInnerPeople(Integer.valueOf(monitorPeople.get("innerPeople").toString()));
             securityWorkExport.setOutPeople(Integer.valueOf(monitorPeople.get("outPeople").toString()));
+
             //安保人数
             Map certificate = baseMapper.getCertificate(s.getPath());
             securityWorkExport.setCertificatePeopleNumber(Integer.valueOf(certificate.get("certificatePeopleNumber").toString()));
             securityWorkExport.setCertificateTotal(Integer.valueOf(certificate.get("certificateTotal").toString()));
             securityWorkExport.setInternalCertificateNumber(Integer.valueOf(certificate.get("internalCertificateNumber").toString()));
             securityWorkExport.setOutsourceCertificateNumber(Integer.valueOf(certificate.get("outsourceCertificateNumber").toString()));
+
+
             //配有保安网点数
             Integer haveSecurityNetworkNumber = baseMapper.getHaveSecurityNetworkNumber(s.getPath());
             securityWorkExport.setHaveSecurityNetworkNumber(haveSecurityNetworkNumber);
@@ -342,10 +419,13 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
 
     @Override
     public List<ConstructionDetailExport> selectConstructionDetail(SysOrg dept) {
-        if (null == dept.getPath()) {
+        String path = dept.getPath();
+        if (StringUtils.isEmpty(path)) {
             dept.setPath(baseMapper.selectSysOrgById(SecurityUtils.getLoginUser().getOrgId()).getPath());
         }
+
         List<ConstructionDetailExport> constructionDetailExports = baseMapper.selectConstructionDetail(dept.getPath());
+
         //hang
         constructionDetailExports.forEach(c -> {
             SysOrg sysOrg = baseMapper.selectSysOrgById(c.getOrgId());
@@ -354,18 +434,7 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
             SysOrg sysOrg1 = baseMapper.selectSysOrgById(sysOrg.getParentId());
             c.setOrgName(sysOrg1.getShortName());
             SysOrg sysOrg2;
-//            if (null!=sysOrg1.getType()){
-//                if (sysOrg1.getType() < 3 || sysOrg1.getShortName().endsWith("地区行社") || sysOrg1.getType() == 9) {
-//                    sysOrg2 = sysOrgMapper.selectSysOrgById(sysOrg1.getParentId());
-//                } else {
-//                    sysOrg2 = sysOrgMapper.selectSysOrgById(sysOrgMapper.selectSysOrgById(sysOrg1.getParentId()).getParentId());
-//                    if (-1 == sysOrg1.getShortName().indexOf("地区行社")) {
-//                        sysOrg2 = sysOrgMapper.selectSysOrgById(sysOrgMapper.selectSysOrgById(sysOrgMapper.selectSysOrgById(sysOrg1.getParentId()).getParentId()).getParentId());
-//                    }
-//                }
-//            }else {
             sysOrg2 = baseMapper.selectSysOrgById(sysOrg1.getParentId());
-            // }
             c.setCity(sysOrg2.getShortName().indexOf("地区行社") == -1 ? sysOrg2.getShortName().substring(0, 2) : sysOrg2.getShortName().split("地区行社")[0]);
         });
         return constructionDetailExports;
@@ -523,7 +592,7 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
         wrapper.likeRight(SysOrg::getPath, orgPath);
         wrapper.eq(SysOrg::getType, orgType);
         wrapper.eq(SysOrg::getDeleted, 0);
-        wrapper.eq(SysOrg::getIsLock,0);
+        wrapper.eq(SysOrg::getIsLock, 0);
         return sysOrgMapper.selectList(wrapper);
     }
 

+ 1 - 1
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/util/OrgPhysicalDefenseConstructionExport.java

@@ -13,7 +13,7 @@ import lombok.Data;
  * @date : 2023/11/27
  */
 @Data
-@ColumnWidth(15) //列宽,最大值为255
+@ColumnWidth(25) //列宽,最大值为255
 @HeadRowHeight(16) //表头行高
 @ContentRowHeight(16) //数据行高
 public class OrgPhysicalDefenseConstructionExport {

+ 119 - 30
soc-modules/soc-modules-system/src/main/resources/mapper/system/SysOrgMapper.xml

@@ -730,13 +730,16 @@ and
                             '%'
                         ),
                     '0%'
-                ) AS reachRate
+                ) AS reachRate,
+            b.affiliated_area  as xh,
+            b.affiliated_bank as city
         FROM
             sys_org_physical_defense_construction a
                 INNER JOIN sys_org b ON a.org_id = b.id AND b.deleted=0 AND b.is_lock=0
         WHERE
-            b.type=4 AND
-            b.path LIKE concat(#{orgPath}, '%')
+            b.type=4
+          AND b.deleted = 0
+          AND b.path LIKE concat(#{orgPath}, '%')
     </select>
 
     <select id="rectificationStatus" resultType="java.lang.Integer">
@@ -820,7 +823,9 @@ and
             sys_org_physical_defense_construction a
                 INNER JOIN sys_org c ON c.id=a.org_id
                 LEFT JOIN sys_org_extend b ON a.org_id = b.org_id
-        WHERE c.type=4 and c.path like concat(#{orgPath}, '%')
+        WHERE c.type=4
+          and c.deleted = 0
+          and c.path like concat(#{orgPath}, '%')
         GROUP BY
             a.org_id
     </select>
@@ -830,7 +835,7 @@ and
         FROM
             sys_org_physical_defense_construction a
                 LEFT JOIN sys_org b ON a.org_id = b.id
-        WHERE b.type=4 and b.path LIKE concat(#{orgPath}, '%')
+        WHERE b.type=4 and b.deleted = 0 and b.path LIKE concat(#{orgPath}, '%')
     </select>
     <select id="getOwnership" resultType="java.lang.Integer">
         SELECT
@@ -838,11 +843,11 @@ and
         FROM
             sys_org_extend a
                 LEFT JOIN sys_org b ON a.org_id = b.id
-        WHERE b.type=4 and b.path LIKE concat(#{orgPath}, '%')
+        WHERE b.type=4 and b.deleted = 0 and b.path LIKE concat(#{orgPath}, '%')
     </select>
     <select id="getOutside" resultType="java.lang.Integer">
         SELECT
-            IFNULL( SUM( IF ( a.outside_area = 1, 1, 0 )), 0 )
+            IFNULL( SUM( IF ( a.outside_area = 0, 1, 0 )), 0 )
         FROM
             sys_org_extend a
                 LEFT JOIN sys_org b ON a.org_id = b.id
@@ -874,7 +879,7 @@ and
               b.path LIKE concat(#{orgPath}, '%')
     </select>
     <select id="getOnLine" resultType="java.util.Map">
-        SELECT
+      /*  SELECT
             IFNULL( SUM( IF ( a.type = 3, 1, 0 )), 0 ) AS onLineTotal,
             IFNULL( SUM( IF ( a.type = 3 AND a.standard = 1, 1, 0 )), 0 ) AS onLineReachNumber
         FROM
@@ -882,16 +887,57 @@ and
                 LEFT JOIN sys_org b ON a.org_id = b.id
         WHERE
             b.path LIKE concat(#{orgPath}, '%')
+*/
+        SELECT
+            (
+                SELECT
+                    IFNULL( SUM( IF ( b.self_service_bank = 1, 1, 0 )), 0 ) AS onLineTotal
+                FROM
+                    sys_org a
+                        LEFT JOIN sys_org_extend b ON a.id = b.org_id
+                WHERE
+                    a.path LIKE concat( #{orgPath}, '%' )) AS onLineTotal,
+            (
+                SELECT
+                    IFNULL( SUM( IF ( a.type = 3 AND a.standard = 1, 1, 0 )), 0 ) AS onLineReachNumber
+                FROM
+                    sys_org_physical_defense_construction a
+                        LEFT JOIN sys_org b ON a.org_id = b.id
+                WHERE
+                    b.path LIKE concat(#{orgPath}, '%' )) AS onLineReachNumber
+        FROM
+            DUAL
     </select>
     <select id="getDeparture" resultType="java.util.Map">
-        SELECT
+        /*SELECT
             IFNULL( SUM( IF ( a.type = 4, 1, 0 )), 0 ) AS departureTotal,
             IFNULL( SUM( IF ( a.type = 4 AND a.standard = 1, 1, 0 )), 0 ) AS departureReachNumber
         FROM
             sys_org_physical_defense_construction a
                 LEFT JOIN sys_org b ON a.org_id = b.id
         WHERE
-            b.path LIKE concat(#{orgPath}, '%')
+            b.path LIKE concat(#{orgPath}, '%')*/
+        SELECT
+            (
+                SELECT
+                    count( 1 )
+                FROM
+                    sys_org
+                WHERE
+                    type = 5
+                  AND deleted = 0
+                  AND path LIKE concat( #{orgPath}, '%' )) AS departureTotal,
+            (
+                SELECT
+                    IFNULL( SUM( IF ( a.type = 4 AND a.standard = 1, 1, 0 )), 0 )
+                FROM
+                    sys_org_physical_defense_construction a
+                        LEFT JOIN sys_org b ON a.org_id = b.id
+                WHERE
+                    b.path LIKE concat( #{orgPath}, '%' )
+            ) AS departureReachNumber
+        FROM
+            DUAL
     </select>
     <select id="getSelfEquipment" resultType="java.util.Map">
         SELECT
@@ -910,14 +956,22 @@ and
             b.path LIKE concat(#{orgPath}, '%')
     </select>
     <select id="getCenterConstruction" resultType="java.util.Map">
-        SELECT
+        /*SELECT
             IFNULL( IF ( a.construction_time IS NULL, '0', SUBSTR( a.construction_time, 1, 4 ) ), '0' ) AS centerConstructionTime,
             IFNULL( IF ( a.last_update_time IS NULL, '0', SUBSTR( a.last_update_time, 1, 4 ) ), '0' ) AS transformTime,
             IFNULL( a.platform_brand, '0' ) AS brand
         FROM
             sys_org_extend a
                 LEFT JOIN sys_org b ON a.org_id = b.id
-        WHERE b.id=#{orgId}
+        WHERE b.id=#{orgId}*/
+
+        SELECT
+            IFNULL(SUBSTR( b.construction_time, 1, 4 ), '' ) as centerConstructionTime,
+            IFNULL(SUBSTR( b.last_update_time, 1, 4 ), '' )AS transformTime,
+            b.platform_brand  AS brand
+        FROM
+            ( SELECT id FROM sys_org WHERE type = 10 AND path LIKE concat( #{orgPath}, '%' ) ORDER BY create_time DESC LIMIT 0, 1 ) a
+                LEFT JOIN sys_org_extend b ON a.id = b.org_id
     </select>
     <select id="getCamera" resultType="java.util.Map">
         SELECT
@@ -927,8 +981,9 @@ and
             sys_device a
                 LEFT JOIN sys_org b ON a.org_id = b.id
         WHERE
-            del_flag = 0
-          AND device_type = 2
+            a.del_flag = 0
+          AND a.device_type = 2
+          AND b.deleted = 0
           AND b.path LIKE concat(#{orgPath}, '%')
     </select>
     <select id="getRemote" resultType="java.util.Map">
@@ -938,7 +993,10 @@ and
         FROM
             sys_org_extend a
                 LEFT JOIN sys_org b ON a.org_id = b.id
-        where  b.path LIKE concat(#{orgPath}, '%')
+        where
+            1=1
+          and b.deleted = 0
+          and b.path LIKE concat(#{orgPath}, '%')
     </select>
     <select id="getDuty" resultType="java.util.Map">
         SELECT
@@ -947,18 +1005,34 @@ and
         FROM
             sys_org_extend a
                 LEFT JOIN sys_org b ON a.org_id = b.id
-        where b.path LIKE concat(#{orgPath}, '%')
+        WHERE
+            1=1
+          and b.deleted = 0
+          and b.path LIKE concat(#{orgPath}, '%')
     </select>
     <select id="getCertificate" resultType="java.util.Map">
-SELECT
-                                                               IFNULL( SUM( a.inner_count ), 0 ) AS internalCertificateNumber,
-                                                               IFNULL( SUM( a.outside_count ), 0 ) AS outsourceCertificateNumber,
-                                                               IFNULL( SUM( a.inner_count )+ SUM( a.outside_count ), 0 ) AS certificateTotal,
-                                                               IFNULL( SUM( IF ( a.askari_certificate IS NULL, 0, 1 )), 0 ) AS certificatePeopleNumber
-                                                           FROM
-                                                               sys_org_extend a
-                                                                   LEFT JOIN sys_org b ON a.org_id = b.id
-                                                           where b.path LIKE concat(#{orgPath}, '%')
+        SELECT
+            IFNULL( SUM( a.inner_count ), 0 ) AS internalCertificateNumber,
+            IFNULL( SUM( a.outside_count ), 0 ) AS outsourceCertificateNumber,
+            IFNULL( SUM( a.inner_count )+ SUM( a.outside_count ), 0 ) AS certificateTotal,
+            (
+                SELECT
+                    count(*)
+                FROM
+                    sys_user a
+                        LEFT JOIN sys_user_information b ON a.id = b.user_id
+                        LEFT JOIN sys_org c ON a.org_id = c.id
+                WHERE
+                    1 = 1
+                  AND b.dept_id = 2
+                  AND b.certificate_work = '1'
+                  AND c.deleted = 0
+                  AND c.path LIKE concat(#{orgPath}, '%')) AS certificatePeopleNumber
+        FROM
+            sys_org_extend a
+                LEFT JOIN sys_org b ON a.org_id = b.id
+        WHERE
+            b.path LIKE concat(#{orgPath}, '%')
     </select>
     <select id="getSafe" resultType="java.lang.Integer">
         SELECT
@@ -1043,7 +1117,7 @@ and a.org_path LIKE concat(#{orgPath}, '%')
             sys_user_information a
                 LEFT JOIN sys_user b ON a.user_id = b.id
                 LEFT JOIN sys_org c ON b.org_id = c.id
-        WHERE a.alone_dept='Y' AND c.path LIKE concat(#{orgPath}, '%')
+        WHERE c.deleted = 0 and  a.alone_dept='Y' AND c.path LIKE concat(#{orgPath}, '%')
     </select>
     <select id="getManager" resultType="java.lang.Integer">
         SELECT
@@ -1052,7 +1126,12 @@ and a.org_path LIKE concat(#{orgPath}, '%')
             sys_user_information a
                 LEFT JOIN sys_user b ON a.user_id = b.id
                 LEFT JOIN sys_org c ON b.org_id = c.id
-        WHERE a.is_full_time=#{isFull} AND a.duties=1 AND c.path like concat(#{orgPath}, '%')
+        WHERE
+            1 = 1
+          AND c.deleted = 0
+          AND a.is_full_time = #{isFull}
+          AND a.duties in ('1','2','3')
+          AND c.path LIKE concat(#{orgPath}, '%')
     </select>
     <select id="getManagerCertificate" resultType="java.lang.Integer">
         SELECT
@@ -1062,8 +1141,10 @@ and a.org_path LIKE concat(#{orgPath}, '%')
                 LEFT JOIN sys_user b ON a.user_id = b.id
                 LEFT JOIN sys_org c ON b.org_id = c.id
         WHERE
-            a.certificate_work = 1
-          AND a.duties = 1
+            1 = 1
+          AND c.deleted = 0
+          AND a.certificate_work = 1
+          AND a.duties in ('1','2','3')
           AND c.path LIKE concat(#{orgPath}, '%')
     </select>
     <select id="getIsMonitor" resultType="java.lang.String">
@@ -1076,6 +1157,7 @@ and a.org_path LIKE concat(#{orgPath}, '%')
                 LEFT JOIN sys_org c ON b.org_id = c.id
         WHERE
             a.duties = #{duties}
+          and c.deleted = 0
           AND c.path LIKE concat(#{orgPath}, '%')
     </select>
     <select id="getMonitorPeople" resultType="java.util.Map">
@@ -1089,6 +1171,7 @@ and a.org_path LIKE concat(#{orgPath}, '%')
                 LEFT JOIN sys_org c ON b.org_id = c.id
         WHERE
             a.duties IN ( 2, 4, 5 )
+          AND c.deleted = 0
           AND c.path LIKE concat(#{orgPath}, '%')
     </select>
     <select id="getSafeHeadToNetwork" resultType="java.lang.Integer">
@@ -1114,7 +1197,7 @@ and a.org_path LIKE concat(#{orgPath}, '%')
           AND b.path LIKE concat(#{orgPath}, '%')
     </select>
     <select id="getHaveSecurityNetworkNumber" resultType="java.lang.Integer">
-        SELECT
+/*        SELECT
             COUNT( 1 )
         FROM
             sys_org
@@ -1130,6 +1213,12 @@ and a.org_path LIKE concat(#{orgPath}, '%')
                     b.path LIKE concat(#{orgPath}, '%')
                 GROUP BY
                     a.id)
+*/
+        select count(*) from  sys_org a
+        LEFT JOIN sys_org_extend b  on a.id = b.org_id
+        WHERE 1=1
+          and (b.inner_count > 0 or b.outside_count > 0)
+          and a.path LIKE concat( #{orgPath}, '%' )
     </select>
     <select id="getHeadSafeCheckNumber" resultType="java.lang.Integer">
         SELECT