Commit 1de45ba6 authored by KeYong's avatar KeYong

增加社会力量相关逻辑

parent 1260a048
package com.yeejoin.equipmanage.common.dto;
import cn.afterturn.easypoi.excel.annotation.Excel;
import cn.afterturn.easypoi.excel.annotation.ExcelIgnore;
import lombok.Data;
import java.util.Date;
/**
* @author keyong
* @title: SocialPowerImportParam
* <pre>
* @description: TODO
* </pre>
* @date 2024/01/04 15:27
*/
@Data
public class SocialPowerImportParam {
@ExcelIgnore
private Date createDate;
@Excel(name = "单位名称", orderNum = "0")
private String companyName;
@Excel(name = "所在地", orderNum = "1")
private String location;
@Excel(name = "联系人", orderNum = "2")
private String contactUser;
@Excel(name = "联系电话", orderNum = "3")
private String contactPhone;
@Excel(name = "到站距离", orderNum = "4")
private String arrivalDistance;
@Excel(name = "到站时间", orderNum = "5")
private String arrivalTime;
@Excel(name = "备注信息", orderNum = "6")
private String remark;
}
package com.yeejoin.equipmanage.common.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.yeejoin.equipmanage.common.entity.publics.BaseEntity;
import com.yeejoin.equipmanage.common.utils.FileItem;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.util.List;
/**
* 社会力量表
*
* @author system_generator
* @date 2024-01-03
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("wl_social_power")
public class SocialPower extends BaseEntity {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@TableField("id")
private Long id;
/**
* 单位名称
*/
@TableField("company_name")
private String companyName;
/**
* 所在地
*/
@TableField("location")
private String location;
/**
* 联系人
*/
@TableField("contact_user")
private String contactUser;
/**
* 联系电话
*/
@TableField("contact_phone")
private String contactPhone;
/**
* 到站距离
*/
@TableField("arrival_distance")
private String arrivalDistance;
/**
* 到站时间
*/
@TableField("arrival_time")
private String arrivalTime;
/**
* 备注信息
*/
@TableField("remark")
private String remark;
@TableField("biz_org_name")
private String bizOrgName;
@TableField("biz_org_code")
private String bizOrgCode;
/**
* 路线图
*/
@TableField(exist = false)
private List<FileItem> attachFiles;
}
package com.yeejoin.equipmanage.common.utils;
import lombok.Data;
/**
* @author keyong
* @title: FileItem
* <pre>
* @description: TODO
* </pre>
* @date 2024/1/5 17:33
*/
@Data
public class FileItem {
private String uid;
private String name;
private String status;
private String reponse;
private String url;
}
......@@ -704,4 +704,11 @@ public class EmergencyController extends AbstractBaseController {
return CommonResponseUtil.success(iEmergencyService.alarmList(page, bizOrgCode, types, emergencyLevels, name, cleanStatus, handleStatus));
}
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@ApiOperation("应急物资及红绿码信息")
@GetMapping(value = "/materials")
public Map<String, Object> getEmergencyMaterials() {
return iEmergencyService.emergencyMaterials();
}
}
package com.yeejoin.equipmanage.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.biz.common.bo.ReginParams;
import com.yeejoin.equipmanage.common.dto.SocialPowerImportParam;
import com.yeejoin.equipmanage.common.entity.SocialPower;
import com.yeejoin.equipmanage.common.entity.UploadFile;
import com.yeejoin.equipmanage.common.utils.CommonRequest;
import com.yeejoin.equipmanage.common.utils.CommonResponseUtil;
import com.yeejoin.equipmanage.common.utils.FileItem;
import com.yeejoin.equipmanage.common.utils.StringUtil;
import com.yeejoin.equipmanage.service.ISocialPowerService;
import com.yeejoin.equipmanage.service.IUploadFileService;
import com.yeejoin.equipmanage.utils.FileHelper;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import liquibase.pro.packaged.Q;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.util.CollectionUtils;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.typroject.tyboot.core.foundation.enumeration.UserType;
import org.typroject.tyboot.core.restful.doc.TycloudOperation;
import org.typroject.tyboot.core.restful.utils.ResponseHelper;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
import javax.servlet.http.HttpServletResponse;
import java.util.*;
/**
* 社会力量表
*
* @author system_generator
* @date 2022-02-18
*/
@RestController
@Api(tags = "社会力量表Api")
@RequestMapping(value = "/social/power", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
public class SocialPowerController extends AbstractBaseController {
@Autowired
ISocialPowerService socialPowerService;
@Autowired
IUploadFileService iUploadFileService;
/**
* 新增
*
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@PostMapping(value = "/save")
@ApiOperation(httpMethod = "POST", value = "新增社会力量表", notes = "新增社会力量表")
public ResponseModel<SocialPower> save(@RequestBody Map<String, SocialPower> model) {
ReginParams reginParams = getSelectedOrgInfo();
String bizOrgCode = reginParams.getPersonIdentity().getBizOrgCode();
String bizOrgName = reginParams.getPersonIdentity().getCompanyName();
SocialPower socialPower = model.get("socialPowerAdd");
socialPower.setBizOrgCode(bizOrgCode);
socialPower.setBizOrgName(bizOrgName);
boolean bool = socialPowerService.save(socialPower);
if (0 < socialPower.getAttachFiles().size() && bool) {
iUploadFileService.saveBatch(convertAttachFiles(socialPower.getAttachFiles(), socialPower.getId()));
}
return ResponseHelper.buildResponse(socialPower);
}
/**
* 根据id更新
*
* @param
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@PutMapping(value = "/update")
@ApiOperation(httpMethod = "PUT", value = "根据id更新社会力量", notes = "根据id更新社会力量")
public ResponseModel<SocialPower> updateByIdWlSocialPower(@RequestBody SocialPower model) {
boolean bool = socialPowerService.updateById(model);
if (0 < model.getAttachFiles().size() && bool) {
Map<String, Object> map = new HashMap<>();
map.put("object_id", model.getId());
iUploadFileService.removeByMap(map);
iUploadFileService.saveBatch(convertAttachFiles(model.getAttachFiles(), model.getId()));
}
return ResponseHelper.buildResponse(model);
}
private List<UploadFile> convertAttachFiles(List<FileItem> items, Long objectId) {
List<UploadFile> files = new ArrayList<>();
items.forEach(x -> {
UploadFile file = new UploadFile();
BeanUtils.copyProperties(x, file);
file.setObjectId(objectId);
file.setObjectType("SocialPower");
file.setOrgCode(x.getUid());
file.setDepartmentOrgcode(x.getStatus());
files.add(file);
});
return files;
}
/**
* 根据id删除
*
* @param ids 主键
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@DeleteMapping(value = "/batchDelete")
@ApiOperation(httpMethod = "DELETE", value = "根据id删除社会力量", notes = "根据id删除社会力量")
public ResponseModel<Boolean> deleteOneById(@RequestParam("ids") Long[] ids){
if (0 < ids.length) {
List<Long> list = Arrays.asList(ids);
return ResponseHelper.buildResponse(socialPowerService.removeByIds(list));
} else {
return CommonResponseUtil.failure("请选择要删除的行!");
}
}
/**
* 根据id查询
*
* @param id 主键
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@GetMapping(value = "/detail")
@ApiOperation(httpMethod = "GET",value = "根据id查询单个社会力量", notes = "根据id查询单个社会力量")
public ResponseModel<SocialPower> selectOne(@RequestParam Long socialId) {
SocialPower socialPower = socialPowerService.getById(socialId);
QueryWrapper<UploadFile> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("object_id", socialId);
List<UploadFile> uploadFiles = iUploadFileService.list(queryWrapper);
if (0 < uploadFiles.size()) {
List<FileItem> items = new ArrayList<>();
uploadFiles.forEach(x -> {
FileItem item = new FileItem();
BeanUtils.copyProperties(x, item);
item.setStatus(x.getDepartmentOrgcode());
item.setUid(x.getOrgCode());
items.add(item);
});
socialPower.setAttachFiles(items);
}
return ResponseHelper.buildResponse(socialPower);
}
/**
* 列表全部数据查询
*
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@ApiOperation(httpMethod = "GET",value = "社会力量列表全部数据查询", notes = "社会力量列表全部数据查询")
@GetMapping(value = "/list")
public ResponseModel<List<SocialPower>> selectForList() {
ReginParams reginParams = getSelectedOrgInfo();
String bizOrgCode = reginParams.getPersonIdentity().getBizOrgCode();
return ResponseHelper.buildResponse(socialPowerService.query().eq("biz_org_code", bizOrgCode).list());
}
/**
* 列表全部数据查询
*
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@ApiOperation(httpMethod = "GET",value = "社会力量列表全部数据查询", notes = "社会力量列表全部数据查询")
@GetMapping(value = "/page")
public Page<SocialPower> selectForList(Page page,
@RequestParam(value = "companyName",required = false) String companyName,
@RequestParam(value = "contactUser",required = false) String contactUser,
@RequestParam(value = "remark",required = false) String remark) {
ReginParams reginParams = getSelectedOrgInfo();
String bizOrgCode = reginParams.getPersonIdentity().getBizOrgCode();
SocialPower dto = new SocialPower();
dto.setBizOrgCode(bizOrgCode);
dto.setCompanyName(companyName);
dto.setContactUser(contactUser);
dto.setRemark(remark);
return socialPowerService.listPage(page, dto);
}
/**
* 模板导出
*
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@ApiOperation(httpMethod = "GET",value = "模板导出", notes = "模板导出")
@GetMapping(value = "/export")
public ResponseModel exportTemplate(HttpServletResponse response) {
String fileName = "社会力量模板.xls"; //模板名称
String[] handers = {"单位名称","所在地","联系人","联系电话","到站距离","到站时间","备注信息"}; //列标题
List<String[]> downData = new ArrayList();
String [] downRows = {}; //下拉的列序号数组(序号从0开始)
try {
FileHelper.createExcelTemplate(fileName, handers, downData, downRows, response);
} catch (Exception e) {
CommonResponseUtil.failure(e.getMessage());
}
return CommonResponseUtil.success();
}
/**
* 导入
*
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@PostMapping(value = "/import")
@ApiOperation(httpMethod = "POST", value = "模板填充数据导入", notes = "模板填充数据导入")
public ResponseModel importSocialPower(@ApiParam(value="导入数据文件", required=true) MultipartFile file) {
String fileName = file.getOriginalFilename();
ReginParams reginParams = getSelectedOrgInfo();
if (!fileName.endsWith(".xls")) {
return CommonResponseUtil.failure("文件格式错误");
}
try {
List<SocialPowerImportParam> list = FileHelper.importExcel(file, 0, 1, SocialPowerImportParam.class);
if (0 < list.size()) {
List<SocialPower> powers = new ArrayList<>();
for (SocialPowerImportParam dto : list) {
SocialPower socialPower = new SocialPower();
BeanUtils.copyProperties(dto, socialPower);
if (StringUtil.isNotEmpty(dto.getCompanyName())) {
socialPower.setCompanyName(dto.getCompanyName());
} else {
return CommonResponseUtil.failure("请补充单位名称信息!");
}
if (StringUtil.isNotEmpty(dto.getLocation())) {
socialPower.setCompanyName(dto.getLocation());
} else {
return CommonResponseUtil.failure("请补充所在地信息!");
}
socialPower.setBizOrgName(reginParams.getCompany().getCompanyName());
socialPower.setBizOrgCode(reginParams.getPersonIdentity().getBizOrgCode());
powers.add(socialPower);
}
socialPowerService.saveOrUpdateBatch(powers);
}
return CommonResponseUtil.success();
} catch (Exception e) {
e.printStackTrace();
return CommonResponseUtil.failure(e.getLocalizedMessage());
}
}
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@ApiOperation(value = "数据导出", notes = "数据导出")
@PostMapping(value = "/exportListPointNew", produces = "application/json;charset=UTF-8")
public ResponseModel exportListPointNew(@ApiParam(value = "查询条件", required = false) @RequestBody(required = false) List<CommonRequest> queryRequests,
HttpServletResponse response) {
ReginParams reginParams = getSelectedOrgInfo();
String bizOrgCode = reginParams.getPersonIdentity().getBizOrgCode();
if (ObjectUtils.isEmpty(reginParams)) {
return CommonResponseUtil.failure("用户session过期");
}
try {
Map<String, Object> map = new HashMap<>();
map.put("biz_org_code", bizOrgCode);
List<SocialPower> socials = (List<SocialPower>) socialPowerService.listByMap(map);
List<SocialPowerImportParam> socialList = new ArrayList<>();
if (!CollectionUtils.isEmpty(socials)) {
socials.forEach(x -> {
SocialPowerImportParam s = new SocialPowerImportParam();
BeanUtils.copyProperties(x, s);
socialList.add(s);
});
}
FileHelper.exportExcel(socialList, "社会联动力量列表", "社会联动力量信息", SocialPowerImportParam.class, "社会联动力量.xls", response);
return CommonResponseUtil.success("导出成功");
} catch (Exception e) {
return CommonResponseUtil.failure("导出社会联动力量失败");
}
}
}
......@@ -20,6 +20,8 @@ public interface EmergencyMapper extends BaseMapper{
*/
Map<String, Object> selectEmergencyMaterials();
Map<String, Object> getEmergencyMaterials();
/**
* 应急物资详情
* @param bizOrgCode
......
package com.yeejoin.equipmanage.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.equipmanage.common.entity.SocialPower;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
/**
* 社会力量表 Mapper 接口
*
* @author system_generator
* @date 2022-02-18
*/
public interface SocialPowerMapper extends BaseMapper<SocialPower> {
Page<SocialPower> listPage(@Param("page") Page page, @Param("dto") SocialPower dto);
List<Map<String, Object>> getSocialPowerList();
}
......@@ -26,6 +26,8 @@ public interface IEmergencyService {
Map<String, Object> emergencyMaterials();
Map<String, Object> getEmergencyMaterials();
Page<Map<String, Object>> emergencyMaterialsDetails(Page<Map<String, Object>> page, String bizOrgCode);
Page<Map<String, Object>> selectFireMonitor(Page<Map<String, Object>> page, String bizOrgCode,String code);
......
package com.yeejoin.equipmanage.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yeejoin.equipmanage.common.entity.SocialPower;
import java.util.List;
import java.util.Map;
/**
* 社会力量表
*
* @author system_generator
* @date 2022-02-18
*/
public interface ISocialPowerService extends IService<SocialPower> {
Page<SocialPower> listPage(Page page, SocialPower socialPower);
List<Map<String, Object>> getSocialPowerList();
}
......@@ -657,4 +657,9 @@ public class EmergencyServiceImpl implements IEmergencyService {
}
return dataMap;
}
@Override
public Map<String, Object> getEmergencyMaterials() {
return emergencyMapper.getEmergencyMaterials();
}
}
package com.yeejoin.equipmanage.service.impl;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yeejoin.equipmanage.common.entity.SocialPower;
import com.yeejoin.equipmanage.mapper.SocialPowerMapper;
import com.yeejoin.equipmanage.service.ISocialPowerService;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
/**
* 社会力量表服务实现类
*
* @author system_generator
* @date 2022-02-18
*/
@Service
public class SocialPowerServiceImpl extends ServiceImpl<SocialPowerMapper, SocialPower> implements ISocialPowerService {
@Override
public Page<SocialPower> listPage(Page page, SocialPower socialPower) {
Page<SocialPower> pages = this.baseMapper.listPage(page, socialPower);
return pages;
}
@Override
public List<Map<String, Object>> getSocialPowerList() {
return this.baseMapper.getSocialPowerList();
}
}
\ No newline at end of file
......@@ -1039,4 +1039,30 @@
) ENGINE=InnoDB AUTO_INCREMENT=20220218 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='故障案例表';
</sql>
</changeSet>
<changeSet author="keyong" id="1698392228">
<preConditions onFail="MARK_RAN">
<not>
<tableExists tableName="wl_social_power"/>
</not>
</preConditions>
<comment>create table wl_social_power 社会力量表</comment>
<sql>
CREATE TABLE `wl_social_power` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`company_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '单位名称',
`location` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '所在地',
`contact_user` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '联系人',
`contact_phone` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '联系电话',
`arrival_distance` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '到站距离',
`arrival_time` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '到站时间',
`remark` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '备注信息',
`create_date` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_date` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
`biz_org_code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '机构编码',
`biz_org_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '机构/部门名称',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=20240103 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='社会力量表';
</sql>
</changeSet>
</databaseChangeLog>
\ No newline at end of file
......@@ -1364,4 +1364,52 @@
wlesal.create_date DESC
</select>
<select id="getEmergencyMaterials" resultType="java.util.Map">
SELECT
*
FROM (
(SELECT
COUNT(1) AS fireExtinguisher,
COUNT( CASE WHEN wes.equip_status = '1' THEN 1 END ) AS fireExtinguisherYellowCount,
COUNT( CASE WHEN wes.equip_status = '2' THEN 1 END ) AS fireExtinguisherRedCount
FROM
wl_equipment_specific wes
WHERE wes.equipment_code LIKE CONCAT('3104', '%')) AS fireExtinguisherStates,
(SELECT
COUNT(1) AS fireHydrant,
COUNT( CASE WHEN wes.equip_status = '1' THEN 1 END ) AS fireHydrantYellowCount,
COUNT( CASE WHEN wes.equip_status = '2' THEN 1 END ) AS fireHydrantRedCount
FROM
wl_equipment_specific wes
WHERE wes.equipment_code LIKE CONCAT('3105', '%')) AS fireHydrantStates,
(SELECT
COUNT(1) AS fireShovel,
COUNT( CASE WHEN wes.equip_status = '1' THEN 1 END ) AS fireShovelYellowCount,
COUNT( CASE WHEN wes.equip_status = '2' THEN 1 END ) AS fireShovelRedCount
FROM
wl_equipment_specific wes
WHERE wes.equipment_code LIKE CONCAT('3910', '%')) AS fireShovelStates,
(SELECT
COUNT(1) AS fireAxe,
COUNT( CASE WHEN wes.equip_status = '1' THEN 1 END ) AS fireAxeYellowCount,
COUNT( CASE WHEN wes.equip_status = '2' THEN 1 END ) AS fireAxeRedCount
FROM
wl_equipment_specific wes
WHERE wes.equipment_code LIKE CONCAT('3904', '%')) AS fireAxeStates,
(SELECT
COUNT(1) AS fireBucket,
COUNT( CASE WHEN wes.equip_status = '1' THEN 1 END ) AS fireBucketYellowCount,
COUNT( CASE WHEN wes.equip_status = '2' THEN 1 END ) AS fireBucketRedCount
FROM
wl_equipment_specific wes
WHERE wes.equipment_code LIKE CONCAT('3911', '%')) AS fireBucketStates,
(SELECT
COUNT(1) AS respirator,
COUNT( CASE WHEN wes.equip_status = '1' THEN 1 END ) AS respiratorYellowCount,
COUNT( CASE WHEN wes.equip_status = '2' THEN 1 END ) AS respiratorRedCount
FROM
wl_equipment_specific wes
WHERE wes.equipment_code LIKE CONCAT('1106', '%')) AS respiratorStates
)
</select>
</mapper>
<?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="com.yeejoin.equipmanage.mapper.SocialPowerMapper">
<select id="listPage" resultType="com.yeejoin.equipmanage.common.entity.SocialPower">
SELECT
wsp.*
FROM
wl_social_power wsp
<where>
<if test="dto.bizOrgCode != null and dto.bizOrgCode != ''">
wsp.biz_org_code LIKE CONCAT(#{dto.bizOrgCode},'%')
</if>
<if test="dto.companyName != null and dto.companyName != ''">
AND wsp.company_name like CONCAT('%', #{dto.companyName},'%')
</if>
<if test="dto.contactUser != null and dto.contactUser != ''">
AND wsp.contact_user like CONCAT('%', #{dto.contactUser},'%')
</if>
<if test="dto.remark != null and dto.remark != ''">
AND wsp.remark like CONCAT('%', #{dto.remark},'%')
</if>
</where>
ORDER BY
wsp.create_date DESC
</select>
<select id="getSocialPowerList" resultType="Map">
SELECT
count(1) AS `value`
FROM
wl_social_power wsp
</select>
</mapper>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment