Commit cfb3429d authored by suhuiguang's avatar suhuiguang

1.app证扫码扩展逻辑实现

parent 7e58aa67
package com.yeejoin.amos.boot.biz.common.dto; package com.yeejoin.amos.boot.biz.common.dto;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
...@@ -112,4 +113,9 @@ public class JgUseRegistrationManageDto extends BaseDto { ...@@ -112,4 +113,9 @@ public class JgUseRegistrationManageDto extends BaseDto {
@ApiModelProperty(value = "城市名称") @ApiModelProperty(value = "城市名称")
private String cityName; private String cityName;
@ApiModelProperty(value = "登记版本号")
private Integer version;
@ApiModelProperty(value = "注销原因")
private String deregisterReason;
} }
package com.yeejoin.amos.boot.module.app.api.dto;
import lombok.Data;
import javax.validation.constraints.NotBlank;
@Data
public class CertInfoRequestParam {
/**
* 唯一编号
*/
@NotBlank(message = "证唯一标识不能为空!")
private String certSeq;
/**
* 证类型:使用登记证、使用标志
*/
@NotBlank(message = "证类型不能为空!")
private String certType;
/**
* 版本号,默认1
*/
private String version;
}
...@@ -28,10 +28,10 @@ public interface AppCommonMapper { ...@@ -28,10 +28,10 @@ public interface AppCommonMapper {
/** /**
* 查询车辆基本信息 * 查询车辆基本信息
* *
* @param applyNo 申请单号 * @param seq 主键
* @return 车辆基本信息 * @return 车辆基本信息
*/ */
VehicleInfoForWX queryVehicleBaseInfo(String applyNo); VehicleInfoForWX queryVehicleBaseInfo(Long seq);
JgUseRegistrationManageDto selectOneCert(String applyNo); JgUseRegistrationManageDto selectOneCert(String certOrApplyNo);
} }
...@@ -90,7 +90,7 @@ ...@@ -90,7 +90,7 @@
FROM FROM
"tzs_jg_use_registration_manage" "tzs_jg_use_registration_manage"
where where
apply_no=#{applyNo} limit 1 sequence_nbr=#{seq} limit 1
</select> </select>
<select id="selectOneCert" resultType="com.yeejoin.amos.boot.biz.common.dto.JgUseRegistrationManageDto"> <select id="selectOneCert" resultType="com.yeejoin.amos.boot.biz.common.dto.JgUseRegistrationManageDto">
SELECT SELECT
...@@ -98,8 +98,8 @@ ...@@ -98,8 +98,8 @@
FROM FROM
"tzs_jg_use_registration_manage" "tzs_jg_use_registration_manage"
WHERE WHERE
apply_no = #{applyNo} is_delete = false
and is_delete = false and (apply_no = #{certOrApplyNo} or certificate_no = #{certOrApplyNo})
ORDER BY rec_date desc limit 1 ORDER BY rec_date desc limit 1
</select> </select>
......
...@@ -13,12 +13,14 @@ import com.yeejoin.amos.boot.biz.common.utils.RedisKey; ...@@ -13,12 +13,14 @@ import com.yeejoin.amos.boot.biz.common.utils.RedisKey;
import com.yeejoin.amos.boot.biz.common.utils.RedisUtils; import com.yeejoin.amos.boot.biz.common.utils.RedisUtils;
import com.yeejoin.amos.boot.biz.common.utils.TreeParser; import com.yeejoin.amos.boot.biz.common.utils.TreeParser;
import com.yeejoin.amos.boot.module.app.api.common.MobileLoginParam; import com.yeejoin.amos.boot.module.app.api.common.MobileLoginParam;
import com.yeejoin.amos.boot.module.app.api.dto.CertInfoRequestParam;
import com.yeejoin.amos.boot.module.app.api.dto.TzBaseEnterpriseInfoDto; import com.yeejoin.amos.boot.module.app.api.dto.TzBaseEnterpriseInfoDto;
import com.yeejoin.amos.boot.module.app.api.entity.EquipmentCategory; import com.yeejoin.amos.boot.module.app.api.entity.EquipmentCategory;
import com.yeejoin.amos.boot.module.app.api.entity.PageParam; import com.yeejoin.amos.boot.module.app.api.entity.PageParam;
import com.yeejoin.amos.boot.module.app.api.entity.TzBaseEnterpriseInfo; import com.yeejoin.amos.boot.module.app.api.entity.TzBaseEnterpriseInfo;
import com.yeejoin.amos.boot.module.app.api.mapper.ViewJgClaimMapper; import com.yeejoin.amos.boot.module.app.api.mapper.ViewJgClaimMapper;
import com.yeejoin.amos.boot.module.app.api.service.ITzBaseEnterpriseInfoService; import com.yeejoin.amos.boot.module.app.api.service.ITzBaseEnterpriseInfoService;
import com.yeejoin.amos.boot.module.app.biz.service.impl.CertDetailServiceImpl;
import com.yeejoin.amos.boot.module.app.biz.service.impl.EquipmentCategoryServiceImpl; import com.yeejoin.amos.boot.module.app.biz.service.impl.EquipmentCategoryServiceImpl;
import com.yeejoin.amos.boot.module.app.biz.service.impl.TzsAppService; import com.yeejoin.amos.boot.module.app.biz.service.impl.TzsAppService;
import com.yeejoin.amos.boot.module.app.flc.api.entity.RegUnitInfo; import com.yeejoin.amos.boot.module.app.flc.api.entity.RegUnitInfo;
...@@ -34,11 +36,15 @@ import io.swagger.annotations.ApiOperation; ...@@ -34,11 +36,15 @@ import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
import org.springframework.validation.BindingResult;
import org.springframework.validation.FieldError;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.typroject.tyboot.core.foundation.context.RequestContext; import org.typroject.tyboot.core.foundation.context.RequestContext;
import org.typroject.tyboot.core.foundation.enumeration.UserType; import org.typroject.tyboot.core.foundation.enumeration.UserType;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil; import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import org.typroject.tyboot.core.restful.doc.TycloudOperation; 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.ResponseHelper;
import org.typroject.tyboot.core.restful.utils.ResponseModel; import org.typroject.tyboot.core.restful.utils.ResponseModel;
...@@ -79,6 +85,9 @@ public class TzsAppController { ...@@ -79,6 +85,9 @@ public class TzsAppController {
@Autowired @Autowired
EquipmentCategoryServiceImpl equipmentCategoryServiceImpl; EquipmentCategoryServiceImpl equipmentCategoryServiceImpl;
@Autowired
CertDetailServiceImpl certDetailService;
/** /**
* 小程序获取设备详情 * 小程序获取设备详情
* *
...@@ -130,11 +139,14 @@ public class TzsAppController { ...@@ -130,11 +139,14 @@ public class TzsAppController {
* @return * @return
*/ */
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false) @TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@GetMapping(value = "/{certSeq}/certInfo") @PostMapping(value = "/certInfo")
@ApiOperation(httpMethod = "GET", value = "小程序获取登记证或者使用标志详情", notes = "小程序获取登记证或者使用标志详情") @ApiOperation(httpMethod = "GET", value = "小程序获取登记证或者使用标志详情", notes = "小程序获取登记证或者使用标志详情")
public ResponseModel<Map> getCertInfoForWX(@PathVariable String certSeq, public ResponseModel<Map> getCertInfoForWX(@Validated @RequestBody CertInfoRequestParam requestParam, BindingResult result) {
@RequestParam(required = false) String certType) { List<FieldError> fieldErrors = result.getFieldErrors();
return ResponseHelper.buildResponse(appService.getCertInfoForWX(certSeq,certType)); if (!fieldErrors.isEmpty()) {
throw new BadRequest(fieldErrors.get(0).getDefaultMessage());
}
return ResponseHelper.buildResponse(certDetailService.getCertInfoForWX(requestParam));
} }
......
package com.yeejoin.amos.boot.module.app.biz.service.impl;
import com.yeejoin.amos.boot.biz.common.dto.JgUseRegistrationManageDto;
import com.yeejoin.amos.boot.module.app.api.dto.CertInfoRequestParam;
import com.yeejoin.amos.boot.module.app.api.mapper.AppCommonMapper;
import com.yeejoin.amos.boot.module.app.biz.strategy.SearchDetailStrategyContext;
import com.yeejoin.amos.boot.module.common.api.crypto.AESUtil;
import com.yeejoin.amos.boot.module.common.api.enums.CertificateStatusEnum;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.typroject.tyboot.core.restful.exception.instance.BadRequest;
import javax.validation.constraints.NotBlank;
import java.util.Map;
@Service
public class CertDetailServiceImpl {
private final AppCommonMapper commonMapper;
private static final String REG_TYPE_VEHICLE = "车用气瓶登记";
public CertDetailServiceImpl(AppCommonMapper commonMapper) {
this.commonMapper = commonMapper;
}
public Map<String, Object> getCertInfoForWX(CertInfoRequestParam requestParam) {
this.setDefaultVersionForOld(requestParam);
String certOrApplyNo = this.deCodeCertSeq(requestParam.getCertSeq());
String version = this.deCodeByAES(requestParam.getVersion());
String certType = this.deCodeByAES(requestParam.getCertType());
JgUseRegistrationManageDto jgUseRegistrationManage = this.checkParam(certOrApplyNo, version);
return SearchDetailStrategyContext.getHandler(this.getManageType(jgUseRegistrationManage)).hanlder(jgUseRegistrationManage, certType);
}
private void setDefaultVersionForOld(CertInfoRequestParam requestParam) {
if (StringUtils.isBlank(requestParam.getVersion())) {
requestParam.setVersion(AESUtil.encrypt("1"));
}
}
private JgUseRegistrationManageDto checkParam(String certOrApplyNo, String version) {
JgUseRegistrationManageDto jgUseRegistrationManage = commonMapper.selectOneCert(certOrApplyNo);
if (jgUseRegistrationManage == null) {
throw new BadRequest("无此证信息!");
}
// 表创建字段时已经给默认值 1 正常不为null 程序健壮处理
if (jgUseRegistrationManage.getVersion() == null) {
jgUseRegistrationManage.setVersion(1);
}
if (jgUseRegistrationManage.getVersion().toString().equals(version)) {
throw new BadRequest(this.buildErrorInfo(jgUseRegistrationManage));
}
if (CertificateStatusEnum.YIZHUXIAO.getName().equals(jgUseRegistrationManage.getCertificateStatus())) {
throw new BadRequest("此证已注销!");
}
return jgUseRegistrationManage;
}
private String buildErrorInfo(JgUseRegistrationManageDto jgUseRegistrationManage) {
return "该证发生" + jgUseRegistrationManage.getDeregisterReason() + "导致证注销, 请联系监管单位进行换证!";
}
private String deCodeByAES(@NotBlank(message = "证类型不能为空!") String data) {
try {
return AESUtil.decrypt(data);
} catch (Exception e) {
throw new BadRequest("非法的二维码!");
}
}
private String deCodeCertSeq(@NotBlank(message = "证唯一标识不能为空!") String certSeq) {
// 老数据兼容支持
if (certSeq.startsWith("SYDJ") || certSeq.startsWith("YZBG")) {
return certSeq;
}
try {
return AESUtil.decrypt(certSeq);
} catch (Exception e) {
throw new BadRequest("非法的二维码!");
}
}
private String getManageType(JgUseRegistrationManageDto jgUseRegistrationManage) {
// 分3类:单位办理方式[unit](气瓶、压力管道)、台套办理方式[set](7大类,不包含压力管道)、车用气瓶[vehicle](压力容器->气瓶)
String regType = jgUseRegistrationManage.getRegType();
if (REG_TYPE_VEHICLE.equals(regType)) {
return "vehicle";
}
return jgUseRegistrationManage.getManageType() == null ? "set" : jgUseRegistrationManage.getManageType();
}
}
package com.yeejoin.amos.boot.module.app.biz.service.impl; package com.yeejoin.amos.boot.module.app.biz.service.impl;
import com.yeejoin.amos.boot.biz.common.dto.JgUseRegistrationManageDto;
import com.yeejoin.amos.boot.module.app.biz.strategy.ISearchDetailHandler; import com.yeejoin.amos.boot.module.app.biz.strategy.ISearchDetailHandler;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
...@@ -14,7 +15,7 @@ public class SetSearchDetailDetailHandlerImpl implements ISearchDetailHandler { ...@@ -14,7 +15,7 @@ public class SetSearchDetailDetailHandlerImpl implements ISearchDetailHandler {
} }
@Override @Override
public Map<String, Object> hanlder(String applyNo, String from) { public Map<String, Object> hanlder(JgUseRegistrationManageDto manageDto, String from) {
return Collections.emptyMap(); return Collections.emptyMap();
} }
} }
...@@ -10,7 +10,6 @@ import com.baomidou.mybatisplus.core.metadata.TableInfoHelper; ...@@ -10,7 +10,6 @@ import com.baomidou.mybatisplus.core.metadata.TableInfoHelper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.yeejoin.amos.boot.biz.common.dao.mapper.DataDictionaryMapper; import com.yeejoin.amos.boot.biz.common.dao.mapper.DataDictionaryMapper;
import com.yeejoin.amos.boot.biz.common.dto.JgUseRegistrationManageDto;
import com.yeejoin.amos.boot.biz.common.entity.DataDictionary; import com.yeejoin.amos.boot.biz.common.entity.DataDictionary;
import com.yeejoin.amos.boot.biz.common.utils.QRCodeUtil; import com.yeejoin.amos.boot.biz.common.utils.QRCodeUtil;
import com.yeejoin.amos.boot.biz.common.utils.RedisUtils; import com.yeejoin.amos.boot.biz.common.utils.RedisUtils;
...@@ -23,7 +22,6 @@ import com.yeejoin.amos.boot.module.app.api.enums.EquipmentClassifityEnum; ...@@ -23,7 +22,6 @@ import com.yeejoin.amos.boot.module.app.api.enums.EquipmentClassifityEnum;
import com.yeejoin.amos.boot.module.app.api.mapper.AppCommonMapper; import com.yeejoin.amos.boot.module.app.api.mapper.AppCommonMapper;
import com.yeejoin.amos.boot.module.app.api.mapper.CategoryOtherInfoMapper; import com.yeejoin.amos.boot.module.app.api.mapper.CategoryOtherInfoMapper;
import com.yeejoin.amos.boot.module.app.api.mapper.EquipmentCategoryMapper; import com.yeejoin.amos.boot.module.app.api.mapper.EquipmentCategoryMapper;
import com.yeejoin.amos.boot.module.app.biz.strategy.SearchDetailStrategyContext;
import com.yeejoin.amos.boot.module.app.biz.utils.HttpUtils; import com.yeejoin.amos.boot.module.app.biz.utils.HttpUtils;
import com.yeejoin.amos.boot.module.app.biz.utils.JsonUtils; import com.yeejoin.amos.boot.module.app.biz.utils.JsonUtils;
import com.yeejoin.amos.boot.module.app.biz.utils.RedisUtil; import com.yeejoin.amos.boot.module.app.biz.utils.RedisUtil;
...@@ -153,13 +151,9 @@ public class TzsAppService { ...@@ -153,13 +151,9 @@ public class TzsAppService {
@Autowired @Autowired
private RedisUtil redisUtil; private RedisUtil redisUtil;
@Autowired
private AppCommonMapper commonMapper;
private static final String REG_TYPE_VEHICLE = "车用气瓶登记";
private static final String STREET = "STREET"; private static final String STREET = "STREET";
public Map<String, Object> getEquipmentInfo(String record) { public Map<String, Object> getEquipmentInfo(String record) {
List<DataDictionary> dictionaryList = getDictionary(); List<DataDictionary> dictionaryList = getDictionary();
List<EquipmentCategory> equipmentCategories = equipmentCategoryMapper.selectList(null); List<EquipmentCategory> equipmentCategories = equipmentCategoryMapper.selectList(null);
...@@ -264,21 +258,6 @@ public class TzsAppService { ...@@ -264,21 +258,6 @@ public class TzsAppService {
return map; return map;
} }
public Map<String, Object> getCertInfoForWX(String certSeq, String certType) {
return SearchDetailStrategyContext.getHandler(this.getManageType(certSeq)).hanlder(certSeq, certType);
}
private String getManageType(String applyNo) {
// 3类:单位办理方式[unit](气瓶、压力管道)、台套办理方式[set](7大类,不包含压力管道)、车用气瓶[vehicle](压力容器->气瓶)
JgUseRegistrationManageDto jgUseRegistrationManage = commonMapper.selectOneCert(applyNo);
// 使用登记、车用气瓶登记
String regType = jgUseRegistrationManage.getRegType();
if (REG_TYPE_VEHICLE.equals(regType)) {
return "vehicle";
}
return jgUseRegistrationManage.getManageType() == null ? "set" : jgUseRegistrationManage.getManageType();
}
public Map<String, Object> getEquipmentInfoWX(String record) { public Map<String, Object> getEquipmentInfoWX(String record) {
List<DataDictionary> dictionaryList = getDictionary(); List<DataDictionary> dictionaryList = getDictionary();
......
package com.yeejoin.amos.boot.module.app.biz.service.impl; package com.yeejoin.amos.boot.module.app.biz.service.impl;
import com.yeejoin.amos.boot.biz.common.dto.JgUseRegistrationManageDto;
import com.yeejoin.amos.boot.module.app.biz.strategy.ISearchDetailHandler; import com.yeejoin.amos.boot.module.app.biz.strategy.ISearchDetailHandler;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
...@@ -14,7 +15,8 @@ public class UnitSearchDetailDetailHandlerImpl implements ISearchDetailHandler { ...@@ -14,7 +15,8 @@ public class UnitSearchDetailDetailHandlerImpl implements ISearchDetailHandler {
} }
@Override @Override
public Map<String, Object> hanlder(String applyNo, String from) { public Map<String, Object> hanlder(JgUseRegistrationManageDto manageDto, String from) {
return Collections.emptyMap(); return Collections.emptyMap();
} }
} }
...@@ -2,6 +2,7 @@ package com.yeejoin.amos.boot.module.app.biz.service.impl; ...@@ -2,6 +2,7 @@ package com.yeejoin.amos.boot.module.app.biz.service.impl;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.yeejoin.amos.boot.biz.common.dto.JgUseRegistrationManageDto;
import com.yeejoin.amos.boot.biz.common.utils.QRCodeUtil; import com.yeejoin.amos.boot.biz.common.utils.QRCodeUtil;
import com.yeejoin.amos.boot.module.app.api.annotation.Converter; import com.yeejoin.amos.boot.module.app.api.annotation.Converter;
import com.yeejoin.amos.boot.module.app.api.annotation.FieldDisplayDefine; import com.yeejoin.amos.boot.module.app.api.annotation.FieldDisplayDefine;
...@@ -39,13 +40,14 @@ public class VehicleSearchDetailDetailHandlerImpl implements ISearchDetailHandle ...@@ -39,13 +40,14 @@ public class VehicleSearchDetailDetailHandlerImpl implements ISearchDetailHandle
} }
@Override @Override
public Map<String, Object> hanlder(String certSeq, String certType) { public Map<String, Object> hanlder(JgUseRegistrationManageDto manageDto, String certType) {
return this.getQueryCarCylinderInfo(certSeq); return this.getQueryCarCylinderInfo(manageDto);
} }
private Map<String, Object> getQueryCarCylinderInfo(String certSeq) { private Map<String, Object> getQueryCarCylinderInfo(JgUseRegistrationManageDto manageDto) {
VehicleInfoForWX baseInfo = appCommonMapper.queryVehicleBaseInfo(certSeq); VehicleInfoForWX baseInfo = appCommonMapper.queryVehicleBaseInfo(manageDto.getSequenceNbr());
List<CylinderInfoForWX> cylinderInfos = appCommonMapper.queryCylinderIfoOfVehicle(certSeq); // 最好改成查询es record再传入进去
List<CylinderInfoForWX> cylinderInfos = appCommonMapper.queryCylinderIfoOfVehicle(manageDto.getApplyNo());
fillEquDefine(baseInfo, cylinderInfos); fillEquDefine(baseInfo, cylinderInfos);
Map<String, Object> result = new LinkedHashMap<>(); Map<String, Object> result = new LinkedHashMap<>();
JSONArray tabs = new JSONArray(); JSONArray tabs = new JSONArray();
......
package com.yeejoin.amos.boot.module.app.biz.strategy; package com.yeejoin.amos.boot.module.app.biz.strategy;
import com.yeejoin.amos.boot.biz.common.dto.JgUseRegistrationManageDto;
import java.util.Map; import java.util.Map;
public interface ISearchDetailHandler { public interface ISearchDetailHandler {
...@@ -12,9 +14,11 @@ public interface ISearchDetailHandler { ...@@ -12,9 +14,11 @@ public interface ISearchDetailHandler {
/** /**
* 处理处理 * 处理处理
* @param applyNo 单号 * @param manageDto 证信息
* @param from 来源 * @param from 来源
* @return T * @return T
*/ */
Map<String, Object> hanlder(String applyNo, String from); Map<String, Object> hanlder(JgUseRegistrationManageDto manageDto, String from);
String defaultVersion = "1";
} }
package com.yeejoin.amos.boot.module.common.api.crypto;
import cn.hutool.crypto.Mode;
import cn.hutool.crypto.Padding;
import cn.hutool.crypto.symmetric.AES;
import java.nio.charset.StandardCharsets;
public class AESUtil {
private static final String key = "amos-tzs-app-991";
private static final String iv = "amos-tzs-app-9iv";
private final AES aes;
private AESUtil(Mode mode, Padding padding, byte[] key, byte[] iv) {
aes = new AES(mode, padding, key, iv);
}
private static class AESUtilHolder {
private static final AESUtil instance = new AESUtil(Mode.CBC, Padding.PKCS5Padding, key.getBytes(StandardCharsets.UTF_8), iv.getBytes(StandardCharsets.UTF_8));
}
private static AESUtil getInstance() {
return AESUtilHolder.instance;
}
public static String encrypt(String data) {
return getInstance().aes.encryptBase64(data);
}
public static String decrypt(String data) {
return getInstance().aes.decryptStr(data, StandardCharsets.UTF_8);
}
}
package com.yeejoin.amos.boot.module.common.api.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.HashMap;
import java.util.Map;
@AllArgsConstructor
@Getter
public enum CertificateStatusEnum {
/**
* 使用登记证状态
*
*/
YIDENGJI("已登记",0),
YIZHUXIAO("已注销",1);
String name;
Integer code;
public static Map<Integer,String> getName=new HashMap<>();
public static Map<String,Integer> getCode=new HashMap<>();
static {
for (CertificateStatusEnum e : CertificateStatusEnum.values()){
getName.put(e.code, e.name);
getCode.put(e.name, e.code);
}
}
}
...@@ -113,4 +113,10 @@ public class JgUseRegistrationManageDto extends BaseDto { ...@@ -113,4 +113,10 @@ public class JgUseRegistrationManageDto extends BaseDto {
@ApiModelProperty(value = "城市名称") @ApiModelProperty(value = "城市名称")
private String cityName; private String cityName;
@ApiModelProperty(value = "登记版本号")
private Integer version;
@ApiModelProperty(value = "注销原因")
private String deregisterReason;
} }
package com.yeejoin.amos.boot.module.jg.api.dto; package com.yeejoin.amos.boot.module.jg.api.dto;
import lombok.Builder;
import lombok.Data; import lombok.Data;
import java.util.Date; import java.util.Date;
...@@ -91,7 +90,6 @@ public class UseFlagParamDto { ...@@ -91,7 +90,6 @@ public class UseFlagParamDto {
/** /**
* 产品编号--车用气瓶专用 * 产品编号--车用气瓶专用
*
*/ */
private String factoryNumber; private String factoryNumber;
...@@ -110,6 +108,12 @@ public class UseFlagParamDto { ...@@ -110,6 +108,12 @@ public class UseFlagParamDto {
/** /**
* 申请编号 * 申请编号
*/ */
private String applyNo; private String certificateNo;
/**
* 版本号
*/
private Integer version;
} }
...@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.TableField; ...@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.yeejoin.amos.boot.biz.common.entity.BaseEntity; import com.yeejoin.amos.boot.biz.common.entity.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
...@@ -195,4 +196,17 @@ public class JgUseRegistrationManage extends BaseEntity { ...@@ -195,4 +196,17 @@ public class JgUseRegistrationManage extends BaseEntity {
@TableField("filling_medium") @TableField("filling_medium")
private String fillingMedium; private String fillingMedium;
/**
* 登记版本号(每次业务+1, 作废业务-1)
*/
@TableField("version")
private Integer version = 1;
/**
* 注销原因
*/
@TableField("deregister_reason")
private String deregisterReason;
} }
...@@ -538,7 +538,7 @@ public class CommonController extends BaseController { ...@@ -538,7 +538,7 @@ public class CommonController extends BaseController {
useFlagParamDto.setFactoryNumber("产品编号"); useFlagParamDto.setFactoryNumber("产品编号");
useFlagParamDto.setCylinderNumOrVolume("12"); useFlagParamDto.setCylinderNumOrVolume("12");
useFlagParamDto.setFillingMedium("氮气"); useFlagParamDto.setFillingMedium("氮气");
useFlagParamDto.setApplyNo("101"); useFlagParamDto.setCertificateNo("101");
return useFlagParamDto; return useFlagParamDto;
} }
......
...@@ -26,6 +26,7 @@ import com.yeejoin.amos.boot.biz.common.service.impl.DataDictionaryServiceImpl; ...@@ -26,6 +26,7 @@ import com.yeejoin.amos.boot.biz.common.service.impl.DataDictionaryServiceImpl;
import com.yeejoin.amos.boot.biz.common.utils.DateUtils; import com.yeejoin.amos.boot.biz.common.utils.DateUtils;
import com.yeejoin.amos.boot.biz.common.utils.RedisKey; import com.yeejoin.amos.boot.biz.common.utils.RedisKey;
import com.yeejoin.amos.boot.biz.common.utils.RedisUtils; import com.yeejoin.amos.boot.biz.common.utils.RedisUtils;
import com.yeejoin.amos.boot.module.common.api.crypto.AESUtil;
import com.yeejoin.amos.boot.module.jg.api.dto.*; 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.JgRegistrationHistory;
import com.yeejoin.amos.boot.module.jg.api.entity.JgUseRegistration; import com.yeejoin.amos.boot.module.jg.api.entity.JgUseRegistration;
...@@ -55,7 +56,6 @@ import com.yeejoin.amos.boot.module.ymt.api.enums.ApplicationFormTypeEnum; ...@@ -55,7 +56,6 @@ import com.yeejoin.amos.boot.module.ymt.api.enums.ApplicationFormTypeEnum;
import com.yeejoin.amos.boot.module.ymt.api.enums.FlowStatusEnum; import com.yeejoin.amos.boot.module.ymt.api.enums.FlowStatusEnum;
import com.yeejoin.amos.boot.module.ymt.api.mapper.EquipTechParamPipelineMapper; import com.yeejoin.amos.boot.module.ymt.api.mapper.EquipTechParamPipelineMapper;
import com.yeejoin.amos.boot.module.ymt.api.mapper.EquipmentCategoryMapper; import com.yeejoin.amos.boot.module.ymt.api.mapper.EquipmentCategoryMapper;
import com.yeejoin.amos.boot.module.ymt.api.mapper.IdxBizJgSupervisionInfoMapper;
import com.yeejoin.amos.boot.module.ymt.api.mapper.RegistrationInfoMapper; import com.yeejoin.amos.boot.module.ymt.api.mapper.RegistrationInfoMapper;
import com.yeejoin.amos.component.feign.model.FeignClientResult; import com.yeejoin.amos.component.feign.model.FeignClientResult;
import com.yeejoin.amos.component.feign.utils.FeignUtil; import com.yeejoin.amos.component.feign.utils.FeignUtil;
...@@ -218,8 +218,6 @@ public class CommonServiceImpl implements ICommonService { ...@@ -218,8 +218,6 @@ public class CommonServiceImpl implements ICommonService {
@Autowired @Autowired
private JgUseRegistrationManageMapper jgUseRegistrationManageMapper; private JgUseRegistrationManageMapper jgUseRegistrationManageMapper;
@Autowired @Autowired
IdxBizJgSupervisionInfoMapper idxBizJgSupervisionInfoMapper;
@Autowired
RedissonClient redissonClient; RedissonClient redissonClient;
@Value("${redis.cache.failure.time}") @Value("${redis.cache.failure.time}")
private Long redisRegionTimeSecond; private Long redisRegionTimeSecond;
...@@ -251,6 +249,9 @@ public class CommonServiceImpl implements ICommonService { ...@@ -251,6 +249,9 @@ public class CommonServiceImpl implements ICommonService {
@Autowired @Autowired
private JgChangeVehicleRegistrationUnitServiceImpl jgChangeVehicleRegistrationUnitService; private JgChangeVehicleRegistrationUnitServiceImpl jgChangeVehicleRegistrationUnitService;
@Value("${qrcode.prefix:https://sxtzsb.sxsei.com:19435/tzs?}")
private String qrcodePrefix;
public static byte[] file2byte(File file) { public static byte[] file2byte(File file) {
try { try {
FileInputStream in = new FileInputStream(file); FileInputStream in = new FileInputStream(file);
...@@ -536,7 +537,7 @@ public class CommonServiceImpl implements ICommonService { ...@@ -536,7 +537,7 @@ public class CommonServiceImpl implements ICommonService {
} }
private void setQrCode(UseFlagParamDto useFlagParamDto, Map<String, Object> paramMap) { private void setQrCode(UseFlagParamDto useFlagParamDto, Map<String, Object> paramMap) {
String qrCode = ImageUtils.generateQRCode(Optional.ofNullable(useFlagParamDto.getApplyNo()).orElse(""), 180, 180); String qrCode = ImageUtils.generateQRCode(getEncodeQrCode(useFlagParamDto.getCertificateNo(), "useFlag", useFlagParamDto.getVersion() + ""), 100, 100);
paramMap.put("qrCode", qrCode); paramMap.put("qrCode", qrCode);
} }
...@@ -916,8 +917,8 @@ public class CommonServiceImpl implements ICommonService { ...@@ -916,8 +917,8 @@ public class CommonServiceImpl implements ICommonService {
map.put("excelType", Optional.ofNullable(map.get("excelType")).orElse("使用登记").toString()); // 发证日期-日 map.put("excelType", Optional.ofNullable(map.get("excelType")).orElse("使用登记").toString()); // 发证日期-日
map.put("tableName", Optional.ofNullable(map.get("tableName")).orElse("特种设备使用登记证").toString()); // 发证日期-日 map.put("tableName", Optional.ofNullable(map.get("tableName")).orElse("特种设备使用登记证").toString()); // 发证日期-日
map.put("carNumber", Optional.ofNullable(map.get("carNumber")).orElse("").toString()); // 车牌号 map.put("carNumber", Optional.ofNullable(map.get("carNumber")).orElse("").toString()); // 车牌号
// 生成二维码,之前为设备监管码,调整为申请单 // 生成二维码,之前为设备监管码,调整为证编
String qrCode = ImageUtils.generateQRCode(Optional.ofNullable(map.get("applyNo")).orElse("").toString(), 100, 100); String qrCode = ImageUtils.generateQRCode(getEncodeQrCode(Optional.ofNullable(map.get("certificateNo")).orElse("").toString(), "useCert", Optional.ofNullable(map.get("version")).orElse("").toString()), 100, 100);
map.put("supervisoryCode", qrCode); // 监管二维码 map.put("supervisoryCode", qrCode); // 监管二维码
// 默认普打 // 默认普打
map.put("printingType", PrintingTypeEnum.REGULAR.getCode()); map.put("printingType", PrintingTypeEnum.REGULAR.getCode());
...@@ -945,6 +946,19 @@ public class CommonServiceImpl implements ICommonService { ...@@ -945,6 +946,19 @@ public class CommonServiceImpl implements ICommonService {
} }
} }
private String getEncodeQrCode(String certSeq, String certType, String version) {
String certSeqEncrypt = AESUtil.encrypt(certSeq);
String certTypeEncrypt = AESUtil.encrypt(certType);
String versionEncrypt = AESUtil.encrypt(version);
return qrcodePrefix +
"?certSeq=" +
certSeqEncrypt +
"certType=" +
certTypeEncrypt +
"version=" +
versionEncrypt;
}
/** /**
* 使用登记证套打生成Word * 使用登记证套打生成Word
* *
...@@ -965,8 +979,8 @@ public class CommonServiceImpl implements ICommonService { ...@@ -965,8 +979,8 @@ public class CommonServiceImpl implements ICommonService {
for (int i = 0; i < keys.length; i++) { for (int i = 0; i < keys.length; i++) {
map.put(keys[i], Optional.ofNullable(map.get(keys[i])).orElse(defaultValues[i]).toString()); map.put(keys[i], Optional.ofNullable(map.get(keys[i])).orElse(defaultValues[i]).toString());
} }
String qrCode = ImageUtils.generateQRCode(getEncodeQrCode(Optional.ofNullable(map.get("certificateNo")).orElse("").toString(), "useCert", Optional.ofNullable(map.get("version")).orElse("").toString()), 100, 100);
map.put("supervisoryCode", ImageUtils.generateQRCode(Optional.ofNullable(map.get("applyNo")).orElse("").toString(), 100, 100)); map.put("supervisoryCode", qrCode);
map.put("printingType", PrintingTypeEnum.OVERPLAY.getCode()); map.put("printingType", PrintingTypeEnum.OVERPLAY.getCode());
String manageType = Optional.ofNullable(map.get("manageType")).orElse("").toString(); String manageType = Optional.ofNullable(map.get("manageType")).orElse("").toString();
String templateFileName = "use-registration-model.ftl"; String templateFileName = "use-registration-model.ftl";
...@@ -1004,6 +1018,7 @@ public class CommonServiceImpl implements ICommonService { ...@@ -1004,6 +1018,7 @@ public class CommonServiceImpl implements ICommonService {
* @param response 响应 * @param response 响应
*/ */
@Override @Override
@Deprecated
public void generatePdfPrint(Map<String, Object> map, HttpServletResponse response) { public void generatePdfPrint(Map<String, Object> map, HttpServletResponse response) {
String[] DEFAULT_KEYS = { String[] DEFAULT_KEYS = {
"useRegistrationCode", "useUnitName", "fullAddress", "equList", "equipDefine", "useRegistrationCode", "useUnitName", "fullAddress", "equList", "equipDefine",
...@@ -1019,8 +1034,8 @@ public class CommonServiceImpl implements ICommonService { ...@@ -1019,8 +1034,8 @@ public class CommonServiceImpl implements ICommonService {
Arrays.stream(DEFAULT_KEYS) Arrays.stream(DEFAULT_KEYS)
.forEach(key -> map.computeIfAbsent(key, k -> "")); .forEach(key -> map.computeIfAbsent(key, k -> ""));
// 生成二维码,之前为设备监管码,调整为申请单 // 生成二维码,之前为设备监管码,调整为证编
String qrCode = ImageUtils.generateQRCode((String) map.getOrDefault("applyNo", ""), 100, 100); String qrCode = ImageUtils.generateQRCode(getEncodeQrCode(Optional.ofNullable(map.get("certificateNo")).orElse("").toString(), "useCert", Optional.ofNullable(map.get("version")).orElse("").toString()), 100, 100);
map.put("supervisoryCode", qrCode); // 监管二维码 代码优化 map.put("supervisoryCode", qrCode); // 监管二维码 代码优化
this.fillParamValueToPdf(map, response, "templates/use-registration-model.pdf", "套打使用登记证.pdf", 12.0f); this.fillParamValueToPdf(map, response, "templates/use-registration-model.pdf", "套打使用登记证.pdf", 12.0f);
} }
...@@ -2044,10 +2059,9 @@ public class CommonServiceImpl implements ICommonService { ...@@ -2044,10 +2059,9 @@ public class CommonServiceImpl implements ICommonService {
setNextDate(useFlagParamDto, paramMap); setNextDate(useFlagParamDto, paramMap);
setRegName(useFlagParamDto, paramMap); setRegName(useFlagParamDto, paramMap);
// 生成二维码,之前为设备监管码,调整为申请单 // 生成二维码,之前为设备监管码,调整为证编
String qrCode = ImageUtils.generateQRCode(Optional.ofNullable(useFlagParamDto.getApplyNo()).orElse(""), 180, 180); String qrCode = ImageUtils.generateQRCode(getEncodeQrCode(useFlagParamDto.getCertificateNo(), "useFlag", useFlagParamDto.getVersion() + ""), 100, 100);
paramMap.put("supervisoryCode", qrCode); paramMap.put("supervisoryCode", qrCode);
this.fillParamValueToPdf(paramMap, response, selectPdfTemplate(useFlagParamDto.getEquListCode()), printFileName, 9.0f); this.fillParamValueToPdf(paramMap, response, selectPdfTemplate(useFlagParamDto.getEquListCode()), printFileName, 9.0f);
} }
...@@ -2165,7 +2179,7 @@ public class CommonServiceImpl implements ICommonService { ...@@ -2165,7 +2179,7 @@ public class CommonServiceImpl implements ICommonService {
LambdaQueryWrapper<JgUseRegistrationManage> queryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<JgUseRegistrationManage> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(JgUseRegistrationManage::getUseUnitCreditCode, useUnitCreditCode) queryWrapper.eq(JgUseRegistrationManage::getUseUnitCreditCode, useUnitCreditCode)
.eq(JgUseRegistrationManage::getEquDefineCode, equDefineCode) .eq(JgUseRegistrationManage::getEquDefineCode, equDefineCode)
.eq(JgUseRegistrationManage::getIsDelete,0) .eq(JgUseRegistrationManage::getIsDelete, 0)
.eq(JgUseRegistrationManage::getCertificateStatus, CertificateStatusEnum.YIDENGJI.getName()) .eq(JgUseRegistrationManage::getCertificateStatus, CertificateStatusEnum.YIDENGJI.getName())
.orderByDesc(JgUseRegistrationManage::getCertificateNo); .orderByDesc(JgUseRegistrationManage::getCertificateNo);
return jgUseRegistrationManageMapper.selectList(queryWrapper).stream() return jgUseRegistrationManageMapper.selectList(queryWrapper).stream()
......
...@@ -526,11 +526,8 @@ public class JgUseRegistrationManageServiceImpl extends BaseService<JgUseRegistr ...@@ -526,11 +526,8 @@ public class JgUseRegistrationManageServiceImpl extends BaseService<JgUseRegistr
} }
JgUseRegistrationManage manage = this.baseMapper.selectById(certificateSeq); JgUseRegistrationManage manage = this.baseMapper.selectById(certificateSeq);
String regType = manage.getRegType();
String useRegistrationCode = manage.getUseRegistrationCode(); String useRegistrationCode = manage.getUseRegistrationCode();
String sequenceNbr = null;
String equCategoryCode = manage.getEquCategoryCode(); String equCategoryCode = manage.getEquCategoryCode();
switch (printType) { switch (printType) {
case "certificateNormalPrint":// 使用登记证 普打 case "certificateNormalPrint":// 使用登记证 普打
case "certificateNestedPrint":// 使用登记证 套打 case "certificateNestedPrint":// 使用登记证 套打
...@@ -625,7 +622,11 @@ public class JgUseRegistrationManageServiceImpl extends BaseService<JgUseRegistr ...@@ -625,7 +622,11 @@ public class JgUseRegistrationManageServiceImpl extends BaseService<JgUseRegistr
exportParamsMap.put("fullAddress", manage.getUseUnitAddress()); exportParamsMap.put("fullAddress", manage.getUseUnitAddress());
} }
} }
exportParamsMap.put("applyNo", manage.getApplyNo()); // 调整为证编号 全库唯一
exportParamsMap.put("certificateNo", manage.getCertificateNo());
// 与certificateNo一样,冗余字段防止漏调整
exportParamsMap.put("applyNo", manage.getCertificateNo());
exportParamsMap.put("version", manage.getVersion() + "");
exportParamsMap.put("carNumber", manage.getCarNumber()); exportParamsMap.put("carNumber", manage.getCarNumber());
exportParamsMap.put("equListCode", manage.getEquListCode()); exportParamsMap.put("equListCode", manage.getEquListCode());
...@@ -666,12 +667,13 @@ public class JgUseRegistrationManageServiceImpl extends BaseService<JgUseRegistr ...@@ -666,12 +667,13 @@ public class JgUseRegistrationManageServiceImpl extends BaseService<JgUseRegistr
useFlagParamDto.setUseRegistrationCode(exportParamsMap.get("useRegistrationCode").toString()); useFlagParamDto.setUseRegistrationCode(exportParamsMap.get("useRegistrationCode").toString());
useFlagParamDto.setFactoryNumber(exportParamsMap.get("factoryNum").toString()); useFlagParamDto.setFactoryNumber(exportParamsMap.get("factoryNum").toString());
useFlagParamDto.setCarNumber(manage.getCarNumber()); useFlagParamDto.setCarNumber(manage.getCarNumber());
useFlagParamDto.setApplyNo(manage.getApplyNo()); useFlagParamDto.setCertificateNo(manage.getCertificateNo());
useFlagParamDto.setVersion(manage.getVersion());
// 检验信息字段设置 // 检验信息字段设置
setInspectField((String) deviceList.get(0).get("SEQUENCE_NBR"), useFlagParamDto); setInspectField((String) deviceList.get(0).get("SEQUENCE_NBR"), useFlagParamDto);
// 电梯维保信息字段设置 // 电梯维保信息字段设置
setMainInfoField((String) deviceList.get(0).get("SEQUENCE_NBR"), useFlagParamDto); setMainInfoField((String) deviceList.get(0).get("SEQUENCE_NBR"), useFlagParamDto);
// 车用气瓶专用字段 暂无数据源 需车用气瓶功能开发完成后进行 // 车用气瓶专用字段
useFlagParamDto.setCylinderNumOrVolume(manage.getGasNum() + "/" + manage.getVolume()); useFlagParamDto.setCylinderNumOrVolume(manage.getGasNum() + "/" + manage.getVolume());
useFlagParamDto.setFillingMedium(manage.getFillingMedium()); useFlagParamDto.setFillingMedium(manage.getFillingMedium());
return useFlagParamDto; return useFlagParamDto;
......
...@@ -66,10 +66,7 @@ import org.springframework.beans.BeanUtils; ...@@ -66,10 +66,7 @@ import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.TransactionManager;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.event.TransactionalEventListener;
import org.springframework.transaction.reactive.TransactionalOperator;
import org.springframework.transaction.support.TransactionSynchronization; import org.springframework.transaction.support.TransactionSynchronization;
import org.springframework.transaction.support.TransactionSynchronizationManager; import org.springframework.transaction.support.TransactionSynchronizationManager;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
...@@ -2344,7 +2341,7 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD ...@@ -2344,7 +2341,7 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
useFlagParamDto.setUseRegistrationCode(exportParamsMap.get("useRegistrationCode").toString()); useFlagParamDto.setUseRegistrationCode(exportParamsMap.get("useRegistrationCode").toString());
useFlagParamDto.setFactoryNumber(factoryInfo.getFactoryNum()); useFlagParamDto.setFactoryNumber(factoryInfo.getFactoryNum());
useFlagParamDto.setCarNumber(registerInfo.getCarNumber()); useFlagParamDto.setCarNumber(registerInfo.getCarNumber());
useFlagParamDto.setApplyNo(useRegistration.getApplyNo()); useFlagParamDto.setCertificateNo(useRegistration.getApplyNo());
// 检验信息字段设置 // 检验信息字段设置
setInspectField(registerInfo, useFlagParamDto); setInspectField(registerInfo, useFlagParamDto);
// 电梯维保信息字段设置 // 电梯维保信息字段设置
......
...@@ -1350,7 +1350,7 @@ public class JgVehicleInformationServiceImpl extends BaseService<JgVehicleInform ...@@ -1350,7 +1350,7 @@ public class JgVehicleInformationServiceImpl extends BaseService<JgVehicleInform
useFlagParamDto.setFactoryNumber(exportParamsMap.get("factoryNum") + ""); useFlagParamDto.setFactoryNumber(exportParamsMap.get("factoryNum") + "");
useFlagParamDto.setCylinderNumOrVolume(vehicleInformation.getGasNum() + "/" + vehicleInformation.getVolume()); useFlagParamDto.setCylinderNumOrVolume(vehicleInformation.getGasNum() + "/" + vehicleInformation.getVolume());
useFlagParamDto.setFillingMedium(vehicleInformation.getFillingMedium()); useFlagParamDto.setFillingMedium(vehicleInformation.getFillingMedium());
useFlagParamDto.setApplyNo(vehicleInformation.getApplyNo()); useFlagParamDto.setCertificateNo(vehicleInformation.getApplyNo());
useFlagParamDto.setInspectionUnitName(vehicleInformation.getInspectUnitName()); useFlagParamDto.setInspectionUnitName(vehicleInformation.getInspectUnitName());
return useFlagParamDto; return useFlagParamDto;
} }
......
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