Commit 6e454e53 authored by 韩桐桐's avatar 韩桐桐

Merge branch 'develop_tzs_register' into develop_tzs_bugfix

parents 97ad40d2 90564961
package com.yeejoin.amos.boot.biz.common.annotation;
import java.lang.annotation.*;
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
@Documented
public @interface FieldDisplayDefine {
String value();
/**
* 字段别名 兼容前端使用
*
* @return 别名key
*/
String alias() default "";
Class<?> type() default String.class;
boolean isExist() default true;
}
package com.yeejoin.amos.boot.biz.common.annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface Group {
String value();
}
package com.yeejoin.amos.boot.module.jczs.api.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class PageParam {
int current = 0;
......
......@@ -8,6 +8,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
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.TzBaseEnterpriseInfo;
import com.yeejoin.amos.boot.module.jczs.api.vo.BaseEnterpriseVo;
import org.apache.ibatis.annotations.Param;
/**
* 企业数据信息 Mapper 接口
......@@ -45,4 +47,6 @@ public interface TzBaseEnterpriseInfoMapper extends BaseMapper<TzBaseEnterpriseI
IPage<TzBaseEnterpriseInfoDto> page(Page<TzBaseEnterpriseInfoDto> page, TzBaseEnterpriseInfoDto tzBaseEnterpriseInfoDto);
IPage<TzBaseEnterpriseInfoDto> pageList(Page<TzBaseEnterpriseInfoDto> page, TzBaseEnterpriseInfoDto tzBaseEnterpriseInfoDto, List orgCodeList);
List<BaseEnterpriseVo> queryBaseEnterpriseInIds(@Param("ids") List<String> ids);
}
......@@ -7,6 +7,7 @@ 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 javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;
......@@ -44,4 +45,6 @@ public interface ITzBaseEnterpriseInfoService extends IService<TzBaseEnterpriseI
TzBaseEnterpriseInfoDto getInfoByUseCode(String useCode);
String setLabel(List<Long> enterpriseIds, List<String> enterpriseLabels);
void export(HttpServletResponse response, String ids,TzBaseEnterpriseInfoDto tzBaseEnterpriseInfoDto);
}
......@@ -146,6 +146,24 @@
order by rec_date desc
</select>
<select id="queryBaseEnterpriseInIds" resultType="com.yeejoin.amos.boot.module.jczs.api.vo.BaseEnterpriseVo">
SELECT
*,
CONCAT(province,'/',city,'/',district) AS region,
CONCAT(street,'/',address) AS full_address
FROM
tz_base_enterprise_info
<where>
<if test='ids != null'>
and sequence_nbr in
<foreach collection="ids" item="id" open="(" close=")" separator=",">
#{id}
</foreach>
</if>
</where>
order by rec_date desc
</select>
<select id="selectByUseUnit" resultType="com.yeejoin.amos.boot.module.jczs.api.entity.TzBaseEnterpriseInfo">
select * from tz_base_enterprise_info where use_unit = #{useUnit}
</select>
......
......@@ -27,6 +27,7 @@ import org.typroject.tyboot.core.restful.utils.ResponseHelper;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
......@@ -249,4 +250,11 @@ public class TzBaseEnterpriseInfoController {
return ResponseHelper.buildResponse(iTzBaseEnterpriseInfoService.setLabel(enterpriseIds, enterpriseLabel));
}
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/export")
@ApiOperation(httpMethod = "GET", value = "企业信息列表数据导出", notes = "企业信息列表数据导出")
public void baseEnterpriseExport(HttpServletResponse response, String ids, TzBaseEnterpriseInfoDto tzBaseEnterpriseInfoDto) {
iTzBaseEnterpriseInfoService.export(response, ids, tzBaseEnterpriseInfoDto);
}
}
......@@ -9,6 +9,7 @@ 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.entity.DataDictionary;
import com.yeejoin.amos.boot.biz.common.excel.ExcelUtil;
import com.yeejoin.amos.boot.biz.common.service.impl.DataDictionaryServiceImpl;
import com.yeejoin.amos.boot.biz.common.utils.DateUtils;
import com.yeejoin.amos.boot.module.jczs.api.dto.BaseUnitLicenceDto;
......@@ -20,6 +21,7 @@ import com.yeejoin.amos.boot.module.jczs.api.entity.SpeUseUnit;
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 com.yeejoin.amos.boot.module.jczs.api.vo.BaseEnterpriseVo;
import com.yeejoin.amos.boot.module.jczs.biz.utils.RedisUtil;
import com.yeejoin.amos.boot.module.jczs.flc.api.dto.RegUnitIcDto;
import com.yeejoin.amos.boot.module.jczs.flc.api.dto.RegUnitInfoDto;
......@@ -38,8 +40,10 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
import org.springframework.util.StringUtils;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import org.typroject.tyboot.core.rdbms.service.BaseService;
import javax.servlet.http.HttpServletResponse;
import java.text.ParseException;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
......@@ -575,4 +579,23 @@ public class TzBaseEnterpriseInfoServiceImpl
return map;
}
/**
* 企业信息列表数据导出
*
* @param response 响应
* @param ids 数据id
*/
@Override
public void export(HttpServletResponse response, String ids, TzBaseEnterpriseInfoDto tzBaseEnterpriseInfoDto) {
List<BaseEnterpriseVo> exportData;
if (StringUtils.isEmpty(ids)) { // 前端不选行,导出列表所有的数据
IPage<TzBaseEnterpriseInfoDto> page = this.page(new PageParam(1,Integer.MAX_VALUE), tzBaseEnterpriseInfoDto);
exportData =JSON.parseArray(JSON.toJSONString(page.getRecords()), BaseEnterpriseVo.class) ;
} else { // 前端选行,导出所选行的数据
List<String> idsList = Arrays.asList(ids.split(","));
exportData = this.baseMapper.queryBaseEnterpriseInIds(idsList);
}
ExcelUtil.createTemplate(response, "企业信息列表数据", "企业信息列表", exportData, BaseEnterpriseVo.class, null, false);
}
}
package com.yeejoin.amos.boot.module.jg.api.dto;
import lombok.Data;
import java.io.Serializable;
@Data
public class BaseChangeDataDto implements Serializable {
private String changeId;
}
package com.yeejoin.amos.boot.module.jg.api.dto;
import java.io.Serializable;
public class BaseTechParamsFieldDto implements Serializable {
}
package com.yeejoin.amos.boot.module.jg.api.dto;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
@Data
@ApiModel(value = "变化的数据")
public class ChangeDataDto implements Serializable {
/**
* 必须字段-字段key
*/
private String columnKey;
/**
* 必须字段-字段描述
*/
private String columnLabel;
/**
* 必须字段-字段原始值
*/
private String columnOldValue;
/**
* 必须字段-字段新值
*/
private String columnNewValue;
/**
* 非必须字段-变化的数据id(设备的record、或者业务的id),持使用登记的设备信息变更、不同业务流程的业务数据变更
*/
private String changeId;
/**
* 非必须字段-业务数据分类:如使用登记、安装告知等
*/
private String bizType;
/**
* 非必须字段-变更数据的分类:如使用信息、制造信息、设计信息、技术参数 - key
*/
private String columnFamily;
/**
* 非必须字段-字段类型-扩展使用
*/
private String columnType;
}
package com.yeejoin.amos.boot.module.jg.api.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
@Data
@ApiModel(value = "字段描述")
public class DynamicColumnDto implements Serializable {
@ApiModelProperty("数据库字段列")
private String columnName;
@ApiModelProperty("字段值")
private String columnValue;
}
package com.yeejoin.amos.boot.module.jg.api.dto;
import lombok.Data;
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
* 用户操作日志
*/
@Data
@Document(indexName = "biz_data_operate_log", shards = 2)
public class ESDataChangeLogDto {
@Id
private String id;
@Field(type = FieldType.Keyword)
private String columnKey;
@Field(type = FieldType.Text)
private String columnKeyLabel;
@Field(type = FieldType.Text)
private String beforeData;
@Field(type = FieldType.Text)
private String afterData;
@Field(type = FieldType.Keyword)
private String batchId;
@Field(type = FieldType.Keyword)
private String userId;
@Field(type = FieldType.Long)
private Long createDate;
@Field(type = FieldType.Text)
private String requestDate;
@Field(type = FieldType.Keyword)
private String bizType;
@Field(type = FieldType.Keyword)
private String columnFamily;
@Field(type = FieldType.Keyword)
private String changeId;
}
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_design_info")
public class EquipDesignChangeDataDto extends BaseChangeDataDto {
@FieldDisplayDefine(value = "设计单位统一社会信用代码")
private String designUnitCreditCode;
@FieldDisplayDefine(value = "设计单位名称")
private String designUnitName;
@FieldDisplayDefine(value = "设计许可编号")
private String designLicenseNum;
@FieldDisplayDefine(value = "设计使用年限")
private String designUseDate;
@FieldDisplayDefine(value = "设计日期")
private String designDate;
@FieldDisplayDefine(value = "总图图号")
private String drawingDo;
@FieldDisplayDefine(value = "设计文件", type = JSON.class)
private String designDoc;
@FieldDisplayDefine(value = "设计文件鉴定单位")
private String appraisalUnit;
@FieldDisplayDefine(value = "设计文件鉴定日期")
private String appraisalDate;
@FieldDisplayDefine(value = "设计规范", type = JSON.class)
private String designStandard;
@FieldDisplayDefine(value = "其他附件", type = JSON.class)
private String otherAccessoriesDes;
}
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_factory_info")
public class EquipFactoryChangeDataDto extends BaseChangeDataDto {
@FieldDisplayDefine(value = "制造单位统一社会信用代码")
private String produceUnitCreditCode;
@FieldDisplayDefine(value = "制造单位名称")
private String produceUnitName;
@FieldDisplayDefine(value = "制造许可编号")
private String produceLicenseNum;
@FieldDisplayDefine(value = "出厂编号/产品编号")
private String factoryNum;
@FieldDisplayDefine(value = "制造日期")
private String produceDate;
@FieldDisplayDefine(value = "是否进口")
private String imported;
@FieldDisplayDefine(value = "制造国")
private String produceCountry;
@FieldDisplayDefine(value = "产品质量合格证", type = JSON.class)
private String productQualityYieldProve;
@FieldDisplayDefine(value = "安装及使用维护保养说明", type = JSON.class)
private String insUseMaintainExplain;
@FieldDisplayDefine(value = "其他附件", type = JSON.class)
private String otherAccessoriesFact;
@FieldDisplayDefine(value = "制造标准", type = JSON.class)
private String factoryStandard;
@FieldDisplayDefine(value = "制造监督检验报告", type = JSON.class)
private String factSupervisionInspectionReport;
@FieldDisplayDefine(value = "锅炉能效证明文件", type = JSON.class)
private String boilerEnergyEfficiencyCertificate;
}
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_register_info")
public class EquipRegisterChangeDataDto extends BaseChangeDataDto {
@FieldDisplayDefine(value = "设备种类" ,isExist = false)
private String equList;
@FieldDisplayDefine(value = "设备类别" ,isExist = false)
private String equCategory;
@FieldDisplayDefine(value = "设备代码")
private String equCode;
/**
* 1-手工输入、2-系统自动生成
*/
@FieldDisplayDefine(value = "设备代码类型" ,isExist = false)
private String equCodeType;
@FieldDisplayDefine(value = "设备品种")
private String equDefine;
@FieldDisplayDefine(value = "产品名称")
private String productName;
@FieldDisplayDefine(value = "设备型号")
private String equType;
@FieldDisplayDefine(value = "设备总价值(万元)")
private String equPrice;
@FieldDisplayDefine(value = "产品照片(可上传产品铭牌)", type = JSON.class)
private String productPhoto;
@FieldDisplayDefine(value = "其他附件", type = JSON.class)
private String otherAccessoriesReg;
}
package com.yeejoin.amos.boot.module.jg.api.dto;
import lombok.Data;
import lombok.EqualsAndHashCode;
@EqualsAndHashCode(callSuper = true)
@Data
public class EquipTechParamChangeDataDto extends BaseChangeDataDto {
}
package com.yeejoin.amos.boot.module.jg.api.dto;
import lombok.Data;
import java.util.Map;
@Data
public class MultiChangeItemData {
String record;
Map<String, Object> detail;
}
package com.yeejoin.amos.boot.module.jg.api.dto;
import com.alibaba.fastjson.JSONObject;
import com.yeejoin.amos.boot.module.jg.api.service.IBizDataChangeHandleStrategy;
import java.util.HashMap;
public class RequestChangeData extends JSONObject {
public static final String multiDataKey = "tableData";
public IBizDataChangeHandleStrategy.ModelType getModelType() {
if (!this.containsKey(multiDataKey)) {
return IBizDataChangeHandleStrategy.ModelType.single;
}
return IBizDataChangeHandleStrategy.ModelType.batch;
}
}
package com.yeejoin.amos.boot.module.jg.api.dto;
import com.yeejoin.amos.boot.biz.common.annotation.FieldDisplayDefine;
import com.yeejoin.amos.boot.biz.common.annotation.Group;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* 安全追溯-锅炉
*
* @author system_generator
* @date 2023-08-17
*/
@EqualsAndHashCode(callSuper = true)
@Data
@Accessors(chain = true)
@Group(value = "tech_params_boiler")
public class TechParamsBoilerChangeFieldDto extends BaseTechParamsFieldDto {
@FieldDisplayDefine(value = "设备级别")
private String deviceLevel;
@FieldDisplayDefine(value = "额定蒸发量(热功率)")
private String ratedEvaporationCapacityThermalPower;
@FieldDisplayDefine(value = "额定工作压力")
private String ratedWorkingPressure;
@FieldDisplayDefine(value = "额定工作温度")
private String ratedOperatingTemperature;
@FieldDisplayDefine(value = "设计热效率")
private String designThermalEfficiency;
@FieldDisplayDefine(value = "给水温度")
private String feedwaterTemperature;
@FieldDisplayDefine(value = "额定出/回水(油)温度")
private String ratedOutletReturnWaterOilTemperature;
@FieldDisplayDefine(value = "锅炉本体水(油)容积")
private String waterOilVolumeOfBoilerProper;
@FieldDisplayDefine(value = "整装锅炉本体液压试验介质/压力")
private String hydraulicTestMediumPressureOfPackagedBoilerBody;
@FieldDisplayDefine(value = "再热器进(出)口温度")
private String inletOutletTemperatureOfReheater;
@FieldDisplayDefine(value = "再热器进(出)口压力")
private String reheaterInletOutletPressure;
@FieldDisplayDefine(value = "再热蒸汽流量")
private String reheatSteamFlow;
@FieldDisplayDefine(value = "有机热载体锅炉气密试验介质/压力")
private String glAirtightTest;
@FieldDisplayDefine(value = "燃料(热源)种类")
private String fuelType;
@FieldDisplayDefine(value = "受压部件名称")
private String nameOfPressureParts;
@FieldDisplayDefine(value = "受压部件材料")
private String materialOfPressureParts;
@FieldDisplayDefine(value = "受压部件壁厚")
private String wallThicknessOfPressureParts;
@FieldDisplayDefine(value = "受压部件无损检测方法")
private String nonDestructiveTestingMethodsForPressureParts;
@FieldDisplayDefine(value = "受压部件无损检测比例")
private String proportionOfNdtForPressureParts;
@FieldDisplayDefine(value = "受压部件热处理温度")
private String heatTreatmentTemperatureOfPressureParts;
@FieldDisplayDefine(value = "受压部件热处理时间")
private String heatTreatmentTimeOfPressureParts;
@FieldDisplayDefine(value = "受压部件水(耐)压试验介质")
private String hydrostaticTestMedium;
@FieldDisplayDefine(value = "受压部件水(耐)压试验压力")
private String hydrostaticTestPressure;
@FieldDisplayDefine(value = "燃烧方式")
private String combustionMode;
}
package com.yeejoin.amos.boot.module.jg.api.dto;
import com.yeejoin.amos.boot.biz.common.annotation.FieldDisplayDefine;
import com.yeejoin.amos.boot.biz.common.annotation.Group;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* 安全追溯-电梯
*
* @author system_generator
* @date 2023-08-17
*/
@EqualsAndHashCode(callSuper = true)
@Data
@Accessors(chain = true)
@Group(value = "tech_params_elevator")
public class TechParamsElevatorChangeFieldDto extends BaseTechParamsFieldDto {
@FieldDisplayDefine(value = "额定速度(上行)")
private String ratedSpeedUp;
@FieldDisplayDefine(value = "额定速度(下行)")
private String ratedSpeedDown;
@FieldDisplayDefine(value = "额定载重量")
private String ratedLoadCapacity;
@FieldDisplayDefine(value = "提升高度")
private String liftingHeight;
@FieldDisplayDefine(value = "层数")
private Integer storey;
@FieldDisplayDefine(value = "站数")
private Integer stand;
@FieldDisplayDefine(value = "门数")
private Integer numberDoors;
@FieldDisplayDefine(value = "控制方式")
private String controlMode;
@FieldDisplayDefine(value = "油缸数量")
private Integer numberCylinders;
@FieldDisplayDefine(value = "顶升方式")
private String jackingType;
@FieldDisplayDefine(value = "区域防爆等级")
private String explosionproofGrade;
@FieldDisplayDefine(value = "整机防爆标志")
private String explosionproofSignComplete;
@FieldDisplayDefine(value = "名义速度")
private String nominalSpeed;
@FieldDisplayDefine(value = "倾斜角")
private String angleRoll;
@FieldDisplayDefine(value = "使用区段长度")
private String useSectionLength;
@FieldDisplayDefine(value = "输送能力")
private String conveyingCapacity;
@FieldDisplayDefine(value = "轿门位置")
private String doorPosition;
@FieldDisplayDefine(value = "额定速度")
private String ratedSpeed;
}
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;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* 安全追溯-起重机械
*
* @author system_generator
* @date 2023-08-17
*/
@EqualsAndHashCode(callSuper = true)
@Data
@Accessors(chain = true)
@Group(value = "tech_params_lifting")
public class TechParamsLiftingChangeFieldDto extends BaseTechParamsFieldDto {
@FieldDisplayDefine(value = "额定起重量")
private String ratedLiftingCapacity;
@FieldDisplayDefine(value = "最大起重量")
@TableField("MAX_LIFTING_CAPACITY")
private String maxLiftingCapacity;
@FieldDisplayDefine(value = "最大起重力矩")
@TableField("MAX_LIFTING_TORQUE")
private String maxLiftingTorque;
@FieldDisplayDefine(value = "跨度(工作幅度)")
private String spanWorkingRange;
@FieldDisplayDefine(value = "起升速度")
private String liftingSpeed;
@FieldDisplayDefine(value = "起升高度")
private String liftingHeight;
@FieldDisplayDefine(value = "工作级别")
private String workLevel;
@FieldDisplayDefine(value = "额定起重力矩")
private String ratedLiftingTorque;
@FieldDisplayDefine(value = "层数/泊位数")
private Integer numberStorey;
@FieldDisplayDefine(value = "运行速度")
private String runningSpeed;
@FieldDisplayDefine(value = "大车运行速度")
private String bigcarRunSpeed;
@FieldDisplayDefine(value = "小车运行速度")
private String smallcarrunSpeed;
@FieldDisplayDefine(value = "额定成员数")
private Integer ratedMembers;
@FieldDisplayDefine(value = "额定提升速度")
private String ratedLiftingSpeed;
@FieldDisplayDefine(value = "自由端高度")
private String heightFreeEnd;
@FieldDisplayDefine(value = "吊笼工作行程")
private String workStrokeCage;
@FieldDisplayDefine(value = "存容量")
private Integer storageCapacity;
@FieldDisplayDefine(value = "额定升降速度")
private String ratedLiftSpeed;
@FieldDisplayDefine(value = "额定横移速度")
private String ratedTraverseSpeed;
@FieldDisplayDefine(value = "单车最大进(出)车时间")
@TableField("BICYCLE_MAX_EXIT_TIME")
private String bicycleMaxExitTime;
@FieldDisplayDefine(value = "单车最大进车时间")
private String bicycleMaxComeTime;
@FieldDisplayDefine(value = "区域防爆等级")
private String explosionProofGrade;
@FieldDisplayDefine(value = "悬臂长度")
private String cantileverLength;
@FieldDisplayDefine(value = "变幅速度")
private String derrickingSpeed;
@FieldDisplayDefine(value = "吊笼数量")
private String hangingCagesNumber;
@FieldDisplayDefine(value = "燃爆物质")
private String explosiveSubstance;
@FieldDisplayDefine(value = "整机防爆标志", type = JSON.class)
private String explosionproofSignComplete;
@FieldDisplayDefine(value = "监检结束高度")
private String checkFinishedHeight;
@FieldDisplayDefine(value = "适停车辆尺寸高")
private String parkingVehicleHeight;
@FieldDisplayDefine(value = "适停车辆尺寸宽")
private String parkingVehicleWeight;
@FieldDisplayDefine(value = "适停车辆尺寸长")
private String parkingVehicleLength;
}
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.experimental.Accessors;
/**
* 安全追溯-压力管道
*
* @author system_generator
* @date 2023-08-17
*/
@Data
@Accessors(chain = true)
@Group(value = "tech_params_pipeline")
public class TechParamsPipelineChangeFieldDto extends BaseTechParamsFieldDto {
@FieldDisplayDefine(value = "管道类别")
private String pipelineClass;
@FieldDisplayDefine(value = "管道编号")
private String pipelineNumber;
@FieldDisplayDefine(value = "管道级别")
private String deviceLevel;
@FieldDisplayDefine(value = "公称直径")
private String nominalDiameter;
@FieldDisplayDefine(value = "公称壁厚")
private String wallThickness;
@FieldDisplayDefine(value = "管道长度")
private String pipeLength;
@FieldDisplayDefine(value = "起/始位置", type = JSON.class)
private String startePosition;
@FieldDisplayDefine(value = "压力")
private String pressure;
@FieldDisplayDefine(value = "温度")
private String temperature;
@FieldDisplayDefine(value = "介质")
private String medium;
@FieldDisplayDefine(value = "备注")
private String remarks;
}
package com.yeejoin.amos.boot.module.jg.api.dto;
import com.yeejoin.amos.boot.biz.common.annotation.FieldDisplayDefine;
import com.yeejoin.amos.boot.biz.common.annotation.Group;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* 安全追溯-游乐设施
*
* @author system_generator
* @date 2023-08-17
*/
@EqualsAndHashCode(callSuper = true)
@Data
@Accessors(chain = true)
@Group(value = "tech_params_rides")
public class TechParamsRidesChangeFieldDto extends BaseTechParamsFieldDto {
@FieldDisplayDefine(value = "轨道高度")
private String trackHeight;
@FieldDisplayDefine(value = "运行速度")
private String runningSpeed;
@FieldDisplayDefine(value = "乘坐人数")
private Integer numberOfPassengers;
@FieldDisplayDefine(value = "滑道长度")
private String slideLength;
@FieldDisplayDefine(value = "运行高度")
private String operatingHeight;
@FieldDisplayDefine(value = "蹦极绳长度")
private String slideHeight;
@FieldDisplayDefine(value = "回转直径")
private String rotaryDiameter;
@FieldDisplayDefine(value = "单边摆角")
private String unilateralSwingAngle;
@FieldDisplayDefine(value = "车辆数")
private Integer numberOfVehicles;
@FieldDisplayDefine(value = "倾角")
private String dip;
@FieldDisplayDefine(value = "设备高度")
private String equipmentHeight;
}
package com.yeejoin.amos.boot.module.jg.api.dto;
import com.yeejoin.amos.boot.biz.common.annotation.FieldDisplayDefine;
import com.yeejoin.amos.boot.biz.common.annotation.Group;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* 安全追溯-索道
*
* @author system_generator
* @date 2023-08-17
*/
@EqualsAndHashCode(callSuper = true)
@Data
@Accessors(chain = true)
@Group(value = "tech_params_ropeway")
public class TechParamsRopewayChangeFieldDto extends BaseTechParamsFieldDto {
@FieldDisplayDefine(value = "平距")
private String horizontalDistance;
@FieldDisplayDefine(value = "支架数目")
private Integer supportsCount;
@FieldDisplayDefine(value = "斜长")
private String obliqueLength;
@FieldDisplayDefine(value = "主电机型式")
private String mainMotorModel;
@FieldDisplayDefine(value = "主电机功率")
private String mainMotorPower;
@FieldDisplayDefine(value = "高差")
private String altitudeDifference;
@FieldDisplayDefine(value = "运量")
private String freightVolume;
@FieldDisplayDefine(value = "运载索")
private String carrierLine;
@FieldDisplayDefine(value = "速度")
private String speed;
@FieldDisplayDefine(value = "承载索")
private String bearingCable;
@FieldDisplayDefine(value = "索距")
private String cablePitch;
@FieldDisplayDefine(value = "张紧油压(重锤重量)")
private String oilPressureHeavyHammer;
@FieldDisplayDefine(value = "运载工具数量和类型")
private String numberAndTypeOfVehicles;
}
package com.yeejoin.amos.boot.module.jg.api.dto;
import com.yeejoin.amos.boot.biz.common.annotation.FieldDisplayDefine;
import com.yeejoin.amos.boot.biz.common.annotation.Group;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* 安全追溯-场内车辆
*
* @author system_generator
* @date 2023-08-17
*/
@EqualsAndHashCode(callSuper = true)
@Data
@Accessors(chain = true)
@Group(value = "tech_params_vehicle")
public class TechParamsVehicleChangeFieldDto extends BaseTechParamsFieldDto {
@FieldDisplayDefine(value = "车架编号")
private String frameNo;
@FieldDisplayDefine(value = "发动机(行走电机)编号")
private String engineNo;
@FieldDisplayDefine(value = "额定起重量")
private String liftingCapacity;
@FieldDisplayDefine(value = "传动方式")
private String transmissionMode;
@FieldDisplayDefine(value = "自重")
private String weight;
@FieldDisplayDefine(value = "动力方式")
private String powerMode;
@FieldDisplayDefine(value = "最大运行速度")
private String maxRunningSpeed;
@FieldDisplayDefine(value = "工作装置空载最大起升高度")
private String maxLiftingHeight;
@FieldDisplayDefine(value = "气体/粉尘组别(防爆)")
private String gasGroup;
@FieldDisplayDefine(value = "车架结构")
private String frameStructure;
@FieldDisplayDefine(value = "驾驶方式")
private String drivingMode;
@FieldDisplayDefine(value = "空载最大运行速度")
private String carryingIdlerMaxRunningSpeed;
@FieldDisplayDefine(value = "设备保护等级(防爆)")
private String protectGrade;
@FieldDisplayDefine(value = "温度组别(防爆)")
private String temperatureGroup;
@FieldDisplayDefine(value = "额定载客人数")
private Integer passengersNumber;
@FieldDisplayDefine(value = "最大行驶坡度")
private String maxDrivingSlope;
@FieldDisplayDefine(value = "整车整备质量")
private String vehicleMass;
@FieldDisplayDefine(value = "轴距")
private String wheelBase;
@FieldDisplayDefine(value = "轮距(前)")
private String trackWidthFront;
@FieldDisplayDefine(value = "轮距(后)")
private String trackWidthBehind;
@FieldDisplayDefine(value = "观光列车车厢数")
private Integer carsNumber;
@FieldDisplayDefine(value = "观光列车每节车厢座位数")
private Integer seatNumber;
@FieldDisplayDefine(value = "观光列车牵引车头座位数")
private Integer tractorSeatNumber;
@FieldDisplayDefine(value = "空载最大起升速度")
private String maxLiftingSpeed;
}
package com.yeejoin.amos.boot.module.jg.api.dto;
import com.yeejoin.amos.boot.biz.common.annotation.FieldDisplayDefine;
import com.yeejoin.amos.boot.biz.common.annotation.Group;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* 安全追溯-压力容器
*
* @author system_generator
* @date 2023-08-17
*/
@EqualsAndHashCode(callSuper = true)
@Data
@Accessors(chain = true)
@Group(value = "tech_params_vessel")
public class TechParamsVesselChangeFieldDto extends BaseTechParamsFieldDto {
@FieldDisplayDefine(value = "额定质量")
private String ratedQuality;
@FieldDisplayDefine(value = "使用环境温度")
private String ambientTemperature;
@FieldDisplayDefine(value = "型号")
private String modelNumber;
@FieldDisplayDefine(value = "数量")
private Integer num;
@FieldDisplayDefine(value = "单瓶容积")
private String singleBottleVolume;
@FieldDisplayDefine(value = "总容积")
private String totalVolume;
@FieldDisplayDefine(value = "充装介质")
private String chargingMedium;
@FieldDisplayDefine(value = "规格")
private String specification;
@FieldDisplayDefine(value = "外径")
private String outsideDiameter;
@FieldDisplayDefine(value = "壁厚")
private String wallThickness;
@FieldDisplayDefine(value = "长度")
private String length;
@FieldDisplayDefine(value = "公称工作压力")
private String nominalWorkingPressure;
@FieldDisplayDefine(value = "材料(瓶体)")
private String bottleBody;
@FieldDisplayDefine(value = "材料(端塞)")
private String endPlug;
@FieldDisplayDefine(value = "材料(管路)")
private String piping;
@FieldDisplayDefine(value = "无损检测方法(气瓶)")
private String qpLossless;
@FieldDisplayDefine(value = "无损检测方法(管路)")
private String glLossless;
@FieldDisplayDefine(value = "无损检测比例(气瓶)")
private String qpRatio;
@FieldDisplayDefine(value = "无损检测比例(管路)")
private String glRatio;
@FieldDisplayDefine(value = "耐压试验压力(气瓶)")
private String qpPressure;
@FieldDisplayDefine(value = "耐压试验压力(管路)")
private String glPressure;
@FieldDisplayDefine(value = "气密性试验压力(气瓶)")
private String qpAirTightness;
@FieldDisplayDefine(value = "气密性试验压力(管路)")
private String glAirTightness;
@FieldDisplayDefine(value = "气体置换后压力")
private String displacementPressure;
@FieldDisplayDefine(value = "瓶体内含氧量")
private String oxygen;
@FieldDisplayDefine(value = "瓶体内含氧量")
private String heatTreatmentMethod;
@FieldDisplayDefine(value = "热处理温度")
private String qpHeatTreatmentTemperature;
@FieldDisplayDefine(value = "气瓶安装位置")
private String installationPosition;
@FieldDisplayDefine(value = "容器容积")
private String containerVolume;
@FieldDisplayDefine(value = "容器内径")
private String pressureVesselDiameter;
@FieldDisplayDefine(value = "容器高(长)")
private String height;
@FieldDisplayDefine(value = "材料(筒体(球壳))")
private String materialCylinderShell;
@FieldDisplayDefine(value = "材料(封头)")
private String pressureMaterialHead;
@FieldDisplayDefine(value = "材料(衬里)")
private String pressureMaterialLining;
@FieldDisplayDefine(value = "材料(夹套)")
private String materialJacket;
@FieldDisplayDefine(value = "厚度(筒体(球壳))")
private String thickness;
@FieldDisplayDefine(value = "厚度(封头)")
private String fixedHead;
@FieldDisplayDefine(value = "厚度(衬里)")
private String fixedLining;
@FieldDisplayDefine(value = "厚度(夹套)")
private String fixedJacket;
@FieldDisplayDefine(value = "容器自重")
private String selfWeight;
@FieldDisplayDefine(value = "盛装介质重量")
private String mediumWeight;
@FieldDisplayDefine(value = "设计压力(壳程)")
private String pressureHousingPath;
@FieldDisplayDefine(value = "设计压力(管程)")
private String pressurePipe;
@FieldDisplayDefine(value = "设计压力(夹套)")
private String pressureJacket;
@FieldDisplayDefine(value = "设计温度(壳程)")
private String temperatureShell;
@FieldDisplayDefine(value = "设计温度(管程)")
private String temperaturePipe;
@FieldDisplayDefine(value = "设计温度(夹套)")
private String temperatureJacket;
@FieldDisplayDefine(value = "最高允许工作压力(壳程)")
private String maxPressureShell;
@FieldDisplayDefine(value = "最高允许工作压力(管程)")
private String maxPressurePipe;
@FieldDisplayDefine(value = "最高允许工作压力(夹套)")
private String maxPressureJacket;
@FieldDisplayDefine(value = "介质(壳程)")
private String mediumShell;
@FieldDisplayDefine(value = "介质(管程)")
private String mediumPipe;
@FieldDisplayDefine(value = "介质(夹套)")
private String mediumJacket;
@FieldDisplayDefine(value = "主体结构型式")
private String mainStructureType;
@FieldDisplayDefine(value = "支座型式")
private String support;
@FieldDisplayDefine(value = "安装型式")
private String installation;
@FieldDisplayDefine(value = "保温绝热方式")
private String insulation;
@FieldDisplayDefine(value = "无损检测方法")
private String checkLossless;
@FieldDisplayDefine(value = "耐压试验种类")
private String withstandVoltage;
@FieldDisplayDefine(value = "泄漏试验种类")
private String leakage;
@FieldDisplayDefine(value = "耐压试验压力")
private String withstandPressureTest;
@FieldDisplayDefine(value = "泄漏试验压力")
private String leakPressure;
@FieldDisplayDefine(value = "容器型号")
private String container;
@FieldDisplayDefine(value = "罐车编号")
private String carNum;
@FieldDisplayDefine(value = "容积")
private String volume;
@FieldDisplayDefine(value = "最大充装量")
private String maxFill;
@FieldDisplayDefine(value = "设计压力")
private String designPressure;
@FieldDisplayDefine(value = "设计温度")
private String designTemperature;
@FieldDisplayDefine(value = "工作压力")
private String workingPressure;
@FieldDisplayDefine(value = "工作温度")
private String workTemperature;
@FieldDisplayDefine(value = "材料(筒体)")
private String materialCylinder;
@FieldDisplayDefine(value = "厚度(筒体)")
private String thicknessCylinder;
@FieldDisplayDefine(value = "腐蚀裕量")
private String corrosionMargin;
@FieldDisplayDefine(value = "介质")
private String medium;
@FieldDisplayDefine(value = "氧舱品种")
private String oxygenChamber;
@FieldDisplayDefine(value = "额定进舱人数")
private Integer ratedEntryCapacity;
@FieldDisplayDefine(value = "主体结构")
private String chamberMain;
@FieldDisplayDefine(value = "压力")
private String chamberPressure;
@FieldDisplayDefine(value = "温度")
private String temperature;
@FieldDisplayDefine(value = "压力介质")
private String pressureMedium;
@FieldDisplayDefine(value = "人均舱容")
private String perCapitaCabinCapacity;
}
package com.yeejoin.amos.boot.module.jg.api.dto;
import lombok.Data;
import lombok.EqualsAndHashCode;
@EqualsAndHashCode(callSuper = true)
@Data
public class UseRegisterChangeDataDto extends BaseChangeDataDto {
}
......@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.biz.common.bo.CompanyBo;
import com.yeejoin.amos.boot.module.common.api.dto.DPFilterParamDto;
import com.yeejoin.amos.boot.module.jg.api.bo.JgBizCountDataBO;
import com.yeejoin.amos.boot.module.jg.api.dto.DynamicColumnDto;
import com.yeejoin.amos.boot.module.jg.api.dto.ReportAnalysisSearchDTO;
import com.yeejoin.amos.boot.module.ymt.api.entity.EquipmentCategory;
import org.apache.ibatis.annotations.Param;
......@@ -184,11 +185,23 @@ public interface CommonMapper extends BaseMapper<EquipmentCategory> {
Page<Map<String,Object>> countBizFinishedNumForDPListBGDJ(@Param("page") Page<Map<String,Object>> page, @Param("orgCode") String orgCode, @Param("dto") DPFilterParamDto dpFilterParamForDetailDto);
Page<Map<String,Object>> countBizFinishedNumForDPListZXBX(@Param("page") Page<Map<String,Object>> page, @Param("orgCode") String orgCode, @Param("dto") DPFilterParamDto dpFilterParamForDetailDto);
void updateTechParamDynamic(@Param(value = "tableName") String tableName,@Param(value = "record") String record, @Param(value = "columns") List<DynamicColumnDto> columns);
/**
* 当前设备在流程中的申请单号
* @param record 设备id
* @return 申请单号
*/
List<String> findEquipInUseService(@Param("record") String record);
/**
* 查询指定设备,使用登记后,后续业务的数据
* @param record 设备标识
* @return 后续业务数量
*/
Integer countBizNumAfterUseReg(@Param("record") String record);
}
package com.yeejoin.amos.boot.module.jg.api.service;
import java.util.Map;
public interface IBizDataChangeHandleStrategy {
/**
* 可处理的业务类型(使用登记等)
*
* @return 业务类型
*/
String canHandleBizType();
/**
* 获取变更信息详情
*
* @param applyNo 单据编号
* @param model single, batch
* @param bizId 设备record
* @return 变更信息详情
*/
Map<String, ?> getDetail(String applyNo, ModelType model, String bizId);
/**
* 保存
*
* @param applyNo 单据编号
* @param model single, batch
* @param changeData 变更数据
*/
void doSave(String applyNo, ModelType model, Map<String, Object> changeData);
/**
* 单据方式:单个处理、批量处理
*/
enum ModelType {
single,
batch
}
String DEFAULT_VALUE = "default";
}
......@@ -16,7 +16,7 @@ public interface IShCarService {
Page<ShCarDto> queryForShCarPage(Page<ShCarDto> page, ShCarDto dto);
Boolean claim(Map<String, Object> paramMap);
Boolean claim(String claimOneself,Map<String, Object> paramMap);
ShCar searchForSanHan(Map<?, ?> map);
}
package com.yeejoin.amos.boot.module.jg.api.vo;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import java.io.Serializable;
@Data
@ApiModel(value = "变化的数据")
public class ChangeDataVo implements Serializable {
/**
* 必须字段-字段key
*/
private String columnKey;
/**
* 必须字段-字段描述
*/
private String columnLabel;
/**
* 必须字段-字段原始值
*/
private Object columnOldValue;
/**
* 必须字段-字段新值
*/
private Object columnNewValue;
/**
* 非必须字段-变化的数据id(设备的record、或者业务的id),持使用登记的设备信息变更、不同业务流程的业务数据变更
*/
private String changeId;
}
......@@ -113,6 +113,15 @@ public class ShCarEquVo {
private String produceUnitName;
private String equList;
private String equCategory;
private String equDefine;
/**
* 是否车用气瓶
*/
private String whetherVehicleCylinder;
public ShCarEquVo(ShCarEqu shCarEqu) {
this.setSequenceNbr(shCarEqu.getSequenceNbr());
......
......@@ -105,6 +105,7 @@
where instance_id = #{instanceId}
</update>
<select id="getUserPhone" resultType="java.util.Map">
SELECT phone
FROM "tzs_user_info"
......@@ -2445,4 +2446,74 @@
and (a.status <![CDATA[ <> ]]> '已作废')
)
</select>
<update id="updateTechParamDynamic">
<if test="columns != null and columns.size > 0">
update
${tableName}
set
<foreach collection="columns" item="column" separator=",">
${column.columnName} = #{column.columnValue}
</foreach>
where record = #{record}
</if>
</update>
<select id="countBizNumAfterUseReg" resultType="java.lang.Integer">
select
sum(inUseNumber)
from (
select
count(1) as inUseNumber
from
tzs_jg_change_registration_reform a,
tzs_jg_change_registration_reform_eq b
where
a.sequence_nbr = b.equip_transfer_id
and b.equ_id = #{record}
and (a.audit_status <![CDATA[ <> ]]> '使用单位待提交' and a.audit_status <![CDATA[ <> ]]> '已作废')
UNION all
select
count(1) as inUseNumber
from
tzs_jg_change_registration_transfer a,
tzs_jg_change_registration_transfer_eq b
where
a.sequence_nbr = b.equip_transfer_id
and b.equ_id = #{record}
and (a.audit_status <![CDATA[ <> ]]> '使用单位待提交' and a.audit_status <![CDATA[ <> ]]> '已作废')
UNION all
select
count(1) as inUseNumber
from
tzs_jg_change_registration_unit a,
tzs_jg_change_registration_unit_eq b
where
a.sequence_nbr = b.unit_change_registration_id
and b.equ_id = #{record}
and (a.status <![CDATA[ <> ]]> '使用单位待提交' and a.status <![CDATA[ <> ]]> '已作废')
UNION all
select
count(1) as inUseNumber
from
tzs_jg_scrap_cancel a,
tzs_jg_scrap_cancel_eq b
where
a.sequence_nbr = b.equip_transfer_id
and b.equ_id = #{record}
and (a.audit_status <![CDATA[ <> ]]> '使用单位待提交' and a.audit_status <![CDATA[ <> ]]> '已作废')
UNION all
select
count(1) as inUseNumber
from
(SELECT
json_array_elements(e.equip_info)->>'SEQUENCE_NBR' AS record
FROM
tzs_jg_change_registration_name_eq e,
tzs_jg_change_registration_name n
where
n.sequence_nbr = e.name_change_registration_id
and n.audit_status <![CDATA[ <> ]]> '使用单位待提交' and n.audit_status <![CDATA[ <> ]]> '已作废') ne
where
ne.record = #{record}
)
</select>
</mapper>
......@@ -159,7 +159,7 @@ public class PressureVesselListener extends AnalysisEventListener<EquipInfoCylin
private void checkEquCodeUniqueness(String equCode) {
// 根据设备代码检查唯一性
Integer count = idxBizJgRegisterInfoMapper.selectByEquCodeAndClaimStatus(equCode,"");
Integer count = idxBizJgRegisterInfoMapper.selectByEquCodeAndClaimStatus(equCode,"",null);
if (count > 0) {
result.append("设备代码系统中已存在");
}
......
package com.yeejoin.amos.boot.module.jg.biz.context;
import com.yeejoin.amos.boot.module.jg.api.service.IBizDataChangeHandleStrategy;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.Map;
import java.util.Optional;
/**
* @author Administrator
*/
@Component
public class BizDataHandleStrategyContext implements ApplicationContextAware {
private static final Map<String, IBizDataChangeHandleStrategy> dataProcessStrategyHashMap = new HashMap<>();
public static IBizDataChangeHandleStrategy getStrategy(String bizType) {
return Optional.ofNullable(dataProcessStrategyHashMap.get(bizType)).orElseThrow(() -> new RuntimeException(String.format("not found %s type strategy", bizType)));
}
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
Map<String, IBizDataChangeHandleStrategy> strategyBeans = applicationContext.getBeansOfType(IBizDataChangeHandleStrategy.class);
if (strategyBeans.isEmpty()) {
return;
}
for (IBizDataChangeHandleStrategy strategy : strategyBeans.values()) {
dataProcessStrategyHashMap.put(strategy.canHandleBizType(), strategy);
}
}
}
package com.yeejoin.amos.boot.module.jg.biz.context;
import com.yeejoin.amos.boot.module.jg.biz.service.IChangeDataProcessStrategy;
import com.yeejoin.amos.boot.module.jg.api.service.IBizDataChangeHandleStrategy;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.Map;
import java.util.Optional;
/**
* @author Administrator
*/
@Component
public class DataProcessStrategyContext implements ApplicationContextAware {
private static final Map<IBizDataChangeHandleStrategy.ModelType, IChangeDataProcessStrategy> dataProcessStrategyHashMap = new HashMap<>();
public static IChangeDataProcessStrategy getStrategy(IBizDataChangeHandleStrategy.ModelType modelType) {
return Optional.ofNullable(dataProcessStrategyHashMap.get(modelType)).orElseThrow(() -> new RuntimeException(String.format("not found %s type strategy", modelType)));
}
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
Map<String, IChangeDataProcessStrategy> strategyBeans = applicationContext.getBeansOfType(IChangeDataProcessStrategy.class);
if (strategyBeans.isEmpty()) {
return;
}
for (IChangeDataProcessStrategy strategy : strategyBeans.values()) {
dataProcessStrategyHashMap.put(strategy.canHandleMode(), strategy);
}
}
}
package com.yeejoin.amos.boot.module.jg.biz.controller;
import com.yeejoin.amos.boot.module.jg.api.dto.RequestChangeData;
import com.yeejoin.amos.boot.module.jg.api.service.IBizDataChangeHandleStrategy;
import com.yeejoin.amos.boot.module.jg.biz.service.impl.BizDataChangeServiceImpl;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import org.typroject.tyboot.core.foundation.enumeration.UserType;
import org.typroject.tyboot.core.restful.doc.TycloudOperation;
import org.typroject.tyboot.core.restful.utils.ResponseHelper;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
import java.util.Map;
@RestController
@RequestMapping(value = "/data-change")
@Api(tags = "业务数据变化处理控制器")
public class BizDataChangeController {
private final BizDataChangeServiceImpl bizDataChangeService;
public BizDataChangeController(BizDataChangeServiceImpl bizDataChangeService) {
this.bizDataChangeService = bizDataChangeService;
}
@TycloudOperation(ApiLevel = UserType.AGENCY)
@PostMapping(value = "/{bizType}/save")
@ApiOperation(value = "业务数据变更保存", httpMethod = "POST")
public ResponseModel<String> save(@RequestParam String applyNo,
@PathVariable String bizType,
@RequestBody RequestChangeData changeData) {
bizDataChangeService.save(applyNo, bizType, changeData);
return ResponseHelper.buildResponse("success");
}
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/{bizType}/detail")
@ApiOperation(value = "查询可业务变更的字段及默认值", httpMethod = "GET")
public ResponseModel<Map<String, ?>> getDetail(@RequestParam(required = false) String applyNo,
@PathVariable String bizType,
IBizDataChangeHandleStrategy.ModelType model,
@RequestParam(required = false) String bizId) {
return ResponseHelper.buildResponse(bizDataChangeService.queryDetail(applyNo, bizType, model, bizId));
}
}
......@@ -17,6 +17,7 @@ import org.typroject.tyboot.component.event.RestEventTrigger;
import org.typroject.tyboot.core.foundation.enumeration.UserType;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import org.typroject.tyboot.core.restful.doc.TycloudOperation;
import org.typroject.tyboot.core.restful.exception.instance.BadRequest;
import org.typroject.tyboot.core.restful.utils.ResponseHelper;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
......@@ -124,10 +125,12 @@ public class JgChangeVehicleRegistrationUnitController extends BaseController {
public ResponseModel<Page<JgUseRegistrationManageDto>> getUseRegistrationCodeData(
@RequestParam(value = "current") int current,
@RequestParam(value = "size") int size,
@RequestParam(value = "useUnitCreditCode") String useUnitCreditCode,
@RequestParam(value = "useUnitCreditCode", required = false) String useUnitCreditCode,
@RequestParam(value = "whetherVehicleCylinder") String whetherVehicleCylinder,
@RequestParam(value = "certificateStatus") String certificateStatus,
@RequestParam(value = "useRegistrationCode", required = false) String useRegistrationCode) {
if (ValidationUtil.isEmpty(useUnitCreditCode))
throw new BadRequest("请先选择原使用单位");
JgUseRegistrationManageDto dto = new JgUseRegistrationManageDto();
Page<JgUseRegistrationManageDto> page = new Page<JgUseRegistrationManageDto>();
page.setCurrent(current);
......
......@@ -2,6 +2,7 @@ package com.yeejoin.amos.boot.module.jg.biz.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.sun.org.apache.xpath.internal.operations.Bool;
import com.yeejoin.amos.boot.module.jg.api.dto.ShCarDto;
import com.yeejoin.amos.boot.module.jg.api.entity.JgUseRegistrationManage;
import com.yeejoin.amos.boot.module.jg.api.entity.ShCar;
......@@ -9,6 +10,8 @@ import com.yeejoin.amos.boot.module.jg.api.entity.ShCarEqu;
import com.yeejoin.amos.boot.module.jg.api.service.IShCarService;
import com.yeejoin.amos.boot.module.jg.biz.service.impl.JgUseRegistrationManageServiceImpl;
import com.yeejoin.amos.boot.module.jg.biz.service.impl.ShCarEquServiceImpl;
import io.swagger.annotations.ApiParam;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.Api;
......@@ -40,6 +43,9 @@ import java.util.*;
public class ShCarController extends BaseController {
@Autowired
ShCarEquServiceImpl shCarEquService;
@Autowired
ShCarServiceImpl shCarServiceImpl;
@Autowired
......@@ -115,21 +121,21 @@ public class ShCarController extends BaseController {
public ResponseModel<Page<ShCarDto>> queryForPage(@RequestParam(value = "current") int current,
@RequestParam(value = "size") int size,
ShCarDto dto) {
Page<ShCarDto> page = new Page<>();
page.setCurrent(current);
page.setSize(size);
Page<ShCarDto> page = new Page<>(current, size);
Page<ShCarDto> shCarDtoPage = iShCarService.queryForShCarPage(page, dto);
shCarDtoPage.getRecords().forEach(record -> {
if ("1".equals(record.getClaimedFlag())) {
record.setClaimedFlag("是");
// 填充 证管理表的seq,用与认领后跳转证详情页
JgUseRegistrationManage manage = jgUseRegistrationManageServiceImpl.getBaseMapper().selectOne(new LambdaQueryWrapper<JgUseRegistrationManage>()
.eq(JgUseRegistrationManage::getUseRegistrationCode, record.getUseRegistrationCode()));
record.setCertificateSeq(String.valueOf(manage.getSequenceNbr()));
} else if ("0".equals(record.getClaimedFlag())) {
record.setClaimedFlag("否");
}
});
Optional.ofNullable(shCarDtoPage.getRecords()).ifPresent(records ->
records.forEach(record -> {
if ("1".equals(record.getClaimedFlag())) {
record.setClaimedFlag("是");
JgUseRegistrationManage manage = jgUseRegistrationManageServiceImpl.getBaseMapper()
.selectOne(new LambdaQueryWrapper<JgUseRegistrationManage>()
.eq(JgUseRegistrationManage::getUseRegistrationCode, record.getUseRegistrationCode()));
record.setCertificateSeq(manage != null ? String.valueOf(manage.getSequenceNbr()) : null);
} else if ("0".equals(record.getClaimedFlag())) {
record.setClaimedFlag("否");
}
})
);
return ResponseHelper.buildResponse(shCarDtoPage);
}
......@@ -161,6 +167,36 @@ public class ShCarController extends BaseController {
return ResponseHelper.buildResponse(shCarServiceImpl.searchForSanHan(map));
}
/**
* 数据查询,校验是否是三环系统数据 (三个入参必须同时满足)
*
* @param useRegistrationCode 使用登记证编号
* @param carNumber 车牌号
* @param identificationCode 车辆VIN码
* @return result
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(httpMethod = "GET", value = "数据查询,校验是否是三环系统数据", notes = "数据查询,校验是否是三环系统数据")
@GetMapping(value = "/searchForSanHanAllParams")
public ResponseModel<ShCar> searchForSanHan(@ApiParam(name = "使用登记证编号") @RequestParam String useRegistrationCode,
@ApiParam(name = "车牌号") @RequestParam String carNumber,
@ApiParam(name = "车辆VIN码") @RequestParam String identificationCode) {
if (StringUtils.isEmpty(useRegistrationCode) || StringUtils.isEmpty(carNumber) || StringUtils.isEmpty(identificationCode))
return ResponseHelper.buildResponse(new ShCar());
LambdaQueryWrapper<ShCar> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(ShCar::getClaimedFlag, Boolean.FALSE);
wrapper.eq(ShCar::getCarNumber, carNumber.trim());
wrapper.eq(ShCar::getUseRegistrationCode, useRegistrationCode.trim());
wrapper.eq(ShCar::getFrameNumber, identificationCode.trim());
ShCar shCar = shCarServiceImpl.getBaseMapper().selectList(wrapper)
.stream()
.findFirst()
.orElse(new ShCar());
if (StringUtils.isEmpty(shCar.getSequenceNbr()))
return ResponseHelper.buildResponse(new ShCar());
return ResponseHelper.buildResponse(shCar);
}
/**
* 认领三环系统数据
......@@ -170,7 +206,8 @@ public class ShCarController extends BaseController {
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(httpMethod = "POST", value = "认领三环系统数据", notes = "认领三环系统数据")
@PostMapping(value = "/claim")
public ResponseModel<Boolean> claim(@RequestBody Map<String, Object> paramMap) {
return ResponseHelper.buildResponse(shCarServiceImpl.claim(paramMap));
public ResponseModel<Boolean> claim(@RequestParam(value = "claimOneself",defaultValue = "true")String claimOneself,
@RequestBody Map<String, Object> paramMap) {
return ResponseHelper.buildResponse(shCarServiceImpl.claim(claimOneself,paramMap));
}
}
......@@ -19,6 +19,7 @@ import org.typroject.tyboot.core.restful.doc.TycloudOperation;
import org.typroject.tyboot.core.foundation.enumeration.UserType;
import java.util.List;
import java.util.Map;
/**
*
......@@ -120,8 +121,9 @@ public class ShCarEquController extends BaseController {
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(httpMethod = "GET",value = "汽车详细信息列表", notes = "汽车详细信息列表")
@GetMapping(value = "/selectByCarId")
public ResponseModel<CarAndEquVo> selectByCarId(@RequestParam String carId) {
public ResponseModel<Map<String,Object>> selectByCarId(@RequestParam(value = "carId") String carId,
@RequestParam(value = "claimOneself") String claimOneself) {
ReginParams reginParams = getSelectedOrgInfo();
return ResponseHelper.buildResponse(shCarEquServiceImpl.queryByCarId(carId,reginParams));
return ResponseHelper.buildResponse(shCarEquServiceImpl.queryByCarId(carId,claimOneself,reginParams));
}
}
package com.yeejoin.amos.boot.module.jg.biz.dao;
import com.yeejoin.amos.boot.module.jg.api.dto.ESDataChangeLogDto;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.stereotype.Repository;
/**
* @author Administrator
*/
@Repository
public interface ESDataChangeLogDao extends PagingAndSortingRepository<ESDataChangeLogDto, String> {
}
package com.yeejoin.amos.boot.module.jg.biz.event;
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 ChangeDataEvent extends ApplicationEvent {
private final List<ChangeDataDto> data;
private final RequestContextModel requestContext;
/**
* 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 ChangeDataEvent(Object source, List<ChangeDataDto> data, RequestContextModel requestContext) {
super(source);
this.data = data;
this.requestContext = requestContext;
}
}
package com.yeejoin.amos.boot.module.jg.biz.event.listener;
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.biz.dao.ESDataChangeLogDao;
import com.yeejoin.amos.boot.module.jg.biz.event.ChangeDataEvent;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Component;
import org.typroject.tyboot.core.foundation.context.RequestContextModel;
import javax.annotation.PostConstruct;
import java.util.Date;
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.Collectors;
/**
* @author Administrator
*/
@Component
@Slf4j
public class ChangeDataEventListener {
@Value("${changeData.deal.thread.number:1}")
private int threadNumber;
private final ESDataChangeLogDao esDataChangeLogDao;
private final BlockingQueue<ChangeDataEvent> queue = new LinkedBlockingQueue<>();
public ChangeDataEventListener(ESDataChangeLogDao esDataChangeLogDao) {
this.esDataChangeLogDao = esDataChangeLogDao;
}
@EventListener(value = ChangeDataEvent.class)
public void handleTransactionalEvent(ChangeDataEvent event) {
log.info("收到用户变更业务数据消息:{}", JSONObject.toJSONString(event));
queue.add(event);
}
@PostConstruct
public void init() {
ExecutorService executorService = Executors.newFixedThreadPool(threadNumber);
for (int i = 0; i < threadNumber; i++) {
executorService.execute(() -> {
while (true) {
try {
ChangeDataEvent event = queue.take();
this.dealData(event);
} catch (Exception e) {
log.error(e.getMessage(), e);
}
}
});
}
}
private void dealData(ChangeDataEvent event) {
List<ChangeDataDto> changeDataDtos = event.getData();
RequestContextModel requestContextModel = event.getRequestContext();
Date date = new Date();
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(requestContextModel.getTraceId());
return changeLogDto;
}).collect(Collectors.toList());
esDataChangeLogDao.saveAll(logs);
log.info("es 操作日志数据入库成功:{}条", logs.size());
}
}
package com.yeejoin.amos.boot.module.jg.biz.factory;
import com.yeejoin.amos.boot.module.jg.api.dto.*;
import java.util.HashMap;
import java.util.Map;
public class ChangeItemFactory {
private static final Map<String, Class<? extends BaseChangeDataDto>> ITEM_FACTORY = new HashMap<>();
static {
// 使用登记信息
ITEM_FACTORY.put("biz_use_register_info", UseRegisterChangeDataDto.class);
// 设备-注册登记信息
ITEM_FACTORY.put("equip_register_info", EquipRegisterChangeDataDto.class);
// 设备-制造信息
ITEM_FACTORY.put("equip_factory_info", EquipFactoryChangeDataDto.class);
// 设备-设计信息
ITEM_FACTORY.put("equip_design_info", EquipDesignChangeDataDto.class);
}
public static Class<? extends BaseChangeDataDto> getItemGroupClass(String group) {
return ITEM_FACTORY.get(group);
}
}
package com.yeejoin.amos.boot.module.jg.biz.service;
import com.yeejoin.amos.boot.module.jg.api.dto.ChangeDataDto;
import com.yeejoin.amos.boot.module.jg.api.service.IBizDataChangeHandleStrategy;
import java.util.List;
import java.util.Map;
/**
* 事件处理监听器,将前端数据解析为java对象格式
*/
public interface IChangeDataProcessStrategy {
/**
* 事件处理
*/
List<ChangeDataDto> handle(Map<String, Object> changeData, String defaultChangeId);
Map<String, ?> getDetail(String applyNo, String bizId);
/**
* 可处理类型
*
* @return 可处理的事件
*/
IBizDataChangeHandleStrategy.ModelType canHandleMode();
}
......@@ -228,4 +228,13 @@ public interface ICommonService {
* @return
*/
Boolean checkEquCodeUniqueness(String equCode);
/**
* 检查使用登记证号全局唯一
*
* @param useRegistrationCode 使用登记证号
* @param equipId 设备record
* @return
*/
Boolean useRegistrationCertificateAccountUnique(String useRegistrationCode, String equipId);
}
package com.yeejoin.amos.boot.module.jg.biz.service.impl;
import com.alibaba.fastjson.JSONObject;
public class BaseUseRegisterResultData {
public static final String HAPPEN_AFTER_BIZ = "happenAfterBiz";
private final JSONObject data;
public BaseUseRegisterResultData(JSONObject data) {
this.data = data;
}
public JSONObject getData() {
return data;
}
}
package com.yeejoin.amos.boot.module.jg.biz.service.impl;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.yeejoin.amos.boot.biz.common.entity.BaseEntity;
import com.yeejoin.amos.boot.module.jg.api.dto.*;
import com.yeejoin.amos.boot.module.jg.api.entity.JgRegistrationHistory;
import com.yeejoin.amos.boot.module.jg.api.entity.JgUseRegistration;
import com.yeejoin.amos.boot.module.jg.api.enums.CylinderTypeEnum;
import com.yeejoin.amos.boot.module.jg.api.mapper.JgUseRegistrationMapper;
import com.yeejoin.amos.boot.module.jg.api.service.IBizDataChangeHandleStrategy;
import com.yeejoin.amos.boot.module.jg.biz.service.IChangeDataProcessStrategy;
import com.yeejoin.amos.feign.systemctl.Systemctl;
import com.yeejoin.amos.feign.systemctl.model.DictionarieValueModel;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import static java.util.stream.Collectors.toList;
/**
* 批量维护使用登记策略实现类
*/
@Component
public class BatchDataChangeProcessStrategy implements IChangeDataProcessStrategy {
private final JgUseRegistrationServiceImpl useRegistrationService;
private final JgRegistrationHistoryServiceImpl jgRegistrationHistoryService;
private final JgUseRegistrationMapper jgUseRegistrationMapper;
private final CommonEquipDataProcessService commonEquipDataProcessService;
public BatchDataChangeProcessStrategy(JgUseRegistrationServiceImpl useRegistrationService, JgRegistrationHistoryServiceImpl jgRegistrationHistoryService, JgUseRegistrationMapper jgUseRegistrationMapper, CommonEquipDataProcessService commonEquipDataProcessService) {
this.useRegistrationService = useRegistrationService;
this.jgRegistrationHistoryService = jgRegistrationHistoryService;
this.jgUseRegistrationMapper = jgUseRegistrationMapper;
this.commonEquipDataProcessService = commonEquipDataProcessService;
}
@Override
public List<ChangeDataDto> handle(Map<String, Object> changeData, String defaultChangeId) {
JSONObject data = (JSONObject) changeData;
JSONArray equips = data.getJSONArray(RequestChangeData.multiDataKey);
List<MultiChangeItemData> items = equips.toJavaList(MultiChangeItemData.class);
List<ChangeDataDto> allChangeColumns = new ArrayList<>();
// 校验
items.forEach(item -> {
String record = item.getRecord();
Map<String, Object> itemData = item.getDetail();
if (itemData != null) {
EquipRegisterChangeDataDto registerChangeDataDto = commonEquipDataProcessService.castMap2Bean(itemData, EquipRegisterChangeDataDto.class);
EquipFactoryChangeDataDto factoryChangeDataDto = commonEquipDataProcessService.castMap2Bean(itemData, EquipFactoryChangeDataDto.class);
EquipDesignChangeDataDto designChangeDataDto = commonEquipDataProcessService.castMap2Bean(itemData, EquipDesignChangeDataDto.class);
// 前置检验
commonEquipDataProcessService.checkValidField(record, registerChangeDataDto, null, null, null);
commonEquipDataProcessService.checkValidField(record, factoryChangeDataDto, registerChangeDataDto.getEquList(), registerChangeDataDto.getEquCategory(), registerChangeDataDto.getEquDefine());
commonEquipDataProcessService.checkValidField(record, designChangeDataDto, registerChangeDataDto.getEquList(), registerChangeDataDto.getEquCategory(), registerChangeDataDto.getEquDefine());
}
});
// 入库
items.forEach(item -> {
String record = item.getRecord();
Map<String, Object> itemData = item.getDetail();
if (itemData != null) {
EquipRegisterChangeDataDto registerChangeDataDto = commonEquipDataProcessService.castMap2Bean(itemData, EquipRegisterChangeDataDto.class);
EquipFactoryChangeDataDto factoryChangeDataDto = commonEquipDataProcessService.castMap2Bean(itemData, EquipFactoryChangeDataDto.class);
EquipDesignChangeDataDto designChangeDataDto = commonEquipDataProcessService.castMap2Bean(itemData, EquipDesignChangeDataDto.class);
commonEquipDataProcessService.buildChangeFields(record, designChangeDataDto, factoryChangeDataDto, registerChangeDataDto, allChangeColumns);
// 设备制造、设计、注册信息业务处理落库
commonEquipDataProcessService.dealBizDataForEquip(record, registerChangeDataDto);
commonEquipDataProcessService.dealBizDataForEquip(record, factoryChangeDataDto);
commonEquipDataProcessService.dealBizDataForEquip(record, designChangeDataDto);
// 设备技术参数入库处理
commonEquipDataProcessService.updateTechParamInfo(registerChangeDataDto, record, itemData, allChangeColumns);
}
});
// 单位办理不能修改设备品种,如果修改无法保证单据下的所有设备都一致
return allChangeColumns;
}
@Override
public Map<String, List<Map<String, Object>>> getDetail(String applyNo, String bizId) {
Map<String, List<Map<String, Object>>> result = new HashMap<>();
JgUseRegistration jgUseRegistration = useRegistrationService.getOne(new LambdaQueryWrapper<JgUseRegistration>()
.eq(JgUseRegistration::getApplyNo, applyNo).select(BaseEntity::getSequenceNbr));
LambdaQueryWrapper<JgRegistrationHistory> lambda = new QueryWrapper<JgRegistrationHistory>().lambda();
lambda.eq(JgRegistrationHistory::getCurrentDocumentId, jgUseRegistration.getSequenceNbr());
lambda.eq(JgRegistrationHistory::getIsDelete, false);
JgRegistrationHistory jgRegistrationHistory = jgRegistrationHistoryService.getBaseMapper().selectOne(lambda);
JSONObject jsonObject = JSONObject.parseObject(jgRegistrationHistory.getChangeData());
List<Map<String, Object>> equipmentLists = (List<Map<String, Object>>) jsonObject.get("equipmentLists");
List<String> records = equipmentLists.stream().map(v -> (String) v.get("record")).collect(toList());
List<Map<String, Object>> tableData;
if (CylinderTypeEnum.CYLINDER.getCode().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));
tableData = jgUseRegistrationMapper.queryForUnitVesselEquipment(records);
tableData.forEach(i -> i.put("chargingMedium", fillingMediumMap.get(i.get("chargingMedium"))));
} else {
tableData = jgUseRegistrationMapper.queryForUnitPipelineEquipment(records);
}
result.put("tableData", tableData);
return result;
}
@Override
public IBizDataChangeHandleStrategy.ModelType canHandleMode() {
return IBizDataChangeHandleStrategy.ModelType.batch;
}
}
package com.yeejoin.amos.boot.module.jg.biz.service.impl;
import com.yeejoin.amos.boot.module.jg.api.dto.RequestChangeData;
import com.yeejoin.amos.boot.module.jg.biz.context.BizDataHandleStrategyContext;
import com.yeejoin.amos.boot.module.jg.api.service.IBizDataChangeHandleStrategy;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Map;
@Service
public class BizDataChangeServiceImpl {
/**
* 变更保存
*
* @param applyNo 单据编号
* @param bizType 业务类型
* @param changeData 变化后的数据
*/
@Transactional(rollbackFor = Exception.class)
public void save(String applyNo,
String bizType,
RequestChangeData changeData) {
IBizDataChangeHandleStrategy.ModelType model = changeData.getModelType();
IBizDataChangeHandleStrategy handleStrategy = BizDataHandleStrategyContext.getStrategy(bizType);
handleStrategy.doSave(applyNo, model, changeData);
}
public Map<String, ?> queryDetail(String applyNo, String bizType, IBizDataChangeHandleStrategy.ModelType model, String bizId) {
IBizDataChangeHandleStrategy handleStrategy = BizDataHandleStrategyContext.getStrategy(bizType);
return handleStrategy.getDetail(applyNo, model, bizId);
}
}
package com.yeejoin.amos.boot.module.jg.biz.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.codec.Base64Decoder;
import cn.hutool.core.codec.Base64Encoder;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.date.DatePattern;
......@@ -788,6 +787,11 @@ public class CommonServiceImpl implements ICommonService {
List<DictionarieValueModel> result = Systemctl.dictionarieClient.dictValues("OLD_INSTALLATION_UNIT").getResult();
result.forEach(x -> convertAndAddToUnitList(x, unitList));
}
// 使用单位追加 三环认领的(业主可能未注册系统,别人帮忙认领的,帮忙认领后会保存一份原使用单位的数据到字典)
if ("使用单位".equals(type)) {
List<DictionarieValueModel> result = Systemctl.dictionarieClient.dictValues("OLD_USE_UNIT").getResult();
result.forEach(x -> convertAndAddToUnitList(x, unitList));
}
List<Map<String, Object>> unitListByType = commonMapper.getUnitListByType(type);
unitList.addAll(unitListByType);
return unitList;
......
package com.yeejoin.amos.boot.module.jg.biz.service.impl;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
/**
* 默认处理器
*/
@Slf4j
public class DefaultUseRegisterResult extends BaseUseRegisterResultData {
public DefaultUseRegisterResult(JSONObject data) {
super(data);
}
@Override
public JSONObject getData() {
JSONObject data = super.getData();
fillingEditPermission(data);
return data;
}
/**
* 新增时默认不可编辑
* @param jsonObject 原始数据
*/
private void fillingEditPermission(JSONObject jsonObject) {
jsonObject.put(HAPPEN_AFTER_BIZ, true);
}
}
package com.yeejoin.amos.boot.module.jg.biz.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.yeejoin.amos.component.feign.utils.FeignUtil;
import com.yeejoin.amos.feign.privilege.Privilege;
import com.yeejoin.amos.feign.privilege.model.GroupModel;
import com.yeejoin.amos.feign.systemctl.Systemctl;
import com.yeejoin.amos.feign.systemctl.model.DictionarieValueModel;
import lombok.extern.slf4j.Slf4j;
import org.typroject.tyboot.core.foundation.context.RequestContext;
import java.util.List;
@Slf4j
public class FillingEditPermForCurrentUser extends BaseUseRegisterResultData {
public FillingEditPermForCurrentUser(JSONObject data) {
super(data);
}
@Override
public JSONObject getData() {
JSONObject data = super.getData();
fillingEditPermission(data);
return data;
}
private void fillingEditPermission(JSONObject jsonObject) {
String HAS_PERMISSION = "hasPermission";
jsonObject.put(HAS_PERMISSION, false);
// 当前登录人所在用户组
List<GroupModel> groupModels = FeignUtil.remoteCall(() -> Privilege.groupClient.queryByUserId(RequestContext.getExeUserId()));
// 有权限编辑设备的用户组(value为用户组名称)
List<DictionarieValueModel> hasPermGroup = FeignUtil.remoteCall(() -> Systemctl.dictionarieClient.dictValues("USE_REG_PERMISSION_GROUP"));
if (groupModels.stream().anyMatch(g -> hasPermGroup.stream().anyMatch(h -> h.getDictDataValue().equals(g.getGroupName())))) {
jsonObject.put(HAS_PERMISSION, true);
}
}
}
package com.yeejoin.amos.boot.module.jg.biz.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.yeejoin.amos.boot.biz.common.entity.BaseEntity;
import com.yeejoin.amos.boot.module.jg.api.entity.JgUseRegistrationEq;
import com.yeejoin.amos.boot.module.jg.api.mapper.CommonMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.ApplicationContext;
import java.util.List;
@Slf4j
public class FillingUseRegisterResult extends BaseUseRegisterResultData {
private final ApplicationContext applicationContext;
/**
* 使用登记主键
*/
private final Long userRegisterId;
public FillingUseRegisterResult(Long sequenceNbr, JSONObject data, ApplicationContext applicationContext) {
super(data);
this.applicationContext = applicationContext;
this.userRegisterId = sequenceNbr;
}
@Override
public JSONObject getData() {
JSONObject data = super.getData();
fillingEditPermission(data);
return data;
}
/**
* 判断设备在做过后续业务:移转变更、改造变更、更名变更、单位变更【使用单位未提交、已作废不包括统计内】
*
* @param jsonObject 返回的数据
*/
private void fillingEditPermission(JSONObject jsonObject) {
jsonObject.put(HAPPEN_AFTER_BIZ, false);
List<JgUseRegistrationEq> useRegistrationEqs = getJgUseRegistrationEqService().list(new LambdaQueryWrapper<JgUseRegistrationEq>()
.eq(JgUseRegistrationEq::getEquipTransferId, userRegisterId)
.select(JgUseRegistrationEq::getEquId, BaseEntity::getSequenceNbr));
for (JgUseRegistrationEq useRegistrationEq : useRegistrationEqs) {
Integer useTimes = getCommonMapper().countBizNumAfterUseReg(useRegistrationEq.getEquId());
if (useTimes > 0) {
log.warn("设备:{}做过后续业务, 此使用登记:{}不可再变更设备信息", useRegistrationEq.getEquId(), userRegisterId);
jsonObject.put(HAPPEN_AFTER_BIZ, true);
break;
}
}
}
private JgUseRegistrationEqServiceImpl getJgUseRegistrationEqService() {
return applicationContext.getBean(JgUseRegistrationEqServiceImpl.class);
}
private CommonMapper getCommonMapper() {
return applicationContext.getBean(CommonMapper.class);
}
}
......@@ -299,8 +299,8 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
Map<String, Object> result = new HashMap<>();
Class<?> clazz = object.getClass();
for (Field field : clazz.getDeclaredFields()) {
field.setAccessible(true);
String fieldName = field.getName();
field.setAccessible(true);
String underscoreFieldName = StringUtils.camelToUnderline(fieldName).toUpperCase();
Object value;
try {
......@@ -398,6 +398,8 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
check96333Code(equipmentInfoForm);
// 气瓶 校验制造单位统一信用代码与出场编码唯一
checkFactoryNumUniqueWithGasCylinder(equipmentInfoForm, record);
// 历史(车用气瓶)设备校验使用登记证编号全库唯一
hisEquCheckUseRegistrationCodeUniqueness(equipmentInfoForm);
// 检测是否三环系统中的车用气瓶数据 不让三环系统数据通过设备新增方式进来
// checkIsSanHanData(equipmentInfoForm);
} catch (Exception e) {
......@@ -439,7 +441,7 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
// 根据设备代码检查唯一性
String equCode = (String) equipmentInfoForm.get(EQU_CODE);
String sequenceNbr = (String) equipmentInfoForm.get(SEQUENCE_NBR);
List<Integer> results = Stream.of(idxBizJgRegisterInfoMapper.selectByEquCodeAndClaimStatus(equCode, sequenceNbr),
List<Integer> results = Stream.of(idxBizJgRegisterInfoMapper.selectByEquCodeAndClaimStatus(equCode, sequenceNbr, null),
idxBizJgRegisterInfoMapper.selectInstallNoticeEqByEquCode(equCode, sequenceNbr)
).collect(Collectors.toList());
......@@ -510,6 +512,19 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
}
}
private void hisEquCheckUseRegistrationCodeUniqueness(LinkedHashMap<?, ?> equipmentInfoForm) {
// 历史(车用气瓶)设备校验使用登记证编号全库唯一
String dataSource = (String) equipmentInfoForm.get(DATA_SOURCE);
String record = (String) equipmentInfoForm.get(RECORD);
String useRegistrationCode = (String) equipmentInfoForm.get("useRegistrationCode");
if (!ValidationUtil.isEmpty(dataSource) && dataSource.contains("his") && !ValidationUtil.isEmpty(useRegistrationCode)) {
Boolean unique = commonService.useRegistrationCertificateAccountUnique(useRegistrationCode, ValidationUtil.isEmpty(record) ? null : record);
if (unique) {
throw new BadRequest("使用登记证编号已存在,请重新输入!");
}
}
}
private void checkFactoryNumUnique(String factoryNum, String produceUnitCreditCode, StringBuilder result) {
// 车用气瓶业务里面的 出厂编号/产品编码 校验唯一性(产品编号在车用气瓶范围内全局唯一)
if (commonMapper.checkFactoryNumUnique(factoryNum, null, produceUnitCreditCode) > 0) {
......@@ -615,9 +630,6 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
if (!ValidationUtil.isEmpty(equIpClassMap)) {
resultMap.put(EQUIP_CLASS_FORM_ID, equIpClassMap);
}
if (!ValidationUtil.isEmpty(equipInfoMap)) {
resultMap.put(EQUIP_INFO_FORM_ID, equipInfoMap);
}
// 设备参数
if (equIpClassMap.containsKey(EQU_LIST) && !ValidationUtil.isEmpty(equIpClassMap.get(EQU_LIST).toString())) {
Map<String, Object> equipParamsMap = this.getEquipParamsMap(record, "", equIpClassMap.get(EQU_LIST).toString());
......@@ -629,6 +641,11 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
equipParamsMap.put(EQU_DEFINE, String.valueOf(equIpClassMap.get(EQU_DEFINE)));
resultMap.put(EQUIP_PARAMS_FORM_ID, equipParamsMap);
}
equipInfoMap.put("identificationCode", equipParamsMap.get("VIN"));
}
if (!ValidationUtil.isEmpty(equipInfoMap)) {
resultMap.put(EQUIP_INFO_FORM_ID, equipInfoMap);
}
// 处理复制设备信息
......@@ -1072,6 +1089,7 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
objMap.putAll(filterMap);
}
objMap.put("useRegistrationCode", registerInfo.getUseOrgCode());
}
// 维保备案【一对多,暂时只取最新一条数据】
IdxBizJgMaintenanceRecordInfo maintenanceRecordInfo = iIdxBizJgMaintenanceRecordInfoService.queryNewestDetailByRecord(record);
......@@ -1376,7 +1394,8 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
liftingMap = Bean.BeantoMap(lifting);
liftingMap.put("liftingSeq", lifting.getSequenceNbr());
} else {
liftingMap = convertCamelToUnderscore(lifting, null);
String[] fields = {"EXPLOSIONPROOF_SIGN_COMPLETE"};
liftingMap = convertCamelToUnderscore(lifting, fields);
liftingMap.put("LIFTING_SEQ", lifting.getSequenceNbr());
}
if (!liftingMap.isEmpty()) {
......@@ -2406,9 +2425,6 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
inspectionDetectionInfo.setInspectOrgName((String) mapOrDefault.getOrDefault("useUnit", inspectionDetectionInfo.getInspectOrgName()));
inspectionDetectionInfo.setRecord(record);
inspectionDetectionInfo.setRecDate(date);
if (!"1".equals(equipmentInfoForm.get(WHETHER_VEHICLE_CYLINDER))) { // 老旧车用气瓶有些制造监督检验已过期,可放开选择定期检验
inspectionDetectionInfo.setInspectType("8300".equals(equCategory) ? "AZJDJY" : "ZZJDJY");
}
if (inspectionDetectionInfo.getNextInspectDate() != null) {
inspectionDetectionInfo.setNextInspectDate(DateUtil.parse(DateUtil.format(inspectionDetectionInfo.getNextInspectDate(), DatePattern.NORM_DATE_PATTERN)));
}
......@@ -2498,7 +2514,8 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
// 补丁:saveOrUpdate在update数据时不会更新字段为null的字段,但是编辑设备的代码时,从有改成无,equCode解析成null,但是此时需要将equcode删掉
registerInfo.setEquCode(ObjectUtils.isEmpty(registerInfo.getEquCode()) ? "" : registerInfo.getEquCode());
// copy设备 =》 使用登记证号置空
registerInfo.setUseOrgCode(isCopy ? "" : registerInfo.getUseOrgCode());
String useOrgCode = ValidationUtil.isEmpty(equipmentInfoForm.get("useRegistrationCode")) ? "" : String.valueOf(equipmentInfoForm.get("useRegistrationCode"));
registerInfo.setUseOrgCode(isCopy ? "" : useOrgCode);
this.saveOrUpdate(registerInfo);
// 监督管理
......@@ -2607,6 +2624,8 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
if (!ValidationUtil.isEmpty(vessel)) {
vessel.setRecord(record);
vessel.setRecDate(date);
String VIN = ValidationUtil.isEmpty(equipmentInfoForm.get("identificationCode")) ? "" : (String) equipmentInfoForm.get("identificationCode");
vessel.setVin(VIN);
vessel.setSequenceNbr(OPERATESAVE.equals(operateType) ? null : String.valueOf(equipmentParamsForm.get("VESSEL_SEQ")));
iIdxBizJgTechParamsVesselService.saveOrUpdateData(vessel);
}
......@@ -3465,7 +3484,7 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
private void checkEquCodeUniqueness(String equCode, StringBuilder result) {
// 根据设备代码检查唯一性
Integer count = idxBizJgRegisterInfoMapper.selectByEquCodeAndClaimStatus(equCode, "");
Integer count = idxBizJgRegisterInfoMapper.selectByEquCodeAndClaimStatus(equCode, "", null);
if (count > 0) {
result.append("设备代码系统中已存在;");
}
......
......@@ -113,24 +113,11 @@ public class JgInstallationNoticeServiceImpl extends BaseService<JgInstallationN
private static final String CONSTRUCTION_TYPE_NAME = "安装";
// 西安行政区划code
private static final String XIAN = "610100";
// 咸阳行政区划code
private static final String XIAN_YANG = "610400";
@Value("classpath:/json/urlInfo.json")
public Resource bizTypeInfo;
@Autowired
EquipmentCategoryMapper equipmentCategoryMapper;
@Autowired
JgInstallationNoticeEqMapper jgInstallationNoticeEqMapper;
@Autowired
JgInstallationNoticeEqServiceImpl jgInstallationNoticeEqService;
@Autowired
JgUseRegistrationMapper jgUseRegistrationMapper;
@Autowired
IdxBizJgUseInfoServiceImpl idxBizJgUseInfoService;
@Autowired
IdxBizJgRegisterInfoServiceImpl idxBizJgRegisterInfoService;
@Autowired
IdxBizJgRegisterInfoMapper tzsJgRegistrationInfoMapper;
......@@ -143,8 +130,6 @@ public class JgInstallationNoticeServiceImpl extends BaseService<JgInstallationN
@Autowired
SupervisoryCodeInfoMapper supervisoryCodeInfoMapper;
@Autowired
SuperviseInfoMapper superviseInfoMapper;
@Autowired
IIdxBizJgConstructionInfoService constructionInfoService;
@Autowired
IIdxBizJgUseInfoService useInfoService;
......@@ -153,12 +138,8 @@ public class JgInstallationNoticeServiceImpl extends BaseService<JgInstallationN
@Value(value = "${tzs.domain:http://sxtzsb.sxsei.com}")
String TZSDOMAIN;
@Autowired
AmosRequestContext amosRequestContext;
@Autowired
CodeUtil codeUtil;
@Autowired
CommonServiceImpl commonServiceImpl;
@Autowired
JgCertificateChangeRecordServiceImpl certificateChangeRecordService;
@Autowired
JgCertificateChangeRecordEqServiceImpl certificateChangeRecordEqService;
......@@ -203,6 +184,12 @@ public class JgInstallationNoticeServiceImpl extends BaseService<JgInstallationN
EventPublisher eventPublisher;
/**
* 安装改造维修单位吱资质类型:1234
*/
@Value("${company.type.notice:1234}")
private String companyType;
/**
* 根据sequenceNbr查询
*
* @param sequenceNbr 主键
......@@ -610,7 +597,7 @@ public class JgInstallationNoticeServiceImpl extends BaseService<JgInstallationN
ArrayList<Map<String, Object>> maps = new ArrayList<>();
equList.forEach(equ -> {
List<Map<String, Object>> informationList = jgInstallationNoticeMapper.queryEquipInformation(equ.getSequenceNbr());
if (Objects.isNull(jgInstallationNotice) || CollectionUtils.isEmpty(informationList)) {
if (CollectionUtils.isEmpty(informationList)) {
throw new IllegalArgumentException("安装告知单不存在");
}
Map<String, Object> placeholders = fullFillTemplateObj(informationList, BusinessTypeEnum.JG_INSTALLATION_NOTIFICATION.getName().substring(0, 2));
......@@ -633,8 +620,12 @@ public class JgInstallationNoticeServiceImpl extends BaseService<JgInstallationN
String useCode = String.valueOf(informObj.get("installUnitCreditCode"));
LambdaQueryWrapper<TzBaseUnitLicence> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(TzBaseUnitLicence::getUnitCode, useCode);
wrapper.eq(TzBaseUnitLicence::getCertTypeCode, companyType);
wrapper.orderByDesc(TzBaseUnitLicence::getExpiryDate);
wrapper.orderByDesc(TzBaseUnitLicence::getRecDate);
// 去重显示3个
wrapper.groupBy(TzBaseUnitLicence::getCertNo,TzBaseUnitLicence::getExpiryDate);
wrapper.select(TzBaseUnitLicence::getCertNo,TzBaseUnitLicence::getExpiryDate);
wrapper.last(" LIMIT 3");
List<TzBaseUnitLicence> list = baseUnitLicenceMapper.selectList(wrapper);
......
package com.yeejoin.amos.boot.module.jg.biz.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.biz.common.bo.ReginParams;
import com.yeejoin.amos.boot.module.jg.api.dto.ShCarDto;
import com.yeejoin.amos.boot.module.jg.api.entity.ShCar;
import com.yeejoin.amos.boot.module.jg.api.entity.ShCarEqu;
import com.yeejoin.amos.boot.module.jg.api.mapper.ShCarEquMapper;
import com.yeejoin.amos.boot.module.jg.api.service.IShCarEquService;
import com.yeejoin.amos.boot.module.jg.api.vo.CarAndEquVo;
import com.yeejoin.amos.boot.module.jg.api.vo.ShCarEquVo;
import com.yeejoin.amos.boot.module.jg.biz.service.ICommonService;
import com.yeejoin.amos.feign.privilege.model.AgencyUserModel;
import org.springframework.beans.factory.annotation.Autowired;
import org.typroject.tyboot.core.rdbms.service.BaseService;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import org.typroject.tyboot.core.rdbms.service.BaseService;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
......@@ -49,7 +53,8 @@ public class ShCarEquServiceImpl extends BaseService<ShCarEqu, ShCarEqu, ShCarEq
return this.queryForList("", false);
}
public CarAndEquVo queryByCarId(String carId, ReginParams reginParams) {
public Map<String,Object> queryByCarId(String carId,String claimOneself, ReginParams reginParams) {
Map<String,Object> result = new HashMap<String,Object>();
// 根据carId获取Car
LambdaQueryWrapper<ShCar> queryWrapper1 = new LambdaQueryWrapper<>();
queryWrapper1.eq(ShCar::getSequenceNbr, carId);
......@@ -60,33 +65,98 @@ public class ShCarEquServiceImpl extends BaseService<ShCarEqu, ShCarEqu, ShCarEq
String companyType = reginParams.getCompany().getCompanyType();
AgencyUserModel userModel = reginParams.getUserModel();
shCarDto.setCompanyType(companyType);
shCarDto.setUseUnitName(reginParams.getCompany().getCompanyName());
shCarDto.setUseUnitCreditCode(reginParams.getCompany().getCompanyCode());
String[] code = reginParams.getCompany().getCompanyCode().split("_");
String useUnitCode = code.length > 1 ? code[1] : code[0];
if ("个人主体".equals(companyType)) {
shCarDto.setUseUnitAddress((String) commonService.getEnterpriseInfo(useUnitCode).get("address"));
} else {
shCarDto.setUseUnitAddress(reginParams.getCompany().getAddress());
if ("true".equals(claimOneself)){//认领自己的
shCarDto.setUseUnitName(reginParams.getCompany().getCompanyName());
shCarDto.setUseUnitCreditCode(reginParams.getCompany().getCompanyCode());
if ("个人主体".equals(companyType)) {
shCarDto.setUseUnitAddress((String) commonService.getEnterpriseInfo(useUnitCode).get("address"));
} else {
shCarDto.setUseUnitAddress(reginParams.getCompany().getAddress());
}
}
if ("false".equals(claimOneself)){//帮别人认领 取 原三环数据填充表单
shCarDto.setUseUnitName(shCar.getOwner());
shCarDto.setUseUnitCreditCode(shCar.getOwner());
shCarDto.setUseUnitAddress(shCar.getAddress());
}
shCarDto.setSafetyManagerId("个人主体".equals(companyType) ? userModel.getRealName() : null);
shCarDto.setPhone("个人主体".equals(companyType) ? userModel.getMobile() : null);
if (!ValidationUtil.isEmpty(shCarDto.getVehicleAttribute())){
switch (shCarDto.getVehicleAttribute()) {
case "A":
shCarDto.setVehicleAttribute("PRIVATE_CAR");
break;
case "B":
shCarDto.setVehicleAttribute("BUS");
break;
case "H":
shCarDto.setVehicleAttribute("SERVICE_VEHICLE");
break;
case "P":
shCarDto.setVehicleAttribute("SERVICE_CAR");
break;
case "V":
shCarDto.setVehicleAttribute("MINIVAN");
break;
case "X":
shCarDto.setVehicleAttribute("OTHER");
break;
case "T":
shCarDto.setVehicleAttribute("TAXI");
break;
case "J":
shCarDto.setVehicleAttribute("TRAINING_CAR");
break;
default:
shCarDto.setVehicleAttribute("OTHER");
}
}
if("原车".equals(shCarDto.getCylinderInstallationMethod())){
shCarDto.setCylinderInstallationMethod("ORIGINAL_CAR");
}else if("加装".equals(shCarDto.getCylinderInstallationMethod())){
shCarDto.setCylinderInstallationMethod("RELOADING");
}
// 根据carId获取设备列表
LambdaQueryWrapper<ShCarEqu> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(ShCarEqu::getCarId, carId);
List<ShCarEqu> list = this.list(queryWrapper);
// 将设备列表转换为前端可识别bean
List<ShCarEquVo> collect = list.stream()
.map(shCarEqu -> {
ShCarEquVo shCarEquVo = new ShCarEquVo(shCarEqu);
shCarEquVo.setUseInnerCode(shCarDto.getCarNumber());
shCarEquVo.setEquType(shCarEqu.getSequenceCode());
return shCarEquVo;
})
.collect(Collectors.toList());
List<ShCarEquVo> collect = list.stream().map(shCarEqu -> {
ShCarEquVo shCarEquVo = new ShCarEquVo(shCarEqu);
shCarEquVo.setWhetherVehicleCylinder("1");
shCarEquVo.setEquList("2000");
shCarEquVo.setEquCategory("2300");
shCarEquVo.setEquDefine("23T0");
return shCarEquVo;
}).collect(Collectors.toList());
// 封装返回VO
return new CarAndEquVo(shCarDto, collect);
HashMap<String ,Object> hashMap = JSONObject.parseObject(JSON.toJSONString(shCarDto), HashMap.class);
hashMap.put("equList", collect);
hashMap.put("identificationCode", shCarDto.getFrameNumber());
result.put("completeDataSanHuan", hashMap);
// 帮别人认领 + 单位变更给自己
if ("false".equals(claimOneself)){
HashMap<String, Object> gasCylinderChangeObj = new HashMap<>();
if ("个人主体".equals(companyType)) {
String[] companyName = reginParams.getCompany().getCompanyName().split("_");
String newUseUnitCreditCodeStr = companyName.length > 1 ? companyName[1] : companyName[0];
gasCylinderChangeObj.put("newUseUnitCreditCode", newUseUnitCreditCodeStr);// 使用单位
gasCylinderChangeObj.put("address",commonService.getEnterpriseInfo(useUnitCode).get("address"));
gasCylinderChangeObj.put("companyType", "person");
} else {
gasCylinderChangeObj.put("newUseUnitCreditCode", reginParams.getCompany().getCompanyName());// 使用单位
gasCylinderChangeObj.put("address",commonService.getEnterpriseInfo(reginParams.getCompany().getCompanyCode()).get("address"));
gasCylinderChangeObj.put("companyType", "company");
}
gasCylinderChangeObj.put("useRegistrationCode",shCarDto.getUseRegistrationCode());
gasCylinderChangeObj.put("carNumber",shCarDto.getCarNumber());
result.put("gasCylinderChange",gasCylinderChangeObj);
}
return result;
}
......
package com.yeejoin.amos.boot.module.jg.biz.service.impl;
import com.yeejoin.amos.boot.module.jg.api.dto.ChangeDataDto;
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;
@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);
// 异步记录日志
publisher.publish(new ChangeDataEvent(this, allChangeColumns, RequestContext.cloneRequestContext()));
}
}
private void updateHistoryJson(String applyNo) {
useRegisterUpdateService.updateHisData(applyNo);
}
private void buildLogData(List<ChangeDataDto> allChangeColumns) {
allChangeColumns.forEach(column -> {
column.setBizType("使用登记");
});
}
@Override
public Map<String, ?> getDetail(String applyNo, ModelType model, String bizId) {
IChangeDataProcessStrategy dataProcessor = DataProcessStrategyContext.getStrategy(model);
// 兼容:台套类打开变更详情(使用applyNo) 和 单位办理批量时选择单个设备打开详情(使用record)
return dataProcessor.getDetail(applyNo, bizId);
}
}
package com.yeejoin.amos.boot.module.jg.biz.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.yeejoin.amos.boot.module.jg.api.entity.JgRegistrationHistory;
import com.yeejoin.amos.boot.module.jg.api.entity.JgUseRegistration;
import com.yeejoin.amos.boot.module.jg.api.enums.CylinderTypeEnum;
import com.yeejoin.amos.boot.module.ymt.api.entity.IdxBizJgRegisterInfo;
import com.yeejoin.amos.boot.module.ymt.api.mapper.IdxBizJgRegisterInfoMapper;
import com.yeejoin.amos.feign.systemctl.Systemctl;
import com.yeejoin.amos.feign.systemctl.model.DictionarieValueModel;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import static java.util.stream.Collectors.toList;
@Service
public class UseRegisterUpdateService {
private final IdxBizJgRegisterInfoMapper idxBizJgRegisterInfoMapper;
private final JgUseRegistrationServiceImpl useRegistrationService;
private final JgRegistrationHistoryServiceImpl jgRegistrationHistoryService;
public UseRegisterUpdateService(IdxBizJgRegisterInfoMapper idxBizJgRegisterInfoMapper, JgUseRegistrationServiceImpl useRegistrationService, JgRegistrationHistoryServiceImpl jgRegistrationHistoryService) {
this.idxBizJgRegisterInfoMapper = idxBizJgRegisterInfoMapper;
this.useRegistrationService = useRegistrationService;
this.jgRegistrationHistoryService = jgRegistrationHistoryService;
}
public void updateHisData(String applyNo) {
JgUseRegistration jgUseRegistration = useRegistrationService.getOne(new LambdaQueryWrapper<JgUseRegistration>().eq(JgUseRegistration::getApplyNo, applyNo));
// 构建更新json数据
JSONObject hisData = this.buildLastDetailData(jgUseRegistration);
// 更新数据
useRegistrationService.updateHistory(hisData, null, jgUseRegistration.getSequenceNbr().toString(), jgUseRegistration.getSupervisoryCode());
}
public JSONObject buildLastDetailData(JgUseRegistration jgUseRegistration) {
LambdaQueryWrapper<JgRegistrationHistory> lambda = new QueryWrapper<JgRegistrationHistory>().lambda();
lambda.eq(JgRegistrationHistory::getCurrentDocumentId, jgUseRegistration.getSequenceNbr());
lambda.eq(JgRegistrationHistory::getIsDelete, false);
JgRegistrationHistory jgRegistrationHistory = jgRegistrationHistoryService.getBaseMapper().selectOne(lambda);
JSONObject jsonObject = JSONObject.parseObject(jgRegistrationHistory.getChangeData());
jsonObject.put("receiveOrgCode", jgUseRegistration.getReceiveCompanyCode() + "_" + jgUseRegistration.getReceiveOrgName());
jsonObject.put("status", jgUseRegistration.getStatus());
jsonObject.put("applyNo", jgUseRegistration.getApplyNo());
jsonObject.remove("submit");
jsonObject.remove("instanceId");
if (!ObjectUtils.isEmpty(jsonObject.get("factoryUseSiteStreet"))) {
jsonObject.put("factoryUseSiteStreet", String.valueOf(Long.valueOf(jsonObject.get("factoryUseSiteStreet").toString())));
}
if (!"unit".equals(jgUseRegistration.getManageType())) {
// 台套逻辑
String record = useRegistrationService.setDefaultRecord(jgUseRegistration, null);
// 更新 设计、制造、基本信息json
useRegistrationService.fillLastEquipBaseInfo(jsonObject, record);
// 补充"车牌号"字段
LambdaQueryWrapper<IdxBizJgRegisterInfo> wrapper = new QueryWrapper<IdxBizJgRegisterInfo>().lambda().eq(IdxBizJgRegisterInfo::getRecord, record);
IdxBizJgRegisterInfo idxBizJgRegisterInfo = idxBizJgRegisterInfoMapper.selectOne(wrapper);
jsonObject.put("carNumber", idxBizJgRegisterInfo.getCarNumber());
jsonObject.put("regType", jgUseRegistration.getRegType());
} else {
// 单位办理逻辑
List<Map<String, Object>> equipmentLists = (List<Map<String, Object>>) jsonObject.get("equipmentLists");
List<String> records = equipmentLists.stream().map(v -> (String) v.get("record")).collect(toList());
jsonObject.remove("equipmentLists");
if (CylinderTypeEnum.CYLINDER.getCode().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));
List<Map<String, Object>> result = useRegistrationService.getBaseMapper().queryForUnitVesselEquipment(records);
result.forEach(i -> {
i.put("chargingMedium", fillingMediumMap.get(i.get("chargingMedium")));
});
jsonObject.put("equipmentLists", result);
} else {
jsonObject.put("equipmentLists", useRegistrationService.getBaseMapper().queryForUnitPipelineEquipment(records));
}
}
jsonObject.put("useRegistrationCode", jgUseRegistration.getUseRegistrationCode());
// 转化 附件 字段
this.convertStringToJsonObject(jsonObject, JgUseRegistrationServiceImpl.jsonFields);
return jsonObject;
}
public void convertStringToJsonObject(Object obj, String[] jsonFields) {
if (obj instanceof JSONObject) {
JSONObject jsonObject = (JSONObject) obj;
for (String field : jsonFields) {
if (jsonObject.get(field) != null && jsonObject.get(field) instanceof String) {
jsonObject.put(field, JSON.parse(JSONObject.toJSONString(jsonObject.get(field))));
}
}
} else if (obj instanceof Map) {
Map<String, Object> map = (Map<String, Object>) obj;
for (String field : jsonFields) {
if (map.containsKey(field) && map.get(field) instanceof String) {
map.put(field, JSON.parse(JSONObject.toJSONString(map.get(field))));
}
}
} else {
// 处理其他类型
System.out.println("Unsupported Object Type");
}
}
}
......@@ -18,4 +18,6 @@ public interface AlertUseUnitStatisticsMapper extends BaseMapper<AlertUseUnitSta
List<Map<String, String>> getStatisticsMessage(@Param("startDate") String startDate, @Param("endDate") String endDate);
AlertUseUnitStatistics getUseUnitMessage(@Param("unitCode") String unitCode, @Param("equipmentId") String equipmentId, @Param("startDate") String startDate, @Param("endDate") String endDate);
List<Map<String,Object>> countByUseUnitCode(@Param("useUnitCodeList") List<String> useUnitCodeList);
}
......@@ -43,6 +43,48 @@
and father_alert is null
) as faultNum
</select>
<select id="countByUseUnitCode" resultType="java.util.Map">
SELECT
tbei.use_unit_code AS useUnitCode,
l.expiry_date AS expiryDate,
IFNULL ( u."userCount", '0' ) AS userCount,
IFNULL ( e."equipCount", '0' ) AS equipCount
FROM
tz_base_enterprise_info tbei
LEFT JOIN ( SELECT * FROM tz_base_unit_licence GROUP BY unit_code ORDER BY expiry_date DESC ) AS l ON l.unit_code = tbei.use_unit_code
LEFT JOIN (
SELECT
tbei.use_unit_code AS useNnitCode,
COUNT ( 1 ) AS userCount
FROM
tz_base_enterprise_info tbei
INNER JOIN tzs_user_info ui ON tbei.use_unit_code = ui.unit_code
where tbei.use_unit_code IN
<foreach collection="useUnitCodeList" item="item" separator="," open="(" close=")">
#{item}
</foreach>
GROUP BY
tbei.use_unit_code
) u ON u."useNnitCode" = tbei.use_unit_code
LEFT JOIN (
SELECT
tbei.use_unit_code AS useNnitCode,
COUNT ( 1 ) AS equipCount
FROM
tz_base_enterprise_info tbei
INNER JOIN idx_biz_jg_use_info jui ON tbei.use_unit_code = jui.USE_UNIT_CREDIT_CODE
LEFT JOIN idx_biz_jg_other_info joi ON joi.RECORD = jui.RECORD
AND joi.SUPERVISORY_CODE IS NOT NULL
AND joi.SUPERVISORY_CODE != ''
AND joi.SUPERVISORY_CODE != 'null'
where tbei.use_unit_code IN
<foreach collection="useUnitCodeList" item="item" separator="," open="(" close=")">
#{item}
</foreach>
GROUP BY
tbei.use_unit_code
) e ON e."useNnitCode" = tbei.use_unit_code
</select>
</mapper>
......@@ -321,7 +321,7 @@ public class YJDPStatisticsController {
@ApiOperation(value = "月度困人故障高发使用单位-右上角更多-地市月度应急事件高发使用单位-表格",
notes = "月度困人故障高发使用单位-右上角更多-地市月度应急事件高发使用单位-表格")
@PostMapping("/alertUseUnitTable/dp")
public ResponseModel<IPage<AlertUseUnitStatistics>> alertUseUnitTableForDP(@Validated @RequestBody DPFilterParamForDetailDto detailDto,
public ResponseModel<IPage<Map<String,Object>>> alertUseUnitTableForDP(@Validated @RequestBody DPFilterParamForDetailDto detailDto,
@RequestParam(value = "current", defaultValue = "1") Integer current,
@RequestParam(value = "size", defaultValue = "20") Integer size) throws Exception {
detailDto.setCurrent(current);
......
package com.yeejoin.amos.boot.module.statistcs.biz.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
......@@ -40,7 +41,9 @@ import org.elasticsearch.search.aggregations.AggregationBuilders;
import org.elasticsearch.search.aggregations.bucket.terms.Terms;
import org.elasticsearch.search.aggregations.bucket.terms.TermsAggregationBuilder;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.typroject.tyboot.core.foundation.utils.Bean;
import org.typroject.tyboot.core.foundation.utils.DateTimeUtil;
import org.typroject.tyboot.core.foundation.utils.DateUtil;
......@@ -714,14 +717,14 @@ public class YJDPStatisticsServiceImpl {
return ResponseHelper.buildResponse(res);
}
public ResponseModel<IPage<AlertUseUnitStatistics>> alertUseUnitTableForDP(DPFilterParamForDetailDto detailDto) throws Exception{
public ResponseModel<IPage<Map<String,Object>>> alertUseUnitTableForDP(DPFilterParamForDetailDto detailDto) throws Exception{
Page<AlertUseUnitStatistics> page = new Page<>();
page.setCurrent(detailDto.getCurrent());
page.setSize(detailDto.getSize());
String orgCode = stCommonService.getAndSetOrgCode(ValidationUtil.isEmpty(detailDto.getCityCode()) ? "610000" : detailDto.getCityCode());
if (orgCode == null) {
return ResponseHelper.buildResponse(page);
return ResponseHelper.buildResponse(new Page<>());
}
LambdaQueryWrapper<AlertUseUnitStatistics> lambda = new QueryWrapper<AlertUseUnitStatistics>().lambda();
......@@ -766,7 +769,30 @@ public class YJDPStatisticsServiceImpl {
lambda.le(AlertUseUnitStatistics::getEquipmentClassificationCode, detailDto.getEquListCode());
}
IPage<AlertUseUnitStatistics> alertUseUnitStatistics = alertUseUnitStatisticsMapper.selectPage(page, lambda);
return ResponseHelper.buildResponse(alertUseUnitStatistics);
List<AlertUseUnitStatistics> records = alertUseUnitStatistics.getRecords();
List<String> useUnitCodeList = records.stream().map(AlertUseUnitStatistics::getUseUnitCode).collect(Collectors.toList());
Map<String,Map<String,Object>> useUnitMap = new HashMap<>();
List<Map<String,Object>> resultList = new ArrayList<>();
if(!CollectionUtils.isEmpty(useUnitCodeList)){
List<Map<String, Object>> list = alertUseUnitStatisticsMapper.countByUseUnitCode(useUnitCodeList);
if(!CollectionUtils.isEmpty(list)){
list.forEach(map -> {
useUnitMap.put(map.get("useUnitCode").toString(),map);
});
}
}
records.forEach(t->{
Map<String, Object> map = BeanUtil.beanToMap(t);
map.putAll(useUnitMap.get(t.getUseUnitCode()));
resultList.add(map);
});
Page<Map<String,Object>> resultPage = new Page<>();
resultPage.setCurrent(page.getCurrent());
resultPage.setSize(page.getSize());
resultPage.setTotal(alertUseUnitStatistics.getTotal());
resultPage.setRecords(resultList);
return ResponseHelper.buildResponse(resultPage);
}
public List<JSONObject> getKeyPositionMonitor(DPFilterParamForDetailDto filterParamDto) {
......
......@@ -101,7 +101,32 @@ public class YwblpjsxtjServiceImpl implements IZBGLService {
@Override
public Page<Map<String, Object>> getPage(Page page,DPFilterParamForDetailDto dpFilterParamForDetailDto) {
List<RegionModel> regionModels = stCommonService.setRegionIfRootParent(dpFilterParamForDetailDto.getCityCode());
String orgCodeP = stCommonService.getAndSetOrgCode(dpFilterParamForDetailDto.getCityCode());
DPFilterParamDto dpFilterParamDto = new DPFilterParamDto();
//安装告知、维修告知、改造告知、移装告知
List<CountDto> noticCount = jgStatisticsMapper.queryNoticeAvgDayByReceiveCompany(dpFilterParamDto, orgCodeP);
//使用登记、车用气瓶使用登记
List<CountDto> useCount = jgStatisticsMapper.queryUseAvgDayByReceiveCompany(dpFilterParamDto, orgCodeP);
//更名变更登记、改造变更登记、移装变更登记、单位变更登记、气瓶单位变更登记
List<CountDto> changeCount = jgStatisticsMapper.queryChangeAvgDayByReceiveCompany(dpFilterParamDto, orgCodeP);
//启用停用
List<CountDto> disableCount = jgStatisticsMapper.queryDisableAvgDayByReceiveCompany(dpFilterParamDto, orgCodeP);
//注销报废
List<CountDto> cancelCount = jgStatisticsMapper.queryCancelAvgDayByReceiveCompany(dpFilterParamDto, orgCodeP);
List list = new ArrayList();
regionModels.forEach(r -> {
Map<String,Object> map = new HashMap<>();
map.put("regionName",r.getRegionName());
String orgCode = stCommonService.getAndSetOrgCode(r.getRegionCode().toString());
map.put("notic",this.avgAndSumDealDate(noticCount.stream().filter(c -> c.getKeyStr().contains(orgCode)).collect(Collectors.toList())));
map.put("use",this.avgAndSumDealDate(useCount.stream().filter(c -> c.getKeyStr().contains(orgCode)).collect(Collectors.toList())));
map.put("change",this.avgAndSumDealDate(changeCount.stream().filter(c -> c.getKeyStr().contains(orgCode)).collect(Collectors.toList())));
map.put("disable",this.avgAndSumDealDate(disableCount.stream().filter(c -> c.getKeyStr().contains(orgCode)).collect(Collectors.toList())));
map.put("cancel",this.avgAndSumDealDate(cancelCount.stream().filter(c -> c.getKeyStr().contains(orgCode)).collect(Collectors.toList())));
list.add(map);
});
page.setRecords(list);
page.setTotal(list.size());
return page;
}
......
......@@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.module.tcm.api.dto.EquEnterDto;
import com.yeejoin.amos.boot.module.tcm.api.dto.TzBaseEnterpriseInfoDto;
import com.yeejoin.amos.boot.module.tcm.api.entity.TzBaseEnterpriseInfo;
import com.yeejoin.amos.boot.module.tcm.api.vo.BaseEnterpriseVo;
import org.apache.ibatis.annotations.Param;
import java.util.List;
......@@ -57,6 +56,4 @@ public interface TzBaseEnterpriseInfoMapper extends BaseMapper<TzBaseEnterpriseI
List<Map<String, Object>> getEquipType(@Param("type")String type);
Map<String, Object> getProblemInfoBySourceId(@Param("sourceId")String sourceId);
List<BaseEnterpriseVo> queryBaseEnterpriseInIds(@Param("ids") List<String> ids);
}
......@@ -51,6 +51,4 @@ public interface ITzBaseEnterpriseInfoService extends IService<TzBaseEnterpriseI
BaseUnitLicence getUnitLicenceMessage(String unitCode);
Map<String, Object> getInfoByUseCodeMap(String useCode);
void export(HttpServletResponse response, List<String> ids);
}
package com.yeejoin.amos.boot.module.tcm.api.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
/**
* 监管账号下的人员列表
*/
@Data
public class JGUserInfoVo {
@ExcelProperty(value = "资质状态", index = 0)
String permissionStatus;
@ExcelProperty(value = "区域", index = 1)
String fullAddress;
@ExcelProperty(value = "人员类型", index = 2)
String postName;
@ExcelProperty(value = "姓名", index = 3)
String name;
@ExcelProperty(value = "证件编号", index = 4)
String certificateNum;
@ExcelProperty(value = "所在单位", index = 5)
String useUnit;
}
......@@ -176,22 +176,4 @@
select * from tzs_safety_problem_tracing where source_id = #{sourceId} order by rec_date desc limit 1
</select>
<select id="queryBaseEnterpriseInIds" resultType="com.yeejoin.amos.boot.module.tcm.api.vo.BaseEnterpriseVo">
SELECT
*,
CONCAT(province,'/',city,'/',district) AS region,
CONCAT(street,'/',address) AS full_address
FROM
tz_base_enterprise_info
<where>
<if test='ids != null'>
and sequence_nbr in
<foreach collection="ids" item="id" open="(" close=")" separator=",">
#{id}
</foreach>
</if>
</where>
order by rec_date desc
</select>
</mapper>
......@@ -297,12 +297,4 @@ public class TzBaseEnterpriseInfoController extends BaseController {
public ResponseModel<BaseUnitLicence> getUnitLicenceMessage(@RequestParam("unitCode") String unitCode) {
return ResponseHelper.buildResponse(iTzBaseEnterpriseInfoService.getUnitLicenceMessage(unitCode));
}
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/export")
@ApiOperation(httpMethod = "GET", value = "企业信息列表数据导出", notes = "企业信息列表数据导出")
public void baseEnterpriseExport(HttpServletResponse response, String ids) {
Assert.hasText(ids,"未选择导出数据");
iTzBaseEnterpriseInfoService.export(response, Arrays.asList(ids.split(",")));
}
}
......@@ -8,6 +8,7 @@ import com.yeejoin.amos.boot.biz.common.bo.CompanyBo;
import com.yeejoin.amos.boot.biz.common.bo.ReginParams;
import com.yeejoin.amos.boot.biz.common.controller.BaseController;
import com.yeejoin.amos.boot.biz.common.entity.DataDictionary;
import com.yeejoin.amos.boot.biz.common.excel.ExcelUtil;
import com.yeejoin.amos.boot.biz.common.utils.RedisKey;
import com.yeejoin.amos.boot.biz.common.utils.RedisUtils;
import com.yeejoin.amos.boot.module.common.api.dto.UserPermissionDto;
......@@ -17,6 +18,7 @@ import com.yeejoin.amos.boot.module.tcm.api.dto.TzsEquipListDto;
import com.yeejoin.amos.boot.module.tcm.api.dto.TzsUserInfoDto;
import com.yeejoin.amos.boot.module.tcm.api.entity.TzsUserInfo;
import com.yeejoin.amos.boot.module.tcm.api.service.ITzsUserInfoService;
import com.yeejoin.amos.boot.module.tcm.api.vo.JGUserInfoVo;
import com.yeejoin.amos.boot.module.tcm.biz.service.impl.TzsUserInfoServiceImpl;
import com.yeejoin.amos.component.feign.utils.FeignUtil;
import com.yeejoin.amos.feign.privilege.Privilege;
......@@ -331,9 +333,22 @@ public class TzsUserInfoController extends BaseController {
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/export")
@ApiOperation(httpMethod = "GET", value = "人员列表列表数据导出", notes = "人员列表列表数据导出")
@ApiOperation(httpMethod = "GET", value = "人员管理列表数据导出", notes = "人员管理列表数据导出")
public void userInfoExport(HttpServletResponse response, String ids) {
Assert.hasText(ids,"未选择导出数据");
tzsUserInfoService.userInfoExport(response, Arrays.asList(ids.split(",")));
}
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(httpMethod = "POST", value = "导出指定类型的下的人--监管账号下的人员列表", notes = "导出指定类型的下的人--监管账号下的人员列表")
@PostMapping(value = "/jg/export")
public void jgUserInfoExport(HttpServletResponse response,
@RequestParam(required = false, defaultValue = "all") String type,
@RequestBody UserPermissionDto filter) {
filter.setOrgCode(getSelectedOrgInfo().getCompany().getOrgCode());
filter.setCityCode(getSelectedOrgInfo().getCompany().getCompanyCode());
Page<UserPermissionDto> userPermissionDtos = tzsUserInfoServiceImpl.getUserByPermission(1, Long.MAX_VALUE, type, filter);
List<JGUserInfoVo> exportData = JSON.parseArray(JSON.toJSONString(userPermissionDtos.getRecords()), JGUserInfoVo.class);
ExcelUtil.createTemplate(response, "人员列表数据", "人员列表", exportData, JGUserInfoVo.class, null, false);
}
}
......@@ -29,7 +29,6 @@ import com.yeejoin.amos.boot.module.tcm.api.enums.UnitTypeEnum;
import com.yeejoin.amos.boot.module.tcm.api.mapper.TzBaseEnterpriseInfoMapper;
import com.yeejoin.amos.boot.module.tcm.api.mapper.TzsUserInfoMapper;
import com.yeejoin.amos.boot.module.tcm.api.service.ITzBaseEnterpriseInfoService;
import com.yeejoin.amos.boot.module.tcm.api.vo.BaseEnterpriseVo;
import com.yeejoin.amos.boot.module.tcm.biz.utils.RedisUtil;
import com.yeejoin.amos.boot.module.tcm.flc.api.dto.RegUnitIcDto;
import com.yeejoin.amos.boot.module.tcm.flc.api.dto.RegUnitInfoDto;
......@@ -60,6 +59,7 @@ import org.typroject.tyboot.core.rdbms.service.BaseService;
import org.typroject.tyboot.core.restful.exception.instance.BadRequest;
import org.typroject.tyboot.core.restful.exception.instance.TooManyRequests;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.text.ParseException;
import java.util.*;
......@@ -118,7 +118,6 @@ public class TzBaseEnterpriseInfoServiceImpl
private EquipmentCategoryServiceImpl equipmentCategoryService;
@Autowired
private TzsUserInfoServiceImpl userInfoService;
@Autowired
private RedissonClient redissonClient;
......@@ -128,15 +127,16 @@ public class TzBaseEnterpriseInfoServiceImpl
* 公司类型下的资质类型map:key为登录人的公司类型、value为包含的资质枚举
*/
private static final Map<String ,String> COMPANY_TYPE_CERT_TYPE_MAP = new HashMap<>();
// 数据来源cb_data_dictionary type='UNIT_TYPE_NEW'
/*
数据来源cb_data_dictionary type='UNIT_TYPE_NEW',目前登录身份分为3个如下
*/
static {
// 使用单位资质
COMPANY_TYPE_CERT_TYPE_MAP.put("使用单位", "1232");
COMPANY_TYPE_CERT_TYPE_MAP.put("充装单位", "1231");
// 注意检验检测机构资质细分为1233-1、1233-2
// 检验检测机构资质:细分为1233-1、1233-2
COMPANY_TYPE_CERT_TYPE_MAP.put("检验检测机构", "1233");
COMPANY_TYPE_CERT_TYPE_MAP.put("制造单位", "1236");
COMPANY_TYPE_CERT_TYPE_MAP.put("设计单位", "1235");
COMPANY_TYPE_CERT_TYPE_MAP.put("安装改造维修单位", "1234");
// 安装改造维修单位身份资质:充装单位-1231 制造单位-1236 设计单位-1235 安装改造维修单位-1234
COMPANY_TYPE_CERT_TYPE_MAP.put("安装改造维修单位", "1231,1234,1235,1236");
}
/**
......@@ -212,15 +212,8 @@ public class TzBaseEnterpriseInfoServiceImpl
if ("监管机构".equals(companyType)) {
unitLicencesCollect = unitLicences;
} else {
Predicate<BaseUnitLicence> certTypePredicate;
if (INSPECTION_AND_TESTING_INSTITUTIONS.equals(companyType)) {
certTypePredicate = baseUnitLicence -> INSPECTION_AGENCY.equals(baseUnitLicence.getCertType()) ||
TESTING_INSTITUTIONS.equals(baseUnitLicence.getCertType());
} else {
certTypePredicate = baseUnitLicence -> companyType.contains(baseUnitLicence.getCertType());
}
unitLicencesCollect = unitLicences.stream()
.filter(certTypePredicate)
.filter(baseUnitLicence -> COMPANY_TYPE_CERT_TYPE_MAP.get(companyType).contains((baseUnitLicence.getCertTypeCode())))
.collect(Collectors.toList());
}
if (!ValidationUtil.isEmpty(unitLicencesCollect)) {
......@@ -734,9 +727,15 @@ public class TzBaseEnterpriseInfoServiceImpl
private void removeLicenceDataBeforeSave(ReginParams reginParams, TzBaseEnterpriseInfo tzBaseEnterpriseInfo) {
String companyType = reginParams.getCompany().getCompanyType();
baseUnitLicenceService.remove(new LambdaQueryWrapper<BaseUnitLicence>()
.likeRight(BaseUnitLicence::getCertTypeCode, COMPANY_TYPE_CERT_TYPE_MAP.get(companyType))
.eq(BaseUnitLicence::getUnitCode,tzBaseEnterpriseInfo.getUseCode()));
LambdaQueryWrapper<BaseUnitLicence> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(BaseUnitLicence::getUnitCode,tzBaseEnterpriseInfo.getUseCode());
wrapper.and(w-> {
String[] certTypeCodeArray = COMPANY_TYPE_CERT_TYPE_MAP.get(companyType).split(",");
for(String certTypeCode: certTypeCodeArray){
w.or().likeRight(BaseUnitLicence::getCertTypeCode, certTypeCode);
}
});
baseUnitLicenceService.remove(wrapper);
}
/**
......@@ -967,18 +966,4 @@ public class TzBaseEnterpriseInfoServiceImpl
}
/**
* 企业信息列表数据导出
*
* @param response 响应
* @param ids 数据id
*/
@Override
public void export(HttpServletResponse response, List<String> ids) {
List<BaseEnterpriseVo> exportData = this.baseMapper.queryBaseEnterpriseInIds(ids);
ExcelUtil.createTemplate(response, "企业信息列表数据", "企业信息列表", exportData, BaseEnterpriseVo.class, null, false);
}
}
......@@ -958,7 +958,7 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
@Override
public void userInfoExport(HttpServletResponse response, List<String> ids) {
List<UserInfoVo> exportData = tzsUserInfoMapper.queryUserInfoInIds(ids);
ExcelUtil.createTemplate(response, "人员列表列表数据", "人员列表列表", exportData, UserInfoVo.class, null, false);
ExcelUtil.createTemplate(response, "人员列表数据", "人员列表", exportData, UserInfoVo.class, null, false);
}
......
......@@ -57,7 +57,7 @@ public interface IdxBizJgRegisterInfoMapper extends BaseMapper<IdxBizJgRegisterI
*/
Boolean updateCylinderCategoryByEquCodeBatch(@Param("cylinderCategory") String cylinderCategory, @Param("equCodeList") List<String> equCodeList);
Integer selectByEquCodeAndClaimStatus(@Param("equCode") String equCode, @Param("sequenceNbr") String sequenceNbr);
Integer selectByEquCodeAndClaimStatus(@Param("equCode") String equCode, @Param("sequenceNbr") String sequenceNbr, @Param("record") String record);
Integer selectInstallNoticeEqByEquCode(@Param("equCode") String equCode, @Param("sequenceNbr") String sequenceNbr);
}
......@@ -26,6 +26,9 @@
<if test="sequenceNbr != null and sequenceNbr != ''">
AND jri.sequence_nbr != #{sequenceNbr}
</if>
<if test="record != null and record != ''">
AND jri.record != #{record}
</if>
AND joi.claim_status = '已认领'
</select>
......
......@@ -2142,6 +2142,12 @@ public class EquipmentCategoryServiceImpl extends BaseService<EquipmentCategoryD
meBuilder.must(QueryBuilders.matchPhraseQuery("SEQUENCE_NBR", "*" + test + "*"));
boolMust.must(meBuilder);
}
if (!ObjectUtils.isEmpty(map.getString("ORG_BRANCH_CODE"))) {
BoolQueryBuilder meBuilder = QueryBuilders.boolQuery();
String test = QueryParser.escape(map.getString("ORG_BRANCH_CODE"));
meBuilder.must(QueryBuilders.matchPhraseQuery("ORG_BRANCH_CODE", "*" + test + "*"));
boolMust.must(meBuilder);
}
if (!ObjectUtils.isEmpty(map.getString("USE_UNIT_NAME"))) {
BoolQueryBuilder query = QueryBuilders.boolQuery();
String test = QueryParser.escape(map.getString("USE_UNIT_NAME"));
......
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