Commit dffd0d19 authored by suhuiguang's avatar suhuiguang

Merge branch 'develop_tzs_register' into develop_tzs_edit

# Conflicts: # amos-boot-system-tzs/amos-boot-module-jg/amos-boot-module-jg-biz/src/main/java/com/yeejoin/amos/boot/module/jg/biz/edit/event/BaseBizDataChangeEvent.java # amos-boot-system-tzs/amos-boot-module-jg/amos-boot-module-jg-biz/src/main/java/com/yeejoin/amos/boot/module/jg/biz/edit/listener/ChangeLogInsertEventListener.java # amos-boot-system-tzs/amos-boot-module-jg/amos-boot-module-jg-biz/src/main/java/com/yeejoin/amos/boot/module/jg/biz/edit/process/biz/UseRegisterUpdateService.java # amos-boot-system-tzs/amos-boot-module-jg/amos-boot-module-jg-biz/src/main/java/com/yeejoin/amos/boot/module/jg/biz/edit/process/equip/CommonEquipDataProcessService.java # amos-boot-system-tzs/amos-boot-module-jg/amos-boot-module-jg-biz/src/main/java/com/yeejoin/amos/boot/module/jg/biz/edit/process/equip/EquipChangeDataUpdateServiceImpl.java # amos-boot-system-tzs/amos-boot-module-jg/amos-boot-module-jg-biz/src/main/java/com/yeejoin/amos/boot/module/jg/biz/event/listener/ChangeDataEventListener.java # amos-boot-system-tzs/amos-boot-module-jg/amos-boot-module-jg-biz/src/main/java/com/yeejoin/amos/boot/module/jg/biz/event/listener/ChangeLogInsertListener.java # amos-boot-system-tzs/amos-boot-module-jg/amos-boot-module-jg-biz/src/main/java/com/yeejoin/amos/boot/module/jg/biz/service/impl/BatchDataChangeProcessStrategy.java # amos-boot-system-tzs/amos-boot-module-jg/amos-boot-module-jg-biz/src/main/java/com/yeejoin/amos/boot/module/jg/biz/service/impl/SingleDataChangeProcessStrategy.java # amos-boot-system-tzs/amos-boot-module-jg/amos-boot-module-jg-biz/src/main/java/com/yeejoin/amos/boot/module/jg/biz/service/impl/SingleManageEquipEditHandleImpl.java # amos-boot-system-tzs/amos-boot-module-jg/amos-boot-module-jg-biz/src/main/java/com/yeejoin/amos/boot/module/jg/biz/service/impl/UseRegisterDataChangeHandleImpl.java
parents 60645b49 4fd98308
......@@ -12,7 +12,10 @@ import com.yeejoin.amos.boot.biz.common.utils.RedisUtils;
import com.yeejoin.amos.component.feign.model.FeignClientResult;
import com.yeejoin.amos.component.feign.utils.FeignUtil;
import com.yeejoin.amos.feign.privilege.Privilege;
import com.yeejoin.amos.feign.privilege.model.*;
import com.yeejoin.amos.feign.privilege.model.AgencyUserModel;
import com.yeejoin.amos.feign.privilege.model.CompanyModel;
import com.yeejoin.amos.feign.privilege.model.DepartmentModel;
import com.yeejoin.amos.feign.privilege.model.RoleModel;
import com.yeejoin.amos.feign.systemctl.Systemctl;
import com.yeejoin.amos.feign.systemctl.model.RegionModel;
import org.apache.commons.lang3.ObjectUtils;
......@@ -39,11 +42,9 @@ import org.typroject.tyboot.core.restful.doc.TycloudOperation;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
/**
* controller层切面 用于用户数据缓存 供 sql自动填充使用 (使用粒度过大的Aop会创建大量代理对象,影响性能,占用内存,考虑使用
......@@ -118,7 +119,7 @@ public class ControllerAop {
urls.add("/tcm/userInfo/getPersonType");
urls.add("/patrol/api/check/saveRecordAll");
urls.add("/patrol/api/check/saveRecordAll2");
urls.add("/patrol/api/planTask/queryPlanTaskNew");
// urls.add("/patrol/api/planTask/queryPlanTaskNew");
// 获取请求路径
for (String uri : urls) {
Pattern p = Pattern.compile(uri);
......
......@@ -28,15 +28,15 @@ public class BaseController {
@Autowired
protected HttpServletRequest request;
/**
* 企业
*/
public static final String COMPANY_TYPE_COMPANY = "company";
/**
* 监管/行政审批局
*/
public static final String COMPANY_TYPE_SUPERVISION = "supervision";
/**
* 企业
*/
public static final String COMPANY_TYPE_COMPANY = "company";
/**
......
......@@ -49,5 +49,25 @@ public class XiAnDataDockController {
}
return xiAnDataDockService.importEquipmentData(file);
}
/**
* 西安电梯历史设备以及业务数据批量导入
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@PostMapping(value = "/importElevatorData")
@ApiOperation(httpMethod = "POST", value = "西安电梯历史设备以及业务数据批量导入", notes = "西安电梯历史设备以及业务数据批量导入")
public Object importElevatorData(@RequestParam MultipartFile file) {
if (file.isEmpty()) {
return ResponseHelper.buildResponse("文件不能为空");
}
String contentType = file.getContentType();
String fileExtension = FilenameUtils.getExtension(file.getOriginalFilename());
if (!("application/vnd.ms-excel".equals(contentType) ||
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet".equals(contentType)) ||
!("xls".equalsIgnoreCase(fileExtension) || "xlsx".equalsIgnoreCase(fileExtension))) {
return ResponseHelper.buildResponse("文件类型必须是 Excel 文件");
}
return xiAnDataDockService.importElevatorData(file);
}
}
......@@ -75,6 +75,12 @@ public class DictParamsConverter implements Converter<String> {
dictMap.put("液化天然气", "LIQUEFIED_NATURAL_GAS");
dictMap.put("液化石油气", "LIQUEFIED_PETROLEUM_GAS");
dictMap.put("氢气", "HYDROGEN");
dictMap.put("集选", "1");
dictMap.put("并联", "2");
dictMap.put("按钮", "3");
dictMap.put("其他控制方式", "4");
dictMap.put("直接顶升", "1");
dictMap.put("间接顶升", "2");
}
@Override
......
......@@ -50,6 +50,10 @@ public class EquCategoryConverter implements Converter<String> {
equipmentMap.put("客运缆车", "9200");
equipmentMap.put("客运拖牵索道", "9300");
equipmentMap.put("水上游乐设施类", "6D00");
equipmentMap.put("曳引与强制驱动电梯", "3100");
equipmentMap.put("液压驱动电梯", "3200");
equipmentMap.put("自动扶梯与自动人行道", "3300");
equipmentMap.put("其它类型电梯", "3400");
}
@Override
......
......@@ -73,6 +73,16 @@ public class EquDefineConverter implements Converter<String> {
equipmentMap.put("低位客运拖牵索道", "9310");
equipmentMap.put("高位客运拖牵索道", "9320");
equipmentMap.put("电动单梁起重机", "4170");
equipmentMap.put("曳引驱动乘客电梯", "3110");
equipmentMap.put("曳引驱动载货电梯", "3120");
equipmentMap.put("强制驱动载货电梯", "3130");
equipmentMap.put("液压乘客电梯", "3210");
equipmentMap.put("液压载货电梯", "3220");
equipmentMap.put("自动扶梯", "3310");
equipmentMap.put("自动人行道", "3320");
equipmentMap.put("防爆电梯", "3410");
equipmentMap.put("消防员电梯", "3420");
equipmentMap.put("杂物电梯", "3430");
}
@Override
......
......@@ -22,6 +22,7 @@ public class EquListConverter implements Converter<String> {
equipmentMap.put("压力管道", "8000");
equipmentMap.put("大型游乐设施", "6000");
equipmentMap.put("客运索道", "9000");
equipmentMap.put("电梯", "3000");
}
@Override
......
package com.yeejoin.amos.api.openapi.converter;
import com.alibaba.excel.converters.Converter;
import com.alibaba.excel.enums.CellDataTypeEnum;
import com.alibaba.excel.metadata.CellData;
import com.alibaba.excel.metadata.GlobalConfiguration;
import com.alibaba.excel.metadata.property.ExcelContentProperty;
import java.util.HashMap;
import java.util.Map;
public class EquStateConverter implements Converter<String> {
private static final Map<String, String> equipmentMap = new HashMap<>();
static {
equipmentMap.put("未登记", "0");
equipmentMap.put("在用", "1");
equipmentMap.put("停用", "2");
equipmentMap.put("报废", "3");
equipmentMap.put("注销", "4");
}
@Override
public Class<?> supportJavaTypeKey() {
// 实体类中对象属性类型
return String.class;
}
@Override
public CellDataTypeEnum supportExcelTypeKey() {
return CellDataTypeEnum.STRING;
}
@Override
public String convertToJavaData(CellData cellData, ExcelContentProperty excelContentProperty,
GlobalConfiguration globalConfiguration) {
// 从Cell中读取数据
String cellValue = cellData.getStringValue();
// 判断Excel中的值,将其转换为预期的数值
return equipmentMap.getOrDefault(cellValue, null);
}
@Override
public CellData convertToExcelData(String o, ExcelContentProperty excelContentProperty, GlobalConfiguration globalConfiguration) throws Exception {
return new CellData("");
}
}
package com.yeejoin.amos.api.openapi.converter;
import com.alibaba.excel.converters.Converter;
import com.alibaba.excel.enums.CellDataTypeEnum;
import com.alibaba.excel.metadata.CellData;
import com.alibaba.excel.metadata.GlobalConfiguration;
import com.alibaba.excel.metadata.property.ExcelContentProperty;
import java.util.HashMap;
import java.util.Map;
public class UsePlaceConverter implements Converter<String> {
private static final Map<String, String> dictMap = new HashMap<>();
static {
dictMap.put("游乐场所", "6532");
dictMap.put("商业单位", "6009");
dictMap.put("学校", "6010");
dictMap.put("政府机关", "6012");
dictMap.put("医疗机构", "6011");
dictMap.put("公共场所", "6013");
dictMap.put("旅游景区", "6531");
dictMap.put("住宅小区", "6008");
dictMap.put("养老机构", "6530");
dictMap.put("工业场所", "6528");
dictMap.put("工业场所(户外)", "6529");
dictMap.put("地铁站", "6641");
dictMap.put("机场", "6642");
dictMap.put("车站", "6643");
dictMap.put("商业综合体", "6644");
dictMap.put("超市", "6645");
dictMap.put("餐饮场所", "6646");
dictMap.put("其他", "6647");
}
@Override
public Class<?> supportJavaTypeKey() {
// 实体类中对象属性类型
return String.class;
}
@Override
public CellDataTypeEnum supportExcelTypeKey() {
return CellDataTypeEnum.STRING;
}
@Override
public String convertToJavaData(CellData cellData, ExcelContentProperty excelContentProperty,
GlobalConfiguration globalConfiguration) {
// 从Cell中读取数据
String cellValue = cellData.getStringValue();
// 判断Excel中的值,将其转换为预期的数值
return dictMap.getOrDefault(cellValue, null);
}
@Override
public CellData convertToExcelData(String o, ExcelContentProperty excelContentProperty, GlobalConfiguration globalConfiguration) throws Exception {
return new CellData("");
}
public static void main(String[] args) {
}
}
\ No newline at end of file
package com.yeejoin.amos.api.openapi.feign;
import com.yeejoin.amos.api.openapi.dto.XiAnElevatorExcelDto;
import com.yeejoin.amos.api.openapi.dto.XiAnEquipInfoExcelDto;
import com.yeejoin.amos.boot.biz.common.feign.FeignConfiguration;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
......@@ -105,4 +106,22 @@ public interface TzsJgServiceFeignClient {
*/
@RequestMapping(value = "/common/checkFactoryNumUniquenessForVehicleCylinder", method = RequestMethod.GET)
Integer checkFactoryNumUniquenessForVehicleCylinder(@RequestParam("factoryNum") String factoryNum);
/**
* 批量保存西安电梯上传的历史数据
*
* @param elevatorExcelDtos 西安电梯上传的历史数据
* @return
*/
@RequestMapping(value = "/dataDock/xi-an/saveElevatorData", method = RequestMethod.POST)
Object saveElevatorData(@RequestBody List<XiAnElevatorExcelDto> elevatorExcelDtos);
/**
* record唯一性检查
*
* @param record
* @return
*/
@RequestMapping(value = "/common/checkRecordUniqueness", method = RequestMethod.GET)
Boolean selectByRecordAndClaimStatus(@RequestParam("record") String record);
}
......@@ -13,7 +13,6 @@ import com.yeejoin.amos.boot.biz.common.dao.mapper.DataDictionaryMapper;
import com.yeejoin.amos.boot.biz.common.entity.DataDictionary;
import com.yeejoin.amos.boot.biz.common.utils.QRCodeUtil;
import com.yeejoin.amos.boot.biz.common.utils.RedisUtils;
import com.yeejoin.amos.boot.module.app.api.common.CommonException;
import com.yeejoin.amos.boot.module.app.api.common.MobileLoginParam;
import com.yeejoin.amos.boot.module.app.api.dto.*;
import com.yeejoin.amos.boot.module.app.api.entity.*;
......@@ -611,7 +610,7 @@ public class TzsAppService {
if (StringUtils.isEmpty(message)) {
message = "账号或密码错误";
}
throw new CommonException(600001, message);
throw new BadRequest(message);
}
if (ValidationUtil.isEmpty(idpassword) || ValidationUtil.isEmpty(idpassword.getResult()) ||
ValidationUtil.isEmpty(idpassword.getResult().get("userId"))) {
......
package com.yeejoin.amos.boot.module.common.api.dao;
import com.yeejoin.amos.boot.module.common.api.dto.ExcelImportErrorLogDto;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.stereotype.Repository;
/**
* @author Administrator
*/
@Repository
public interface ExcelImportErrorLogDao extends PagingAndSortingRepository<ExcelImportErrorLogDto, String> {
}
......@@ -52,6 +52,11 @@ public class DPFilterParamDto {
private String superviseUnitName;
/**
* 监管单位编码(接收单位/管辖机构)
*/
private String superviseUnitCode;
/**
* 企业单位名称(发起单位/使用单位)
*/
private String companyName;
......
......@@ -184,4 +184,10 @@ public class ESEquipmentCategoryDto {
*/
@Field(type = FieldType.Boolean, name = "IS_COMPLETE_XA")
private Boolean IS_COMPLETE_XA;
/**
* 是否可以做业务-西安电梯导入用(false-否,true-是)
*/
@Field(type = FieldType.Boolean, name = "IS_DO_BUSINESS")
private Boolean IS_DO_BUSINESS;
}
package com.yeejoin.amos.boot.module.common.api.dto;
import lombok.Data;
import lombok.experimental.Accessors;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Field;
import org.springframework.data.elasticsearch.annotations.FieldType;
/**
* @author Administrator
* Excel导入错误日志
*/
@Data
@Accessors(chain = true)
@Document(indexName = "excel_import_error_log", shards = 2)
public class ExcelImportErrorLogDto {
@Id
private Long sequenceNbr;
@Field(type = FieldType.Text)
private String xaSerial;
@Field(type = FieldType.Text)
private String record;
@Field(type = FieldType.Text)
private String errorInfo;
}
......@@ -114,6 +114,7 @@ public class BaseEnterpriseVideoServiceImpl extends BaseService<BaseEnterpriseVi
JSONObject dataObj = (JSONObject) result.get("data");
String cameraUrl = dataObj.getString("url");
video.setUrl(cameraUrl);
video.setType(param.getString("protocol"));
}
} catch (URISyntaxException e) {
throw new RuntimeException("URL格式解析异常", e);
......
......@@ -44,6 +44,8 @@ public interface TzBaseEnterpriseInfoMapper extends BaseMapper<TzBaseEnterpriseI
String getOrgCodeByCompanyCode(String companyCode);
String getOrgCodeByCompanySeq(@Param("companySeq") String companySeq);
IPage<TzBaseEnterpriseInfoDto> page(Page<TzBaseEnterpriseInfoDto> page, TzBaseEnterpriseInfoDto tzBaseEnterpriseInfoDto);
IPage<TzBaseEnterpriseInfoDto> pageList(Page<TzBaseEnterpriseInfoDto> page, TzBaseEnterpriseInfoDto tzBaseEnterpriseInfoDto, List orgCodeList);
......
......@@ -171,5 +171,8 @@
<select id="getOrgCodeByCompanyCode" resultType="java.lang.String">
select org_code from privilege_company where company_code = #{companyCode} limit 1
</select>
<select id="getOrgCodeByCompanySeq" resultType="java.lang.String">
select org_code from privilege_company where sequence_nbr = #{companySeq}
</select>
</mapper>
package com.yeejoin.amos.boot.module.jczs.biz.controller;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.biz.common.bo.ReginParams;
import com.yeejoin.amos.boot.biz.common.entity.BaseEntity;
import com.yeejoin.amos.boot.biz.common.utils.NameUtils;
import com.yeejoin.amos.boot.biz.common.utils.RedisKey;
import com.yeejoin.amos.boot.biz.common.utils.RedisUtils;
......@@ -12,6 +14,7 @@ import com.yeejoin.amos.boot.module.jczs.api.dto.EquEnterDto;
import com.yeejoin.amos.boot.module.jczs.api.dto.TzBaseEnterpriseInfoDto;
import com.yeejoin.amos.boot.module.jczs.api.entity.PageParam;
import com.yeejoin.amos.boot.module.jczs.api.entity.TzBaseEnterpriseInfo;
import com.yeejoin.amos.boot.module.jczs.api.mapper.TzBaseEnterpriseInfoMapper;
import com.yeejoin.amos.boot.module.jczs.api.service.ITzBaseEnterpriseInfoService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
......@@ -48,6 +51,9 @@ public class TzBaseEnterpriseInfoController {
ITzBaseEnterpriseInfoService iTzBaseEnterpriseInfoService;
@Autowired
TzBaseEnterpriseInfoMapper baseEnterpriseInfoMapper;
@Autowired
RedisUtils redisUtils;
/**
......@@ -149,6 +155,21 @@ public class TzBaseEnterpriseInfoController {
}
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@RequestMapping(value = "/listBySupervise", method = RequestMethod.GET)
@ApiOperation(httpMethod = "GET", value = "查询指定监管单位下的单位,包括本级监管单位及下级", notes = "查询指定监管单位下的单位")
public ResponseModel<List<TzBaseEnterpriseInfo>> getUnitList(@RequestParam(required = false) String superviseCompanySeq) {
LambdaQueryWrapper<TzBaseEnterpriseInfo> tzBaseEnterpriseInfoQueryWrapper = new LambdaQueryWrapper<>();
if(StringUtils.isNotEmpty(superviseCompanySeq)){
String orgCode = baseEnterpriseInfoMapper.getOrgCodeByCompanySeq(superviseCompanySeq);
tzBaseEnterpriseInfoQueryWrapper.likeRight(StringUtils.isNotEmpty(orgCode), TzBaseEnterpriseInfo::getSuperviseOrgCode, orgCode);
}
tzBaseEnterpriseInfoQueryWrapper.eq(BaseEntity::getIsDelete, false);
tzBaseEnterpriseInfoQueryWrapper.select(BaseEntity::getSequenceNbr,TzBaseEnterpriseInfo::getUseUnit, TzBaseEnterpriseInfo::getUseUnitCode);
List<TzBaseEnterpriseInfo> units = iTzBaseEnterpriseInfoService.list(tzBaseEnterpriseInfoQueryWrapper);
return ResponseHelper.buildResponse(units);
}
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@RequestMapping(value = "/getEquInfo/{sequenceNbr}", method = RequestMethod.GET)
@ApiOperation(httpMethod = "GET", value = "通过企业id查询设备", notes = "通过企业id查询设备")
public ResponseModel<List<EquEnterDto>> getInfo(@PathVariable(value = "sequenceNbr") String sequenceNbr) {
......
......@@ -75,6 +75,8 @@ public class DictParamsConverter implements Converter<String> {
dictMap.put("并联", "2");
dictMap.put("按钮", "3");
dictMap.put("其他控制方式", "4");
dictMap.put("直接顶升", "1");
dictMap.put("间接顶升", "2");
}
@Override
......
package com.yeejoin.amos.boot.module.jg.api.dto;
import lombok.Data;
import java.util.Set;
@Data
public class BizRelationDataDto {
/**
* 业务唯一标识
*/
private String bizId;
/**
* 业务类型枚举
*/
private String bizType;
/**
* 业务表
*/
private String bizTable;
/**
* 说明
*/
private String changeReason;
/**
* 附件
*/
private String changeAttachment;
/**
* 变更的设备
*/
private Set<String> records;
}
......@@ -43,4 +43,7 @@ public class EquipDesignChangeDataDto extends BaseChangeDataDto {
@FieldDisplayDefine(value = "其他附件", type = JSON.class)
private String otherAccessoriesDes;
@FieldDisplayDefine(value = "设计资料是否完整齐全")
private String designIsComplete;
}
package com.yeejoin.amos.boot.module.jg.api.dto;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.annotation.TableField;
import com.yeejoin.amos.boot.biz.common.annotation.FieldDisplayDefine;
import com.yeejoin.amos.boot.biz.common.annotation.Group;
import lombok.Data;
......@@ -49,4 +50,7 @@ public class EquipFactoryChangeDataDto extends BaseChangeDataDto {
@FieldDisplayDefine(value = "锅炉能效证明文件", type = JSON.class)
private String boilerEnergyEfficiencyCertificate;
@FieldDisplayDefine(value = "制造资料是否完整齐全")
private String factoryIsComplete;
}
package com.yeejoin.amos.boot.module.jg.api.dto;
import com.alibaba.fastjson.JSON;
import com.yeejoin.amos.boot.biz.common.annotation.FieldDisplayDefine;
import com.yeejoin.amos.boot.biz.common.annotation.Group;
import lombok.Data;
import lombok.EqualsAndHashCode;
@EqualsAndHashCode(callSuper = true)
@Data
@Group(value = "equip_other_info")
public class EquipOtherInfoChangeDataDto extends BaseChangeDataDto {
@FieldDisplayDefine(value = "信息化管理情况")
private String informationSituation;
@FieldDisplayDefine(value = "信息化管理二维码")
private String informationManageCode;
@FieldDisplayDefine(value = "气瓶钢印标识", type = JSON.class)
private String cylinderStampAttachment;
}
......@@ -14,7 +14,7 @@ public class EquipRegisterChangeDataDto extends BaseChangeDataDto {
@FieldDisplayDefine(value = "设备种类" ,isExist = false)
private String equList;
@FieldDisplayDefine(value = "设备类别" ,isExist = false)
@FieldDisplayDefine(value = "设备类别")
private String equCategory;
@FieldDisplayDefine(value = "设备代码")
......
......@@ -19,4 +19,7 @@ public class EquipUseInfoChangeDataDto extends BaseChangeDataDto {
@FieldDisplayDefine(value = "单位内部编号")
private String useInnerCode;
@FieldDisplayDefine(value = "设备来源", isExist = false)
private String dataSource;
}
package com.yeejoin.amos.boot.module.jg.api.dto;
import com.yeejoin.amos.boot.biz.common.dto.BaseDto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* @author system_generator
* @date 2025-04-14
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "JgBizChangeLogDto", description = "")
public class JgBizChangeLogDto extends BaseDto {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "业务唯一标识")
private String bizId;
@ApiModelProperty(value = "业务类型")
private String bizType;
@ApiModelProperty(value = "业务表名")
private String bizTable;
@ApiModelProperty(value = "变更原因")
private String changeReason;
@ApiModelProperty(value = "变更附件")
private String changeAttachment;
@ApiModelProperty(value = "触发的id(列入使用登记变化后,安装告知数据也变化,则记录两条:使用登记的oid为空,按照告知的为使用登记的id)")
private String oId;
}
......@@ -3,9 +3,7 @@ package com.yeejoin.amos.boot.module.jg.api.dto;
import com.yeejoin.amos.boot.biz.common.dto.BaseDto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.*;
import java.util.Date;
/**
......@@ -18,6 +16,8 @@ import java.util.Date;
@EqualsAndHashCode(callSuper = true)
@ApiModel(value="JgResumeInfoDto", description="")
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class JgResumeInfoDto extends BaseDto {
private static final long serialVersionUID = 1L;
......@@ -54,4 +54,7 @@ public class JgResumeInfoDto extends BaseDto {
@ApiModelProperty(value = "详情路径")
private String routePath;
@ApiModelProperty(value = "数据来源(新增:0、导入:1)")
private String dataSource;
}
package com.yeejoin.amos.boot.module.jg.api.dto;
import com.baomidou.mybatisplus.annotation.TableField;
import com.yeejoin.amos.boot.biz.common.dto.BaseDto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
......@@ -137,4 +136,6 @@ public class JgUseRegistrationManageDto extends BaseDto {
@ApiModelProperty("管辖机构名称")
private String superviseOrgName;
@ApiModelProperty("是否可以做业务-西安电梯导入用(0-否,1-是)")
private String isDoBusiness;
}
package com.yeejoin.amos.boot.module.jg.api.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.yeejoin.amos.boot.biz.common.entity.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.util.Date;
/**
*
*
* @author system_generator
* @date 2025-04-14
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("tzs_jg_biz_change_log")
public class JgBizChangeLog extends BaseEntity {
private static final long serialVersionUID = 1L;
/**
* 业务唯一标识
*/
@TableField("biz_id")
private String bizId;
/**
* 业务类型
*/
@TableField("biz_type")
private String bizType;
/**
* 业务表名
*/
@TableField("biz_table")
private String bizTable;
/**
* 变更原因
*/
@TableField("change_reason")
private String changeReason;
/**
* 变更附件
*/
@TableField("change_attachment")
private String changeAttachment;
/**
* 触发的id(列入使用登记变化后,安装告知数据也变化,则记录两条:使用登记的oid为空,按照告知的为使用登记的id)
*/
@TableField("o_id")
private String oId;
}
......@@ -87,4 +87,10 @@ public class JgResumeInfo extends BaseEntity {
*/
@TableField("route_path")
private String routePath;
/**
* 数据来源(新增:0、导入:1)
*/
@TableField("data_source")
private String dataSource;
}
......@@ -234,4 +234,10 @@ public class JgUseRegistrationManage extends BaseEntity {
*/
@TableField
private String superviseOrgName;
/**
* 是否可以做业务-西安电梯导入用(0-否,1-是)
*/
@TableField("is_do_business")
private String isDoBusiness;
}
......@@ -32,6 +32,7 @@ public enum DPMapStatisticsItemEnum {
CONSTRUCTION_UNITS("安改维单位 (家)", "constructionUnits", ""),
USERS_UNITS("使用单位 (家)", "usersUnits", ""),
GAS_UNITS("充装单位 (家)", "gasUnits", ""),
DESIGN_UNITS("设计单位 (家)", "designUnits", ""),
OPERATORS("作业人员 (人)", "operators", ""),
DEVICE_COUNT("已纳管设备数", "deviceCount", ""),
PERSON_ISSUES_COUNT("个人问题数", "个人", ""),
......
......@@ -10,14 +10,16 @@ import java.util.Map;
@Getter
@AllArgsConstructor
public enum EquipSourceEnum {
jg_his("历史设备", "jg_his"),
jg_his_black("历史设备(无登记证)", "jg_his_black"),
jg("新设备", "jg");
jg_his("历史设备", "jg_his", "his"),
jg_his_black("历史设备(无登记证)", "jg_his_black", "black"),
jg("新设备", "jg", "new");
private final String name;
private final String code;
private final String type;
public static String getMessage(String code) {
for (EquipSourceEnum constants : values()) {
......@@ -30,6 +32,7 @@ public enum EquipSourceEnum {
public static Map<Integer,String> getName=new HashMap<>();
public static Map<String,Integer> getCode=new HashMap<>();
public static Map<String,Integer> getType=new HashMap<>();
static {
for (ConstructionEnum e : ConstructionEnum.values()){
......@@ -39,14 +42,6 @@ public enum EquipSourceEnum {
}
public String getCode() {
return code;
}
public String getName() {
return name;
}
public static String getDataSourceName(String dataSource) {
if(StringUtils.isEmpty(dataSource)){
return EquipSourceEnum.jg_his.getName();
......
......@@ -14,16 +14,24 @@ public enum SafetyProblemTypeEnum {
/**
* 问题类型枚举
*/
JYCQ("2", "检验超期", "设备检验超期", "safetyProblemTracing/jy/cq", "outOfInspectionRecords"),
JYBJ("21", "检验报检", "设备报检", "safetyProblemTracing/jy/bj", null),
WBCQ("1", "维保超期", "设备维保超期", "safetyProblemTracing/wb/cq", "outOfMaintenanceRecords"),
WBBA("11", "维保合同备案", "设备维保合同备案", "safetyProblemTracing/wb/ba", null),
XKCQ("3", "许可超期", "企业许可超期", "safetyProblemTracing/xk/cq", null),
ZZCQ("9", "资质超期", "人员资质超期", "safetyProblemTracing/zz/cq", null),
SJNXCQ("5", "超设计年限", "设备超设计年限", "safetyProblemTracing/synx/cq", null),
SJNXDJ("51", "超设计年限登记", "超设计年限登记", "safetyProblemTracing/synx/dj", null);
JYCQ("1", "2", "检验超期", "设备检验超期", "safetyProblemTracing/jy/cq", "outOfInspectionRecords"),
JYBJ("2", "2", "检验报检", "设备报检", "safetyProblemTracing/jy/bj", null),
WBCQ("3", "1", "维保超期", "设备维保超期", "safetyProblemTracing/wb/cq", "outOfMaintenanceRecords"),
WBBA("4", "1", "维保合同备案", "设备维保合同备案", "safetyProblemTracing/wb/ba", null),
XKCQ("5", "3", "许可超期", "企业许可超期", "safetyProblemTracing/xk/cq", null),
ZZCQ("6", "9", "资质超期", "人员资质超期", "safetyProblemTracing/zz/cq", null),
SJNXCQ("7", "5", "超设计年限", "设备超设计年限", "safetyProblemTracing/synx/cq", null),
SJNXDJ("8", "5", "超设计年限登记", "超设计年限登记", "safetyProblemTracing/synx/dj", null);
private final String code;
/**
* 数据主键
*/
private final String sequenceNbr;
/**
* 问题类型代码
*/
private final String problemTypeCode;
private final String name;
......@@ -33,25 +41,15 @@ public enum SafetyProblemTypeEnum {
/**
* 消息对象属性
* */
*/
private final String msgKey;
SafetyProblemTypeEnum(String code, String name, String desc, String topic, String msgKey) {
this.code = code;
SafetyProblemTypeEnum(String sequenceNbr, String problemTypeCode, String name, String desc, String topic, String msgKey) {
this.sequenceNbr = sequenceNbr;
this.problemTypeCode = problemTypeCode;
this.name = name;
this.desc = desc;
this.topic = topic;
this.msgKey = msgKey;
}
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;
}
}
......@@ -28,7 +28,12 @@ public enum VehicleApanageEnum {
YANG_LING("陕V","610403"),
SHEN_MU("陕K","610881"),
FU_GU("陕K","610822"),
HAN_CHENG("陕Y","610581");
HAN_CHENG("陕Y","610581"),
XI_XIAN_QH("陕U","617001"),
XI_XIAN_JH("陕U","617002"),
XI_XIAN_FD("陕U","617003"),
XI_XIAN_KG("陕U","617004"),
XI_XIAN_FX("陕U","617005");
private final String city;
private final String code;
......
......@@ -233,7 +233,7 @@ public interface CommonMapper extends BaseMapper<EquipmentCategory> {
Page<Map<String, Object>> countBizFinishedNumForDPListSYDJ(@Param("page") Page<Map<String, Object>> page, @Param("orgCode") String orgCode, @Param("dto") DPFilterParamDto dpFilterParamForDetailDto);
Page<Map<String, Object>> countBizFinishedNumForDPListDQJY(@Param("page") Page<Map<String, Object>> page, @Param("orgCode") String orgCode, @Param("dto") DPFilterParamDto dpFilterParamForDetailDto);
Page<Map<String, Object>> countBizFinishedNumForDPListDQJY(@Param("page") Page<Map<String, Object>> page, @Param("orgCode") String orgCode, @Param("dto") DPFilterParamDto dpFilterParamForDetailDto);
Page<Map<String, Object>> countBizFinishedNumForDPListBGDJ(@Param("page") Page<Map<String, Object>> page, @Param("orgCode") String orgCode, @Param("dto") DPFilterParamDto dpFilterParamForDetailDto);
......@@ -288,5 +288,7 @@ public interface CommonMapper extends BaseMapper<EquipmentCategory> {
* @return 公司对象集合
*/
List<KeyValueDto> queryAllCompanyDict();
Integer checkRecordUniqueness(String record);
}
package com.yeejoin.amos.boot.module.jg.api.mapper;
import com.yeejoin.amos.boot.module.jg.api.entity.JgBizChangeLog;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* Mapper 接口
*
* @author system_generator
* @date 2025-04-14
*/
public interface JgBizChangeLogMapper extends BaseMapper<JgBizChangeLog> {
}
......@@ -11,6 +11,7 @@ import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* Mapper 接口
......@@ -66,4 +67,6 @@ public interface JgInstallationNoticeMapper extends CustomBaseMapper<JgInstallat
* @return 已完成但是未生成装置的施工信息的安装告知单据列表
*/
List<JgInstallationNotice> selectNotInsertProjectConstructionInstallNoticeList();
Set<Long> queryListByEqsAndStatus(@Param("records") Set<String> records, @Param("noticeStatus") String noticeStatus);
}
......@@ -11,6 +11,7 @@ import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* Mapper 接口
......@@ -38,4 +39,6 @@ public interface JgMaintenanceContractMapper extends BaseMapper<JgMaintenanceCon
List<MaintenanceVo> queryMaintenanceInIds(@Param("ids") List<String> ids);
String getNameByEquDefine(String equDefine);
Set<Long> queryListByEqsAndStatus(@Param("records") Set<String> records, @Param("status") String status);
}
package com.yeejoin.amos.boot.module.jg.api.mapper;
import com.yeejoin.amos.boot.module.jg.api.dto.JgUseRegistrationEqDto;
import com.yeejoin.amos.boot.module.jg.api.entity.JgUseRegistrationEq;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
......@@ -19,4 +20,5 @@ public interface JgUseRegistrationEqMapper extends BaseMapper<JgUseRegistrationE
void batchInsert(@Param("equipTransferId") String equipTransferId, @Param("jgRelationEquipList") List<JgUseRegistrationEq> jgRelationEquipList);
List<JgUseRegistrationEqDto> queryEqListByApplyNo(@Param("applyNo") String applyNo);
}
......@@ -12,6 +12,7 @@ import com.yeejoin.amos.boot.module.jg.api.vo.SortVo;
import com.yeejoin.amos.boot.module.jg.api.vo.tableDataExportVo.RegistrationVo;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
import java.util.Map;
import java.util.Set;
......@@ -63,7 +64,7 @@ public interface JgUseRegistrationMapper extends BaseMapper<JgUseRegistration> {
Map<String, Object> getUseRegistrationDetail(@Param("id") String id);
Page<JSONObject> queryForUnitVesselEquipmentPage(@Param("page") Page<JSONObject> page, @Param("jsonObject") JSONObject jsonObject, @Param("records") Set<String> records);
Page<JSONObject> queryForUnitVesselEquipmentPage(@Param("page") Page<JSONObject> page, @Param("jsonObject") JSONObject jsonObject, @Param("records") String[] records);
Page<JSONObject> queryForEquipUsedByVehiclePage(@Param("page") Page<JSONObject> page, @Param("jsonObject") JSONObject jsonObject);
......@@ -124,4 +125,6 @@ public interface JgUseRegistrationMapper extends BaseMapper<JgUseRegistration> {
List<JgUseRegistrationDto> getListOfPass();
List<JgUseRegistrationDto> selectMissingSupOrgCodeUseList();
Set<Long> queryListByEqsAndStatus(@Param("records") Set<String> records, @Param("status") String status, @Param("applyNo") String applyNo);
}
package com.yeejoin.amos.boot.module.jg.api.service;
/**
* 接口类
*
* @author system_generator
* @date 2025-04-14
*/
public interface IJgBizChangeLogService {
}
<?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.JgBizChangeLogMapper">
</mapper>
......@@ -360,4 +360,22 @@
and n.project_contraption_id <![CDATA[ <> ]]> ''
and not EXISTS (select 1 from idx_biz_jg_project_construction c where c.record=n.sequence_nbr)
</select>
<select id="queryListByEqsAndStatus"
resultType="java.lang.Long">
SELECT
distinct n.sequence_nbr as sequence_nbr
FROM
"tzs_jg_installation_notice" n,
tzs_jg_installation_notice_eq ne
WHERE
n.notice_status =#{noticeStatus}
and n.is_delete=0
and ne.equip_transfer_id = n.sequence_nbr
<if test='records != null'>
and ne.equ_id in
<foreach collection="records" item="record" open="(" close=")" separator=",">
#{record}
</foreach>
</if>
</select>
</mapper>
......@@ -195,4 +195,21 @@
ORDER BY
tjmc.create_date DESC, tjmc.apply_no DESC
</select>
</mapper>
<select id="queryListByEqsAndStatus" resultType="java.lang.Long">
SELECT
distinct n.sequence_nbr as sequence_nbr
FROM
tzs_jg_maintenance_contract n,
tzs_jg_maintenance_contract_eq ne
WHERE
n.status = #{status}
and n.is_delete=0
and ne.equip_transfer_id = n.sequence_nbr
<if test='records != null'>
and ne.equ_id in
<foreach collection="records" item="record" open="(" close=")" separator=",">
#{record}
</foreach>
</if>
</select>
</mapper>
\ No newline at end of file
......@@ -9,4 +9,16 @@
(#{item.sequenceNbr},#{equipTransferId}, #{item.equId})
</foreach>
</insert>
<select id="queryEqListByApplyNo"
resultType="com.yeejoin.amos.boot.module.jg.api.dto.JgUseRegistrationEqDto">
SELECT
eq.equ_id,
eq.sequence_nbr
FROM
tzs_jg_use_registration_eq eq,
tzs_jg_use_registration u
where
u.sequence_nbr = eq.equip_transfer_id
and u.apply_no=#{applyNo}
</select>
</mapper>
......@@ -63,6 +63,9 @@
<if test="dto.isCyl != null and dto.isCyl == 1 ">
AND tjurm.reg_type != '车用气瓶登记'
</if>
<if test="dto.isDoBusiness != null and dto.isDoBusiness != ''">
and tjurm.is_do_business = #{dto.isDoBusiness}
</if>
<if test="dto.regType != null and dto.regType != '' ">
AND EXISTS (
SELECT 1
......@@ -136,6 +139,9 @@
<if test="dto.isScrap != null and dto.isScrap != ''">
and tjurm.is_scrap = #{dto.isScrap}
</if>
<if test="dto.isDoBusiness != null and dto.isDoBusiness != ''">
and tjurm.is_do_business = #{dto.isDoBusiness}
</if>
<if test="dto.cityName != null and dto.cityName != ''">
and tjurm.equ_use_address LIKE CONCAT('%', #{dto.cityName}, '%')
</if>
......
......@@ -672,10 +672,10 @@
tjin."install_contract_attachment" as installContractAttachment ,
tjin."other_accessories" as insOtherAccessories
FROM "tzs_jg_installation_notice_eq" AS tjine
LEFT JOIN "tzs_jg_installation_notice" AS tjin ON tjine."equip_transfer_id" = tjin."sequence_nbr"
LEFT JOIN "tzs_jg_installation_notice" AS tjin ON tjine."equip_transfer_id" = tjin."sequence_nbr"
WHERE tjine."equ_id" = #{id} AND tjin."notice_status" = '6616'
ORDER BY tjine."rec_date" desc
LIMIT 1
ORDER BY tjine."rec_date" desc
LIMIT 1
</select>
<select id="getiInstallDetailByIdx" resultType="java.util.Map">
......@@ -698,7 +698,7 @@
left join "idx_biz_jg_use_info" as ibjui on ibjui."RECORD" = ibjci."RECORD"
left join "idx_biz_jg_register_info" as re on re."RECORD" = ibjci."RECORD"
WHERE ibjci."RECORD" = #{id}
ORDER BY ibjci."rec_date" desc
ORDER BY ibjci.USC_DATE desc
LIMIT 1
</select>
......@@ -927,7 +927,6 @@
ri."EQU_CODE_TYPE" equCodeType,
ri."WHETHER_VEHICLE_CYLINDER" whetherVehicleCylinder,
pv."CHARGING_MEDIUM" chargingMedium,
(select name from cb_data_dictionary where code = pv."CHARGING_MEDIUM" and type = 'FILLING_MEDIUM') chargingMedium,
pv."NOMINAL_WORKING_PRESSURE" nominalWorkingPressure,
pv."SINGLE_BOTTLE_VOLUME" singleBottleVolume,
pv."VIN" vin,
......@@ -993,11 +992,12 @@
and ui."RECORD" = #{jsonObject.record}
</when>
<otherwise>
<if test="records != null and records.size() > 0">
and ui."RECORD" not in
<foreach collection="records" item="record" separator="," open="(" close=")">
#{record}
</foreach>
<if test="records != null and records.length > 0">
<!-- and ui."RECORD" not in-->
<!-- <foreach collection="records" item="record" separator="," open="(" close=")">-->
<!-- #{record}-->
<!-- </foreach>-->
and ui."RECORD" <![CDATA[<>]]> ALL(#{records})
</if>
</otherwise>
</choose>
......@@ -1474,7 +1474,8 @@
SELECT
u.sequence_nbr,
u.supervision_org_code,
c.company_name as supervision_org_name
c.company_name as supervision_org_name,
u.use_registration_code
FROM
"tzs_jg_use_registration" u ,
privilege_company c
......@@ -1483,6 +1484,7 @@
and u.is_delete = '0'
AND c.is_deleted = FALSE
and u.status='已完成'
and u.use_registration_code <![CDATA[<>]]> ''
ORDER BY u.audit_pass_date
</select>
<select id="selectMissingSupOrgCodeUseList"
......@@ -1491,7 +1493,7 @@
u.sequence_nbr,
h.change_data::json->>'orgBranchCode' as supervisionOrgCode
FROM
"amos_tzs_biz"."tzs_jg_use_registration" u,
"tzs_jg_use_registration" u,
"tzs_jg_registration_history" h
WHERE
u."status" = '已完成'
......@@ -1500,4 +1502,20 @@
AND u."project_contraption_id" IS NOT NULL ORDER BY u.audit_pass_date
</select>
<select id="queryListByEqsAndStatus" resultType="java.lang.Long">
SELECT
distinct ur.sequence_nbr as sequence_nbr
FROM
"tzs_jg_use_registration" ur,
tzs_jg_use_registration_eq re
WHERE
ur.status = #{status}
and ur.is_delete = 0
and re.equip_transfer_id = ur.sequence_nbr
and ur.apply_no !=#{applyNo}
and re.equ_id in
<foreach collection="records" item="record" open="(" close=")" separator=",">
#{record}
</foreach>
</select>
</mapper>
......@@ -112,9 +112,9 @@
ei.use_contact useContact,
ei.contact_phone contactPhone,
ei.status,
case when ei.status = '0' then '异常'
case when ei.status = '1' then '异常'
else '正常' end problemStatusName,
case when ei.status = '0' then 'red'
case when ei.status = '1' then 'red'
else 'green' end problemStatusColor
FROM
tzs_safety_problem_tracing spt
......@@ -133,9 +133,9 @@
ei.use_contact useContact,
ei.contact_phone contactPhone,
ei.status,
case when ei.status = '0' then '异常'
case when ei.status = '1' then '异常'
else '正常' end problemStatusName,
case when ei.status = '0' then 'red'
case when ei.status = '1' then 'red'
else 'green' end problemStatusColor
FROM
tzs_safety_problem_tracing spt
......@@ -154,9 +154,9 @@
ei.use_contact useContact,
ei.contact_phone contactPhone,
ei.status,
case when ei.status = '0' then '异常'
case when ei.status = '1' then '异常'
else '正常' end problemStatusName,
case when ei.status = '0' then 'red'
case when ei.status = '1' then 'red'
else 'green' end problemStatusColor
FROM
tzs_safety_problem_tracing spt
......
......@@ -14,7 +14,7 @@ import java.util.List;
public class FlowingEquipRedisContext {
private static ThreadLocal<List<FlowingEquipRedisKeyDTO>> threadLocal = new ThreadLocal<>();
private static final ThreadLocal<List<FlowingEquipRedisKeyDTO>> threadLocal = new ThreadLocal<>();
public static List<FlowingEquipRedisKeyDTO> getContext() {
if (threadLocal.get() == null) {
......@@ -29,9 +29,7 @@ public class FlowingEquipRedisContext {
public static void clean() {
log.info("FlowingEquipRedisContext clean begin");
if (threadLocal != null) {
threadLocal.remove();
}
threadLocal.remove();
log.info("FlowingEquipRedisContext clean end");
}
}
......@@ -364,8 +364,8 @@ public class CommonController extends BaseController {
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(httpMethod = "GET", value = "查询监管业务名称列表", notes = "查询监管业务名称列表")
@GetMapping(value = "/superviseBusinessCategory")
public ResponseModel<Object> equipTree(@RequestParam(value = "businessType") String businessType) {
return ResponseHelper.buildResponse(commonService.superviseBusinessCategory(businessType));
public ResponseModel<Object> equipTree(@RequestParam(value = "businessType") String businessType, String dataSource) {
return ResponseHelper.buildResponse(commonService.superviseBusinessCategory(businessType, dataSource));
}
/**
......@@ -797,6 +797,13 @@ public class CommonController extends BaseController {
}
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/checkRecordUniqueness")
@ApiOperation(httpMethod = "GET", value = "检查record的唯一性", notes = "检查record的唯一性")
public Boolean checkRecordUniqueness(@RequestParam("record") String record) {
return commonService.checkRecordUniqueness(record);
}
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/checkFactoryNumUniquenessForVehicleCylinder")
@ApiOperation(httpMethod = "GET", value = "车用气瓶业务里面的 出厂编号/产品编码 校验唯一性(产品编号在车用气瓶范围内全局唯一)", notes = "车用气瓶业务里面的 出厂编号/产品编码 校验唯一性(产品编号在车用气瓶范围内全局唯一)")
public Integer checkFactoryNumUniquenessForVehicleCylinder(@RequestParam("factoryNum") String factoryNum) {
......
......@@ -92,5 +92,17 @@ public class DataDockController {
return ResponseHelper.buildResponse(dataDockService.checkGDData(multipartFile, false));
}
/**
* 西安电梯历史设备以及业务数据批量导入
*
* @param equLists 电梯历史设备以及业务数据
* @return result
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@PostMapping(value = "/xi-an/saveElevatorData")
@ApiOperation(httpMethod = "POST", value = "西安电梯历史设备以及业务数据批量导入", notes = "西安电梯历史设备以及业务数据批量导入")
public ResponseModel<?> saveElevatorData(@RequestBody List<Map<String, Object>> equLists) {
return ResponseHelper.buildResponse(dataDockService.saveElevatorData(equLists));
}
}
......@@ -163,6 +163,7 @@ public class JgChangeRegistrationNameController extends BaseController {
}
}
dto.setCertificateStatus("已登记");
dto.setIsDoBusiness("1");
return ResponseHelper.buildResponse(jgChangeRegistrationNameService.getTableData(dto));
}
......
......@@ -205,6 +205,7 @@ public class JgChangeRegistrationReformController extends BaseController {
}
//区外移装查询已注销状态的证
dto.setCertificateStatus("1".equals(transferType) ? "已注销" : "已登记");
dto.setIsDoBusiness("1");//默认可以做业务
return ResponseHelper.buildResponse(jgChangeRegistrationReformServiceImpl.getUseRegistrationCodeData(page, dto));
}
......
......@@ -175,7 +175,7 @@ public class JgUseRegistrationController extends BaseController {
@GetMapping(value = "/getDetail")
public ResponseModel<Map<String, Object>> getDetail(@RequestParam(value = "record", required = false) String record,
@RequestParam(value = "sequenceNbr", required = false) Long sequenceNbr) {
return ResponseHelper.buildResponse(jgUseRegistrationServiceImpl.getDetail(record, sequenceNbr));
return ResponseHelper.buildResponse(jgUseRegistrationServiceImpl.getDetail(record, sequenceNbr, getSelectedOrgInfo()));
}
@TycloudOperation(ApiLevel = UserType.AGENCY)
......
......@@ -159,6 +159,7 @@ public class JgUseRegistrationManageController extends BaseController {
dto.setDataType(BaseController.COMPANY_TYPE_SUPERVISION);
dto.setReceiveCompanyCode(info.getCompany().getCompanyCode());
}
dto.setIsDoBusiness(ValidationUtil.isEmpty(dto.getIsDoBusiness()) ? "1" : "");
return ResponseHelper.buildResponse(jgUseRegistrationManageServiceImpl.queryForJgUseRegistrationManagePage(page, dto, sort));
}
......@@ -224,6 +225,7 @@ public class JgUseRegistrationManageController extends BaseController {
} else {
dto.setReceiveCompanyCode(company.getCompanyCode());
}
dto.setIsDoBusiness("1");
return ResponseHelper.buildResponse(jgUseRegistrationManageServiceImpl.queryByUseUnitCreditCode(dto));
}
......@@ -357,6 +359,7 @@ public class JgUseRegistrationManageController extends BaseController {
} else {
return ResponseHelper.buildResponse(page);
}
dto.setIsDoBusiness("1");
return ResponseHelper.buildResponse(jgUseRegistrationManageServiceImpl.queryForJgUseRegistrationManagePage(page, dto, sort));
}
......
package com.yeejoin.amos.boot.module.jg.biz.edit.event;
package com.yeejoin.amos.boot.module.jg.biz.event;
import com.yeejoin.amos.boot.module.jg.api.dto.BizRelationDataDto;
import com.yeejoin.amos.boot.module.jg.api.dto.ChangeDataDto;
import lombok.Getter;
import org.springframework.context.ApplicationEvent;
import org.typroject.tyboot.core.foundation.context.RequestContextModel;
import java.util.List;
/**
* @author Administrator
*/
@Getter
public class BaseBizDataChangeEvent extends ApplicationEvent {
private String applyNo;
private List<ChangeDataDto> data;
private RequestContextModel requestContext;
......@@ -15,15 +22,12 @@ public class BaseBizDataChangeEvent extends ApplicationEvent {
super(source);
}
/**
* Create a new {@code ApplicationEvent}.
*
* @param source the object on which the event initially occurred or with
* which the event is associated (never {@code null})
*/
public BaseBizDataChangeEvent(Object source, String applyNo, RequestContextModel requestContext) {
private BizRelationDataDto bizRelationData;
public BaseBizDataChangeEvent(Object source, BizRelationDataDto bizRelationData, List<ChangeDataDto> data, RequestContextModel requestContext) {
super(source);
this.applyNo = applyNo;
this.data = data;
this.bizRelationData = bizRelationData;
this.requestContext = requestContext;
}
}
package com.yeejoin.amos.boot.module.jg.biz.edit.process.biz;
package com.yeejoin.amos.boot.module.jg.biz.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
......@@ -14,6 +14,7 @@ import com.yeejoin.amos.boot.module.jg.biz.service.impl.JgRegistrationHistorySer
import com.yeejoin.amos.boot.module.jg.biz.service.impl.JgUseRegistrationServiceImpl;
import com.yeejoin.amos.boot.module.ymt.api.entity.IdxBizJgProjectContraption;
import com.yeejoin.amos.boot.module.ymt.api.entity.IdxBizJgRegisterInfo;
import com.yeejoin.amos.boot.module.ymt.api.entity.IdxBizJgUseInfo;
import com.yeejoin.amos.boot.module.ymt.api.enums.InformationManageTypeEnum;
import com.yeejoin.amos.boot.module.ymt.api.mapper.IdxBizJgRegisterInfoMapper;
import com.yeejoin.amos.feign.systemctl.Systemctl;
......@@ -32,16 +33,17 @@ import static java.util.stream.Collectors.toList;
@RequiredArgsConstructor
public class UseRegisterUpdateService {
final IdxBizJgRegisterInfoMapper idxBizJgRegisterInfoMapper;
private final IdxBizJgRegisterInfoMapper idxBizJgRegisterInfoMapper;
final JgUseRegistrationServiceImpl useRegistrationService;
private final JgUseRegistrationServiceImpl useRegistrationService;
final JgRegistrationHistoryServiceImpl jgRegistrationHistoryService;
private final JgRegistrationHistoryServiceImpl jgRegistrationHistoryService;
final CommonServiceImpl commonService;
private final CommonServiceImpl commonService;
final IdxBizJgProjectContraptionServiceImpl idxBizJgProjectContraptionService;
private final IdxBizJgProjectContraptionServiceImpl idxBizJgProjectContraptionService;
private final JgUseRegistrationEqServiceImpl useRegistrationEqService;
public void updateHisData(String applyNo) {
JgUseRegistration jgUseRegistration = useRegistrationService.getOne(new LambdaQueryWrapper<JgUseRegistration>().eq(JgUseRegistration::getApplyNo, applyNo));
......
package com.yeejoin.amos.boot.module.jg.biz.edit.process.equip;
package com.yeejoin.amos.boot.module.jg.biz.service.impl;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUtil;
......@@ -38,6 +38,8 @@ public class EquipChangeDataUpdateServiceImpl {
private final IdxBizJgRegisterInfoMapper idxBizJgRegisterInfoMapper;
private final IdxBizJgOtherInfoMapper idxBizJgOtherInfoMapper;
private final CommonMapper commonMapper;
private final EquipmentCategoryMapper equipmentCategoryMapper;
......@@ -52,6 +54,7 @@ public class EquipChangeDataUpdateServiceImpl {
LambdaUpdateWrapper<IdxBizJgRegisterInfo> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.eq(IdxBizJgRegisterInfo::getRecord, record);
updateWrapper.set(IdxBizJgRegisterInfo::getEquCode, registerChangeDataDto.getEquCode());
updateWrapper.set(IdxBizJgRegisterInfo::getEquCategory, registerChangeDataDto.getEquCategory());
updateWrapper.set(IdxBizJgRegisterInfo::getEquDefine, registerChangeDataDto.getEquDefine());
updateWrapper.set(IdxBizJgRegisterInfo::getProductName, registerChangeDataDto.getProductName());
updateWrapper.set(IdxBizJgRegisterInfo::getEquType, registerChangeDataDto.getEquType());
......@@ -77,6 +80,7 @@ public class EquipChangeDataUpdateServiceImpl {
updateWrapper.set(IdxBizJgDesignInfo::getAppraisalDate, equipDesignChangeDataDto.getAppraisalDate());
updateWrapper.set(IdxBizJgDesignInfo::getDrawingDo, equipDesignChangeDataDto.getDrawingDo());
updateWrapper.set(IdxBizJgDesignInfo::getDesignStandard, equipDesignChangeDataDto.getDesignStandard());
updateWrapper.set(equipDesignChangeDataDto.getDesignIsComplete() != null , IdxBizJgDesignInfo::getDesignIsComplete, equipDesignChangeDataDto.getDesignIsComplete());
idxBizJgDesignInfoMapper.update(null, updateWrapper);
}
......@@ -97,6 +101,7 @@ public class EquipChangeDataUpdateServiceImpl {
updateWrapper.set(IdxBizJgFactoryInfo::getImported, equipFactoryChangeDataDto.getImported());
updateWrapper.set(IdxBizJgFactoryInfo::getInsUseMaintainExplain, equipFactoryChangeDataDto.getInsUseMaintainExplain());
updateWrapper.set(IdxBizJgFactoryInfo::getBoilerEnergyEfficiencyCertificate, equipFactoryChangeDataDto.getBoilerEnergyEfficiencyCertificate());
updateWrapper.set(equipFactoryChangeDataDto.getFactoryIsComplete() != null, IdxBizJgFactoryInfo::getFactoryIsComplete, equipFactoryChangeDataDto.getFactoryIsComplete());
jgFactoryInfoMapper.update(null, updateWrapper);
this.updateFactoryEsData(record, equipFactoryChangeDataDto);
}
......@@ -122,11 +127,22 @@ public class EquipChangeDataUpdateServiceImpl {
esEquipmentCategoryDto.setPRODUCT_NAME(registerChangeDataDto.getProductName());
esEquipmentCategoryDto.setEQU_CODE(registerChangeDataDto.getEquCode());
esEquipmentCategoryDto.setEQU_TYPE(registerChangeDataDto.getEquType());
esEquipmentCategoryDto.setEQU_CATEGORY_CODE(registerChangeDataDto.getEquCategory());
esEquipmentCategoryDto.setEQU_DEFINE_CODE(registerChangeDataDto.getEquDefine());
// 冗余设备类别名称
if (StringUtils.isEmpty(registerChangeDataDto.getEquCategory())) {
esEquipmentCategoryDto.setEQU_CATEGORY(null);
} else {
EquipmentCategory category = getEquipmentCategory(registerChangeDataDto.getEquCategory());
if (category != null) {
esEquipmentCategoryDto.setEQU_CATEGORY(category.getName());
}
}
// 冗余设备品种名称
if (StringUtils.isEmpty(registerChangeDataDto.getEquDefine())) {
esEquipmentCategoryDto.setEQU_DEFINE(null);
} else {
EquipmentCategory category = getEquipmentCategory(registerChangeDataDto);
EquipmentCategory category = getEquipmentCategory(registerChangeDataDto.getEquDefine());
if (category != null) {
esEquipmentCategoryDto.setEQU_DEFINE(category.getName());
}
......@@ -146,10 +162,11 @@ public class EquipChangeDataUpdateServiceImpl {
}
}
private EquipmentCategory getEquipmentCategory(EquipRegisterChangeDataDto registerChangeDataDto) {
return equipmentCategoryMapper.selectOne(new LambdaQueryWrapper<EquipmentCategory>().eq(EquipmentCategory::getCode, registerChangeDataDto.getEquDefine()));
private EquipmentCategory getEquipmentCategory(String categoryCode) {
return equipmentCategoryMapper.selectOne(new LambdaQueryWrapper<EquipmentCategory>().eq(EquipmentCategory::getCode, categoryCode));
}
public void updateTechParamByRecord(String tableName, String record, List<ChangeDataDto> changeDataDtos) {
List<DynamicColumnDto> columns = changeDataDtos.stream().map(c -> {
DynamicColumnDto columnDto = new DynamicColumnDto();
......@@ -259,4 +276,13 @@ public class EquipChangeDataUpdateServiceImpl {
esEquipmentCategory.save(esEquipmentCategoryDto);
}
}
public void updateOtherInfoChangeData(String record, EquipOtherInfoChangeDataDto otherInfoChangeDataDto) {
LambdaUpdateWrapper<IdxBizJgOtherInfo> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.eq(IdxBizJgOtherInfo::getRecord, record);
updateWrapper.set(IdxBizJgOtherInfo::getInformationManageCode, otherInfoChangeDataDto.getInformationManageCode());
updateWrapper.set(IdxBizJgOtherInfo::getCylinderStampAttachment, otherInfoChangeDataDto.getCylinderStampAttachment());
updateWrapper.set(IdxBizJgOtherInfo::getInformationSituation, otherInfoChangeDataDto.getInformationSituation());
idxBizJgOtherInfoMapper.update(null, updateWrapper);
}
}
package com.yeejoin.amos.boot.module.jg.biz.event.handler;
import org.springframework.context.ApplicationEvent;
public interface IChangeEventBizHandler<T extends ApplicationEvent> {
void handle(T event);
Boolean supports(T event);
}
package com.yeejoin.amos.boot.module.jg.biz.event.handler;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSONObject;
import com.yeejoin.amos.boot.module.jg.api.dto.ESDataChangeLogDto;
import com.yeejoin.amos.boot.module.jg.api.entity.JgBizChangeLog;
import com.yeejoin.amos.boot.module.jg.api.entity.JgInstallationNotice;
import com.yeejoin.amos.boot.module.jg.biz.event.ChangeDataEvent;
import com.yeejoin.amos.boot.module.jg.biz.service.impl.JgBizChangeLogServiceImpl;
import com.yeejoin.amos.boot.module.jg.biz.service.impl.JgInstallationNoticeServiceImpl;
import com.yeejoin.amos.boot.module.jg.biz.service.impl.UseRegisterDataChangeHandleImpl;
import com.yeejoin.amos.boot.module.ymt.api.enums.FlowStatusEnum;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
import java.util.Collections;
import java.util.Date;
import java.util.Set;
@Component
@RequiredArgsConstructor
@Slf4j
public class InstallNoticeChangeEventHandler implements IChangeEventBizHandler<ChangeDataEvent> {
private final JgInstallationNoticeServiceImpl jgInstallationNoticeService;
private final JgBizChangeLogServiceImpl jgBizChangeLogService;
@Override
@Async
public void handle(ChangeDataEvent event) {
log.info("开始更新安装告知json数据:{}", event);
// 查询关联的单据-未删除且已完成状态
Set<Long> installationNoticeIds = this.getRelationInstallNoticeList(event);
// 更新历史json
installationNoticeIds.forEach(seq -> {
// 更新json
JgInstallationNotice installationNotice = jgInstallationNoticeService.getById(seq);
// 查询之前数据json
JSONObject beforeData = jgInstallationNoticeService.getHisData(installationNotice);
jgInstallationNoticeService.saveHisDataBeforeUpdate(installationNotice);
// 查询之后数据json
JSONObject afterData = jgInstallationNoticeService.getHisData(installationNotice);
// es记录日志
this.log2es(beforeData, afterData, installationNotice, event);
});
log.info("更新安装告知的单据数量:{}", installationNoticeIds.size());
}
private void log2es(JSONObject beforeData, JSONObject afterData, JgInstallationNotice installationNotice, ChangeDataEvent event) {
Date date = DateUtil.date();
JgBizChangeLog changeLog = new JgBizChangeLog();
BeanUtil.copyProperties(event.getBizRelationData(), changeLog);
changeLog.setBizTable("tzs_jg_installation_notice");
changeLog.setRecDate(date);
changeLog.setBizId(installationNotice.getApplyNo());
// todo 与原始编辑进行关联
changeLog.setOId(event.getRequestContext().getTraceId());
changeLog.setBizType("installationNotice");
changeLog.setRecUserId(event.getRequestContext().getExcutedUserId());
ESDataChangeLogDto esDataChangeLogDto = new ESDataChangeLogDto();
esDataChangeLogDto.setColumnKey("changeData");
esDataChangeLogDto.setColumnKeyLabel("历史json数据");
esDataChangeLogDto.setBeforeData(beforeData.toJSONString());
esDataChangeLogDto.setAfterData(afterData.toJSONString());
esDataChangeLogDto.setUserId(event.getRequestContext().getExcutedUserId());
esDataChangeLogDto.setCreateDate(date.getTime());
esDataChangeLogDto.setRequestDate(DateUtil.formatDateTime(date));
esDataChangeLogDto.setChangeId(installationNotice.getApplyNo());
esDataChangeLogDto.setColumnFamily("tzs_jg_installation_notice");
esDataChangeLogDto.setBizType(changeLog.getBizType());
jgBizChangeLogService.save2DbAndEs(changeLog, Collections.singletonList(esDataChangeLogDto));
}
private Set<Long> getRelationInstallNoticeList(ChangeDataEvent event) {
// 变化的设备
Set<String> records = event.getBizRelationData().getRecords();
// 查询关联的单据-已完成时更新其json
return jgInstallationNoticeService.getBaseMapper().queryListByEqsAndStatus(records, FlowStatusEnum.TO_BE_FINISHED.getCode() + "");
}
@Override
public Boolean supports(ChangeDataEvent event) {
return UseRegisterDataChangeHandleImpl.BIZ_TYPE.equals(event.getBizRelationData().getBizType());
}
}
package com.yeejoin.amos.boot.module.jg.biz.event.handler;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.yeejoin.amos.boot.module.jg.api.dto.ESDataChangeLogDto;
import com.yeejoin.amos.boot.module.jg.api.entity.JgBizChangeLog;
import com.yeejoin.amos.boot.module.jg.api.entity.JgMaintenanceContract;
import com.yeejoin.amos.boot.module.jg.biz.event.ChangeDataEvent;
import com.yeejoin.amos.boot.module.jg.biz.service.impl.JgBizChangeLogServiceImpl;
import com.yeejoin.amos.boot.module.jg.biz.service.impl.JgMaintenanceContractServiceImpl;
import com.yeejoin.amos.boot.module.jg.biz.service.impl.UseRegisterDataChangeHandleImpl;
import com.yeejoin.amos.boot.module.ymt.api.enums.FlowStatusEnum;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
import java.util.Collections;
import java.util.Date;
import java.util.Set;
@Component
@RequiredArgsConstructor
@Slf4j
public class MaintenanceContractChangeEventHandler implements IChangeEventBizHandler<ChangeDataEvent> {
private final JgMaintenanceContractServiceImpl jgMaintenanceContractService;
private final JgBizChangeLogServiceImpl jgBizChangeLogService;
@Override
@Async
public void handle(ChangeDataEvent event) {
log.info("开始更新维保备案json数据:{}", event);
// 查询关联的单据-未删除且已完成状态
Set<Long> maintenanceContractList = this.getRelationMaintenanceContractList(event);
// 更新历史json
maintenanceContractList.forEach(seq -> {
// 更新json
JgMaintenanceContract maintenanceContract = jgMaintenanceContractService.getById(seq);
// 查询之前数据json
JSONArray beforeData = jgMaintenanceContractService.getHisData(maintenanceContract);
jgMaintenanceContractService.updateHisDataAfterEquipEdit(maintenanceContract);
// 查询之后数据json
JSONArray afterData = jgMaintenanceContractService.getHisData(maintenanceContract);
// es记录日志
this.log2es(beforeData, afterData, maintenanceContract, event);
});
log.info("更新维保备案的单据数量:{}", maintenanceContractList.size());
}
private Set<Long> getRelationMaintenanceContractList(ChangeDataEvent event) {
// 变化的设备
Set<String> records = event.getBizRelationData().getRecords();
// 查询关联的单据-已完成时更新其json
return jgMaintenanceContractService.getBaseMapper().queryListByEqsAndStatus(records, FlowStatusEnum.TO_BE_FINISHED.getName());
}
@Override
public Boolean supports(ChangeDataEvent event) {
return UseRegisterDataChangeHandleImpl.BIZ_TYPE.equals(event.getBizRelationData().getBizType());
}
private void log2es(JSON beforeData, JSON afterData, JgMaintenanceContract maintenanceContract, ChangeDataEvent event) {
Date date = DateUtil.date();
JgBizChangeLog changeLog = new JgBizChangeLog();
BeanUtil.copyProperties(event.getBizRelationData(), changeLog);
changeLog.setBizTable("tzs_jg_maintenance_contract");
changeLog.setRecDate(date);
changeLog.setBizId(maintenanceContract.getApplyNo());
// todo 与原始编辑进行关联
changeLog.setOId(event.getRequestContext().getTraceId());
changeLog.setBizType("maintenanceContract");
changeLog.setRecUserId(event.getRequestContext().getExcutedUserId());
ESDataChangeLogDto esDataChangeLogDto = new ESDataChangeLogDto();
esDataChangeLogDto.setColumnKey("changeData");
esDataChangeLogDto.setColumnKeyLabel("历史json数据");
esDataChangeLogDto.setBeforeData(beforeData.toJSONString());
esDataChangeLogDto.setAfterData(afterData.toJSONString());
esDataChangeLogDto.setUserId(event.getRequestContext().getExcutedUserId());
esDataChangeLogDto.setCreateDate(date.getTime());
esDataChangeLogDto.setRequestDate(DateUtil.formatDateTime(date));
esDataChangeLogDto.setChangeId(maintenanceContract.getApplyNo());
esDataChangeLogDto.setColumnFamily("tzs_jg_maintenance_contract");
esDataChangeLogDto.setBizType(changeLog.getBizType());
jgBizChangeLogService.save2DbAndEs(changeLog, Collections.singletonList(esDataChangeLogDto));
}
}
package com.yeejoin.amos.boot.module.jg.biz.event.handler;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSONObject;
import com.yeejoin.amos.boot.module.jg.api.dto.ESDataChangeLogDto;
import com.yeejoin.amos.boot.module.jg.api.entity.JgBizChangeLog;
import com.yeejoin.amos.boot.module.jg.api.entity.JgUseRegistration;
import com.yeejoin.amos.boot.module.jg.biz.event.ChangeDataEvent;
import com.yeejoin.amos.boot.module.jg.biz.service.impl.JgBizChangeLogServiceImpl;
import com.yeejoin.amos.boot.module.jg.biz.service.impl.JgUseRegistrationServiceImpl;
import com.yeejoin.amos.boot.module.jg.biz.service.impl.UseRegisterDataChangeHandleImpl;
import com.yeejoin.amos.boot.module.jg.biz.service.impl.UseRegisterUpdateService;
import com.yeejoin.amos.boot.module.ymt.api.enums.FlowStatusEnum;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
import java.util.Collections;
import java.util.Date;
import java.util.Set;
@Component
@RequiredArgsConstructor
@Slf4j
public class UseRegisterChangeEventHandler implements IChangeEventBizHandler<ChangeDataEvent> {
private final JgUseRegistrationServiceImpl jgUseRegistrationService;
private final JgBizChangeLogServiceImpl jgBizChangeLogService;
private final UseRegisterUpdateService registerUpdateService;
@Override
@Async
public void handle(ChangeDataEvent event) {
log.info("开始更新使用登记json数据:{}", event);
// 查询关联的单据-未删除且已完成状态-不包括原始使用登记的修改
Set<Long> useRegistrationIds = this.getRelationUseRegisterList(event);
// 更新历史json
useRegistrationIds.forEach(seq -> {
// 更新json
JgUseRegistration useRegistration = jgUseRegistrationService.getById(seq);
// 查询之前数据json
JSONObject beforeData = jgUseRegistrationService.getHisData(useRegistration);
registerUpdateService.updateHisData(useRegistration.getApplyNo());
// 查询之后数据json
JSONObject afterData = jgUseRegistrationService.getHisData(useRegistration);
// es记录日志
this.log2es(beforeData, afterData, useRegistration, event);
});
log.info("更新使用登记的单据数量:{}", useRegistrationIds.size());
}
private void log2es(JSONObject beforeData, JSONObject afterData, JgUseRegistration jgUseRegistration, ChangeDataEvent event) {
Date date = DateUtil.date();
JgBizChangeLog changeLog = new JgBizChangeLog();
BeanUtil.copyProperties(event.getBizRelationData(), changeLog);
changeLog.setRecDate(date);
changeLog.setBizId(jgUseRegistration.getApplyNo());
// todo 与原始编辑进行关联
changeLog.setOId(event.getRequestContext().getTraceId());
changeLog.setBizType(changeLog.getBizType());
changeLog.setBizTable("tzs_jg_use_registration");
changeLog.setRecUserId(event.getRequestContext().getExcutedUserId());
ESDataChangeLogDto esDataChangeLogDto = new ESDataChangeLogDto();
esDataChangeLogDto.setColumnKey("changeData");
esDataChangeLogDto.setColumnKeyLabel("历史json数据");
esDataChangeLogDto.setBeforeData(beforeData.toJSONString());
esDataChangeLogDto.setAfterData(afterData.toJSONString());
esDataChangeLogDto.setUserId(event.getRequestContext().getExcutedUserId());
esDataChangeLogDto.setCreateDate(date.getTime());
esDataChangeLogDto.setRequestDate(DateUtil.formatDateTime(date));
esDataChangeLogDto.setChangeId(jgUseRegistration.getApplyNo());
esDataChangeLogDto.setColumnFamily(changeLog.getBizTable());
esDataChangeLogDto.setBizType(changeLog.getBizType());
jgBizChangeLogService.save2DbAndEs(changeLog, Collections.singletonList(esDataChangeLogDto));
}
private Set<Long> getRelationUseRegisterList(ChangeDataEvent event) {
// 变化的设备
Set<String> records = event.getBizRelationData().getRecords();
String applyNo = event.getBizRelationData().getBizId();
// 查询设备关联的已完成状态的单据-来更新其json
return jgUseRegistrationService.getBaseMapper().queryListByEqsAndStatus(records, FlowStatusEnum.TO_BE_FINISHED.getName(), applyNo);
}
@Override
public Boolean supports(ChangeDataEvent event) {
return UseRegisterDataChangeHandleImpl.BIZ_TYPE.equals(event.getBizRelationData().getBizType());
}
}
......@@ -53,12 +53,17 @@ public class CancellationEventListener {
@PostConstruct
public void init() {
ExecutorService executorService = Executors.newFixedThreadPool(threadNumber);
ExecutorService executorService = Executors.newFixedThreadPool(threadNumber, r -> {
Thread t = new Thread(r);
t.setName("CancellationWorker-" + t.getId());
return t;
});
for (int i = 0; i < threadNumber; i++) {
executorService.execute(() -> {
while (true) {
try {
String record = queue.take();
log.info("线程 {} 开始处理 record: {}", Thread.currentThread().getName(), record);
this.dealData(record);
} catch (Exception e) {
log.error(e.getMessage(), e);
......@@ -70,6 +75,7 @@ public class CancellationEventListener {
}
private void dealData(String record) {
log.info("开始检查设备的引用:{}", record);
// 所有业务单据(除去作废、删除状态单据),有在引用设备的则不修改设备纳管状态
Boolean inUsed = commonService.checkEquipIsUsed(record);
// 无引用则进行修改纳管状态为未纳管
......
package com.yeejoin.amos.boot.module.jg.biz.event.listener;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSONObject;
import com.yeejoin.amos.boot.module.jg.api.dto.ChangeDataDto;
import com.yeejoin.amos.boot.module.jg.api.dto.ESDataChangeLogDto;
import com.yeejoin.amos.boot.module.jg.api.entity.JgBizChangeLog;
import com.yeejoin.amos.boot.module.jg.biz.dao.ESDataChangeLogDao;
import com.yeejoin.amos.boot.module.jg.biz.event.ChangeDataEvent;
import com.yeejoin.amos.boot.module.jg.biz.service.impl.JgBizChangeLogServiceImpl;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
import org.springframework.transaction.event.TransactionalEventListener;
import org.typroject.tyboot.core.foundation.context.RequestContextModel;
import javax.annotation.PostConstruct;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
/**
* @author Administrator
*/
@Component
@Slf4j
@RequiredArgsConstructor
public class ChangeLogInsertListener {
private static final Map<String, String> bizTypeTableMap = new HashMap<>();
static {
bizTypeTableMap.put("useRegister", "tzs_jg_use_registration");
bizTypeTableMap.put("singleManageEquipEdit", "idx_biz_jg_use_info");
}
@Value("${change.data.deal.thread.number:1}")
private int threadNumber;
private final ESDataChangeLogDao esDataChangeLogDao;
private final JgBizChangeLogServiceImpl bizChangeLogService;
private final BlockingQueue<ChangeDataEvent> queue = new LinkedBlockingQueue<>();
@TransactionalEventListener(value = ChangeDataEvent.class)
@Async
public void handleTransactionalEvent(ChangeDataEvent event) {
log.info("收到用户变更业务数据消息:{}", JSONObject.toJSONString(event));
queue.add(event);
}
@PostConstruct
public void init() {
ExecutorService executorService = Executors.newFixedThreadPool(threadNumber);
IntStream.range(0, threadNumber).forEach(i -> {
executorService.execute(() -> {
while (true) {
try {
ChangeDataEvent event = queue.take();
processEvent(event);
} catch (Exception e) {
log.error(e.getMessage(), e);
}
}
});
});
}
private void processEvent(ChangeDataEvent event) {
List<ChangeDataDto> changeDataDtos = event.getData();
RequestContextModel requestContextModel = event.getRequestContext();
Date date = new Date();
// 1.主表保存
JgBizChangeLog changeLog = saveLog(event);
// 2.子表字段保存
List<ESDataChangeLogDto> logs = saveColumnsChange2Es(changeDataDtos, requestContextModel, date, changeLog);
log.info("es 操作日志数据入库成功:{}条", logs.size());
}
private List<ESDataChangeLogDto> saveColumnsChange2Es(List<ChangeDataDto> changeDataDtos, RequestContextModel requestContextModel, Date date, JgBizChangeLog changeLog) {
List<ESDataChangeLogDto> logs = changeDataDtos.parallelStream().map(changeDataDto -> {
ESDataChangeLogDto changeLogDto = new ESDataChangeLogDto();
changeLogDto.setColumnKey(changeDataDto.getColumnKey());
changeLogDto.setColumnKeyLabel(changeDataDto.getColumnLabel());
changeLogDto.setBeforeData(changeDataDto.getColumnOldValue());
changeLogDto.setAfterData(changeDataDto.getColumnNewValue());
changeLogDto.setUserId(requestContextModel.getExcutedUserId());
changeLogDto.setCreateDate(date.getTime());
changeLogDto.setRequestDate(DateUtil.formatDateTime(date));
changeLogDto.setChangeId(changeDataDto.getChangeId());
changeLogDto.setColumnFamily(changeDataDto.getColumnFamily());
changeLogDto.setBizType(changeDataDto.getBizType());
changeLogDto.setBatchId(changeLog.getSequenceNbr() + "");
return changeLogDto;
}).collect(Collectors.toList());
if (!logs.isEmpty()) {
esDataChangeLogDao.saveAll(logs);
}
return logs;
}
private JgBizChangeLog saveLog(ChangeDataEvent event) {
JgBizChangeLog changeLog = new JgBizChangeLog();
BeanUtil.copyProperties(event.getBizRelationData(), changeLog);
changeLog.setBizTable(bizTypeTableMap.get(changeLog.getBizType()));
changeLog.setRecDate(new Date());
changeLog.setRecUserId(event.getRequestContext().getExcutedUserId());
// todo 使用上下文这个作为id 便于其他业务和其进行关联
changeLog.setSequenceNbr(Long.parseLong(event.getRequestContext().getTraceId()));
bizChangeLogService.getBaseMapper().insert(changeLog);
return changeLog;
}
}
package com.yeejoin.amos.boot.module.jg.biz.event.listener;
import com.alibaba.fastjson.JSONObject;
import com.yeejoin.amos.boot.module.jg.biz.event.ChangeDataEvent;
import com.yeejoin.amos.boot.module.jg.biz.event.handler.IChangeEventBizHandler;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.ApplicationEvent;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
import org.springframework.transaction.event.TransactionalEventListener;
import javax.annotation.PostConstruct;
import java.util.List;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.stream.IntStream;
/**
* @author Administrator
*/
@Component
@Slf4j
@RequiredArgsConstructor
public class RelationBizApplyUpdateListener {
@Value("${relation.data.deal.thread.number:1}")
private int threadNumber;
private final List<IChangeEventBizHandler<ApplicationEvent>> changeUpdateHandlers;
private final BlockingQueue<ChangeDataEvent> queue = new LinkedBlockingQueue<>();
@TransactionalEventListener(value = ChangeDataEvent.class)
@Async
public void handleTransactionalEvent(ChangeDataEvent event) {
log.info("收到用户变更业务数据消息:{}", JSONObject.toJSONString(event));
queue.add(event);
}
@PostConstruct
public void init() {
ExecutorService executorService = Executors.newFixedThreadPool(threadNumber);
IntStream.range(0, threadNumber).forEach(i -> {
executorService.execute(() -> {
while (true) {
try {
ChangeDataEvent event = queue.take();
processEvent(event);
} catch (Exception e) {
log.error(e.getMessage(), e);
}
}
});
});
}
private void processEvent(ChangeDataEvent event) {
changeUpdateHandlers.stream().filter(h -> h.supports(event)).forEach(h -> {
log.info("处理器:{}", JSONObject.toJSONString(h));
h.handle(event);
});
}
}
......@@ -18,7 +18,6 @@ public class EventPublisher implements ApplicationEventPublisherAware {
this.publisher = applicationEventPublisher;
}
@Async
public void publish(ApplicationEvent event) {
publisher.publishEvent(event);
}
......
......@@ -16,7 +16,10 @@ import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import java.util.*;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
@Component("equipmentProblemStrategy")
......@@ -48,7 +51,7 @@ public class EquipmentProblemStrategy implements ProblemHandleStrategy {
.set(SafetyProblemTracing::getProblemStatusCode, SafetyProblemStatusEnum.HANDLED.getCode())
.set(SafetyProblemTracing::getProblemStatus, SafetyProblemStatusEnum.HANDLED.getName())
.in(SafetyProblemTracing::getSourceId, equipRecords)
.eq(SafetyProblemTracing::getProblemTypeCode, problemTypeEnum.getCode())
.eq(SafetyProblemTracing::getProblemTypeCode, problemTypeEnum.getProblemTypeCode())
.update();
// 查询仍存在未处理问题的设备
......
......@@ -122,7 +122,7 @@ public class SafetyProblemTopicMessage extends EmqxListener {
SafetyProblemTracing safetyProblemTracing = new SafetyProblemTracing();
// safetyProblemTracing.setProblemNum(json.getString("problemNum"));
safetyProblemTracing.setProblemType(problemTypeEnum.getName());
safetyProblemTracing.setProblemTypeCode(problemTypeEnum.getCode());
safetyProblemTracing.setProblemTypeCode(problemTypeEnum.getProblemTypeCode());
safetyProblemTracing.setProblemDesc(problemTypeEnum.getDesc());
// safetyProblemTracing.setProblemLevel(json.getString("problemLevel"));
// safetyProblemTracing.setProblemLevelCode(json.getString("problemLevelCode"));
......@@ -173,7 +173,7 @@ public class SafetyProblemTopicMessage extends EmqxListener {
JSONObject json = (JSONObject) item;
SafetyProblemTracing safetyProblemTracing = new SafetyProblemTracing();
safetyProblemTracing.setProblemType(problemTypeEnum.getName());
safetyProblemTracing.setProblemTypeCode(problemTypeEnum.getCode());
safetyProblemTracing.setProblemTypeCode(problemTypeEnum.getProblemTypeCode());
safetyProblemTracing.setProblemDesc(json.getString("problemDesc"));
safetyProblemTracing.setSourceType(json.getString("sourceType"));
safetyProblemTracing.setSourceTypeCode(json.getString("sourceTypeCode"));
......
......@@ -64,7 +64,7 @@ public interface ICommonService {
List<LinkedHashMap> creatApproveTree();
List<Map<String, Object>> superviseBusinessCategory(String businessType);
List<Map<String, Object>> superviseBusinessCategory(String businessType, String dataSource);
List<Map<String, Object>> businessScenarios(String type);
......@@ -268,4 +268,11 @@ public interface ICommonService {
Map<String, Object> getRegistrationChangeCertificateUrl(JSONObject formData);
void getRegistrationChangeCertificateFormStream(JSONObject jsonObject, HttpServletResponse response);
/**
* 检查record的唯一性
* @param record
* @return
*/
Boolean checkRecordUniqueness(String record);
}
......@@ -1130,7 +1130,7 @@ public class DataHandlerServiceImpl {
log.info("存量数据刷属地监管部门到证管理表处理开始--->");
// 1|5|6 预处理,存量数据导入时缺少记录到tzs_jg_use_registration->supervision_org_code,先补充supervision_org_code到tzs_jg_use_registration
List<JgUseRegistrationDto> missingSupOrgCodeUses = useRegistrationService.getBaseMapper().selectMissingSupOrgCodeUseList();
missingSupOrgCodeUses.forEach(u->{
missingSupOrgCodeUses.parallelStream().forEach(u->{
// TODO 历史存量数据里有:610422_三原县市场监督管理局,需要转换为:50*73*123_三原县市场监督管理局, null则挂到根节点省上
if(StringUtils.isNotEmpty(u.getSupervisoryCode()) && u.getSupervisoryCode().split("_").length > 1){
String[] orgCodeNameArray = u.getSupervisoryCode().split("_");
......@@ -1156,7 +1156,7 @@ public class DataHandlerServiceImpl {
// 1|5|6 处理
AtomicReference<Long> dealNum = new AtomicReference<>(0L);
List<JgUseRegistrationDto> useRegistrations = useRegistrationService.getBaseMapper().getListOfPass();
useRegistrations.forEach(u->{
useRegistrations.parallelStream().forEach(u->{
LambdaUpdateWrapper<JgUseRegistrationManage> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.eq(JgUseRegistrationManage::getUseRegistrationCode,u.getUseRegistrationCode());
updateWrapper.set(JgUseRegistrationManage::getSuperviseOrgCode,u.getSupervisionOrgCode());
......@@ -1166,7 +1166,7 @@ public class DataHandlerServiceImpl {
});
// 2 处理
List<JgVehicleInformation> vehicleUseRegs = jgVehicleInformationService.getBaseMapper().getListOfPass();
vehicleUseRegs.forEach(u->{
vehicleUseRegs.parallelStream().forEach(u->{
LambdaUpdateWrapper<JgUseRegistrationManage> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.eq(JgUseRegistrationManage::getUseRegistrationCode,u.getUseRegistrationCode());
updateWrapper.set(JgUseRegistrationManage::getSuperviseOrgCode,u.getOrgBranchCode());
......@@ -1176,7 +1176,7 @@ public class DataHandlerServiceImpl {
});
// 3 处理
List<JgChangeVehicleRegistrationUnit> vehicleRegistrationUnits = jgChangeVehicleRegistrationUnitMapper.getListOfPass();
vehicleRegistrationUnits.forEach(u->{
vehicleRegistrationUnits.parallelStream().forEach(u->{
LambdaUpdateWrapper<JgUseRegistrationManage> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.eq(JgUseRegistrationManage::getUseRegistrationCode,u.getUseRegistCode());
updateWrapper.set(JgUseRegistrationManage::getSuperviseOrgCode,u.getOrgBranchCode());
......@@ -1186,7 +1186,7 @@ public class DataHandlerServiceImpl {
});
// 4 处理
List<JgChangeRegistrationTransfer> transfers = jgChangeRegistrationTransferMapper.getListOfPass();
transfers.forEach(u->{
transfers.parallelStream().forEach(u->{
if(StringUtils.isNotEmpty(u.getRemark()) && u.getRemark().split("_").length > 1){
String[] orgCodeNameArray = u.getRemark().split("_");
LambdaUpdateWrapper<JgUseRegistrationManage> updateWrapper = new LambdaUpdateWrapper<>();
......
package com.yeejoin.amos.boot.module.jg.biz.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.yeejoin.amos.boot.biz.common.bo.CompanyBo;
import com.yeejoin.amos.boot.biz.common.controller.BaseController;
import com.yeejoin.amos.boot.module.jg.api.enums.CompanyTypeEnum;
import com.yeejoin.amos.component.feign.utils.FeignUtil;
import com.yeejoin.amos.feign.privilege.Privilege;
import com.yeejoin.amos.feign.privilege.model.GroupModel;
......@@ -14,9 +17,16 @@ import java.util.List;
@Slf4j
public class FillingEditPermForCurrentUser extends BaseUseRegisterResultData {
private final CompanyBo company;
public FillingEditPermForCurrentUser(JSONObject data) {
private static final String COMPANY_TYPE = "companyType";
private static final String HAS_PERMISSION = "hasPermission";
public FillingEditPermForCurrentUser(JSONObject data, CompanyBo company) {
super(data);
this.company = company;
}
......@@ -29,7 +39,6 @@ public class FillingEditPermForCurrentUser extends BaseUseRegisterResultData {
private void fillingEditPermission(JSONObject jsonObject) {
String HAS_PERMISSION = "hasPermission";
jsonObject.put(HAS_PERMISSION, false);
// 当前登录人所在用户组
List<GroupModel> groupModels = FeignUtil.remoteCall(() -> Privilege.groupClient.queryByUserId(RequestContext.getExeUserId()));
......@@ -38,6 +47,12 @@ public class FillingEditPermForCurrentUser extends BaseUseRegisterResultData {
if (groupModels.stream().anyMatch(g -> hasPermGroup.stream().anyMatch(h -> h.getDictDataValue().equals(g.getGroupName())))) {
jsonObject.put(HAS_PERMISSION, true);
}
if(company != null) {
if (company.getLevel().equals(BaseController.COMPANY_TYPE_COMPANY)) {
jsonObject.put(COMPANY_TYPE, BaseController.COMPANY_TYPE_COMPANY);
} else {
jsonObject.put(COMPANY_TYPE, BaseController.COMPANY_TYPE_SUPERVISION);
}
}
}
}
......@@ -134,6 +134,7 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
public static final String INSPECTION_AND_TESTING_INSTITUTIONS = "检验检测机构";
// 设备纳管 纳管:true 未纳管:false
public static final String IS_INTO_MANAGEMENT = "IS_INTO_MANAGEMENT";
public static final String IS_DO_BUSINESS = "IS_DO_BUSINESS";
// 设备来源 jg:新设备录入 jg_his:历史数据录入
public static final String DATA_SOURCE = "DATA_SOURCE";
// 设备来源名称 jg:新设备 jg_his:历史数据
......@@ -1674,14 +1675,20 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
*/
public String judgeTheBusinessAccordingByRecord(String record, Map<String, Object> objMap) {
String business = "";
// 安装告知
Map<String, Object> installDetail = jgUseRegistrationMapper.getiInstallDetailByIdx(record);
if (!ObjectUtils.isEmpty(installDetail)) {
// TODO 兼容历史有证、无证数据,根本原因idx_biz_jg_construction_info施工信息字段不全,字段补全后还是要查idx_biz_jg_construction_info,否则改造告知
// 安装信息,优先查询安装告知信息没有再查设备的施工信息表
// 安装告知信息表查询,做过安装告知的施工信息优先
Map<String, Object> constructInfo = jgUseRegistrationMapper.getiInstallDetail(record);
if(constructInfo == null){
// 施工信息表查询
constructInfo = jgUseRegistrationMapper.getiInstallDetailByIdx(record);
}
if (!ObjectUtils.isEmpty(constructInfo)) {
business = business + ",安装告知";
objMap.putAll(installDetail);
objMap.put("insOtherAccessories", JSON.parse(Optional.ofNullable(installDetail.get("insOtherAccessories")).orElse("").toString()));
objMap.put("installProxyStatementAttachment", JSON.parse(Optional.ofNullable(installDetail.get("installProxyStatementAttachment")).orElse("").toString()));
objMap.put("installContractAttachment", JSON.parse(Optional.ofNullable(installDetail.get("installContractAttachment")).orElse("").toString()));
objMap.putAll(constructInfo);
objMap.put("insOtherAccessories", JSON.parse(Optional.ofNullable(constructInfo.get("insOtherAccessories")).orElse("").toString()));
objMap.put("installProxyStatementAttachment", JSON.parse(Optional.ofNullable(constructInfo.get("installProxyStatementAttachment")).orElse("").toString()));
objMap.put("installContractAttachment", JSON.parse(Optional.ofNullable(constructInfo.get("installContractAttachment")).orElse("").toString()));
}
// 维保备案
Map<String, Object> maintenanceDetail = jgUseRegistrationMapper.getMaintenanceDetailByIdx(record);
......@@ -2353,6 +2360,15 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
meBuilder.minimumShouldMatch(1);
boolMust.must(meBuilder);
//默认条件 限制西安电梯隶属导入数据不可做业务
if (ObjectUtils.isEmpty(map.getString(IS_DO_BUSINESS))) {
BoolQueryBuilder tBuilder = QueryBuilders.boolQuery();
tBuilder.should(QueryBuilders.matchQuery(IS_DO_BUSINESS, true));
tBuilder.should(QueryBuilders.boolQuery().mustNot(QueryBuilders.existsQuery(IS_DO_BUSINESS)));
tBuilder.minimumShouldMatch(1);
boolMust.must(tBuilder);
}
// DATA_SOURCE 为“jg”开头的数据(从监管新加或复制的设备)
// 20240314 提出的监管业务不要让企业用户选到之前一码通认领或补录的设备,让从监管业务中去新增
BoolQueryBuilder dBuilder = QueryBuilders.boolQuery();
......@@ -2574,19 +2590,31 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
pBuilder.must(QueryBuilders.termQuery(EQU_CATEGORY_CODE, test));
boolMust.must(pBuilder);
}
// 是否车用气瓶
if (!ObjectUtils.isEmpty(map.getString(WHETHER_VEHICLE_CYLINDER))) {
BoolQueryBuilder pBuilder = QueryBuilders.boolQuery();
String test = QueryParser.escape(map.getString(WHETHER_VEHICLE_CYLINDER));
pBuilder.must(QueryBuilders.termQuery(WHETHER_VEHICLE_CYLINDER, test));
boolMust.must(pBuilder);
//设备类别为气瓶时,添加是否车用气瓶字段
if (CylinderTypeEnum.CYLINDER.getCode().equals(map.getString(EQU_CATEGORY_CODE))) {
Optional.ofNullable(map.getString(WHETHER_VEHICLE_CYLINDER))
.filter(s -> !s.trim().isEmpty())
.ifPresent(cylinder -> boolMust.must(
QueryBuilders.boolQuery()
.must(QueryBuilders.termQuery(WHETHER_VEHICLE_CYLINDER, QueryParser.escape(cylinder)))
));
}
// 是否撬装式压力容器
if (!ObjectUtils.isEmpty(map.getString(WHETHER_SKID_MOUNTED_PRESSURE_VESSEL))) {
BoolQueryBuilder pBuilder = QueryBuilders.boolQuery();
String test = QueryParser.escape(map.getString(WHETHER_SKID_MOUNTED_PRESSURE_VESSEL));
pBuilder.must(QueryBuilders.termQuery(WHETHER_SKID_MOUNTED_PRESSURE_VESSEL, test));
boolMust.must(pBuilder);
if ("2100".equals(map.getString(EQU_CATEGORY_CODE))){
if (!ObjectUtils.isEmpty(map.getString(WHETHER_SKID_MOUNTED_PRESSURE_VESSEL))) {
if ("1".equals(map.getString(WHETHER_SKID_MOUNTED_PRESSURE_VESSEL))){
BoolQueryBuilder pBuilder = QueryBuilders.boolQuery();
String test = QueryParser.escape(map.getString(WHETHER_SKID_MOUNTED_PRESSURE_VESSEL));
pBuilder.must(QueryBuilders.termQuery(WHETHER_SKID_MOUNTED_PRESSURE_VESSEL, test));
boolMust.must(pBuilder);
}else{
BoolQueryBuilder orBuilder = QueryBuilders.boolQuery();
orBuilder.should(QueryBuilders.termQuery(WHETHER_SKID_MOUNTED_PRESSURE_VESSEL, "0"));
orBuilder.should(QueryBuilders.boolQuery().mustNot(QueryBuilders.existsQuery(WHETHER_SKID_MOUNTED_PRESSURE_VESSEL)));
orBuilder.minimumShouldMatch(1);
boolMust.must(orBuilder);
}
}
}
// 设备代码模糊查询
if (!ObjectUtils.isEmpty(map.getString(EQU_CODE))) {
......@@ -3603,10 +3631,11 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
jsonObject.put("useUnitCreditCode", useUnitCreditCode);
Page<JSONObject> page = new Page<>(jsonObject.getLong("number"), jsonObject.getLong("size"));
Set<String> records = EquipUsedCheckStrategyContext.getUsedStrategy("useRegistration").getEquipInFlow(useUnitCreditCode);
String[] recordList = ValidationUtil.isEmpty(records) ? null : records.toArray(new String[records.size()]);
if ("2300".equals(jsonObject.get(EQU_CATEGORY_CODE))) {// 气瓶
List<DictionarieValueModel> fillingMedium = Systemctl.dictionarieClient.dictValues("FILLING_MEDIUM").getResult();
Map<String, Object> fillingMediumMap = fillingMedium.stream().collect(Collectors.toMap(DictionarieValueModel::getDictDataKey, DictionarieValueModel::getDictDataValue));
Page<JSONObject> result = jgUseRegistrationMapper.queryForUnitVesselEquipmentPage(page, jsonObject, records);
Page<JSONObject> result = jgUseRegistrationMapper.queryForUnitVesselEquipmentPage(page, jsonObject, recordList);
result.getRecords().forEach(i -> {
i.put("chargingMedium", fillingMediumMap.get(i.get("chargingMedium")));
i.put("productPhoto", JSONArray.parseArray(i.getString("productPhoto")));
......
package com.yeejoin.amos.boot.module.jg.biz.service.impl;
import com.yeejoin.amos.boot.module.jg.api.dto.ESDataChangeLogDto;
import com.yeejoin.amos.boot.module.jg.api.dto.JgBizChangeLogDto;
import com.yeejoin.amos.boot.module.jg.api.entity.JgBizChangeLog;
import com.yeejoin.amos.boot.module.jg.api.mapper.JgBizChangeLogMapper;
import com.yeejoin.amos.boot.module.jg.api.service.IJgBizChangeLogService;
import com.yeejoin.amos.boot.module.jg.biz.dao.ESDataChangeLogDao;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.typroject.tyboot.core.rdbms.service.BaseService;
import java.util.List;
/**
* 服务实现类
*
* @author system_generator
* @date 2025-04-14
*/
@Service
@RequiredArgsConstructor
public class JgBizChangeLogServiceImpl extends BaseService<JgBizChangeLogDto, JgBizChangeLog, JgBizChangeLogMapper> implements IJgBizChangeLogService {
private final ESDataChangeLogDao esDataChangeLogDao;
public void save2DbAndEs(JgBizChangeLog changeLog, List<ESDataChangeLogDto> esDataChangeLogDtos) {
this.save(changeLog);
esDataChangeLogDtos.forEach(esDataChangeLogDto -> {
esDataChangeLogDto.setBatchId(changeLog.getSequenceNbr() + "");
});
if (!esDataChangeLogDtos.isEmpty()) {
esDataChangeLogDao.saveAll(esDataChangeLogDtos);
}
}
}
\ No newline at end of file
......@@ -33,6 +33,7 @@ import com.yeejoin.amos.boot.module.ymt.api.entity.IdxBizJgFactoryInfo;
import com.yeejoin.amos.boot.module.ymt.api.enums.ApplicationFormTypeEnum;
import com.yeejoin.amos.boot.module.ymt.api.enums.FlowStatusEnum;
import com.yeejoin.amos.boot.module.ymt.api.mapper.EquipmentCategoryMapper;
import com.yeejoin.amos.feign.privilege.model.AgencyUserModel;
import com.yeejoin.amos.feign.systemctl.model.TaskV2Model;
import com.yeejoin.amos.feign.workflow.model.ActWorkflowBatchDTO;
import com.yeejoin.amos.feign.workflow.model.ActWorkflowStartDTO;
......@@ -188,7 +189,7 @@ public class JgCertificateReplenishServiceImpl extends BaseService<JgCertificate
certRep.setNextTaskId(processTaskDTO.getNextTask().get(0).getId());
// 更新下一步可执行人
certRep.setNextExecuteUserIds(nextUserIds);
commonService.deleteTasksByRelationId(certRep.getSequenceNbr().toString());
commonService.deleteTasksByRelationId(certRep.getInstanceId());
createTaskModel(certRep, processTaskDTO, nextUserIds);
}
commonService.saveExecuteFlowData2Redis(certRep.getInstanceId(), buildInstanceRuntimeData(certRep));
......@@ -215,7 +216,7 @@ public class JgCertificateReplenishServiceImpl extends BaseService<JgCertificate
taskModelDto.setFlowStatusLabel(FlowStatusEnum.TO_BE_PROCESSED.getName());
taskModelDto.setTaskType(BusinessTypeEnum.JG_REPLACEMENT_REGISTRATION.getCode());
taskModelDto.setTaskTypeLabel(BusinessTypeEnum.JG_REPLACEMENT_REGISTRATION.getName());
taskModelDto.setStartUser(certRep.getRecUserName());
taskModelDto.setStartUser(certRep.getCreateUserName());
taskModelDto.setStartUserCompanyName(certRep.getUseUnitName());
taskModelDto.setNextExecuteUser(certRep.getNextExecuteIds());
taskModelDto.setStartDate(new Date());
......@@ -357,6 +358,15 @@ public class JgCertificateReplenishServiceImpl extends BaseService<JgCertificate
}
public JgCertificateReplenish buildCertRep(Long sequenceNbr, JSONObject jsonObj, WorkflowResultDto workflowResultDto, FlowStatusEnum flowStatusEnum) {
CompanyBo company = getSelectedOrgInfo().getCompany();
AgencyUserModel userModel = getSelectedOrgInfo().getUserModel();
boolean isCompany = !company.getCompanyType().equals(JG_COMAPNY_TYPE);
String useUnitCode = "";
String useUnitName = "";
if (isCompany) {
useUnitCode = CompanyTypeEnum.INDIVIDUAL.getName().equals(company.getCompanyType()) ? company.getCompanyCode().split("_")[1] : company.getCompanyCode();
useUnitName = CompanyTypeEnum.INDIVIDUAL.getName().equals(company.getCompanyType()) ? company.getCompanyName().split("_")[1] : company.getCompanyName();
}
JgCertificateReplenishDto dto = JSON.parseObject(JSONObject.toJSONString(jsonObj), JgCertificateReplenishDto.class);
Date date = new Date();
String[] receiveOrg = Objects.toString(jsonObj.get(RECEIVE_ORG_CODE)).split("_");
......@@ -376,18 +386,16 @@ public class JgCertificateReplenishServiceImpl extends BaseService<JgCertificate
certRep.setApplyStatus(Objects.toString(flowStatusEnum.getCode()));
certRep.setReceiveOrgCode(receiveOrg[0]);
certRep.setReceiveOrgName(receiveOrg[1]);
certRep.setUseUnitCode(getSelectedOrgInfo().getCompany().getCompanyCode());
certRep.setUseUnitName(getSelectedOrgInfo().getCompany().getCompanyName());
certRep.setUseUnitCode(useUnitCode);
certRep.setUseUnitName(useUnitName);
Optional.ofNullable(jsonObj.get(APPLICATION_FORM_FILE)).ifPresent(x -> certRep.setApplicationFormFile(JSONObject.toJSONString(x)));
Optional.ofNullable(jsonObj.get(OTHER_ACCESSORIES)).ifPresent(x -> certRep.setOtherAccessories(JSONObject.toJSONString(x)));
certRep.setSafetyManagerName(safetyManager[1]);
certRep.setIsDelete(Boolean.FALSE);
certRep.setCreateDate(date);
certRep.setRecDate(date);
certRep.setCreateUserId(getSelectedOrgInfo().getUserModel().getUserId());
certRep.setRecUserId(getSelectedOrgInfo().getUserModel().getUserId());
certRep.setCreateUserName(getSelectedOrgInfo().getUserModel().getRealName());
certRep.setRecUserName(getSelectedOrgInfo().getUserModel().getRealName());
certRep.setCreateUserId(userModel.getUserId());
certRep.setCreateUserName(userModel.getRealName());
return certRep;
}
......@@ -600,7 +608,7 @@ public class JgCertificateReplenishServiceImpl extends BaseService<JgCertificate
.taskCode(taskV2Model.getTaskCode())
.taskType(BusinessTypeEnum.JG_REPLACEMENT_REGISTRATION.getCode())
.taskTypeLabel(BusinessTypeEnum.JG_REPLACEMENT_REGISTRATION.getName())
.relationId(String.valueOf(certRep.getSequenceNbr()))
.relationId(Objects.isNull(certRep.getInstanceId()) ? Objects.toString(certRep.getSequenceNbr()) : certRep.getInstanceId())
.executeUserIds(workflowResultDto.getNextExecutorUserIds())
.taskStatusLabel(statusEnum.getName()).flowStatus(statusEnum.getCode())
.flowCode(workflowResultDto.getNextTaskId())
......@@ -608,6 +616,7 @@ public class JgCertificateReplenishServiceImpl extends BaseService<JgCertificate
.taskContent(String.format("来自%s的业务办理,【申请单号:%s】", certRep.getEquList(), certRep.getApplyNo()))
.taskDesc("")
.startUserId(taskV2Model.getStartUserId())
.startUserCompanyName(certRep.getUseUnitName())
.startUser(taskV2Model.getStartUser())
.startDate(taskV2Model.getStartDate())
.pageType(statusEnum.getCode() == 6614 ? "edit" : "look")
......@@ -674,7 +683,9 @@ public class JgCertificateReplenishServiceImpl extends BaseService<JgCertificate
.flowStatusLabel(FlowStatusEnum.TO_BE_PROCESSED.getName())
.taskContent(String.format("来自%s的业务办理,【申请单号:%s】", certRep.getEquList(), certRep.getApplyNo()))
.taskDesc("")
.startUser(certRep.getCreateUserName()).startUserCompanyName(getSelectedOrgInfo().getCompany().getCompanyName()).startDate(certRep.getCreateDate())
.startUser(certRep.getCreateUserName())
.startUserCompanyName(certRep.getUseUnitName())
.startDate(certRep.getCreateDate())
.model(taskMessageDto)
.nextExecuteUser(certRep.getNextExecuteIds())
.build();
......
......@@ -7,6 +7,7 @@ import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.biz.common.bo.ReginParams;
import com.yeejoin.amos.boot.biz.common.utils.RedisKey;
......@@ -687,7 +688,7 @@ public class JgChangeRegistrationNameServiceImpl extends BaseService<JgChangeReg
}
@Transactional(rollbackFor = Exception.class)
@GlobalTransactional(rollbackFor = Exception.class)
@GlobalTransactional(rollbackFor = Exception.class, timeoutMills = 6000000)
public void flowExecute(Long id, String instanceId, String operate, String comment, String nextTaskId) {
String lockKey = CommonServiceImpl.buildJgExecuteLockKey(instanceId);
RLock lock = redissonClient.getLock(lockKey);
......@@ -881,43 +882,57 @@ public class JgChangeRegistrationNameServiceImpl extends BaseService<JgChangeReg
regUnitInfoMapper.update(regUnitInfo, updateWrapper);
// 修改本次更名登记选择的使用登记证下的设备信息
List<JgChangeRegistrationNameEq> list = jgChangeRegistrationNameEqService.lambdaQuery().eq(JgChangeRegistrationNameEq::getNameChangeRegistrationId, jgChangeRegistrationName.getSequenceNbr()).list();
ArrayList<String> equipIds = new ArrayList<>();
list.forEach(item -> {
if (!ObjectUtils.isEmpty(item.getEquipInfo())) {
JSONArray objects = JSONObject.parseArray(item.getEquipInfo());
objects.forEach(info -> {
JSONObject jsonObject = JSONObject.parseObject(info.toString());
if (jsonObject.containsKey("SEQUENCE_NBR")) {
equipIds.add(jsonObject.get("SEQUENCE_NBR").toString());
}
});
}
});
if (!ObjectUtils.isEmpty(equipIds)) {
LambdaQueryWrapper<UseInfo> lambda = new QueryWrapper<UseInfo>().lambda();
lambda.eq(UseInfo::getUseUnitCreditCode, jgChangeRegistrationName.getUseUnitCreditCode());
lambda.in(UseInfo::getRecord, equipIds);
UseInfo useInfo = new UseInfo();
useInfo.setUseUnitName(jgChangeRegistrationName.getNewUseUnitName());
useInfoMapper.update(useInfo, lambda);
// 修改es中设备信息
updateEsData(equipIds, jgChangeRegistrationName);
}
// 修改证管理信息
List<String> collect = list.stream().map(JgChangeRegistrationNameEq::getCertificateSeq).collect(Collectors.toList());
if (!ObjectUtils.isEmpty(collect)) {
LambdaQueryWrapper<JgUseRegistrationManage> lambda = new QueryWrapper<JgUseRegistrationManage>().lambda();
lambda.in(JgUseRegistrationManage::getSequenceNbr, collect);
List<JgUseRegistrationManage> manages = jgUseRegistrationManageService.list(lambda);
manages.forEach(jgUseRegistrationManage -> {
jgUseRegistrationManage.setUseUnitName(jgChangeRegistrationName.getNewUseUnitName());
jgUseRegistrationManage.setAuditPassDate(new Date());
jgUseRegistrationManage.setVersion(jgUseRegistrationManage.getVersion() + 1);
jgUseRegistrationManage.setChangeReason(BusinessTypeEnum.JG_NAME_CHANGE_REGISTRATION.getName());
List<JgChangeRegistrationNameEq> list = jgChangeRegistrationNameEqService.lambdaQuery()
.eq(JgChangeRegistrationNameEq::getNameChangeRegistrationId, jgChangeRegistrationName.getSequenceNbr())
.list();
if (!CollectionUtils.isEmpty(list)) {
Set<String> equipIds = new HashSet<>();
Set<String> certificateSeqList = new HashSet<>();
list.forEach(item -> {
Optional.ofNullable(item.getEquipInfo())
.map(JSONObject::parseArray)
.orElseGet(JSONArray::new)
.forEach(info -> {
JSONObject json = JSONObject.parseObject(info.toString());
if (json.containsKey("SEQUENCE_NBR")) {
equipIds.add(json.getString("SEQUENCE_NBR"));
}
});
if (item.getCertificateSeq() != null) {
certificateSeqList.add(item.getCertificateSeq());
}
});
jgUseRegistrationManageService.updateBatchById(manages);
if (!CollectionUtils.isEmpty(equipIds)) {
useInfoMapper.update(
new UseInfo().setUseUnitName(jgChangeRegistrationName.getNewUseUnitName()),
Wrappers.<UseInfo>lambdaQuery()
.eq(UseInfo::getUseUnitCreditCode, jgChangeRegistrationName.getUseUnitCreditCode())
.in(UseInfo::getRecord, equipIds)
);
updateEsData(new ArrayList<>(equipIds), jgChangeRegistrationName);
}
if (!CollectionUtils.isEmpty(certificateSeqList)) {
List<JgUseRegistrationManage> manages = jgUseRegistrationManageService.list(
Wrappers.<JgUseRegistrationManage>lambdaQuery()
.in(JgUseRegistrationManage::getSequenceNbr, certificateSeqList)
);
if (!CollectionUtils.isEmpty(manages)) {
Date now = new Date();
manages.forEach(manage -> manage
.setUseUnitName(jgChangeRegistrationName.getNewUseUnitName())
.setAuditPassDate(now)
.setVersion(manage.getVersion() + 1)
.setChangeReason(BusinessTypeEnum.JG_NAME_CHANGE_REGISTRATION.getName()));
jgUseRegistrationManageService.updateBatchById(manages);
}
}
}
// 业务流水生成
JgRegistrationHistory jgRegistrationHistory = jgRegistrationHistoryService.lambdaQuery()
.eq(JgRegistrationHistory::getCurrentDocumentId, jgChangeRegistrationName.getSequenceNbr())
......
......@@ -936,7 +936,7 @@ public class JgChangeRegistrationTransferServiceImpl extends BaseService<JgChang
Map<String, String> supervisoryCodeMap = this.create96333Code(historyData, device.getEquId());
supervisoryCode = supervisoryCodeMap.get("superviseCode");
code96333 = supervisoryCodeMap.get("code96333");
useRegistrationCode.set(commonServiceImpl.generateRegistrationCode(device.getEquId(),historyData, transfer.getReceiveCompanyCode(), false));
useRegistrationCode.set(commonServiceImpl.generateRegistrationCode(device.getEquId(), transfer.getReceiveCompanyCode(), false));
useRegistrationCodeList.add(String.valueOf(useRegistrationCode));
isUpdateRegistrationCode.set(true);
} else {
......@@ -958,7 +958,7 @@ public class JgChangeRegistrationTransferServiceImpl extends BaseService<JgChang
Map<String, String> supervisoryCodeMap = this.create96333Code(historyData, device.getEquId());
supervisoryCode = supervisoryCodeMap.get("superviseCode");
code96333 = supervisoryCodeMap.get("code96333");
useRegistrationCode.set(commonServiceImpl.generateRegistrationCode(device.getEquId(), historyData, transfer.getReceiveCompanyCode(), false));
useRegistrationCode.set(commonServiceImpl.generateRegistrationCode(device.getEquId(), transfer.getReceiveCompanyCode(), false));
useRegistrationCodeList.add(String.valueOf(useRegistrationCode));
isUpdateRegistrationCode.set(true);
}
......
......@@ -1347,8 +1347,7 @@ public class JgChangeRegistrationUnitServiceImpl extends BaseService<JgChangeReg
}
JgUseRegistrationManage registrationManage=registrationManages.get(0);
registrationManage.setSequenceNbr(sequence.nextId());
String code = commonServiceImpl.generateRegistrationCode(changeRegistrationUnitEqs.get(0).getEquId(), idxBizJgProjectContraption.getSupervisoryCode(),
registrationManage.getReceiveCompanyCode(), true);
String code = commonServiceImpl.generateRegistrationCode(changeRegistrationUnitEqs.get(0).getEquId(), registrationManage.getReceiveCompanyCode(), true);
registrationManage.setUseRegistrationCode(code);
//修改使用登记证管理使用单位地址、使用单位代码、接收机构、接收机构公司代码、办理日期、使用单位地址
registrationManage.setUseUnitName(registration.getNewUseUnitName());
......
......@@ -54,15 +54,14 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.ObjectUtils;
import org.typroject.tyboot.core.foundation.context.RequestContext;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import org.typroject.tyboot.core.rdbms.service.BaseService;
import org.typroject.tyboot.core.restful.exception.instance.BadRequest;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
import static com.yeejoin.amos.boot.module.jg.api.enums.VehicleApanageEnum.XIAN_YANG;
import static com.yeejoin.amos.boot.module.jg.api.enums.VehicleApanageEnum.XI_XIAN;
......@@ -143,8 +142,6 @@ public class JgChangeVehicleRegistrationUnitServiceImpl extends BaseService<JgCh
dto.setOrgBranchCode(splitMaintenanceUnitCode[0]);
dto.setOrgBranchName(splitMaintenanceUnitCode[1]);
}
}
@Transactional(rollbackFor = Exception.class)
......@@ -153,6 +150,9 @@ public class JgChangeVehicleRegistrationUnitServiceImpl extends BaseService<JgCh
try {
CompanyBo company = reginParams.getCompany();
JgChangeVehicleRegistrationUnit dto = new JgChangeVehicleRegistrationUnit();
if (!ValidationUtil.isEmpty(map.get("changeCertificateList"))) {
dto.setChangeCertificate(JSON.toJSONString(map.get("changeCertificateList")));
}
if (!ObjectUtils.isEmpty(map.get("submit")) && SUBMIT_TYPE_FLOW.equals(map.get("submit").toString())) {
if (map.containsKey("dataList")) {
List<Map<String, Object>> equipList = new ArrayList<>();
......@@ -192,6 +192,9 @@ public class JgChangeVehicleRegistrationUnitServiceImpl extends BaseService<JgCh
// 更新
JgChangeVehicleRegistrationUnit updateDto = this.getById(Long.parseLong(map.get("sequenceNbr").toString()));
BeanUtil.copyProperties(map, updateDto);
if (!ValidationUtil.isEmpty(map.get("changeCertificateList"))) {
updateDto.setChangeCertificate(JSON.toJSONString(map.get("changeCertificateList")));
}
changeData(updateDto, reginParams.getCompany());
this.updateById(updateDto);
BeanUtil.copyProperties(updateDto, dto);
......
......@@ -305,6 +305,7 @@ public class JgInstallationNoticeServiceImpl extends BaseService<JgInstallationN
JSONObject hisData = commonService.queryHistoryData(notice.getSequenceNbr());
// 兼容老数据
if (hisData == null) {
// todo companyLevel赋值这个不能少,控制前端页面的字段(安装负责人)显示隐藏
Map<String, Object> detail = setNewEquipData(companyLevel, installationInfo);
this.fillingEquCategoryNameForHisData(detail, notice);
return new HashMap<String, Map<String, Object>>() {{
......@@ -314,12 +315,15 @@ public class JgInstallationNoticeServiceImpl extends BaseService<JgInstallationN
hisData.putAll(installationInfo);
CommonServiceImpl.formatTime2StrDateForEquip(hisData);
this.fillingEquCategoryNameForHisData(hisData, notice);
// todo 这个不能少 控制前端页面的字段(安装负责人)显示隐藏
hisData.put("companyLevel", companyLevel);
return new HashMap<String, Map<String, Object>>() {{
this.put("installationInfo", hisData);
}};
}
} else {
// 显示最新的设备信息
// todo companyLevel赋值这个不能少,控制前端页面的字段(安装负责人)显示隐藏
Map<String, Object> detail = setNewEquipData(companyLevel, installationInfo);
detail.put("startLatitudeLongitude", JSON.parseObject(notice.getStartLatitudeLongitude()));
detail.put("endLatitudeLongitude", JSON.parseObject(notice.getEndLatitudeLongitude()));
......@@ -1290,7 +1294,7 @@ public class JgInstallationNoticeServiceImpl extends BaseService<JgInstallationN
jgResumeInfoService.saveBatchResume(
Lists.newArrayList(JgResumeInfoDto.builder()
.applyNo(jgInstallationNotice.getApplyNo())
.businessType(BusinessTypeEnum.JG_MAINTENANCE_RECORD.getName())
.businessType(BusinessTypeEnum.JG_INSTALLATION_NOTIFICATION.getName())
.businessId(String.valueOf(jgInstallationNotice.getSequenceNbr()))
.equId(String.valueOf(jgInstallationNotice.getProjectContraptionId()))
.approvalUnit(jgInstallationNotice.getReceiveOrgName())
......@@ -1376,7 +1380,7 @@ public class JgInstallationNoticeServiceImpl extends BaseService<JgInstallationN
jgRelationEquips.stream()
.map(v -> JgResumeInfoDto.builder()
.applyNo(jgInstallationNotice.getApplyNo())
.businessType(BusinessTypeEnum.JG_MAINTENANCE_RECORD.getName())
.businessType(BusinessTypeEnum.JG_INSTALLATION_NOTIFICATION.getName())
.businessId(String.valueOf(jgInstallationNotice.getSequenceNbr()))
.equId(String.valueOf(v.getEquId()))
.approvalUnit(jgInstallationNotice.getReceiveOrgName())
......@@ -1528,6 +1532,7 @@ public class JgInstallationNoticeServiceImpl extends BaseService<JgInstallationN
map1.put("USE_UNIT_CREDIT_CODE", jgInstallationNotice.getUseUnitCreditCode());
map1.put("USE_UNIT_NAME", jgInstallationNotice.getUseUnitName());
map1.put("IS_INTO_MANAGEMENT", true);
map1.put("STATUS", "已认领");
map1.put("USE_PLACE_CODE", dto.getProvince().split("_")[0] + "#" + dto.getCity().split("_")[0] + "#" + dto.getCounty().split("_")[0] + "#" + dto.getFactoryUseSiteStreet().split("_")[0]);
map1.put("USC_UNIT_CREDIT_CODE", jgInstallationNotice.getInstallUnitCreditCode());
map1.put("USC_UNIT_NAME", jgInstallationNotice.getInstallUnitName());
......@@ -1567,6 +1572,10 @@ public class JgInstallationNoticeServiceImpl extends BaseService<JgInstallationN
commonService.saveOrUpdateHistory(BusinessTypeEnum.JG_INSTALLATION_NOTIFICATION.getName(), new JSONObject(his), registerInfo.getRecord(), jgInstallationNotice.getSequenceNbr().toString());
}
public JSONObject getHisData(JgInstallationNotice jgInstallationNotice){
return commonService.queryHistoryData(jgInstallationNotice.getSequenceNbr());
}
private String getEquCode(IdxBizJgRegisterInfo registerInfo, String receiveCompanyCode) {
ProduceInfo produceInfo = produceInfoMapper.selectOne(new LambdaQueryWrapper<ProduceInfo>().eq(AbstractEquipBaseEntity::getRecord, registerInfo.getRecord()));
CodeGenerateDto codeGenerateDto = new CodeGenerateDto();
......@@ -1603,11 +1612,11 @@ public class JgInstallationNoticeServiceImpl extends BaseService<JgInstallationN
idxBizJgUseInfoMapper.update(idxBizJgUseInfo, lambda);
}
private void saveHisDataBeforeUpdate(JgInstallationNotice jgInstallationNotice) {
public void saveHisDataBeforeUpdate(JgInstallationNotice jgInstallationNotice) {
LambdaQueryWrapper<JgInstallationNoticeEq> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(JgInstallationNoticeEq::getEquipTransferId, jgInstallationNotice.getSequenceNbr());
List<JgInstallationNoticeEq> jgInstallationNoticeEqs = jgInstallationNoticeEqMapper.selectList(queryWrapper);
List<String> ids = jgInstallationNoticeEqs.stream().map(item -> item.getEquId()).collect(Collectors.toList());
List<String> ids = jgInstallationNoticeEqs.stream().map(JgInstallationNoticeEq::getEquId).collect(Collectors.toList());
List<Map<String, Object>> equipListMaps;
String equCategoryCode = jgInstallationNotice.getEquCategoryCode();
Map<String, Object> installationInfo = BeanUtil.beanToMap(jgInstallationNotice, false, true);
......@@ -1619,6 +1628,11 @@ public class JgInstallationNoticeServiceImpl extends BaseService<JgInstallationN
installationInfo.put("pipelineLength", projectContraption.getPipelineLength());
installationInfo.put("projectContraptionNo", projectContraption.getProjectContraptionNo());
installationInfo.put("projectContraption", projectContraption.getProjectContraption());
// 装置安装告知冗余的装置名称
LambdaUpdateWrapper<JgInstallationNotice> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.eq(BaseEntity::getSequenceNbr, jgInstallationNotice.getSequenceNbr());
updateWrapper.set(JgInstallationNotice::getProjectContraption, projectContraption.getProjectContraption());
this.update(updateWrapper);
}
equipListMaps = jgInstallationNoticeMapper.getPipelineEquInfoByRecords(ids);
} else {
......@@ -1630,6 +1644,7 @@ public class JgInstallationNoticeServiceImpl extends BaseService<JgInstallationN
commonService.saveOrUpdateHistory(BusinessTypeEnum.JG_INSTALLATION_NOTIFICATION.getName(), new JSONObject(installationInfo), null, jgInstallationNotice.getSequenceNbr().toString());
}
private void saveHisDataBeforeUpdate(JgInstallationNotice jgInstallationNotice, String equId) {
Map<String, Object> map = idxBizJgRegisterInfoService.getDetailFieldCamelCaseByRecord(equId);
commonService.saveOrUpdateHistory(BusinessTypeEnum.JG_INSTALLATION_NOTIFICATION.getName(), new JSONObject(map), equId, jgInstallationNotice.getSequenceNbr().toString());
......
......@@ -917,6 +917,12 @@ public class JgMaintenanceContractServiceImpl extends BaseService<JgMaintenanceC
commonService.saveOrUpdateHistory(BusinessTypeEnum.JG_MAINTENANCE_RECORD.getName(), JSON.parseArray(JSON.toJSONString(equipmentLists)), null, maintenanceContract.getSequenceNbr().toString());
}
public void updateHisDataAfterEquipEdit(JgMaintenanceContract maintenanceContract) {
List<Map<String, Object>> list = maintenanceContractMapper.selectEquipList(maintenanceContract.getSequenceNbr());
commonService.saveOrUpdateHistory(BusinessTypeEnum.JG_MAINTENANCE_RECORD.getName(), JSON.parseArray(JSON.toJSONString(list)), null, maintenanceContract.getSequenceNbr().toString());
}
@Override
public boolean beforeCheck(JgMaintenanceContractDto jgMaintenanceContract) {
return jgMaintenanceContract.getInstanceId() != null && !jgMaintenanceContract.getStatus().equals(FlowStatusEnum.TO_BE_FINISHED.getName()) &&!jgMaintenanceContract.getStatus().equals(FlowStatusEnum.TO_BE_DISCARD.getName());
......@@ -928,4 +934,9 @@ public class JgMaintenanceContractServiceImpl extends BaseService<JgMaintenanceC
commonService.saveExecuteFlowData2Redis(jgMaintenanceContract.getInstanceId(), this.buildInstanceRuntimeData(jgMaintenanceContract));
}
public JSONArray getHisData(JgMaintenanceContract maintenanceContract){
return commonService.queryHistoryDataObj(maintenanceContract.getSequenceNbr());
}
}
\ No newline at end of file
......@@ -32,6 +32,10 @@ public class JgUseRegistrationEqServiceImpl extends BaseService<JgUseRegistratio
return this.queryForList("" , false);
}
public List<JgUseRegistrationEqDto> queryForJgUseRegistrationEqList(String equipTransferId) {
return this.queryForList("" , false, equipTransferId);
}
public List<JgUseRegistrationEq> getListByEquIds(List<String> equIds) {
QueryWrapper<JgUseRegistrationEq> queryWrapper = new QueryWrapper<>();
......
......@@ -627,8 +627,7 @@ public class JgUseRegistrationManageServiceImpl extends BaseService<JgUseRegistr
public void exportUseRegistrationCertificate(JgUseRegistrationManage manage, HttpServletResponse response, String printType) {
Map<String, Object> exportParamsMap = new HashMap<>();
// 查询使用登记详情
List<JSONObject> deviceList = this.queryEquByCertificateSeq(manage.getSequenceNbr());
List<JSONObject> deviceList = this.queryEquByCertificate(manage);
if (ValidationUtil.isEmpty(manage) || ValidationUtil.isEmpty(deviceList)) {
throw new BadRequest("使用登记证导出失败,请稍后重试!");
}
......@@ -711,6 +710,16 @@ public class JgUseRegistrationManageServiceImpl extends BaseService<JgUseRegistr
}
}
/**
* 查询本单位下设备,过滤三环数据
* @param manage
* @return
*/
private List<JSONObject> queryEquByCertificate(JgUseRegistrationManage manage) {
return queryEquByCertificateSeq(manage.getSequenceNbr()).stream()
.filter(s -> Objects.equals(s.get("USE_UNIT_CREDIT_CODE"), manage.getUseUnitCreditCode()))
.collect(Collectors.toList());
}
private UseFlagParamDto buildUseFlagParamDto(List<JSONObject> deviceList, JgUseRegistrationManage manage, Map<String, Object> exportParamsMap) {
UseFlagParamDto useFlagParamDto = new UseFlagParamDto();
......
......@@ -1623,8 +1623,7 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
.map(Boolean.class::cast)
.orElse(false);
if ((Boolean) mapData.get("isFirstEquip")) {
String code = flag ? useRegistrationCode : commonServiceImpl.generateRegistrationCode(String.valueOf(mapData.get("equipId")), jgUseRegistration.getSupervisoryCode(),
jgUseRegistration.getReceiveCompanyCode(), true);
String code = flag ? useRegistrationCode : commonServiceImpl.generateRegistrationCode(String.valueOf(mapData.get("equipId")), jgUseRegistration.getReceiveCompanyCode(), true);
jgUseRegistration.setUseRegistrationCode(code);
jgUseRegistration.setAuditPassDate(new Date());
registerInfo.setUseOrgCode(code);
......@@ -1646,7 +1645,7 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
idxBizJgRegisterInfoService.update(lambda);
}
} else {
String code = commonServiceImpl.generateRegistrationCode(String.valueOf(mapData.get("equipId")), jgUseRegistration.getSupervisoryCode(), jgUseRegistration.getReceiveCompanyCode(), false);
String code = commonServiceImpl.generateRegistrationCode(String.valueOf(mapData.get("equipId")), jgUseRegistration.getReceiveCompanyCode(), false);
jgUseRegistration.setUseRegistrationCode(code);
jgUseRegistration.setAuditPassDate(new Date());
registerInfo.setUseOrgCode(code);
......@@ -2122,6 +2121,7 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
.eq(JgRegistrationHistory::getCurrentDocumentId, useRegistration.getSequenceNbr())
.set(JgRegistrationHistory::getIsDelete, true)
);
this.clearDataForCheckEquipRepeatUsed(useRegistration);
});
}
......@@ -2134,26 +2134,36 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
if(!StringUtils.isEmpty(jgUseRegistration.getProjectContraptionId())){
LambdaQueryWrapper<IdxBizJgProjectContraption> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(BaseEntity::getSequenceNbr, jgUseRegistration.getProjectContraptionId());
queryWrapper.select(IdxBizJgProjectContraption::getEquListName,IdxBizJgProjectContraption::getEquCategoryName,IdxBizJgProjectContraption::getEquDefineName,BaseEntity::getSequenceNbr);
queryWrapper.select(IdxBizJgProjectContraption::getEquListName,
IdxBizJgProjectContraption::getEquCategoryName,
IdxBizJgProjectContraption::getEquDefineName,
BaseEntity::getSequenceNbr,
IdxBizJgProjectContraption::getEquList,
IdxBizJgProjectContraption::getEquCategory,
IdxBizJgProjectContraption::getEquDefine);
IdxBizJgProjectContraption projectContraption = jgProjectContraptionService.getBaseMapper().selectOne(queryWrapper);
if(projectContraption != null){
detail.put("equListName", projectContraption.getEquListName());
detail.put("equCategoryName", projectContraption.getEquCategoryName());
detail.put("equDefineName", projectContraption.getEquDefineName());
// 编辑功能会使用到
detail.putIfAbsent("EQU_LIST_CODE", projectContraption.getEquList());
detail.putIfAbsent("EQU_CATEGORY_CODE", projectContraption.getEquCategory());
detail.putIfAbsent("EQU_DEFINE_CODE", projectContraption.getEquDefine());
}
}
}
public Map<String, Object> getDetail(String record, Long sequenceNbr) {
public Map<String, Object> getDetail(String record, Long sequenceNbr, ReginParams selectedOrgInfo) {
if (!ObjectUtils.isEmpty(sequenceNbr)) {
JgUseRegistration jgUseRegistration = this.getBaseMapper().selectById(sequenceNbr);
this.doCompensate(jgUseRegistration);
LambdaQueryWrapper<JgRegistrationHistory> lambda = new QueryWrapper<JgRegistrationHistory>().lambda();
lambda.eq(JgRegistrationHistory::getCurrentDocumentId, sequenceNbr);
lambda.eq(JgRegistrationHistory::getIsDelete, false);
JgRegistrationHistory jgRegistrationHistory = jgRegistrationHistoryService.getBaseMapper().selectOne(lambda);
JSONObject jsonObject = JSONObject.parseObject(jgRegistrationHistory.getChangeData());
jsonObject.put("manageType", jgUseRegistration.getManageType());
jsonObject.put("createUserId", jgUseRegistration.getCreateUserId());
jsonObject.put("receiveOrgCode", jgUseRegistration.getReceiveCompanyCode() + "_" + jgUseRegistration.getReceiveOrgName());
jsonObject.put("status", jgUseRegistration.getStatus());
......@@ -2219,7 +2229,7 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
// 结果增强,填充单据是否可变更设备状态,用来控制前端按钮的显示隐藏。
new FillingUseRegisterResult(sequenceNbr, jsonObject, applicationContext).getData();
// 结果增强,填充当前人是否有编辑按钮权限
new FillingEditPermForCurrentUser(jsonObject).getData();
new FillingEditPermForCurrentUser(jsonObject, Optional.ofNullable(selectedOrgInfo).map(ReginParams::getCompany).orElse(null)).getData();
return jsonObject;
}
// 基本信息 + 制造信息
......@@ -2270,7 +2280,7 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
// 结果增强,填充单据是否可变更设备状态
new DefaultUseRegisterResult(result).getData();
// 结果增强,填充当前人是否有编辑按钮权限
new FillingEditPermForCurrentUser(result).getData();
new FillingEditPermForCurrentUser(result, selectedOrgInfo.getCompany()).getData();
return result;
}
......@@ -3357,7 +3367,7 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
esEquipmentCategoryDto.setCODE96333(null);
}
esEquipmentCategoryDto.setUSE_ORG_CODE(null);
esEquipmentCategoryDto.setSTATUS(null);
//esEquipmentCategoryDto.setSTATUS(null);
esEquipmentCategoryDto.setEQU_STATE(null);
esEquipmentCategoryDto.setORG_BRANCH_CODE(null);
esEquipmentCategoryDto.setORG_BRANCH_NAME(null);
......@@ -4478,7 +4488,7 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
if(CollUtil.isNotEmpty(useRegistrations)){
for (JgUseRegistration useRegistration : useRegistrations) {
try {
Map<String, Object> detail = this.getDetail(null, useRegistration.getSequenceNbr());
Map<String, Object> detail = this.getDetail(null, useRegistration.getSequenceNbr(), null);
String jsonString = JSONObject.toJSONString(detail);
JSONObject jsonObject = JSONObject.parseObject(jsonString);
FeignClientResult<AgencyUserModel> agencyUserModelFeignClientResult = Privilege.agencyUserClient.queryByUserId((String) detail.get("createUserId"));
......@@ -4504,4 +4514,17 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
public Object countUseTimesForInvalid(Object code) {
return jgUseRegistrationMapper.countUseTimesForInvalid(code) == 0;
}
public JSONObject getHisData(JgUseRegistration jgUseRegistration){
return commonService.queryHistoryData(jgUseRegistration.getSequenceNbr());
}
public IdxBizJgUseInfo getUseInfo(String record){
LambdaQueryWrapper<IdxBizJgUseInfo> lambda = new QueryWrapper<IdxBizJgUseInfo>().lambda();
lambda.eq(IdxBizJgUseInfo::getRecord, record);
return useInfoMapper.selectOne(lambda);
}
}
\ No newline at end of file
......@@ -21,6 +21,7 @@ import org.eclipse.paho.client.mqttv3.MqttException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
import org.typroject.tyboot.component.emq.EmqKeeper;
......@@ -39,6 +40,7 @@ import java.util.stream.Collectors;
* @date 2024-05-21
*/
@Service
@EnableScheduling
public class SafetyProblemTracingGenServiceImpl{
final static Logger logger = LoggerFactory.getLogger(SafetyProblemTracingGenServiceImpl.class);
......@@ -125,7 +127,7 @@ public class SafetyProblemTracingGenServiceImpl{
.set(SafetyProblemTracing::getProblemStatusCode, SafetyProblemStatusEnum.HANDLED.getCode())
.set(SafetyProblemTracing::getProblemStatus, SafetyProblemStatusEnum.HANDLED.getName())
.in(SafetyProblemTracing::getSourceId, errorRecord)
.eq(SafetyProblemTracing::getProblemTypeCode, SafetyProblemTypeEnum.WBCQ.getCode())
.eq(SafetyProblemTracing::getProblemTypeCode, SafetyProblemTypeEnum.WBCQ.getProblemTypeCode())
.eq(SafetyProblemTracing::getIsDelete,Boolean.FALSE)
.update();
idxBizJgOtherInfoService.lambdaUpdate().set(IdxBizJgOtherInfo::getStatus, null)
......
......@@ -437,7 +437,7 @@ public class ShCarServiceImpl extends BaseService<ShCar, ShCar, ShCarMapper> imp
if (isOneSelf) {
if (CompanyTypeEnum.INDIVIDUAL.getName().equals(company.getCompanyType())) {
useInfo.setUseUnitName(company.getCompanyName().split("_")[1]);
useInfo.setUseUnitCreditCode(company.getCompanyCode().split("_")[1]);
useInfo.setUseUnitCreditCode(company.getCompanyCode().split("_")[0]);
} else {
useInfo.setUseUnitName(company.getCompanyName());
useInfo.setUseUnitCreditCode(company.getCompanyCode());
......
......@@ -3,7 +3,7 @@ package com.yeejoin.amos.boot.module.jg.biz.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.yeejoin.amos.boot.module.jg.api.dto.*;
import com.yeejoin.amos.boot.module.jg.biz.edit.process.equip.CommonEquipDataProcessService;
import com.yeejoin.amos.boot.module.jg.biz.edit.event.ChangeLogInsertEvent;
import com.yeejoin.amos.boot.module.jg.biz.edit.event.ChangeDataEvent;
import com.yeejoin.amos.boot.module.jg.biz.event.publisher.EventPublisher;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;
......@@ -52,11 +52,19 @@ public class SingleManageEquipEditHandleImpl {
if (!allChangeColumns.isEmpty()) {
// 更新历史的JSON的数据
this.buildLogData(allChangeColumns);
// 异步记录日志
publisher.publish(new ChangeLogInsertEvent(this, allChangeColumns, RequestContext.cloneRequestContext()));
// 异步记录变更流水
publishEvent2Logger(record, allChangeColumns);
}
}
private void publishEvent2Logger(String record, List<ChangeDataDto> allChangeColumns) {
BizRelationDataDto relationDataDto = new BizRelationDataDto();
relationDataDto.setBizId(record);
relationDataDto.setBizType(canHandleBizType());
// 异步记录日志
publisher.publish(new ChangeDataEvent(this, relationDataDto, allChangeColumns, RequestContext.cloneRequestContext()));
}
private List<ChangeDataDto> update(String record, Map<String, Object> changeData) {
List<ChangeDataDto> allChangeColumns = new ArrayList<>();
......@@ -65,7 +73,7 @@ public class SingleManageEquipEditHandleImpl {
EquipFactoryChangeDataDto factoryChangeDataDto = commonEquipDataProcessService.castMap2Bean(changeData, EquipFactoryChangeDataDto.class);
EquipDesignChangeDataDto designChangeDataDto = commonEquipDataProcessService.castMap2Bean(changeData, EquipDesignChangeDataDto.class);
EquipUseInfoChangeDataDto useInfoChangeDataDto = commonEquipDataProcessService.castMap2Bean(changeData, EquipUseInfoChangeDataDto.class);
commonEquipDataProcessService.buildChangeFields(record, designChangeDataDto, factoryChangeDataDto, registerChangeDataDto, useInfoChangeDataDto, allChangeColumns);
commonEquipDataProcessService.buildChangeFields(record, designChangeDataDto, factoryChangeDataDto, registerChangeDataDto, null, useInfoChangeDataDto, allChangeColumns);
// 前置校验
commonEquipDataProcessService.checkValidField(record, registerChangeDataDto, registerChangeDataDto.getEquList(), registerChangeDataDto.getEquCategory(), registerChangeDataDto.getEquDefine());
commonEquipDataProcessService.checkValidField(record, factoryChangeDataDto, registerChangeDataDto.getEquList(), registerChangeDataDto.getEquCategory(), registerChangeDataDto.getEquDefine());
......
package com.yeejoin.amos.boot.module.jg.biz.service.impl;
import com.yeejoin.amos.boot.module.jg.api.dto.BizRelationDataDto;
import com.yeejoin.amos.boot.module.jg.api.dto.ChangeDataDto;
import com.yeejoin.amos.boot.module.jg.api.dto.JgUseRegistrationEqDto;
import com.yeejoin.amos.boot.module.jg.api.service.IBizDataChangeHandleStrategy;
import com.yeejoin.amos.boot.module.jg.biz.context.DataProcessStrategyContext;
import com.yeejoin.amos.boot.module.jg.biz.event.ChangeDataEvent;
import com.yeejoin.amos.boot.module.jg.biz.event.publisher.EventPublisher;
import com.yeejoin.amos.boot.module.jg.biz.service.IChangeDataProcessStrategy;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.typroject.tyboot.core.foundation.context.RequestContext;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@Service
public class UseRegisterDataChangeHandleImpl implements IBizDataChangeHandleStrategy {
private final EventPublisher publisher;
private final UseRegisterUpdateService useRegisterUpdateService;
public UseRegisterDataChangeHandleImpl(EventPublisher publisher, UseRegisterUpdateService useRegisterUpdateService) {
this.publisher = publisher;
this.useRegisterUpdateService = useRegisterUpdateService;
}
@Override
public String canHandleBizType() {
return "useRegister";
}
/**
* 保存
*
* @param applyNo 单据编号
* @param model single, batch
* @param changeData 前端不支持分组-目前为平铺数据结构
*/
@Override
@Transactional(rollbackFor = Exception.class)
public void doSave(String applyNo, ModelType model, Map<String, Object> changeData) {
// 选择是台套、还是单位办理的方式,进行分类数据的解析
IChangeDataProcessStrategy dataProcessor = DataProcessStrategyContext.getStrategy(model);
List<ChangeDataDto> allChangeColumns = dataProcessor.handle(changeData, applyNo);
if (!allChangeColumns.isEmpty()) {
// 更新历史的JSON的数据
this.updateHistoryJson(applyNo);
this.buildLogData(allChangeColumns);
// 异步记录日志
publishEvent2Logger(applyNo, allChangeColumns); }
}
private void updateHistoryJson(String applyNo) {
useRegisterUpdateService.updateHisData(applyNo);
}
private void buildLogData(List<ChangeDataDto> allChangeColumns) {
allChangeColumns.forEach(column -> {
column.setBizType("使用登记");
});
}
private void publishEvent2Logger(String applyNo, List<ChangeDataDto> allChangeColumns) {
List<JgUseRegistrationEqDto> eqDtos = useRegisterUpdateService.useRegistrationEqService.getBaseMapper().queryEqListByApplyNo(applyNo);
BizRelationDataDto bizRelationDataDto = new BizRelationDataDto();
bizRelationDataDto.setBizId(applyNo);
bizRelationDataDto.setBizType(canHandleBizType());
bizRelationDataDto.setRecords(eqDtos.stream().map(JgUseRegistrationEqDto::getEquId).collect(Collectors.toSet()));
// 异步记录日志
publisher.publish(new ChangeDataEvent(this, bizRelationDataDto, allChangeColumns, RequestContext.cloneRequestContext()));
}
@Override
public Map<String, ?> getDetail(String applyNo, ModelType model, String bizId) {
IChangeDataProcessStrategy dataProcessor = DataProcessStrategyContext.getStrategy(model);
// 兼容:台套类打开变更详情(使用applyNo) 和 单位办理批量时选择单个设备打开详情(使用record)
return dataProcessor.getDetail(applyNo, bizId);
}
}
......@@ -1294,6 +1294,13 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
if (!ValidationUtil.isEmpty(type) && type.contains("个人主体")) {
map.put("USE_UNIT_CREDIT_CODE", companyCode);
}
//默认条件 限制西安电梯隶属导入数据不可做业务
BoolQueryBuilder tBuilder = QueryBuilders.boolQuery();
tBuilder.should(QueryBuilders.matchQuery("IS_DO_BUSINESS", true));
tBuilder.should(QueryBuilders.boolQuery().mustNot(QueryBuilders.existsQuery("IS_DO_BUSINESS")));
tBuilder.minimumShouldMatch(1);
boolMust.must(tBuilder);
// 使用单位 //安装改造维修单位
if (!ObjectUtils.isEmpty(map.getString("USE_UNIT_CREDIT_CODE")) && !ObjectUtils.isEmpty(map.getString("USC_UNIT_CREDIT_CODE"))) {
BoolQueryBuilder ubuilder = QueryBuilders.boolQuery();
......
package com.yeejoin.amos.boot.module.statistics.api.dto;
import lombok.Data;
/**
* 详情-企业上线情况属性
*/
@Data
public class SkjsCompanyCountItemDto {
/**
* 区域-code
*/
private String regionCode;
/**
* 区域-name
*/
private String regionName;
/*
* 监管单位-code_name
*/
private String superviseKey;
/**
* 使用单位
*/
private String sydw;
/**
* 制造单位
*/
private String zzdw;
/**
* 安装维单位
*/
private String agwdw;
/**
* 充装单位
*/
private String czdw;
/**
* 检验检测机构
*/
private String jyjcjg;
/**
* 设计单位
*/
private String sjdw;
public void setDefaultValues() {
this.sydw = "0";
this.zzdw = "0";
this.agwdw = "0";
this.czdw = "0";
this.jyjcjg = "0";
this.sjdw = "0";
}
}
\ No newline at end of file
package com.yeejoin.amos.boot.module.statistics.api.dto;
import lombok.Data;
@Data
public class SkjsCountItemDto {
/**
* 区域
*/
private String regionCode;
/**
* 台套
*/
private String oneSet;
/**
* 气瓶
*/
private String cylinder;
/**
* 管道长度(千米)
*/
private String pipeline;
/**
* 企业
*/
private String company;
/**
* 人员
*/
private String user;
public void setDefaultValues() {
this.oneSet = "0";
this.cylinder = "0";
this.pipeline = "0";
this.company = "0";
this.user = "0";
}
}
\ No newline at end of file
package com.yeejoin.amos.boot.module.statistics.api.dto;
import lombok.Data;
/**
* 详情-设备上线情况属性
*/
@Data
public class SkjsEquipCountItemDto {
/**
* 区域-code
*/
private String regionCode;
/**
* 区域-name
*/
private String regionName;
/*
* 监管单位-code_name
*/
private String superviseKey;
/**
* 电梯
*/
private String dt;
/**
* 起重机械
*/
private String qzjx;
/**
* 客运索道
*/
private String kysd;
/**
* 大型游乐设施
*/
private String dxylss;
/**
* 厂车
*/
private String cc;
/**
* 锅炉
*/
private String gl;
/**
* 压力容器
*/
private String ylrq;
/**
* 压力管道
*/
private String ylgd;
/**
* 气瓶
*/
private String qp;
public void setDefaultValues() {
this.dt = "0";
this.qzjx = "0";
this.kysd = "0";
this.dxylss = "0";
this.cc = "0";
this.gl = "0";
this.qp = "0";
this.ylrq = "0";
this.ylgd = "0";
}
}
\ No newline at end of file
package com.yeejoin.amos.boot.module.statistics.api.dto;
import lombok.Data;
/**
* 详情-人员上线情况属性
*/
@Data
public class SkjsUserCountItemDto {
/**
* 区域-code
*/
private String regionCode;
/**
* 区域-name
*/
private String regionName;
/*
* 监管单位-code_name
*/
private String superviseKey;
/**
* 作业人员
*/
private String zyry;
/**
* 检验人员
*/
private String jyry;
/**
* 检测人员
*/
private String jcry;
/**
* 生产-主要负责人
*/
private String sczyfzr;
/**
* 生产-质量安全总监
*/
private String sczlaqzj;
/**
* 生产-质量安全员
*/
private String sczlaqy;
/**
* 使用-主要负责人
*/
private String syzyfzr;
/**
* 使用-安全总监
*/
private String syaqzj;
/**
* 使用-安全员
*/
private String syaqy;
public void setDefaultValues() {
this.zyry = "0";
this.jyry = "0";
this.jcry = "0";
this.sczyfzr = "0";
this.sczlaqzj = "0";
this.sczlaqy = "0";
this.syzyfzr = "0";
this.syaqzj = "0";
this.syaqy = "0";
}
}
\ 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