Commit 66f4b62f authored by tianbo's avatar tianbo

安全问题追溯提交

parent b154420d
package com.yeejoin.amos.boot.module.jg.api.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.typroject.tyboot.core.rdbms.orm.entity.BaseEntity;
import java.util.Date;
/**
* 安全追溯问题
*
* @author system_generator
* @date 2024-05-21
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("tzs_safety_problem_tracing")
public class SafetyProblemTracing extends BaseEntity {
private static final long serialVersionUID = 1L;
/**
* 问题编号
*/
@TableField("problem_num")
private String problemNum;
/**
* 问题类型(维保超期、检验超期、资质超期等)
*/
@TableField("problem_type")
private String problemType;
/**
* 问题来源类型(1个人、2设备、3企业)
*/
@TableField("source_type")
private String sourceType;
/**
* 问题来源ID(个人ID、设备ID、企业ID)
*/
@TableField("source_id")
private String sourceId;
/**
* 问题描述
*/
@TableField("problem_desc")
private String problemDesc;
/**
* 问题产生时间
*/
@TableField("problem_time")
private Date problemTime;
/**
* 主体单位名称
*/
@TableField("principal_unit")
private String principalUnit;
/**
* 主体单位统一代码
*/
@TableField("principal_unit_code")
private String principalUnitCode;
/**
* 主体单位类型(使用、安改维、检验检测等)
*/
@TableField("principal_unit_type")
private String principalUnitType;
/**
* 管辖机构名称
*/
@TableField("governing_body")
private String governingBody;
/**
* 管辖机构单位代码
*/
@TableField("governing_body_code")
private String governingBodyCode;
/**
* 管辖机构组织机构代码(例如50*60*70)
*/
@TableField("governing_body_org_code")
private String governingBodyOrgCode;
/**
* 主体单位所属区域名称(陕西省/西安市/莲湖区)
*/
@TableField("region_name")
private String regionName;
/**
* 所属区域代码(6100000/6100010/6100011)
*/
@TableField("region_code")
private String regionCode;
/**
* 问题状态(0未处理、1已处理)
*/
@TableField("problem_status")
private String problemStatus;
/**
* 问题状态代码(0未处理、1已处理)
*/
@TableField("problem_status_code")
private String problemStatusCode;
/**
* 更新人员
*/
@TableField("rec_user")
private String recUser;
/**
* 创建人ID
*/
@TableField("create_user_id")
private String createUserId;
/**
* 创建时间
*/
@TableField("create_date")
private Date createDate;
/**
* 创建人
*/
@TableField("create_user")
private String createUser;
/**
* 企业负责人
*/
@TableField("unit_charger")
private String unitCharger;
/**
* 企业负责人联系电话
*/
@TableField("unit_charger_phone")
private String unitChargerPhone;
/**
* 设备监管码
*/
@TableField("equip_supervise_code")
private String equipSuperviseCode;
/**
* 设备种类
*/
@TableField("equip_list")
private String equipList;
/**
* 人员名称
*/
@TableField("user_name")
private String userName;
/**
* 人员电话
*/
@TableField("user_phone")
private String userPhone;
/**
* 人员岗位
*/
@TableField("user_post")
private String userPost;
/**
* 扩展信息
*/
@TableField("extraInfo")
private String extraInfo;
/**
* 设备种类代码
*/
@TableField("equip_list_code")
private String equipListCode;
/**
* 问题类型代码(维保超期、检验超期、资质超期等)
*/
@TableField("problem_type_code")
private String problemTypeCode;
/**
* 问题来源类型code(1个人、2设备、3企业)
*/
@TableField("source_type_code")
private String sourceTypeCode;
/**
* 问题等级(一级、二级、三级)
*/
@TableField("problem_level")
private String problemLevel;
/**
* 问题等级code
*/
@TableField("problem_level_code")
private String problemLevelCode;
}
package com.yeejoin.amos.boot.module.jg.api.enums;
/**
* 业务类型枚举
*
* @author Administrator
*/
public enum SafetyProblemSourceTypeEnum {
/**
* 问题主体类型
*/
UNIT("2", "企业"),
EQUIP("3", "设备"),
PERSONNEL("1", "个人");
private final String code;
private final String name;
SafetyProblemSourceTypeEnum(String code, String name) {
this.code = code;
this.name = name;
}
public static String getNameByType(String code) {
String name = null;
for (SafetyProblemSourceTypeEnum enumOne : SafetyProblemSourceTypeEnum.values()) {
if (enumOne.getCode().equals(code)) {
name = enumOne.getName();
break;
}
}
return name;
}
public String getCode() {
return code;
}
public String getName() {
return name;
}
}
package com.yeejoin.amos.boot.module.jg.api.enums;
import lombok.Getter;
/**
* 业务类型枚举
*
* @author Administrator
*/
public enum SafetyProblemStatusEnum {
/**
* 问题主体类型
*/
UNHANDLED("0", "未处理"),
HANDLED("1", "已处理");
@Getter
private final String code;
@Getter
private final String name;
SafetyProblemStatusEnum(String code, String name) {
this.code = code;
this.name = name;
}
public static String getNameByType(String code) {
String name = null;
for (SafetyProblemStatusEnum enumOne : SafetyProblemStatusEnum.values()) {
if (enumOne.getCode().equals(code)) {
name = enumOne.getName();
break;
}
}
return name;
}
}
package com.yeejoin.amos.boot.module.jg.api.enums;
import lombok.Getter;
/**
* 业务类型枚举
*
* @author Administrator
*/
public enum SafetyProblemTypeEnum {
/**
* 问题主体类型
*/
JYCQ("2", "检验超期", "设备检验超期", "jy/cq"),
WBCQ("1", "维保超期", "设备维保超期", "wb/cq"),
ZZCQ("3", "资质超期", "企业资质超期", "zz/cq");
@Getter
private final String code;
@Getter
private final String name;
@Getter
private final String desc;
@Getter
private final String topic;
SafetyProblemTypeEnum(String code, String name, String desc, String topic) {
this.code = code;
this.name = name;
this.desc = desc;
this.topic = topic;
}
public static String getNameByType(String code) {
String name = null;
for (SafetyProblemTypeEnum enumOne : SafetyProblemTypeEnum.values()) {
if (enumOne.getCode().equals(code)) {
name = enumOne.getName();
break;
}
}
return name;
}
}
package com.yeejoin.amos.boot.module.jg.api.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.module.jg.api.entity.SafetyProblemTracing;
import com.yeejoin.amos.boot.module.jg.api.model.SafetyProblemTracingModel;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
/**
* 安全追溯问题 Mapper 接口
*
* @author system_generator
* @date 2024-05-21
*/
public interface SafetyProblemTracingMapper extends BaseMapper<SafetyProblemTracing> {
Page<SafetyProblemTracingModel> queryForSafetyProblemTracingPage(Page<SafetyProblemTracingModel> page, @Param("problemModel")SafetyProblemTracingModel problemModel);
Page<Map<String, Object>> queryEquipListByProblemId(Page<Map<String, Object>> page, String problemId);
Page<Map<String, Object>> queryPrincipalUnitByProblemId(Page<Map<String, Object>> page, String problemId, String sourceTypeCode);
List<Map<String, Object>> queryOutOfMaintenanceRecord();
}
package com.yeejoin.amos.boot.module.jg.api.model;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.typroject.tyboot.core.rdbms.model.BaseModel;
import java.util.Date;
import java.util.Map;
/**
* 安全追溯问题
*
* @author system_generator
* @date 2024-05-21
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "SafetyProblemTracingModel", description = "安全追溯问题")
public class SafetyProblemTracingModel extends BaseModel {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "问题编号")
private String problemNum;
@ApiModelProperty(value = "问题类型(维保超期、检验超期、资质超期等)")
private String problemType;
@ApiModelProperty(value = "问题类型图片")
private String problemTypePic;
@ApiModelProperty(value = "问题来源类型(1个人、2设备、3企业)")
private String sourceType;
@ApiModelProperty(value = "问题来源ID(个人ID、设备ID、企业ID)")
private String sourceId;
@ApiModelProperty(value = "问题描述")
private String problemDesc;
@JsonFormat(pattern = "yyyy-MM-dd")
@ApiModelProperty(value = "问题产生查询开始时间")
private Date problemTimeStart;
@ApiModelProperty(value = "问题产生时间")
private Date problemTime;
@JsonFormat(pattern = "yyyy-MM-dd")
@ApiModelProperty(value = "问题产生查询结束时间")
private Date problemTimeEnd;
@ApiModelProperty(value = "主体单位名称")
private String principalUnit;
@ApiModelProperty(value = "主体单位统一代码")
private String principalUnitCode;
@ApiModelProperty(value = "主体单位类型(使用、安改维、检验检测等)")
private String principalUnitType;
@ApiModelProperty(value = "管辖机构名称")
private String governingBody;
@ApiModelProperty(value = "管辖机构单位代码")
private String governingBodyCode;
@ApiModelProperty(value = "管辖机构组织机构代码(例如50*60*70)")
private String governingBodyOrgCode;
@ApiModelProperty(value = "主体单位所属区域名称(陕西省/西安市/莲湖区)")
private String regionName;
@ApiModelProperty(value = "所属区域代码(6100000/6100010/6100011)")
private String regionCode;
@ApiModelProperty(value = "问题状态(0未处理、1已处理)")
private String problemStatus;
@ApiModelProperty(value = "问题状态代码(0未处理、1已处理)")
private String problemStatusCode;
@ApiModelProperty(value = "问题状态对象")
private Map<String, String> problemStatusObj;
@ApiModelProperty(value = "更新人员")
private String recUser;
@ApiModelProperty(value = "创建人ID")
private String createUserId;
@ApiModelProperty(value = "创建时间")
private Date createDate;
@ApiModelProperty(value = "创建人")
private String createUser;
@ApiModelProperty(value = "企业负责人")
private String unitCharger;
@ApiModelProperty(value = "企业负责人联系电话")
private String unitChargerPhone;
@ApiModelProperty(value = "设备监管码")
private String equipSuperviseCode;
@ApiModelProperty(value = "设备种类")
private String equipList;
@ApiModelProperty(value = "人员名称")
private String userName;
@ApiModelProperty(value = "人员电话")
private String userPhone;
@ApiModelProperty(value = "人员岗位")
private String userPost;
@ApiModelProperty(value = "扩展信息")
private String extraInfo;
@ApiModelProperty(value = "设备种类代码")
private String equipListCode;
@ApiModelProperty(value = "问题类型代码(维保超期、检验超期、资质超期等)")
private String problemTypeCode;
@ApiModelProperty(value = "问题来源类型code(1个人、2设备、3企业)")
private String sourceTypeCode;
@ApiModelProperty(value = "问题等级(一级、二级、三级)")
private String problemLevel;
@ApiModelProperty(value = "问题等级code")
private String problemLevelCode;
}
package com.yeejoin.amos.boot.module.jg.api.service;
/**
* 安全追溯问题接口类
*
* @author system_generator
* @date 2024-05-21
*/
public interface ISafetyProblemTracingService {}
<?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.amos.boot.module.jg.api.mapper.SafetyProblemTracingMapper">
<select id="queryForSafetyProblemTracingPage"
resultType="com.yeejoin.amos.boot.module.jg.api.model.SafetyProblemTracingModel">
select
spt.*,
(select extend::json->>'pic' from cb_data_dictionary where type = 'ISSUE_TYPE' and code = spt.problem_type_code) problemTypePic
from tzs_safety_problem_tracing spt
<where>
spt.is_delete = false
<if test="problemModel.problemNum != null and problemModel.problemNum != ''">
and spt.problem_num = LIKE CONCAT('%', #{problemModel.problemNum}, '%')
</if>
<if test="problemModel.problemStatus != null and problemModel.problemStatus != ''">
and spt.problem_status = #{problemModel.problemStatus}
</if>
<if test="problemModel.sourceTypeCode != null and problemModel.sourceTypeCode != ''">
and spt.source_type_code = #{problemModel.sourceTypeCode}
</if>
<if test="problemModel.problemLevelCode != null and problemModel.problemLevelCode != ''">
and spt.problem_level_code = #{problemModel.problemLevelCode}
</if>
<if test="problemModel.problemTypeCode != null and problemModel.problemTypeCode != ''">
and spt.problem_type_code = #{problemModel.problemTypeCode}
</if>
<if test="problemModel.problemTimeStart != null and problemModel.problemTimeEnd != null">
and to_char(spt.problem_time, 'YYYY-MM-DD') >= to_char(#{problemModel.problemTimeStart}::timestamp, 'YYYY-MM-DD') and to_char(spt.problem_time, 'YYYY-MM-DD') <![CDATA[<=]]> to_char(#{problemModel.problemTimeEnd}::timestamp, 'YYYY-MM-DD')
</if>
<if test="problemModel.problemDesc != null and problemModel.problemDesc != ''">
and spt.problem_desc like CONCAT('%', #{problemModel.problemDesc}, '%')
</if>
<if test="problemModel.sourceId != null and problemModel.sourceId != ''">
and spt.source_id = #{problemModel.sourceId}
</if>
<if test="problemModel.governingBodyOrgCode != null and problemModel.governingBodyOrgCode != ''">
and spt.governing_body_org_code like CONCAT(#{problemModel.governingBodyOrgCode}, '%')
</if>
<if test="problemModel.governingBodyCode != null and problemModel.governingBodyCode != ''">
and spt.governing_body_code = #{problemModel.governingBodyCode}
</if>
<if test="problemModel.principalUnit != null and problemModel.principalUnit != ''">
and spt.principal_unit like CONCAT('%', #{problemModel.principalUnit}, '%')
</if>
<if test="problemModel.principalUnitType != null and problemModel.principalUnitType != ''">
and spt.principal_unit_type = #{problemModel.principalUnitType}
</if>
<if test="problemModel.regionCode != null and problemModel.regionCode != ''">
and spt.region_code like CONCAT(#{problemModel.regionCode}, '%')
</if>
</where>
order by spt.create_date desc
</select>
<select id="queryEquipListByProblemId" resultType="java.util.Map">
SELECT
spt.sequence_nbr problemSeq,
spt.source_id record,
ui."USE_UNIT_CREDIT_CODE" useUnitCreditCode,
ui."USE_UNIT_NAME" useUnitName,
(select name from tz_equipment_category where code = ri."EQU_LIST") equList,
(select name from tz_equipment_category where code = ri."EQU_CATEGORY") equCategory,
oi."CODE96333" code96333,
oi."SUPERVISORY_CODE" supervisoryCode
FROM
tzs_safety_problem_tracing spt
LEFT JOIN idx_biz_jg_use_info ui on ui."RECORD" = spt.source_id
LEFT JOIN idx_biz_jg_register_info ri on ri."RECORD" = spt.source_id
LEFT JOIN idx_biz_jg_other_info oi on oi."RECORD" = spt.source_id
WHERE
spt.is_delete = '0' and spt.sequence_nbr = #{problemId}
</select>
<select id="queryPrincipalUnitByProblemId" resultType="java.util.Map">
SELECT * FROM (
SELECT
'2' sourceTypeCode,
spt.sequence_nbr problemSeq,
ei.sequence_nbr sequenceNbr,
ei.use_unit unitName,
ei.use_unit_code useUnitCode,
ei.unit_type unitType,
ei.governing_body governingBody,
ei.use_contact useContact,
ei.contact_phone contactPhone
FROM
tzs_safety_problem_tracing spt
LEFT JOIN tz_base_enterprise_info ei on ei.sequence_nbr = spt.source_id
WHERE
spt.sequence_nbr = #{problemId}
UNION
SELECT
'3' sourceTypeCode,
spt.sequence_nbr problemSeq,
ei.sequence_nbr sequenceNbr,
ei.use_unit unitName,
ei.use_unit_code useUnitCode,
ei.unit_type unitType,
ei.governing_body governingBody,
ei.use_contact useContact,
ei.contact_phone contactPhone
FROM
tzs_safety_problem_tracing spt
LEFT JOIN tz_base_enterprise_info ei on ei.use_unit_code = spt.principal_unit_code
WHERE
spt.sequence_nbr = #{problemId}
) t WHERE t.sourceTypeCode = #{sourceTypeCode}
</select>
<select id="queryOutOfMaintenanceRecord" resultType="java.util.Map">
SELECT
mri."RECORD",
mri."INFORM_END" informEnd,
ui."USE_UNIT_NAME" useUnitName,
ui."USE_UNIT_CREDIT_CODE" useUnitCreditCode,
(select unit_type from tz_base_enterprise_info where use_unit_code = ui."USE_UNIT_CREDIT_CODE") unitType,
ri."EQU_LIST" equListCode,
(SELECT name FROM tz_equipment_category WHERE code = ri."EQU_LIST") equList,
(SELECT name FROM tz_equipment_category WHERE code = ri."EQU_CATEGORY") equCategory,
ri."EQU_CATEGORY" equCategoryCode,
oi."CODE96333" code96333,
oi."SUPERVISORY_CODE" supervisoryCode,
si."ORG_BRANCH_NAME" orgBranchName,
si."ORG_BRANCH_CODE" orgBranchCode,
si."COMPANY_ORG_BRANCH_CODE" companyOrgBranchCode
FROM
idx_biz_jg_maintenance_record_info mri
LEFT JOIN idx_biz_jg_use_info ui ON ui."RECORD" = mri."RECORD"
LEFT JOIN idx_biz_jg_register_info ri ON ri."RECORD" = mri."RECORD"
LEFT JOIN idx_biz_jg_other_info oi ON oi."RECORD" = mri."RECORD"
LEFT JOIN idx_biz_jg_supervision_info si on si."RECORD" = mri."RECORD"
WHERE mri."INFORM_END" <![CDATA[<]]> to_char(now(), 'YYYY-MM-DD')
AND ui."DATA_SOURCE" like 'jg%'
</select>
</mapper>
package com.yeejoin.amos.boot.module.jg.biz.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.biz.common.bo.CompanyBo;
import com.yeejoin.amos.boot.biz.common.bo.ReginParams;
import com.yeejoin.amos.boot.biz.common.controller.BaseController;
import com.yeejoin.amos.boot.module.jg.api.model.SafetyProblemTracingModel;
import com.yeejoin.amos.boot.module.jg.biz.service.impl.SafetyProblemTracingGenServiceImpl;
import com.yeejoin.amos.boot.module.jg.biz.service.impl.SafetyProblemTracingServiceImpl;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
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.HttpServletRequest;
import java.util.List;
import java.util.Map;
/**
* 安全追溯问题
*
* @author system_generator
* @date 2024-05-21
*/
@RestController
@Api(tags = "安全追溯问题Api")
@RequestMapping(value = "/safety-problem-tracing")
public class SafetyProblemTracingController extends BaseController {
@Autowired
SafetyProblemTracingServiceImpl safetyProblemTracingServiceImpl;
@Autowired
SafetyProblemTracingGenServiceImpl safetyProblemTracingGenService;
/**
* 新增安全追溯问题
*
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@PostMapping(value = "/save")
@ApiOperation(httpMethod = "POST", value = "新增安全追溯问题", notes = "新增安全追溯问题")
public ResponseModel<SafetyProblemTracingModel> save(@RequestBody SafetyProblemTracingModel model) {
model = safetyProblemTracingServiceImpl.createWithModel(model);
return ResponseHelper.buildResponse(model);
}
/**
* 根据sequenceNbr更新
*
* @param sequenceNbr 主键
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@PutMapping(value = "/{sequenceNbr}")
@ApiOperation(httpMethod = "PUT", value = "根据sequenceNbr更新安全追溯问题", notes = "根据sequenceNbr更新安全追溯问题")
public ResponseModel<SafetyProblemTracingModel> updateBySequenceNbrSafetyProblemTracing(@RequestBody SafetyProblemTracingModel model,@PathVariable(value = "sequenceNbr") Long sequenceNbr) {
model.setSequenceNbr(sequenceNbr);
return ResponseHelper.buildResponse(safetyProblemTracingServiceImpl.updateWithModel(model));
}
/**
* 根据sequenceNbr删除
*
* @param sequenceNbr 主键
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@DeleteMapping(value = "/{sequenceNbr}")
@ApiOperation(httpMethod = "DELETE", value = "根据sequenceNbr删除安全追溯问题", notes = "根据sequenceNbr删除安全追溯问题")
public ResponseModel<Boolean> deleteBySequenceNbr(HttpServletRequest request, @PathVariable(value = "sequenceNbr") Long sequenceNbr){
return ResponseHelper.buildResponse(safetyProblemTracingServiceImpl.removeById(sequenceNbr));
}
/**
* 根据sequenceNbr查询
*
* @param sequenceNbr 主键
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/{sequenceNbr}")
@ApiOperation(httpMethod = "GET",value = "根据sequenceNbr查询单个安全追溯问题", notes = "根据sequenceNbr查询单个安全追溯问题")
public ResponseModel<SafetyProblemTracingModel> selectOne(@PathVariable Long sequenceNbr) {
return ResponseHelper.buildResponse(safetyProblemTracingServiceImpl.selectOne(sequenceNbr));
}
/**
* 列表分页查询
*
* @param current 当前页
* @param current 每页大小
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@PostMapping(value = "/page")
@ApiOperation(httpMethod = "POST",value = "分页查询安全追溯问题", notes = "分页查询安全追溯问题")
public ResponseModel<Page<SafetyProblemTracingModel>> queryForPage(@RequestParam(value = "current") int current,@RequestParam
(value = "size") int size, @RequestBody(required = false) SafetyProblemTracingModel problemModel) {
ReginParams loginParams = getSelectedOrgInfo();
CompanyBo company = loginParams.getCompany();
if (company.getLevel().equals("company")) {
return ResponseHelper.buildResponse(new Page<>());
}
Page<SafetyProblemTracingModel> page = new Page<>();
page.setCurrent(current);
page.setSize(size);
problemModel.setGoverningBodyOrgCode(loginParams.getCompany().getOrgCode());
return ResponseHelper.buildResponse(safetyProblemTracingServiceImpl.queryForSafetyProblemTracingPage(page, problemModel));
}
/**
* 设备问题列表分页查询
*
* @param current 当前页
* @param size 每页大小
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/equipId/page")
@ApiOperation(httpMethod = "GET",value = "设备问题列表分页查询", notes = "设备问题列表分页查询")
public ResponseModel<Page<SafetyProblemTracingModel>> queryProblemPageByEquipId(@RequestParam(value = "current") int current,@RequestParam
(value = "size") int size, @RequestParam(value = "record") String equipId) {
Page<SafetyProblemTracingModel> page = new Page<>();
page.setCurrent(current);
page.setSize(size);
return ResponseHelper.buildResponse(safetyProblemTracingServiceImpl.queryProblemPageByEquipId(page, equipId));
}
/**
* 列表全部数据查询
*
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(httpMethod = "GET",value = "列表全部数据查询安全追溯问题", notes = "列表全部数据查询安全追溯问题")
@GetMapping(value = "/list")
public ResponseModel<List<SafetyProblemTracingModel>> selectForList() {
return ResponseHelper.buildResponse(safetyProblemTracingServiceImpl.queryForSafetyProblemTracingList());
}
/**
* 根据问题ID及问题类型查询关联设备列表
*
* @param problemId 问题Id
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(httpMethod = "GET",value = "根据问题ID及问题类型查询关联设备列表", notes = "根据问题ID及问题类型查询关联设备列表")
@GetMapping(value = "/equip/list")
public ResponseModel<Page<Map<String, Object>>> queryEquipListProblemById(@RequestParam(value = "current") int current,@RequestParam
(value = "size") int size, @RequestParam(value = "sequenceNbr") String problemId) {
Page<Map<String, Object>> page = new Page<>();
page.setCurrent(current);
page.setSize(size);
return ResponseHelper.buildResponse(safetyProblemTracingServiceImpl.queryEquipListByProblemId(page, problemId));
}
/**
* 根据问题ID及问题类型查询关联企业
*
* @param problemId 问题Id
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(httpMethod = "GET",value = "根据问题ID及问题类型查询关联企业", notes = "根据问题ID及问题类型查询关联企业")
@GetMapping(value = "/unit/list")
public ResponseModel<Page<Map<String, Object>>> queryPrincipalUnitByProblemId(@RequestParam(value = "current") int current,@RequestParam
(value = "size") int size, @RequestParam(value = "sequenceNbr") String problemId) {
Page<Map<String, Object>> page = new Page<>();
page.setCurrent(current);
page.setSize(size);
return ResponseHelper.buildResponse(safetyProblemTracingServiceImpl.queryPrincipalUnitByProblemId(page, problemId));
}
/**
* test
*
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@ApiOperation(httpMethod = "GET",value = "test", notes = "test")
@GetMapping(value = "/test")
public ResponseModel<String> test() {
safetyProblemTracingGenService.queryEquipListByProblemId();
return ResponseHelper.buildResponse("success");
}
}
package com.yeejoin.amos.boot.module.jg.biz.listener;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.google.common.collect.Lists;
import com.yeejoin.amos.boot.biz.common.utils.RedisUtils;
import com.yeejoin.amos.boot.module.jg.api.entity.SafetyProblemTracing;
import com.yeejoin.amos.boot.module.jg.api.enums.SafetyProblemSourceTypeEnum;
import com.yeejoin.amos.boot.module.jg.api.enums.SafetyProblemStatusEnum;
import com.yeejoin.amos.boot.module.jg.api.enums.SafetyProblemTypeEnum;
import com.yeejoin.amos.boot.module.jg.biz.service.impl.SafetyProblemTracingServiceImpl;
import com.yeejoin.amos.boot.module.jg.biz.service.impl.StartPlatformTokenService;
import lombok.extern.slf4j.Slf4j;
import org.eclipse.paho.client.mqttv3.MqttMessage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.typroject.tyboot.component.emq.EmqKeeper;
import org.typroject.tyboot.component.emq.EmqxListener;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
@Component
@Slf4j
public class SafetyProblemTopicMessage extends EmqxListener {
@Resource
protected EmqKeeper emqKeeper;
@Value("${safety.problem.tracing.topic:safetyProblemTracing/wb/cq}")
private String problemEventTopic;
@PostConstruct
void init() throws Exception {
emqKeeper.subscript(problemEventTopic, 2, this);
}
@Autowired
RedisUtils redisUtil;
@Autowired
StartPlatformTokenService platformTokenService;
@Autowired
SafetyProblemTracingServiceImpl safetyProblemTracingService;
@Override
public void processMessage(String topic, MqttMessage message) {
// TODO 提出单独模块处理生成问题
log.info("接收问题生产消息开始");
platformTokenService.getToken();
JSONObject jsonObject = JSON.parseObject(message.toString());
if (topic.endsWith(SafetyProblemTypeEnum.WBCQ.getTopic())) {
handleMaintenanceProblem(jsonObject);
}
log.info("接收问题生产消息完成");
}
private void handleMaintenanceProblem(JSONObject jsonObject) {
JSONArray maintenanceRecords = jsonObject.getJSONArray("outOfMaintenanceRecords");
List<SafetyProblemTracing> safetyProblemTracingList = Lists.newArrayList();
maintenanceRecords.forEach(item -> {
JSONObject json = (JSONObject) item;
SafetyProblemTracing safetyProblemTracing = new SafetyProblemTracing();
// safetyProblemTracing.setProblemNum(json.getString("problemNum"));
safetyProblemTracing.setProblemType(SafetyProblemTypeEnum.WBCQ.getName());
safetyProblemTracing.setProblemTypeCode(SafetyProblemTypeEnum.WBCQ.getCode());
safetyProblemTracing.setProblemDesc(SafetyProblemTypeEnum.WBCQ.getDesc());
// safetyProblemTracing.setProblemLevel(json.getString("problemLevel"));
// safetyProblemTracing.setProblemLevelCode(json.getString("problemLevelCode"));
safetyProblemTracing.setSourceType(SafetyProblemSourceTypeEnum.EQUIP.getName());
safetyProblemTracing.setSourceTypeCode(SafetyProblemSourceTypeEnum.EQUIP.getCode());
safetyProblemTracing.setSourceId(json.getString("RECORD"));
safetyProblemTracing.setProblemTime(new Date());
safetyProblemTracing.setEquipSuperviseCode(json.getString("supervisoryCode"));
safetyProblemTracing.setEquipList(json.getString("equList"));
safetyProblemTracing.setEquipListCode(json.getString("equListCode"));
safetyProblemTracing.setPrincipalUnit(json.getString("useUnitName"));
safetyProblemTracing.setPrincipalUnitCode(json.getString("useUnitCreditCode"));
safetyProblemTracing.setPrincipalUnitType(json.getString("unitType"));
safetyProblemTracing.setGoverningBody(json.getString("orgBranchName"));
safetyProblemTracing.setGoverningBodyCode(json.getString("companyOrgBranchCode"));
safetyProblemTracing.setGoverningBodyOrgCode(json.getString("orgBranchCode"));
// safetyProblemTracing.setRegionName(json.getString("regionName"));
safetyProblemTracing.setRegionCode(json.getString("regionCode"));
safetyProblemTracing.setCreateDate(new Date());
// safetyProblemTracing.setCreateUser(json.getString("createUser"));
// safetyProblemTracing.setCreateUserId(json.getString("createUserId"));
safetyProblemTracing.setProblemStatus(SafetyProblemStatusEnum.UNHANDLED.getName());
safetyProblemTracing.setProblemStatusCode(SafetyProblemStatusEnum.UNHANDLED.getCode());
safetyProblemTracingList.add(safetyProblemTracing);
});
safetyProblemTracingService.saveBatch(safetyProblemTracingList);
}
}
......@@ -1263,7 +1263,7 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
// DATA_SOURCE 为“jg”的数据(从监管新加的设备)
// 20240314 提出的监管业务不要让企业用户选到之前一码通认领或补录的设备,让从监管业务中去新增
BoolQueryBuilder dBuilder = QueryBuilders.boolQuery();
dBuilder.must(QueryBuilders.termQuery("DATA_SOURCE", QueryParser.escape("jg")));
dBuilder.must(QueryBuilders.prefixQuery("DATA_SOURCE", "jg"));
boolMust.must(dBuilder);
String queryType = map.getString("QUERY_TYPE");
......
......@@ -1995,7 +1995,11 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
workflowResultDto.setNextTaskCode("已完成");
workflowResultDto.setNextTaskId(jgUseRegistration.getNextTaskId());
workflowResultDto.setNextExecutorUserIds(jgUseRegistration.getNextExecuteUserIds());
this.updateData(jgUseRegistration.getSequenceNbr(), "0", workflowResultDto, null, false);
if (jgUseRegistration.getManageType().equals("unit")) {
this.updateUseRegUnitData(jgUseRegistration.getSequenceNbr(), "0", workflowResultDto, false);
} else {
this.updateData(jgUseRegistration.getSequenceNbr(), "0", workflowResultDto, null, false);
}
});
}
}
\ No newline at end of file
package com.yeejoin.amos.boot.module.jg.biz.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.yeejoin.amos.boot.module.jg.api.mapper.SafetyProblemTracingMapper;
import lombok.SneakyThrows;
import net.javacrumbs.shedlock.spring.annotation.SchedulerLock;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
import org.typroject.tyboot.component.emq.EmqKeeper;
import java.nio.charset.StandardCharsets;
import java.util.List;
import java.util.Map;
/**
* 安全追溯问题生成服务实现类
*
* @author system_generator
* @date 2024-05-21
*/
@Service
public class SafetyProblemTracingGenServiceImpl{
@Autowired
SafetyProblemTracingMapper safetyProblemTracingMapper;
@Autowired
EmqKeeper emqKeeper;
@Scheduled(cron = "0 0 1 * * ?")
@SchedulerLock(name = "executeSafetyProblemCheck1", lockAtMostFor = "PT5H", lockAtLeastFor = "PT60S")
public void queryEquipListByProblemId() {
executeMaintenanceCheck();
}
@SneakyThrows
private void executeMaintenanceCheck() {
List<Map<String, Object>> outOfMaintenanceRecords = safetyProblemTracingMapper.queryOutOfMaintenanceRecord();
JSONObject jsonObject = new JSONObject();
jsonObject.put("outOfMaintenanceRecords", outOfMaintenanceRecords);
emqKeeper.getMqttClient().publish("wb/cq", jsonObject.toString().getBytes(StandardCharsets.UTF_8), 2, false);
}
}
\ No newline at end of file
package com.yeejoin.amos.boot.module.jg.biz.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.google.common.collect.Lists;
import com.yeejoin.amos.boot.module.jg.api.entity.SafetyProblemTracing;
import com.yeejoin.amos.boot.module.jg.api.enums.SafetyProblemSourceTypeEnum;
import com.yeejoin.amos.boot.module.jg.api.mapper.SafetyProblemTracingMapper;
import com.yeejoin.amos.boot.module.jg.api.model.SafetyProblemTracingModel;
import com.yeejoin.amos.boot.module.jg.api.service.ISafetyProblemTracingService;
import com.yeejoin.amos.boot.module.jg.biz.service.IIdxBizJgRegisterInfoService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.typroject.tyboot.core.rdbms.service.BaseService;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 安全追溯问题服务实现类
*
* @author system_generator
* @date 2024-05-21
*/
@Service
public class SafetyProblemTracingServiceImpl extends BaseService<SafetyProblemTracingModel,SafetyProblemTracing,SafetyProblemTracingMapper> implements ISafetyProblemTracingService {
@Autowired
IIdxBizJgRegisterInfoService idxBizJgRegisterInfoService;
/**
* 分页查询
*/
public Page<SafetyProblemTracingModel> queryForSafetyProblemTracingPage(Page<SafetyProblemTracingModel> page, SafetyProblemTracingModel problemModel) {
return this.baseMapper.queryForSafetyProblemTracingPage(page, problemModel);
}
public Page<SafetyProblemTracingModel> queryProblemPageByEquipId(Page<SafetyProblemTracingModel> page, String equipId) {
SafetyProblemTracingModel problemModel = new SafetyProblemTracingModel();
problemModel.setSourceId(equipId);
return this.baseMapper.queryForSafetyProblemTracingPage(page, problemModel);
}
/**
* 根据ID查询
*/
public SafetyProblemTracingModel selectOne(Long sequenceNbr) {
SafetyProblemTracingModel entity = new SafetyProblemTracingModel();
LambdaQueryWrapper<SafetyProblemTracing> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(SafetyProblemTracing::getSequenceNbr, sequenceNbr);
SafetyProblemTracing problem = this.baseMapper.selectOne(queryWrapper);
BeanUtil.copyProperties(problem, entity);
Map<String, String> problemStatusObj = new HashMap<>();
problemStatusObj.put("problemStatusCode", entity.getProblemStatusCode());
entity.setProblemStatusObj(problemStatusObj);
return entity;
}
/**
* 列表查询 示例
*/
public List<SafetyProblemTracingModel> queryForSafetyProblemTracingList() {
return this.queryForList("" , false);
}
public Page<Map<String, Object>> queryEquipListByProblemId(Page<Map<String, Object>> page, String problemId) {
LambdaQueryWrapper<SafetyProblemTracing> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(SafetyProblemTracing::getSequenceNbr, problemId);
SafetyProblemTracing problem = this.baseMapper.selectOne(queryWrapper);
Page<Map<String, Object>> list = new Page<>();
if (problem.getSourceTypeCode().equals(SafetyProblemSourceTypeEnum.EQUIP.getCode())) {
list = this.baseMapper.queryEquipListByProblemId(page, problemId);
} else {
JSONObject jsonObject = new JSONObject();
jsonObject.put("USE_UNIT_CREDIT_CODE", problem.getPrincipalUnitCode());
jsonObject.put("number", page.getCurrent());
jsonObject.put("size", page.getSize());
Page<JSONObject> result = idxBizJgRegisterInfoService.queryForEquipmentRegisterPage(jsonObject);
List<Map<String, Object>> finalList = Lists.newArrayList();
result.getRecords().forEach(item -> {
Map<String, Object> map = new HashMap<>();
map.put("equList", item.get("EQU_LIST"));
map.put("equCategory", item.get("EQU_CATEGORY"));
map.put("useUnitName", item.get("USE_UNIT_NAME"));
map.put("code96333", item.get("CODE96333"));
map.put("supervisoryCode", item.get("SUPERVISORY_CODE"));
finalList.add(map);
});
BeanUtils.copyProperties(result, list);
list.setRecords(finalList);
}
return list;
}
public Page<Map<String, Object>> queryPrincipalUnitByProblemId(Page<Map<String, Object>> page, String problemId) {
LambdaQueryWrapper<SafetyProblemTracing> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(SafetyProblemTracing::getSequenceNbr, problemId);
SafetyProblemTracing problem = this.baseMapper.selectOne(queryWrapper);
return this.baseMapper.queryPrincipalUnitByProblemId(page, problemId, problem.getSourceTypeCode());
}
}
\ No newline at end of file
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