diff --git a/src/main/java/com/org/system/service/SysMenuService.java b/src/main/java/com/org/system/service/SysMenuService.java index aa5c31a..2b31d24 100644 --- a/src/main/java/com/org/system/service/SysMenuService.java +++ b/src/main/java/com/org/system/service/SysMenuService.java @@ -178,7 +178,7 @@ public class SysMenuService extends ServiceImpl { * @param id * @return */ - @Transactional + @Transactional(rollbackFor = Exception.class) public boolean del(Long id, String deleteReason){ log.info("SysMenuService - del - id:{}", id); diff --git a/src/main/java/com/org/web/data/controller/DataController.java b/src/main/java/com/org/web/data/controller/DataController.java new file mode 100644 index 0000000..ca66061 --- /dev/null +++ b/src/main/java/com/org/web/data/controller/DataController.java @@ -0,0 +1,27 @@ +package com.org.web.data.controller; + +import com.org.system.controller.BaseController; +import com.org.utils.AjaxResult; +import com.org.web.data.service.DataService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@Slf4j +@RestController +@RequestMapping("/data") +public class DataController extends BaseController { + + @Autowired + DataService dataService; + + @PostMapping("/statistics") + @PreAuthorize("@ss.hasPermi('data:statistics')") + public AjaxResult add() { + return AjaxResult.success(dataService.queryDataStatistics()); + } + +} diff --git a/src/main/java/com/org/web/data/domain/DataStatistics.java b/src/main/java/com/org/web/data/domain/DataStatistics.java new file mode 100644 index 0000000..5d559c2 --- /dev/null +++ b/src/main/java/com/org/web/data/domain/DataStatistics.java @@ -0,0 +1,28 @@ +package com.org.web.data.domain; + + +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +/** + * 数据统计 + */ +@Data +public class DataStatistics { + + List villageCountList = new ArrayList<>(); + + List ifHelpPoorList = new ArrayList<>(); + + List sexList = new ArrayList<>(); + + List nursingLevelList = new ArrayList<>(); + + List ageList = new ArrayList<>(); + + List inHospitalList = new ArrayList<>(); + + List roomCountList = new ArrayList<>(); +} diff --git a/src/main/java/com/org/web/data/domain/DataStatisticsItem.java b/src/main/java/com/org/web/data/domain/DataStatisticsItem.java new file mode 100644 index 0000000..6a49864 --- /dev/null +++ b/src/main/java/com/org/web/data/domain/DataStatisticsItem.java @@ -0,0 +1,27 @@ +package com.org.web.data.domain; + + +import lombok.Data; + +/** + * 数据统计 - 子项 + */ + +@Data +public class DataStatisticsItem { + + /** + * 子项名称 + */ + private String itemName; + + /** + * 子项值 + */ + private int itemValue; + + /** + * 子项备注 可存放数据字典的value值 + */ + private String itemRemark; +} diff --git a/src/main/java/com/org/web/data/mapper/DataMapper.java b/src/main/java/com/org/web/data/mapper/DataMapper.java new file mode 100644 index 0000000..8d42e76 --- /dev/null +++ b/src/main/java/com/org/web/data/mapper/DataMapper.java @@ -0,0 +1,130 @@ +package com.org.web.data.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.org.web.data.domain.DataStatisticsItem; +import com.org.web.person.domain.BcPersonSupport; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +@Mapper +public interface DataMapper extends BaseMapper { + + // 各村供养人数 + @Select("select c.name as item_name, c.value as item_remark, " + + " (select count(1) " + + " from bc_person_support a " + + " where a.is_delete = 0 " + + " and a.type = 1 " + + " and IFNULL(a.village, '') != '' " + + " and a.village = c.value) as item_value " + + " from sys_data_dictionary_item c " + + " where c.is_delete = 0 " + + " and c.dictionary_code = '0040' ") + List listVillageCount(); + + // 是否精准扶贫 + @Select("SELECT " + + " '是' AS item_name, " + + " 1 as item_remark, " + + " SUM(CASE WHEN if_help_poor = 1 THEN 1 ELSE 0 END) AS item_value " + + "FROM bc_person_support " + + "UNION " + + "SELECT " + + " '否' AS item_name, " + + " 0 as item_remark, " + + " SUM(CASE WHEN if_help_poor = 0 THEN 1 ELSE 0 END) AS item_value " + + "FROM bc_person_support " + + "where is_delete = 0 " + + "and type = 1 ") + List listIfHelpPoor(); + + // 性别 + @Select("SELECT " + + " '男' AS item_name, " + + " 1 as item_remark, " + + " SUM(CASE WHEN sex = 1 THEN 1 ELSE 0 END) AS item_value " + + "FROM bc_person_support " + + "UNION " + + "SELECT " + + " '女' AS item_name, " + + " 0 as item_remark, " + + " SUM(CASE WHEN sex = 0 THEN 1 ELSE 0 END) AS item_value " + + "FROM bc_person_support " + + "where is_delete = 0 " + + "and type = 1 ") + List listSex(); + + // 护理等级 + @Select("select c.name as item_name, c.value as item_remark, " + + " (select count(1) " + + " from bc_person_support a " + + " where a.is_delete = 0 " + + " and a.type = 1 " + + " and IFNULL(a.village, '') != '' " + + " and a.village = c.value) as item_value " + + " from sys_data_dictionary_item c " + + " where c.is_delete = 0 " + + " and c.dictionary_code = '0040' ") + List listNursingLevel(); + + // 年龄区间 + @Select("SELECT " + + " age_ranges.age_group as item_name, " + + " COALESCE(COUNT(age_table.id_card_no), 0) AS item_value " + + "FROM ( " + + " SELECT '50岁以下' AS age_group, 0 AS min_age, 49 AS max_age " + + " UNION SELECT '50-59岁', 50, 59 " + + " UNION SELECT '60-69岁', 60, 69 " + + " UNION SELECT '70-79岁', 70, 79 " + + " UNION SELECT '80-89岁', 80, 89 " + + " UNION SELECT '90岁以上', 90, 999 " + + ") AS age_ranges " + + "LEFT JOIN ( " + + " SELECT " + + " id_card_no, " + + " TIMESTAMPDIFF(YEAR, STR_TO_DATE(SUBSTRING(id_card_no, 7, 8), '%Y%m%d'), CURDATE()) AS age " + + " FROM bc_person_support " + + " where is_delete = 0 " + + " and type = 1 " + + ") AS age_table ON age_table.age BETWEEN age_ranges.min_age AND age_ranges.max_age " + + "GROUP BY age_ranges.age_group ") + List listAgeCount(); + + + // 是否在园 + @Select("SELECT " + + " '是' AS item_name, " + + " 1 as item_remark, " + + " SUM(CASE WHEN is_in_hospital = 1 THEN 1 ELSE 0 END) AS item_value " + + "FROM bc_person_support " + + "UNION " + + "SELECT " + + " '否' AS item_name, " + + " 0 as item_remark, " + + " SUM(CASE WHEN is_in_hospital = 0 THEN 1 ELSE 0 END) AS item_value " + + "FROM bc_person_support " + + "where is_delete = 0 " + + "and type = 1 ") + List listInHospital(); + + // 房源入住情况 + @Select("SELECT " + + " '总房源' AS item_name, " + + " 0 as item_remark, " + + " count(1) AS item_value " + + "FROM bc_room a " + + "left join bc_room_bed b on a.id = b.room_id " + + "where a.is_delete = 0 " + + "and b.is_delete = 0 " + + "and a.room_type = 1 " + + "UNION " + + "select '入住房源' AS item_name, " + + " 1 as item_remark, " + + " count(1) AS item_value " + + "from bc_hospital_record a " + + "where a.is_delete = 0 " + + "and check_out_time is null") + List listRoomCount(); +} diff --git a/src/main/java/com/org/web/data/service/DataService.java b/src/main/java/com/org/web/data/service/DataService.java new file mode 100644 index 0000000..4d7e3a9 --- /dev/null +++ b/src/main/java/com/org/web/data/service/DataService.java @@ -0,0 +1,48 @@ +package com.org.web.data.service; + + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.org.web.data.domain.DataStatistics; +import com.org.web.data.domain.DataStatisticsItem; +import com.org.web.data.mapper.DataMapper; +import com.org.web.person.domain.BcPersonSupport; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +@Slf4j +public class DataService extends ServiceImpl { + + /** + * 列表 + */ + public DataStatistics queryDataStatistics() { + List villageCountList = baseMapper.listVillageCount(); + + List ifHelpPoorList = baseMapper.listIfHelpPoor(); + + List sexList = baseMapper.listSex(); + + List nursingLevelList = baseMapper.listNursingLevel(); + + List ageList = baseMapper.listAgeCount(); + + List inHospitalList = baseMapper.listInHospital(); + + List roomCountList = baseMapper.listRoomCount(); + + DataStatistics dataStatistics = new DataStatistics(); + dataStatistics.setVillageCountList(villageCountList); + dataStatistics.setIfHelpPoorList(ifHelpPoorList); + dataStatistics.setSexList(sexList); + dataStatistics.setNursingLevelList(nursingLevelList); + dataStatistics.setAgeList(ageList); + dataStatistics.setInHospitalList(inHospitalList); + dataStatistics.setRoomCountList(roomCountList); + + return dataStatistics; + } + +} diff --git a/src/main/java/com/org/web/hospital/mapper/BcHospitalRecordMapper.java b/src/main/java/com/org/web/hospital/mapper/BcHospitalRecordMapper.java index 833b0a5..060ef13 100644 --- a/src/main/java/com/org/web/hospital/mapper/BcHospitalRecordMapper.java +++ b/src/main/java/com/org/web/hospital/mapper/BcHospitalRecordMapper.java @@ -46,13 +46,18 @@ public interface BcHospitalRecordMapper extends BaseMapper { " " + " " + + " " + + " and a.person_id = #{personId} " + + " " + " " + " and b.name like concat('%', #{personName}, '%') " + " " + + " " + " and a.room_id = #{roomId} " + " " + + " order by a.create_time desc " + "") List checkList(BcHospitalRecord record); diff --git a/src/main/java/com/org/web/hospital/service/BcHospitalRecordService.java b/src/main/java/com/org/web/hospital/service/BcHospitalRecordService.java index 1b20599..cc49f85 100644 --- a/src/main/java/com/org/web/hospital/service/BcHospitalRecordService.java +++ b/src/main/java/com/org/web/hospital/service/BcHospitalRecordService.java @@ -35,7 +35,7 @@ public class BcHospitalRecordService extends ServiceImpl bcHospitalRecords = baseMapper.checkList(record); + if (null != bcHospitalRecords && !bcHospitalRecords.isEmpty()) return bcHospitalRecords.get(0); + + return null; + } + /** * 删除 */ diff --git a/src/main/java/com/org/web/person/domain/BcPersonService.java b/src/main/java/com/org/web/person/domain/BcPersonService.java index 860f098..dbc4fea 100644 --- a/src/main/java/com/org/web/person/domain/BcPersonService.java +++ b/src/main/java/com/org/web/person/domain/BcPersonService.java @@ -47,12 +47,17 @@ public class BcPersonService extends BaseEntity { private String phone; /** - * 岗位 + * 岗位 数据字典0050 */ - private String jobs; + private Integer jobs; /** - * 婚姻状况 1-未婚 2-已婚 3-离异 99-未知 + * 家庭住址 + */ + private String homeAddress; + + /** + * 婚姻状况 数据字典0030 1-未婚 2-已婚 3-离异 99-未知 */ private Integer maritalStatus; @@ -102,6 +107,12 @@ public class BcPersonService extends BaseEntity { @TableField(exist = false) private String userName; + /** + * 岗位名称 + */ + @TableField(exist = false) + private String jobsName; + /** ---------------- 家庭成员 ------------------ */ @TableField(exist = false) diff --git a/src/main/java/com/org/web/person/domain/BcPersonSupport.java b/src/main/java/com/org/web/person/domain/BcPersonSupport.java index b1bab68..c8704c6 100644 --- a/src/main/java/com/org/web/person/domain/BcPersonSupport.java +++ b/src/main/java/com/org/web/person/domain/BcPersonSupport.java @@ -59,7 +59,12 @@ public class BcPersonSupport extends BaseEntity { private String residenceAddress; /** - * 户籍村属 + * 所在村 数据字典0040 + */ + private Integer village; + + /** + * 归属村组 */ private String residenceVillage; @@ -69,9 +74,29 @@ public class BcPersonSupport extends BaseEntity { private Integer type; /** - * 供养方式 + * 供养方式 数据字典0020 */ - private String supportType; + private Integer supportType; + + /** + * 护理等级 数据字典0021 + */ + private Integer nursingLevel; + + /** + * 是否在院 1是 0否 + */ + private Integer isInHospital; + + /** + * 住院信息 + */ + private String hospitalMessage; + + /** + * 亲属联系方式 + */ + private String relativeContact; /** * 是否残疾 1-是 0-否 @@ -122,7 +147,7 @@ public class BcPersonSupport extends BaseEntity { /** ---------------- 详细信息 ------------------ */ /** - * 婚姻状况 1-未婚 2-已婚 3-离异 99-未知 + * 婚姻状况 数据字典0030 1-未婚 2-已婚 3-离异 99-未知 */ private Integer maritalStatus; @@ -207,4 +232,42 @@ public class BcPersonSupport extends BaseEntity { @TableField(exist = false) private List familyList = new ArrayList<>(); + @TableField(exist = false) + private Integer age; + + /** + * 年龄区间 1:50岁以下 2:50-59 3:60-69 4:70-79 5:80-89 6:90岁以上 + */ + @TableField(exist = false) + private Integer ageRange; + + @TableField(exist = false) + private Integer gender; + + // 居住房间 + @TableField(exist = false) + private String roomBed; + + @TableField(exist = false) + private String villageName; + + @TableField(exist = false) + private String nursingLevelName; + + @TableField(exist = false) + private String supportTypeName; + + + + /** + * 房间id + */ + @TableField(exist = false) + private Long roomId; + + /** + * 床位id + */ + @TableField(exist = false) + private Long bedId; } diff --git a/src/main/java/com/org/web/person/mapper/BcPersonSupportMapper.java b/src/main/java/com/org/web/person/mapper/BcPersonSupportMapper.java index d6e2096..c3197de 100644 --- a/src/main/java/com/org/web/person/mapper/BcPersonSupportMapper.java +++ b/src/main/java/com/org/web/person/mapper/BcPersonSupportMapper.java @@ -11,7 +11,10 @@ import java.util.List; public interface BcPersonSupportMapper extends BaseMapper { @Select("" ) List queryList(BcPersonSupport person); diff --git a/src/main/java/com/org/web/person/service/BcPersonServiceService.java b/src/main/java/com/org/web/person/service/BcPersonServiceService.java index 1952294..8601fa7 100644 --- a/src/main/java/com/org/web/person/service/BcPersonServiceService.java +++ b/src/main/java/com/org/web/person/service/BcPersonServiceService.java @@ -9,6 +9,7 @@ import com.org.system.config.security.Md5PasswordEncoder; import com.org.system.entity.SysRole; import com.org.system.entity.SysUser; import com.org.system.enums.YesOrNoState; +import com.org.system.service.SysDataDictionaryItemService; import com.org.system.service.SysUserRoleService; import com.org.system.service.SysUserService; import com.org.utils.SecurityUtil; @@ -39,8 +40,11 @@ public class BcPersonServiceService extends ServiceImpl queryList(BcPersonService person) { log.info("BcPersonServiceService - queryList person:{}", person); - return baseMapper.queryList(person); + List list = baseMapper.queryList(person); + for (BcPersonService personVO : list) { + if (null != personVO.getJobs()) { + personVO.setJobsName(sysDataDictionaryItemService.findDictonaryBydictonaryCode("0050", personVO.getJobs())); + } + } + return list; } } diff --git a/src/main/java/com/org/web/person/service/BcPersonSupportService.java b/src/main/java/com/org/web/person/service/BcPersonSupportService.java index 2afc446..348ee64 100644 --- a/src/main/java/com/org/web/person/service/BcPersonSupportService.java +++ b/src/main/java/com/org/web/person/service/BcPersonSupportService.java @@ -9,10 +9,13 @@ import com.org.system.config.security.Md5PasswordEncoder; import com.org.system.entity.SysRole; import com.org.system.entity.SysUser; import com.org.system.enums.YesOrNoState; +import com.org.system.service.SysDataDictionaryItemService; import com.org.system.service.SysUserRoleService; import com.org.system.service.SysUserService; import com.org.utils.SecurityUtil; import com.org.utils.exception.CustomException; +import com.org.web.hospital.domain.BcHospitalRecord; +import com.org.web.hospital.service.BcHospitalRecordService; import com.org.web.person.domain.BcPersonFamily; import com.org.web.person.domain.BcPersonSupport; import com.org.web.person.mapper.BcPersonSupportMapper; @@ -38,8 +41,13 @@ public class BcPersonSupportService extends ServiceImpl queryList(BcPersonSupport person) { log.info("BcPersonSupportService - queryList person:{}", person); - return baseMapper.queryList(person); + List personList = baseMapper.queryList(person); + for (BcPersonSupport personVO : personList) { + // 查询居住房间 + BcHospitalRecord record = hospitalRecordService.getRecordByPersonId(personVO.getId()); + if (null != record) { + personVO.setRoomBed(record.getRoomName() + record.getBedName()); + } + + if (personVO.getType() == 1) { + if (null != personVO.getVillage()) { + personVO.setVillageName(sysDataDictionaryItemService.findDictonaryBydictonaryCode("0040", personVO.getVillage())); + } + if (null != personVO.getSupportType()) { + personVO.setSupportTypeName(sysDataDictionaryItemService.findDictonaryBydictonaryCode("0020", personVO.getSupportType())); + } + if (null != personVO.getNursingLevel()) { + personVO.setNursingLevelName(sysDataDictionaryItemService.findDictonaryBydictonaryCode("0021", personVO.getNursingLevel())); + } + } + } + return personList; } }