Commit 033f026c authored by 刘林's avatar 刘林

Merge remote-tracking branch 'origin/develop_tzs_register_to_0715' into…

Merge remote-tracking branch 'origin/develop_tzs_register_to_0715' into develop_tzs_register_to_0715 # Conflicts: # amos-boot-system-tzs/amos-boot-module-jg/amos-boot-module-jg-biz/src/main/java/com/yeejoin/amos/boot/module/jg/biz/service/impl/JgVehicleInformationServiceImpl.java
parents 60b325e5 f1d35223
......@@ -2,7 +2,8 @@ package com.yeejoin.amos.boot.module.jg.api.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import org.typroject.tyboot.core.rdbms.orm.entity.BaseEntity;
import com.yeejoin.amos.boot.biz.common.entity.BaseEntity;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
......
......@@ -58,4 +58,15 @@ public class JgChangeRegistrationNameEq extends BaseEntity {
@TableField("create_user_name")
private String createUserName;
/**
* 使用登记证id
*/
@TableField("certificate_seq")
private String certificateSeq;
/**
* 使用登记证id
*/
@TableField("equip_info")
private String equipInfo;
}
......@@ -151,7 +151,7 @@ public class JgUseRegistrationManage extends BaseEntity {
private String equUseAddress;
/**
* 设备使用地址
* 使用单位地址
*/
@TableField("use_unit_address")
private String useUnitAddress;
......
......@@ -9,6 +9,7 @@ import com.yeejoin.amos.boot.module.jg.api.entity.JgUseRegistration;
import com.yeejoin.amos.boot.module.jg.api.vo.SortVo;
import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
import java.util.Map;
......@@ -69,5 +70,9 @@ public interface JgUseRegistrationMapper extends BaseMapper<JgUseRegistration> {
List<CompanyEquipCountDto> queryForFlowingEquipList();
Map<String,String> getEquTypeByUseRegSeq(@Param("sequenceNbr")String sequenceNbr);
Map<String,String> getEquTypeByVehSeq(@Param("sequenceNbr")String sequenceNbr);
@Select("select name from tz_equipment_category where code=#{code}")
String getEquCategoryNameByCode(String code);
}
......@@ -7,6 +7,8 @@ import com.yeejoin.amos.boot.module.jg.api.entity.JgVehicleInformation;
import com.yeejoin.amos.boot.module.jg.api.vo.SortVo;
import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
import java.util.Map;
......@@ -34,4 +36,7 @@ public interface JgVehicleInformationMapper extends BaseMapper<JgVehicleInformat
List<Map<String, Object>> queryForUnitVesselEquipment(@Param("sequenceNbr") Long sequenceNbr, @Param("records")List<String> records);
Long countVesselCylinderIsUsedNumber(@Param("vehicleId") Long vehicleId, @Param("records") List<String> records);
@Select("select name from tz_equipment_category where code=#{code}")
String getEquCategoryNameByCode(String code);
}
......@@ -36,7 +36,9 @@
ur.create_user_id as createUserId,
ur.next_executor_ids as nextExecutorIds,
ur.next_execute_user_ids as nextExecuteUserIds,
ur.next_task_id as nextTaskId
ur.next_task_id as nextTaskId,
(SELECT group_concat(use_registration_code) from tzs_jg_use_registration_manage where sequence_nbr in (SELECT
certificate_seq from tzs_jg_change_registration_name_eq where name_change_registration_id = ur.sequence_nbr)) as certificateCodes
from tzs_jg_change_registration_name ur
<where>
and ur.is_delete = 0
......
......@@ -13,7 +13,9 @@
tjurm.reg_type AS regType,
DATE_FORMAT(tjurm.reg_date,'%Y-%m-%d') AS regDate,
tjurm.equ_list AS equList,
tjurm.equ_list_code AS equListCode,
tjurm.equ_define AS equDefine,
tjurm.equ_define_code AS equDefineCode,
tjurm.remark AS remark,
tjurm.rec_user_id AS recUserId,
DATE_FORMAT(tjurm.rec_date,'%Y-%m-%d') AS recDate,
......@@ -25,6 +27,7 @@
tjurm.receive_company_code AS receiveCompanyCode,
tjurm.certificate_no AS certificateNo,
tjurm.equ_category AS equCategory,
tjurm.equ_category_code AS equCategoryCode,
tjurm.equ_use_address AS equUseAddress,
tjurm.use_unit_address AS useUnitAddress
</sql>
......@@ -38,6 +41,21 @@
<if test="dto.useUnitCreditCode != null and dto.useUnitCreditCode != ''">
and tjurm.use_unit_credit_code = #{dto.useUnitCreditCode}
</if>
<if test="dto.receiveCompanyCode != null and dto.receiveCompanyCode != '' ">
and tjurm.receive_company_code = #{dto.receiveCompanyCode}
</if>
<if test="dto.equListCode != null and dto.equListCode != ''">
and tjurm.equ_list_code = #{dto.equListCode}
</if>
<if test="dto.equCategoryCode != null and dto.equCategoryCode != ''">
and tjurm.equ_category_code = #{dto.equCategoryCode}
</if>
<if test="dto.equDefineCode != null and dto.equDefineCode != ''">
and tjurm.equ_define_code = #{dto.equDefineCode}
</if>
<if test="dto.certificateStatus != null and dto.certificateStatus != ''">
and tjurm.certificate_status = #{dto.certificateStatus}
</if>
ORDER BY tjurm.rec_date DESC
</where>
</select>
......@@ -85,6 +103,9 @@
<if test="dto.useUnitCreditCodeForSearch != null and dto.useUnitCreditCodeForSearch != ''">
and tjurm.use_unit_credit_code = #{dto.useUnitCreditCodeForSearch}
</if>
<if test="dto.receiveCompanyCode != null and dto.receiveCompanyCode != ''">
and tjurm.receive_company_code = #{dto.receiveCompanyCode}
</if>
-- 企业根据企业统一信用代码匹配
<if test="dto.dataType == 'company' ">
AND tjurm.use_unit_credit_code = #{dto.useUnitCreditCode}
......
......@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.biz.common.bo.ReginParams;
import com.yeejoin.amos.boot.biz.common.controller.BaseController;
import com.yeejoin.amos.boot.module.jg.api.dto.JgChangeRegistrationNameDto;
import com.yeejoin.amos.boot.module.jg.api.dto.JgUseRegistrationManageDto;
import com.yeejoin.amos.boot.module.jg.api.enums.WorkFlowStatusEnum;
import com.yeejoin.amos.boot.module.jg.biz.service.impl.JgChangeRegistrationNameServiceImpl;
import io.swagger.annotations.Api;
......@@ -13,6 +14,7 @@ import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.typroject.tyboot.core.foundation.enumeration.UserType;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import org.typroject.tyboot.core.restful.doc.TycloudOperation;
import org.typroject.tyboot.core.restful.utils.ResponseHelper;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
......@@ -95,7 +97,7 @@ public class JgChangeRegistrationNameController extends BaseController {
jgChangeRegistrationNameService.flowExecute(Long.valueOf(String.valueOf(jgScrapCancelDto.getSequenceNbr())),
jgScrapCancelDto.getInstanceId(),
String.valueOf(map.get("operate")),
String.valueOf(map.get("operate")),
String.valueOf(map.get("remark")),
String.valueOf(map.get("nextTaskId")));
return ResponseHelper.buildResponse("ok");
}
......@@ -131,6 +133,23 @@ public class JgChangeRegistrationNameController extends BaseController {
return ResponseHelper.buildResponse(jgChangeRegistrationNameService.queryBySequenceNbr(sequenceNbr));
}
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/getTableData")
@ApiOperation(httpMethod = "GET", value = "获取", notes = "根据sequenceNbr查询单个详情")
public ResponseModel<Map<String, Object>> getTableData(JgUseRegistrationManageDto dto) {
if (ValidationUtil.isEmpty(dto.getUseUnitCreditCode())) {
// 不传的话取当前登录单位的统一信用代码
dto.setUseUnitCreditCode(getSelectedOrgInfo().getCompany().getCompanyCode());
}
if (!ValidationUtil.isEmpty(dto.getReceiveCompanyCode())){
String[] codes = dto.getReceiveCompanyCode().split("_");
if (!ValidationUtil.isEmpty(codes)){
dto.setReceiveCompanyCode(codes[0]);
}
}
return ResponseHelper.buildResponse(jgChangeRegistrationNameService.getTableData(dto));
}
@TycloudOperation(ApiLevel = UserType.AGENCY)
......
......@@ -2,9 +2,13 @@ package com.yeejoin.amos.boot.module.jg.biz.controller;
import cn.hutool.poi.excel.sax.SheetRidReader;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.api.R;
import com.yeejoin.amos.boot.biz.common.bo.CompanyBo;
import com.yeejoin.amos.boot.biz.common.bo.ReginParams;
import com.yeejoin.amos.boot.module.jg.api.dto.JgUseRegistrationDto;
import com.yeejoin.amos.boot.module.jg.api.entity.JgUseRegistrationManage;
import com.yeejoin.amos.boot.module.jg.api.enums.CompanyTypeEnum;
import com.yeejoin.amos.component.robot.BadRequest;
import io.swagger.annotations.ApiParam;
import org.springframework.util.MultiValueMap;
import org.springframework.web.bind.annotation.RequestMapping;
......@@ -24,7 +28,9 @@ import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import org.typroject.tyboot.core.restful.utils.ResponseHelper;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
import org.springframework.beans.factory.annotation.Autowired;
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.module.jg.api.dto.JgUseRegistrationManageDto;
......@@ -32,7 +38,6 @@ import org.typroject.tyboot.core.restful.doc.TycloudOperation;
import org.typroject.tyboot.core.foundation.enumeration.UserType;
/**
*
* @author system_generator
* @date 2024-07-03
*/
......@@ -91,21 +96,47 @@ public class JgUseRegistrationManageController extends BaseController {
@TycloudOperation(ApiLevel = UserType.AGENCY)
@DeleteMapping(value = "/{sequenceNbr}")
@ApiOperation(httpMethod = "DELETE", value = "根据sequenceNbr删除", notes = "根据sequenceNbr删除")
public ResponseModel<Boolean> deleteBySequenceNbr(HttpServletRequest request, @PathVariable(value = "sequenceNbr") Long sequenceNbr){
public ResponseModel<Boolean> deleteBySequenceNbr(HttpServletRequest request, @PathVariable(value = "sequenceNbr") Long sequenceNbr) {
return ResponseHelper.buildResponse(jgUseRegistrationManageServiceImpl.removeById(sequenceNbr));
}
/**
* 根据sequenceNbr查询
* 根据sequenceNbr查询---使用登记证详情用
*
* @param sequenceNbr 主键
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/detail")
@ApiOperation(httpMethod = "GET", value = "根据sequenceNbr查询---使用登记证详情用", notes = "根据sequenceNbr查询---使用登记证详情用")
public ResponseModel<JgUseRegistrationManage> detail(@RequestParam(value = "sequenceNbr") String sequenceNbr) {
return ResponseHelper.buildResponse(jgUseRegistrationManageServiceImpl.queryDetailBySeq(sequenceNbr));
}
/**
* 根据sequenceNbr查询使用登记证操作流水---使用登记证详情用
*
* @param sequenceNbr 主键
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/{sequenceNbr}")
@ApiOperation(httpMethod = "GET",value = "根据sequenceNbr查询单个", notes = "根据sequenceNbr查询单个")
public ResponseModel<JgUseRegistrationManageDto> selectOne(@PathVariable Long sequenceNbr) {
return ResponseHelper.buildResponse(jgUseRegistrationManageServiceImpl.queryBySeq(sequenceNbr));
@GetMapping(value = "/detail/operationRecord")
@ApiOperation(httpMethod = "GET", value = "根据sequenceNbr查询使用登记证操作流水---使用登记证详情用", notes = "根据sequenceNbr查询使用登记证操作流水---使用登记证详情用")
public ResponseModel<List<Map<String, String>>> operationRecord(@RequestParam(value = "sequenceNbr") String sequenceNbr) {
return ResponseHelper.buildResponse(jgUseRegistrationManageServiceImpl.operationRecord(sequenceNbr));
}
/**
* 根据sequenceNbr查询使用登记证对应设备列表---使用登记证详情用
* 分页接口
* @param sequenceNbr 主键
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/detail/equList")
@ApiOperation(httpMethod = "GET", value = "根据sequenceNbr查询使用登记证对应设备列表---使用登记证详情用", notes = "根据sequenceNbr查询使用登记证对应设备列表---使用登记证详情用")
public ResponseModel<Page<JSONObject>> certificateEquList(@RequestParam(value = "current") int current,
@RequestParam(value = "size") int size,
@RequestParam(value = "sequenceNbr") String sequenceNbr) {
return ResponseHelper.buildResponse(jgUseRegistrationManageServiceImpl.certificateEquList(current,size,sequenceNbr));
}
/**
......@@ -117,7 +148,7 @@ public class JgUseRegistrationManageController extends BaseController {
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/page")
@ApiOperation(httpMethod = "GET",value = "分页查询", notes = "分页查询")
@ApiOperation(httpMethod = "GET", value = "分页查询", notes = "分页查询")
public ResponseModel<Page<JgUseRegistrationManageDto>> queryForPage(JgUseRegistrationManageDto dto,
@RequestParam(value = "sort", required = false) String sort,
@RequestParam(value = "current") int current,
......@@ -134,45 +165,53 @@ public class JgUseRegistrationManageController extends BaseController {
dto.setDataType(BaseController.COMPANY_TYPE_SUPERVISION);
dto.setReceiveCompanyCode(info.getCompany().getCompanyCode());
}
return ResponseHelper.buildResponse(jgUseRegistrationManageServiceImpl.queryForJgUseRegistrationManagePage(page,dto,sort));
return ResponseHelper.buildResponse(jgUseRegistrationManageServiceImpl.queryForJgUseRegistrationManagePage(page, dto, sort));
}
/**
* 按照单位统一代码查询当前单位下的证
*
* @param dto dto中的使用单位统一代码(useUnitCreditCode) 非必填,前端不传的话取当前登录单位的统一信用代码 ,有值的话查询该单位的所有证
* @return 证的列表
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/list")
@ApiOperation(httpMethod = "GET",value = "按照单位统一代码查询当前单位下的证", notes = "按照单位统一代码查询当前单位下的证")
@ApiOperation(httpMethod = "GET", value = "按照单位统一代码查询当前单位下的证", notes = "按照单位统一代码查询当前单位下的证")
public ResponseModel<List<JgUseRegistrationManageDto>> queryByUseUnitCreditCode(JgUseRegistrationManageDto dto) {
if (ValidationUtil.isEmpty(dto.getUseUnitCreditCode())){
CompanyBo company = getSelectedOrgInfo().getCompany();
if (company.getLevel().equals(BaseController.COMPANY_TYPE_COMPANY)) {
if (ValidationUtil.isEmpty(dto.getUseUnitCreditCode())) {
// 不传的话取当前登录单位的统一信用代码
dto.setUseUnitCreditCode(getSelectedOrgInfo().getCompany().getCompanyCode());
dto.setUseUnitCreditCode(company.getCompanyCode());
}
} else {
dto.setReceiveCompanyCode(company.getCompanyCode());
}
return ResponseHelper.buildResponse(jgUseRegistrationManageServiceImpl.queryByUseUnitCreditCode(dto));
}
/**
* 根据证的sequenceNbr 查询证下面的所有设备
*
* @param sequenceNbr 证的sequenceNbr
* @return 证下的所有设备
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/queryEquByCertificateSeq")
@ApiOperation(httpMethod = "GET",value = "根据证的sequenceNbr 查询证下面的所有设备", notes = "根据证的sequenceNbr 查询证下面的所有设备")
@ApiOperation(httpMethod = "GET", value = "根据证的sequenceNbr 查询证下面的所有设备", notes = "根据证的sequenceNbr 查询证下面的所有设备")
public ResponseModel<List<JSONObject>> queryEquByCertificateSeq(Long sequenceNbr) {
return ResponseHelper.buildResponse(jgUseRegistrationManageServiceImpl.queryEquByCertificateSeq(sequenceNbr));
}
/**
* 根据证的sequenceNbr 批量查询证下面的所有设备
*
* @param sequenceNbrs 证的sequenceNbr集合
* @return 证下的所有设备
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/queryEquByCertificateSeqList")
@ApiOperation(httpMethod = "GET",value = "根据证的sequenceNbr 批量查询证下面的所有设备", notes = "根据证的sequenceNbr 批量查询证下面的所有设备")
@ApiOperation(httpMethod = "GET", value = "根据证的sequenceNbr 批量查询证下面的所有设备", notes = "根据证的sequenceNbr 批量查询证下面的所有设备")
public ResponseModel<List<JSONObject>> queryEquByCertificateSeqList(@RequestParam String sequenceNbrs) {
List<Long> collect = Arrays.stream(sequenceNbrs.split(","))
.map(Long::parseLong)
......@@ -181,25 +220,22 @@ public class JgUseRegistrationManageController extends BaseController {
}
/**
* 根据证的sequenceNbrs 批量查询证下面的所有设备
* 根据证的sequenceNbrs 分页查询证下面的所有设备
*
* @param current 非必填,不填不分页,展示全部
* @param size 非必填,不填不分页,展示全部
* @param paramMap **仅仅支持** studio平台传参类似&certificateSeqs[0]=1809032149396975618&certificateSeqs[1]=1809032151141806081
* 如需其他需求使用上面的接口查询
* @return
* @param sequenceNbrs 证的sequenceNbrs
* @return 分页结果
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/queryEquByCertificateSeqs")
@ApiOperation(httpMethod = "GET",value = "根据证的sequenceNbr 批量查询证下面的所有设备", notes = "根据证的sequenceNbr 批量查询证下面的所有设备")
public ResponseModel<Page<JSONObject>> queryEquByCertificateSeqList( @RequestParam(value = "current") int current,
@ApiOperation(httpMethod = "GET", value = "根据证的sequenceNbr 批量查询证下面的所有设备", notes = "根据证的sequenceNbr 批量查询证下面的所有设备")
public ResponseModel<Page<JSONObject>> queryEquByCertificateSeqList(@RequestParam(value = "current") int current,
@RequestParam(value = "size") int size,
@RequestParam MultiValueMap<String, String> paramMap) {
List<Long> certificateSeqs = new ArrayList<>();
paramMap.forEach((key, value) -> {
if (key.startsWith("certificateSeqs[")) {
value.forEach(val -> certificateSeqs.add(Long.parseLong(val)));
}
});
return ResponseHelper.buildResponse(jgUseRegistrationManageServiceImpl.queryEquForPageByCertificateSeqList(certificateSeqs,current,size));
@RequestParam(value = "sequenceNbrs") String sequenceNbrs) {
List<Long> collect = Arrays.stream(sequenceNbrs.split(","))
.map(Long::parseLong)
.collect(Collectors.toList());
return ResponseHelper.buildResponse(jgUseRegistrationManageServiceImpl.queryEquForPageByCertificateSeqList(collect, current, size));
}
}
......@@ -2049,7 +2049,7 @@ public class CommonServiceImpl implements ICommonService {
} catch (ParseException e) {
log.error("日期转换失败:", e);
}
String equCode = Optional.ofNullable(equType.get("equDefine")).orElse(equType.get("equCategory"));
String equCode = Optional.ofNullable(equType.get("equCategoryCode")).orElse(equType.get("equDefineCode"));
String registrationCode = equCode + receiveCompanyCode + ym;
ResponseModel<String> responseModel = tzsServiceFeignClient.deviceRegistrationCode(registrationCode);
return responseModel.getResult();
......
......@@ -3,6 +3,7 @@ package com.yeejoin.amos.boot.module.jg.biz.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import com.alibaba.fastjson.JSON;
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;
......@@ -16,16 +17,23 @@ import com.yeejoin.amos.boot.module.jg.api.entity.*;
import com.yeejoin.amos.boot.module.jg.api.enums.BusinessTypeEnum;
import com.yeejoin.amos.boot.module.jg.api.enums.WorkFlowStatusEnum;
import com.yeejoin.amos.boot.module.jg.api.mapper.*;
import com.yeejoin.amos.boot.module.jg.api.service.IJgCertificateChangeRecordEqService;
import com.yeejoin.amos.boot.module.jg.api.service.IJgChangeRegistrationNameService;
import com.yeejoin.amos.boot.module.jg.api.service.IJgRegistrationHistoryService;
import com.yeejoin.amos.boot.module.jg.api.vo.SortVo;
import com.yeejoin.amos.boot.module.jg.biz.feign.TzsServiceFeignClient;
import com.yeejoin.amos.boot.module.jg.biz.service.ICmWorkflowService;
import com.yeejoin.amos.boot.module.jg.flc.api.fegin.WorkFlowFeignService;
import com.yeejoin.amos.boot.module.ymt.api.common.DateUtils;
import com.yeejoin.amos.boot.module.ymt.api.common.StringUtil;
import com.yeejoin.amos.boot.module.ymt.api.entity.IdxBizJgOtherInfo;
import com.yeejoin.amos.boot.module.ymt.api.entity.TzBaseEnterpriseInfo;
import com.yeejoin.amos.boot.module.ymt.api.entity.UseInfo;
import com.yeejoin.amos.boot.module.ymt.api.enums.ApplicationFormTypeEnum;
import com.yeejoin.amos.boot.module.ymt.api.enums.FlowStatusEnum;
import com.yeejoin.amos.boot.module.ymt.api.mapper.TzBaseEnterpriseInfoMapper;
import com.yeejoin.amos.boot.module.ymt.api.mapper.TzsUserInfoMapper;
import com.yeejoin.amos.boot.module.ymt.api.mapper.UseInfoMapper;
import com.yeejoin.amos.boot.module.ymt.flc.api.entity.RegUnitInfo;
import com.yeejoin.amos.boot.module.ymt.flc.api.feign.AccessFeignService;
import com.yeejoin.amos.boot.module.ymt.flc.api.mapper.RegUnitInfoMapper;
......@@ -47,11 +55,13 @@ import org.springframework.util.CollectionUtils;
import org.springframework.util.ObjectUtils;
import org.springframework.util.StringUtils;
import org.typroject.tyboot.core.foundation.context.RequestContext;
import org.typroject.tyboot.core.foundation.utils.Bean;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import org.typroject.tyboot.core.rdbms.service.BaseService;
import org.typroject.tyboot.core.restful.exception.instance.BadRequest;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
......@@ -116,12 +126,26 @@ public class JgChangeRegistrationNameServiceImpl extends BaseService<JgChangeReg
@Autowired
TzBaseEnterpriseInfoMapper baseEnterpriseInfoMapper;
private static String template = "来自企业(%s)的业务办理,【申请单号:%s】";
public final static String CHANGE_NAME = "更名变更";
public static String JG_COMAPNY_TYPE = "监管机构";
private static String template = "%s发起更名变更登记业务申请,【申请单号:%s】";
@Autowired
private JgRegistrationHistoryMapper jgRegistrationHistoryMapper;
@Autowired
private JgRegistrationHistoryServiceImpl jgRegistrationHistoryService;
@Autowired
private JgUseRegistrationManageServiceImpl jgUseRegistrationManageService;
@Autowired
private UseInfoMapper useInfoMapper;
@Autowired
private JgCertificateChangeRecordServiceImpl jgCertificateChangeRecordService;
@Autowired
private JgCertificateChangeRecordEqServiceImpl jgCertificateChangeRecordEqService;
@Transactional(rollbackFor = Exception.class)
public List<JgChangeRegistrationName> save2(String submitType, JSONObject requestParam) {
......@@ -129,6 +153,63 @@ public class JgChangeRegistrationNameServiceImpl extends BaseService<JgChangeReg
return Collections.singletonList(this.save(submitType, jgRegistrationInfoMap));
}
public void saveJgChangeRegistrationNameEq(Long registrationId, Object object, ReginParams reginParams) {
JSONArray objects = JSONObject.parseArray(object.toString());
ArrayList<JgChangeRegistrationNameEq> jgChangeRegistrationNameEqs = new ArrayList<>();
if (!ObjectUtils.isEmpty(objects)) {
List<JgUseRegistrationManageDto> jgUseRegistrationManageDtos = objects.toJavaList(JgUseRegistrationManageDto.class);
List<Long> collect = jgUseRegistrationManageDtos.stream().map(JgUseRegistrationManageDto::getSequenceNbr).collect(Collectors.toList());
List<JSONObject> jsonObjects = jgUseRegistrationManageService.queryEquByCertificateSeqList(collect);
jgUseRegistrationManageDtos.forEach(item -> {
JgChangeRegistrationNameEq jgChangeRegistrationNameEq = new JgChangeRegistrationNameEq();
jgChangeRegistrationNameEq.setNameChangeRegistrationId(registrationId.toString());
jgChangeRegistrationNameEq.setCreateDate(new Date());
jgChangeRegistrationNameEq.setCreateUserId(reginParams.getUserModel().getUserId());
jgChangeRegistrationNameEq.setCreateUserName(reginParams.getUserModel().getRealName());
jgChangeRegistrationNameEq.setCertificateSeq(item.getSequenceNbr().toString());
List<JSONObject> equipInfo = jsonObjects.stream().filter(a -> item.getUseRegistrationCode().equals(a.get("USE_ORG_CODE"))).collect(Collectors.toList());
jgChangeRegistrationNameEq.setEquipInfo(JSONObject.toJSONString(equipInfo));
jgChangeRegistrationNameEq.setIsInvalid("0");
jgChangeRegistrationNameEqs.add(jgChangeRegistrationNameEq);
});
}
if (!ObjectUtils.isEmpty(jgChangeRegistrationNameEqs)) {
LambdaQueryWrapper<JgChangeRegistrationNameEq> lambda = new QueryWrapper<JgChangeRegistrationNameEq>().lambda();
lambda.eq(JgChangeRegistrationNameEq::getNameChangeRegistrationId, registrationId);
jgChangeRegistrationNameEqService.remove(lambda);
jgChangeRegistrationNameEqService.saveBatch(jgChangeRegistrationNameEqs);
}
}
public void updateHistory(Map<String, JSONObject> map, String currentDocumentId) {
JgRegistrationHistory jgRegistrationHistory = new JgRegistrationHistory();
LambdaQueryWrapper<JgRegistrationHistory> lambda = new QueryWrapper<JgRegistrationHistory>().lambda();
lambda.eq(JgRegistrationHistory::getCurrentDocumentId, currentDocumentId);
lambda.eq(JgRegistrationHistory::getRegistrationClass, CHANGE_NAME);
Integer integer = jgRegistrationHistoryService.getBaseMapper().selectCount(lambda);
if (integer > 0) {
jgRegistrationHistory.setChangeData(JSON.toJSONString(map));
jgRegistrationHistoryService.update(jgRegistrationHistory, lambda);
} else {
jgRegistrationHistory.setChangeData(JSON.toJSONString(map));
jgRegistrationHistory.setStatus("new");
jgRegistrationHistory.setRegistrationClass(CHANGE_NAME);
jgRegistrationHistory.setCurrentDocumentId(currentDocumentId);
jgRegistrationHistoryService.save(jgRegistrationHistory);
}
}
public void updateEsData(List<String> ids, JgChangeRegistrationName jgChangeRegistrationName) {
// 更新es
HashMap<String, Map<String, Object>> objMap = new HashMap<>();
ids.forEach(item -> {
HashMap<String, Object> param = new HashMap<>();
param.put("USE_UNIT_NAME", jgChangeRegistrationName.getNewUseUnitName());
objMap.put(item, param);
});
tzsServiceFeignClient.commonUpdateEsDataByIds(objMap);
}
public JgChangeRegistrationName save(String submitType, Map<String, JSONObject> jgRegistrationInfoMap) {
ReginParams reginParams = JSON.parseObject(redisUtils.get(RedisKey.buildReginKey(RequestContext.getExeUserId(), RequestContext.getToken())).toString(), ReginParams.class);
......@@ -187,6 +268,7 @@ public class JgChangeRegistrationNameServiceImpl extends BaseService<JgChangeReg
dto.setNextTaskId(nextTaskId);
dto.setNextExecuteUserIds(nextUserIds);
dto.setAuditStatus(String.valueOf(WorkFlowStatusEnum.UNIT_RENAME_RECEIVE.getPass()));
dto.setApplyDate(new Date());
} else {
dto.setAuditStatus(String.valueOf(WorkFlowStatusEnum.UNIT_RENAME_SUBMIT.getPass()));
}
......@@ -195,6 +277,12 @@ public class JgChangeRegistrationNameServiceImpl extends BaseService<JgChangeReg
dto.setCreateUserId(RequestContext.getExeUserId());
dto.setCreateUserName(reginParams.getUserModel().getRealName());
this.save(dto);
// 新增业务关联设备表
if (!ObjectUtils.isEmpty(jgRegistrationInfo) && !ObjectUtils.isEmpty(jgRegistrationInfo.get("dataList"))) {
saveJgChangeRegistrationNameEq(dto.getSequenceNbr(), jgRegistrationInfo.get("dataList"), reginParams);
}
// 保存历史数据
updateHistory(jgRegistrationInfoMap, dto.getSequenceNbr().toString());
// 创建代办
this.createTaskModel(dto, taskName[0], submitType, nextUserIds);
if(StringUtil.isNotEmpty(dto.getInstanceId())){
......@@ -266,7 +354,7 @@ public class JgChangeRegistrationNameServiceImpl extends BaseService<JgChangeReg
dto.setChangeCertificate(null);
taskModelDto.setModel(dto);
//摘要 按原有规则组装
taskModelDto.setTaskContent(buildTaskContent(dto) + "待提交");
taskModelDto.setTaskContent(buildTaskContent(dto));
//申请单号
taskModelDto.setTaskCode(dto.getApplyNo());
//业务类型枚举code值
......@@ -288,7 +376,7 @@ public class JgChangeRegistrationNameServiceImpl extends BaseService<JgChangeReg
* @return 摘要
*/
private String buildTaskContent(JgChangeRegistrationName dto) {
return String.format(template, dto.getUseUnitCreditCode(), dto.getApplyNo());
return String.format(template, dto.getCreateUserName(), dto.getApplyNo());
}
......@@ -331,6 +419,7 @@ public class JgChangeRegistrationNameServiceImpl extends BaseService<JgChangeReg
jgChangeRegistrationName.setNextTaskId(nextTaskId);
jgChangeRegistrationName.setNextExecuteUserIds(nextUserIds);
jgChangeRegistrationName.setAuditStatus(WorkFlowStatusEnum.UNIT_RENAME_RECEIVE.getPass());
jgChangeRegistrationName.setApplyDate(new Date());
// 创建待办
createTaskModel(jgChangeRegistrationName, taskName, "1", nextUserIds);
} else {
......@@ -681,56 +770,139 @@ public class JgChangeRegistrationNameServiceImpl extends BaseService<JgChangeReg
}
public void updateInfoOther(JgChangeRegistrationName jgChangeRegistrationName) {
LambdaQueryWrapper<JgChangeRegistrationNameEq> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(JgChangeRegistrationNameEq::getNameChangeRegistrationId, jgChangeRegistrationName.getSequenceNbr());
List<String> collect = jgChangeRegistrationNameEqService.list(wrapper).stream().map(JgChangeRegistrationNameEq::getEquId).collect(Collectors.toList());
if (CollUtil.isNotEmpty(collect)) {
LambdaUpdateWrapper<JgChangeRegistrationReformEq> updateWrapper1 = new LambdaUpdateWrapper<>();
updateWrapper1.in(JgChangeRegistrationReformEq::getEquId, collect);
updateWrapper1.ne(JgChangeRegistrationReformEq::getEquipTransferId, jgChangeRegistrationName.getSequenceNbr());
JgChangeRegistrationReformEq jgChangeRegistrationReformEq = new JgChangeRegistrationReformEq();
jgChangeRegistrationReformEq.setIsInvalid(Boolean.TRUE);
jgChangeRegistrationReformEqMapper.update(jgChangeRegistrationReformEq, updateWrapper1);
LambdaUpdateWrapper<JgChangeRegistrationTransferEq> updateWrapper2 = new LambdaUpdateWrapper<>();
updateWrapper2.in(JgChangeRegistrationTransferEq::getEquId, collect);
updateWrapper2.ne(JgChangeRegistrationTransferEq::getEquipTransferId, jgChangeRegistrationName.getSequenceNbr());
JgChangeRegistrationTransferEq jgChangeRegistrationTransferEq = new JgChangeRegistrationTransferEq();
jgChangeRegistrationReformEq.setIsInvalid(Boolean.TRUE);
jgChangeRegistrationTransferEqMapper.update(jgChangeRegistrationTransferEq, updateWrapper2);
LambdaUpdateWrapper<JgUseRegistrationEq> updateWrapper3 = new LambdaUpdateWrapper<>();
updateWrapper3.in(JgUseRegistrationEq::getEquId, collect);
updateWrapper3.ne(JgUseRegistrationEq::getEquipTransferId, jgChangeRegistrationName.getSequenceNbr());
JgUseRegistrationEq jgUseRegistrationEq = new JgUseRegistrationEq();
jgUseRegistrationEq.setIsInvalid(Boolean.TRUE);
jgUseRegistrationEqMapper.update(jgUseRegistrationEq, updateWrapper3);
LambdaUpdateWrapper<JgChangeRegistrationUnitEq> updateWrapper4 = new LambdaUpdateWrapper<>();
updateWrapper4.in(JgChangeRegistrationUnitEq::getEquId, collect);
updateWrapper4.ne(JgChangeRegistrationUnitEq::getUnitChangeRegistrationId, jgChangeRegistrationName.getSequenceNbr());
JgChangeRegistrationUnitEq jgChangeRegistrationUnitEq = new JgChangeRegistrationUnitEq();
jgChangeRegistrationUnitEq.setIsInvalid("1");
jgChangeRegistrationUnitEqMapper.update(jgChangeRegistrationUnitEq, updateWrapper4);
LambdaUpdateWrapper<JgChangeRegistrationNameEq> updateWrapper5 = new LambdaUpdateWrapper<>();
updateWrapper5.in(JgChangeRegistrationNameEq::getEquId, collect);
updateWrapper5.ne(JgChangeRegistrationNameEq::getNameChangeRegistrationId, jgChangeRegistrationName.getSequenceNbr());
JgChangeRegistrationNameEq jgChangeRegistrationNameEq = new JgChangeRegistrationNameEq();
jgChangeRegistrationNameEq.setIsInvalid("1");
jgChangeRegistrationNameEqMapper.update(jgChangeRegistrationNameEq, updateWrapper5);
}
// LambdaQueryWrapper<JgChangeRegistrationNameEq> wrapper = new LambdaQueryWrapper<>();
// wrapper.eq(JgChangeRegistrationNameEq::getNameChangeRegistrationId, jgChangeRegistrationName.getSequenceNbr());
// List<String> collect = jgChangeRegistrationNameEqService.list(wrapper).stream().map(JgChangeRegistrationNameEq::getEquId).collect(Collectors.toList());
// if (CollUtil.isNotEmpty(collect)) {
// LambdaUpdateWrapper<JgChangeRegistrationReformEq> updateWrapper1 = new LambdaUpdateWrapper<>();
// updateWrapper1.in(JgChangeRegistrationReformEq::getEquId, collect);
// updateWrapper1.ne(JgChangeRegistrationReformEq::getEquipTransferId, jgChangeRegistrationName.getSequenceNbr());
// JgChangeRegistrationReformEq jgChangeRegistrationReformEq = new JgChangeRegistrationReformEq();
// jgChangeRegistrationReformEq.setIsInvalid(Boolean.TRUE);
// jgChangeRegistrationReformEqMapper.update(jgChangeRegistrationReformEq, updateWrapper1);
//
// LambdaUpdateWrapper<JgChangeRegistrationTransferEq> updateWrapper2 = new LambdaUpdateWrapper<>();
// updateWrapper2.in(JgChangeRegistrationTransferEq::getEquId, collect);
// updateWrapper2.ne(JgChangeRegistrationTransferEq::getEquipTransferId, jgChangeRegistrationName.getSequenceNbr());
// JgChangeRegistrationTransferEq jgChangeRegistrationTransferEq = new JgChangeRegistrationTransferEq();
// jgChangeRegistrationReformEq.setIsInvalid(Boolean.TRUE);
// jgChangeRegistrationTransferEqMapper.update(jgChangeRegistrationTransferEq, updateWrapper2);
//
// LambdaUpdateWrapper<JgUseRegistrationEq> updateWrapper3 = new LambdaUpdateWrapper<>();
// updateWrapper3.in(JgUseRegistrationEq::getEquId, collect);
// updateWrapper3.ne(JgUseRegistrationEq::getEquipTransferId, jgChangeRegistrationName.getSequenceNbr());
// JgUseRegistrationEq jgUseRegistrationEq = new JgUseRegistrationEq();
// jgUseRegistrationEq.setIsInvalid(Boolean.TRUE);
// jgUseRegistrationEqMapper.update(jgUseRegistrationEq, updateWrapper3);
//
// LambdaUpdateWrapper<JgChangeRegistrationUnitEq> updateWrapper4 = new LambdaUpdateWrapper<>();
// updateWrapper4.in(JgChangeRegistrationUnitEq::getEquId, collect);
// updateWrapper4.ne(JgChangeRegistrationUnitEq::getUnitChangeRegistrationId, jgChangeRegistrationName.getSequenceNbr());
// JgChangeRegistrationUnitEq jgChangeRegistrationUnitEq = new JgChangeRegistrationUnitEq();
// jgChangeRegistrationUnitEq.setIsInvalid("1");
// jgChangeRegistrationUnitEqMapper.update(jgChangeRegistrationUnitEq, updateWrapper4);
//
// LambdaUpdateWrapper<JgChangeRegistrationNameEq> updateWrapper5 = new LambdaUpdateWrapper<>();
// updateWrapper5.in(JgChangeRegistrationNameEq::getEquId, collect);
// updateWrapper5.ne(JgChangeRegistrationNameEq::getNameChangeRegistrationId, jgChangeRegistrationName.getSequenceNbr());
// JgChangeRegistrationNameEq jgChangeRegistrationNameEq = new JgChangeRegistrationNameEq();
// jgChangeRegistrationNameEq.setIsInvalid("1");
// jgChangeRegistrationNameEqMapper.update(jgChangeRegistrationNameEq, updateWrapper5);
// }
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
LambdaUpdateWrapper<RegUnitInfo> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.eq(RegUnitInfo::getUnitCode, jgChangeRegistrationName.getUseUnitCreditCode());
RegUnitInfo regUnitInfo = new RegUnitInfo();
regUnitInfo.setName(jgChangeRegistrationName.getNewUseUnitName());
regUnitInfoMapper.update(regUnitInfo, updateWrapper);
// 修改本次更名登记选择的使用登记证下的设备信息
List<JgChangeRegistrationNameEq> list = jgChangeRegistrationNameEqService.lambdaQuery().eq(JgChangeRegistrationNameEq::getNameChangeRegistrationId, jgChangeRegistrationName.getSequenceNbr()).list();
ArrayList<String> equipIds = new ArrayList<>();
list.forEach(item -> {
if (!ObjectUtils.isEmpty(item.getEquipInfo())) {
JSONArray objects = JSONObject.parseArray(item.getEquipInfo());
objects.forEach(info -> {
JSONObject jsonObject = JSONObject.parseObject(info.toString());
if (jsonObject.containsKey("SEQUENCE_NBR")) {
equipIds.add(jsonObject.get("SEQUENCE_NBR").toString());
}
});
}
});
if (!ObjectUtils.isEmpty(equipIds)) {
LambdaQueryWrapper<UseInfo> lambda = new QueryWrapper<UseInfo>().lambda();
lambda.eq(UseInfo::getUseUnitCreditCode, jgChangeRegistrationName.getUseUnitCreditCode());
lambda.in(UseInfo::getRecord, equipIds);
UseInfo useInfo = new UseInfo();
useInfo.setUseUnitName(jgChangeRegistrationName.getNewUseUnitName());
useInfoMapper.update(useInfo, lambda);
// 修改es中设备信息
updateEsData(equipIds, jgChangeRegistrationName);
}
// 修改证管理信息
List<String> collect = list.stream().map(JgChangeRegistrationNameEq::getCertificateSeq).collect(Collectors.toList());
LambdaQueryWrapper<JgUseRegistrationManage> lambda = new QueryWrapper<JgUseRegistrationManage>().lambda();
lambda.in(JgUseRegistrationManage::getSequenceNbr, collect);
JgUseRegistrationManage jgUseRegistrationManage = new JgUseRegistrationManage();
jgUseRegistrationManage.setUseUnitName(jgChangeRegistrationName.getNewUseUnitName());
jgUseRegistrationManageService.update(jgUseRegistrationManage, lambda);
// 业务流水生成
JgRegistrationHistory jgRegistrationHistory = jgRegistrationHistoryService.lambdaQuery().eq(JgRegistrationHistory::getCurrentDocumentId, jgChangeRegistrationName.getSequenceNbr()).one();
JSONObject jsonObject = JSONObject.parseObject(jgRegistrationHistory.getChangeData());
JSONObject dataList = JSONObject.parseObject(jsonObject.get("jgRegistrationInfo").toString());
JSONArray objects = JSONObject.parseArray(dataList.get("dataList").toString());
ArrayList<JgCertificateChangeRecordEq> jgCertificateChangeRecordEqs = new ArrayList<>();
objects.forEach(useRegistration -> {
JSONObject object = JSONObject.parseObject(useRegistration.toString());
JgCertificateChangeRecord jgCertificateChangeRecord = new JgCertificateChangeRecord();
jgCertificateChangeRecord.setApplyNo(jgChangeRegistrationName.getApplyNo());
jgCertificateChangeRecord.setReceiveOrgName(jgChangeRegistrationName.getReceiveOrgName());
jgCertificateChangeRecord.setAuditPassDate(new Date());
jgCertificateChangeRecord.setRegType(CHANGE_NAME);
jgCertificateChangeRecord.setRegDate(jgChangeRegistrationName.getApplyDate());
jgCertificateChangeRecord.setChangeContent(jgChangeRegistrationName.getCreateUserName() + "办理了【" + CHANGE_NAME + "】," + "单号【" + jgChangeRegistrationName.getApplyNo() +
"】,原" + jgChangeRegistrationName.getUseUnitName() + "变更为" + jgChangeRegistrationName.getNewUseUnitName() + ",办理日期" + sdf.format(jgChangeRegistrationName.getAuditPassDate()));
jgCertificateChangeRecord.setRecUserId(jgChangeRegistrationName.getRecUserId());
jgCertificateChangeRecord.setRecDate(new Date());
jgCertificateChangeRecord.setCreateDate(new Date());
jgCertificateChangeRecord.setCreateUserId(jgChangeRegistrationName.getCreateUserId());
jgCertificateChangeRecord.setUseRegistrationCode(!ObjectUtils.isEmpty(object.get("useRegistrationCode")) ? object.get("useRegistrationCode").toString() : null);
jgCertificateChangeRecord.setCertificateNo(!ObjectUtils.isEmpty(object.get("certificateNo")) ? object.get("certificateNo").toString() : null);
jgCertificateChangeRecord.setUseUnitCreditCode(jgChangeRegistrationName.getUseUnitCreditCode());
jgCertificateChangeRecord.setUseUnitName(jgChangeRegistrationName.getUseUnitName());
jgCertificateChangeRecord.setEquCategory(!ObjectUtils.isEmpty(object.get("equCategoryCode")) ? object.get("equCategoryCode").toString() : null);
jgCertificateChangeRecord.setReceiveCompanyCode(jgChangeRegistrationName.getReceiveOrgCode());
// 保存证流水信息
jgCertificateChangeRecordService.save(jgCertificateChangeRecord);
// 生成证下设备流水信息
List<JgChangeRegistrationNameEq> record = list.stream().filter(a -> a.getCertificateSeq().equals(object.get("sequenceNbr"))).collect(Collectors.toList());
record.forEach(item -> {
if (!ObjectUtils.isEmpty(item.getEquipInfo())) {
JSONArray equList = JSONObject.parseArray(item.getEquipInfo());
equList.forEach(info -> {
JSONObject equInfo = JSONObject.parseObject(info.toString());
JgCertificateChangeRecordEq jgCertificateChangeRecordEq = new JgCertificateChangeRecordEq();
jgCertificateChangeRecordEq.setEquId(equInfo.get("SEQUENCE_NBR").toString());
jgCertificateChangeRecordEq.setChangeRecordId(jgCertificateChangeRecord.getSequenceNbr().toString());
jgCertificateChangeRecordEq.setProductCode(equInfo.get("FACTORY_NUM").toString());
jgCertificateChangeRecordEqs.add(jgCertificateChangeRecordEq);
});
}
});
});
// 保存设备流水信息
jgCertificateChangeRecordEqService.saveBatch(jgCertificateChangeRecordEqs);
// 当企业下所有使用登记证单位信息都改为最新的时候再去修改系统中单位信息
Integer count = jgUseRegistrationManageService.lambdaQuery().eq(JgUseRegistrationManage::getUseUnitCreditCode, jgChangeRegistrationName.getUseUnitCreditCode()).eq(JgUseRegistrationManage::getUseUnitName, jgChangeRegistrationName.getUseUnitName()).count();
if (count == 0) {
// 修改企业信息
LambdaUpdateWrapper<TzBaseEnterpriseInfo> updateWrapper2 = new LambdaUpdateWrapper<>();
updateWrapper2.eq(TzBaseEnterpriseInfo::getUseCode, jgChangeRegistrationName.getUseUnitCreditCode());
TzBaseEnterpriseInfo tzBaseEnterpriseInfo = new TzBaseEnterpriseInfo();
regUnitInfo.setName(jgChangeRegistrationName.getNewUseUnitName());
tzBaseEnterpriseInfo.setUseUnit(jgChangeRegistrationName.getNewUseUnitName());
tzBaseEnterpriseInfoMapper.update(tzBaseEnterpriseInfo, updateWrapper2);
//修改平台机构名称
try {
......@@ -740,6 +912,15 @@ public class JgChangeRegistrationNameServiceImpl extends BaseService<JgChangeReg
}
}
}
public Map<String, Object> getTableData(JgUseRegistrationManageDto dto) {
HashMap<String, Object> data = new HashMap<>();
List<JgUseRegistrationManageDto> jgUseRegistrationManageDtos = jgUseRegistrationManageService.queryByUseUnitCreditCode(dto);
data.put("dataList", jgUseRegistrationManageDtos);
return data;
}
public Map<String, Object> queryBySequenceNbr(Long sequenceNbr) {
ReginParams reginParams = JSON.parseObject(redisUtils.get(RedisKey.buildReginKey(RequestContext.getExeUserId(), RequestContext.getToken())).toString(), ReginParams.class);
Map<String, Object> resultMap = accessFeignService.getData(reginParams.getCompany().getCompanyCode()).getResult();
......@@ -766,6 +947,13 @@ public class JgChangeRegistrationNameServiceImpl extends BaseService<JgChangeReg
BeanUtil.copyProperties(jgChangeRegistrationName, dtoMap);
dtoMap.put("changeCertificate", JSON.parseArray(jgChangeRegistrationName.getChangeCertificate()));
dtoMap.put("otherAccessories", JSON.parseArray(jgChangeRegistrationName.getOtherAccessories()));
// 查询历史数据中选择的使用登记证信息
JgRegistrationHistory jgRegistrationHistory = jgRegistrationHistoryService.lambdaQuery().eq(JgRegistrationHistory::getCurrentDocumentId, sequenceNbr).one();
if (!ObjectUtils.isEmpty(jgRegistrationHistory)) {
JSONObject jsonObject = JSONObject.parseObject(jgRegistrationHistory.getChangeData());
JSONObject dataList = JSONObject.parseObject(jsonObject.get("jgRegistrationInfo").toString());
dtoMap.put("dataList", dataList.get("dataList"));
}
map.put("jgRegistrationInfo", dtoMap);
return map;
}
......
......@@ -7,6 +7,7 @@ import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Sequence;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.pagehelper.util.StringUtil;
import com.yeejoin.amos.boot.biz.common.bo.CompanyBo;
......@@ -17,9 +18,7 @@ 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.RedisUtils;
import com.yeejoin.amos.boot.module.jg.api.dto.*;
import com.yeejoin.amos.boot.module.jg.api.entity.JgInstallationNotice;
import com.yeejoin.amos.boot.module.jg.api.entity.JgInstallationNoticeEq;
import com.yeejoin.amos.boot.module.jg.api.entity.JgRegistrationHistory;
import com.yeejoin.amos.boot.module.jg.api.entity.*;
import com.yeejoin.amos.boot.module.jg.api.enums.BusinessTypeEnum;
import com.yeejoin.amos.boot.module.jg.api.enums.CompanyTypeEnum;
import com.yeejoin.amos.boot.module.jg.api.mapper.JgInstallationNoticeEqMapper;
......@@ -76,6 +75,7 @@ import org.typroject.tyboot.core.restful.exception.instance.BadRequest;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
import javax.servlet.http.HttpServletResponse;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.function.Function;
......@@ -137,6 +137,8 @@ public class JgInstallationNoticeServiceImpl extends BaseService<JgInstallationN
@Autowired
AmosRequestContext amosRequestContext;
@Autowired
private Sequence sequence;
@Autowired
CodeUtil codeUtil;
@Autowired
CommonServiceImpl commonServiceImpl;
......@@ -166,6 +168,14 @@ public class JgInstallationNoticeServiceImpl extends BaseService<JgInstallationN
private TzBaseEnterpriseInfoMapper tzBaseEnterpriseInfoMapper;
@Autowired
private JgRegistrationHistoryMapper jgRegistrationHistoryMapper;
@Autowired
JgCertificateChangeRecordServiceImpl certificateChangeRecordService;
@Autowired
JgCertificateChangeRecordEqServiceImpl certificateChangeRecordEqService;
@Autowired
private IdxBizJgFactoryInfoServiceImpl idxBizJgFactoryInfoService;
/**
* 根据sequenceNbr查询
......@@ -1058,6 +1068,36 @@ public class JgInstallationNoticeServiceImpl extends BaseService<JgInstallationN
taskMap.put("model", taskMessageDto);
TaskV2Model taskV2Model1 = commonService.updateTaskModel(taskMap);
// 生成一条tzs_jg_certificate_change_record记录
JgCertificateChangeRecord jgCertificateChangeRecord = new JgCertificateChangeRecord();
jgCertificateChangeRecord.setApplyNo(jgInstallationNotice.getApplyNo());
jgCertificateChangeRecord.setReceiveOrgName(jgInstallationNotice.getReceiveOrgName());
jgCertificateChangeRecord.setAuditPassDate(new Date());
jgCertificateChangeRecord.setRegType(BusinessTypeEnum.JG_INSTALLATION_NOTIFICATION.getName());
jgCertificateChangeRecord.setRegDate(jgInstallationNotice.getInstallStartDate());
jgCertificateChangeRecord.setChangeContent(this.buildRecordContent(jgInstallationNotice));//变更内容
jgCertificateChangeRecord.setUseRegistrationCode(registrationCode);//使用登记编号
jgCertificateChangeRecord.setReceiveCompanyCode(jgInstallationNotice.getReceiveCompanyOrgCode());//接收机构公司代码
jgCertificateChangeRecord.setCertificateNo("");//登记证书唯一码
jgCertificateChangeRecord.setUseUnitCreditCode(jgInstallationNotice.getUseUnitCreditCode());//使用单位统一信用代码
jgCertificateChangeRecord.setUseUnitName(jgInstallationNotice.getUseUnitName());//使用单位名称
jgCertificateChangeRecord.setEquCategory(idxBizJgRegisterInfo.getEquCategory());//设备类别编码
jgCertificateChangeRecord.setCreateDate(new Date());
jgCertificateChangeRecord.setCreateUserId(jgInstallationNotice.getCreateUserId());
jgCertificateChangeRecord.setSequenceNbr(sequence.nextId());
certificateChangeRecordService.save(jgCertificateChangeRecord);
// 查询设备制造信息
LambdaQueryWrapper<IdxBizJgFactoryInfo> factoryInfoWrapper = new LambdaQueryWrapper<>();
factoryInfoWrapper.eq(IdxBizJgFactoryInfo::getRecord, jgRelationEquip.getEquId());
IdxBizJgFactoryInfo idxBizJgFactoryInfo = idxBizJgFactoryInfoService.getOne(factoryInfoWrapper);
// 生成tzs_jg_certificate_change_record_eq记录
JgCertificateChangeRecordEq changeRecordEq = new JgCertificateChangeRecordEq();
changeRecordEq.setChangeRecordId(jgCertificateChangeRecord.getSequenceNbr().toString());//登记证记录主键
changeRecordEq.setEquId(jgRelationEquip.getEquId());//设备主键
changeRecordEq.setProductCode(idxBizJgFactoryInfo.getFactoryNum());
certificateChangeRecordEqService.save(changeRecordEq);
jgResumeInfoService.createWithModel(JgResumeInfoDto.builder()
.applyNo(jgInstallationNotice.getApplyNo())
.businessType(BusinessTypeEnum.JG_INSTALLATION_NOTIFICATION.getName())
......@@ -1180,6 +1220,12 @@ public class JgInstallationNoticeServiceImpl extends BaseService<JgInstallationN
tzsServiceFeignClient.commonUpdateEsDataByIds(objMap);
}
private String buildRecordContent(JgInstallationNotice obj) {
//张三办理了【单位变更】 ,单号【DWBG202407050001】,办理日期2024-07-05
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd");
return obj.getCreateUserName() + "办理了【"+BusinessTypeEnum.JG_INSTALLATION_NOTIFICATION.getName()+"】,单号【"
+ obj.getApplyNo() + "】,申请日期" + simpleDateFormat.format(obj.getCreateDate());
}
/**
* 系统类型的code 自动生成设备代码
......
......@@ -5,10 +5,7 @@ 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.dto.UseFlagParamDto;
import com.yeejoin.amos.boot.module.jg.api.entity.JgUseRegistration;
import com.yeejoin.amos.boot.module.jg.api.entity.JgUseRegistrationEq;
import com.yeejoin.amos.boot.module.jg.api.entity.JgUseRegistrationManage;
import com.yeejoin.amos.boot.module.jg.api.entity.JgVehicleInformation;
import com.yeejoin.amos.boot.module.jg.api.entity.*;
import com.yeejoin.amos.boot.module.jg.api.enums.BusinessTypeEnum;
import com.yeejoin.amos.boot.module.jg.api.mapper.*;
import com.yeejoin.amos.boot.module.jg.api.service.IJgUseRegistrationManageService;
......@@ -18,6 +15,7 @@ import com.yeejoin.amos.boot.module.ymt.api.entity.EquipmentCategory;
import com.yeejoin.amos.boot.module.ymt.api.entity.IdxBizJgFactoryInfo;
import com.yeejoin.amos.boot.module.ymt.api.entity.IdxBizJgRegisterInfo;
import com.yeejoin.amos.boot.module.ymt.api.entity.IdxBizJgUseInfo;
import com.yeejoin.amos.feign.systemctl.Systemctl;
import org.apache.commons.collections.CollectionUtils;
import org.apache.lucene.queryparser.classic.QueryParser;
import org.elasticsearch.action.search.SearchRequest;
......@@ -38,7 +36,9 @@ 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.restful.exception.instance.BadRequest;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
......@@ -75,6 +75,9 @@ public class JgUseRegistrationManageServiceImpl extends BaseService<JgUseRegistr
@Autowired
private JgVehicleInformationEqMapper jgVehicleInformationEqMapper;
@Autowired
private JgCertificateChangeRecordServiceImpl jgCertificateChangeRecordService;
/**
* 将已经通过使用登记审批的证信息录入到 jg-use-registration-manage 表中
*/
......@@ -84,8 +87,11 @@ public class JgUseRegistrationManageServiceImpl extends BaseService<JgUseRegistr
// 使用登记表中已经审批通过的单子
List<JgUseRegistration> jgUseRegistrations = jgUseRegistrationMapper.selectList(new LambdaQueryWrapper<JgUseRegistration>()
.eq(JgUseRegistration::getStatus, "已完成"));
.eq(JgUseRegistration::getStatus, "已完成")
.eq(JgUseRegistration::getIsDelete, false));
for (JgUseRegistration useRegistration : jgUseRegistrations) {
// 使用单位信息
Map<String, Object> enterpriseInfo = commonServiceImpl.getEnterpriseInfo(useRegistration.getUseUnitCreditCode());
// 设备使用地址
String fullAddress = "";
// 设备种类/类别/品种
......@@ -136,6 +142,7 @@ public class JgUseRegistrationManageServiceImpl extends BaseService<JgUseRegistr
jgUseRegistrationManage.setCreateUserId(useRegistration.getCreateUserId());
jgUseRegistrationManage.setCreateDate(useRegistration.getRecDate());
jgUseRegistrationManage.setEquUseAddress(fullAddress);
jgUseRegistrationManage.setUseUnitAddress(!ValidationUtil.isEmpty(enterpriseInfo) ? (String) enterpriseInfo.get("address") : "");
jgUseRegistrationManage.setUseRegistrationCode(useRegistration.getUseRegistrationCode());
jgUseRegistrationManage.setUseUnitCreditCode(useRegistration.getUseUnitCreditCode());
jgUseRegistrationManage.setReceiveCompanyCode(useRegistration.getReceiveCompanyCode());
......@@ -146,8 +153,11 @@ public class JgUseRegistrationManageServiceImpl extends BaseService<JgUseRegistr
// 车用气瓶使用登记表中已经审批通过的单子
List<JgVehicleInformation> jgVehicleInformations = jgVehicleInformationMapper.selectList(new LambdaQueryWrapper<JgVehicleInformation>()
.eq(JgVehicleInformation::getStatus, "已完成"));
.eq(JgVehicleInformation::getStatus, "已完成")
.eq(JgVehicleInformation::getIsDelete, false));
for (JgVehicleInformation vehicleInformation : jgVehicleInformations) {
// 使用单位信息
Map<String, Object> enterpriseInfo = commonServiceImpl.getEnterpriseInfo(vehicleInformation.getUseUnitCreditCode());
// 设备种类/类别/品种
Map<String, String> equType = jgUseRegistrationMapper.getEquTypeByVehSeq(String.valueOf(vehicleInformation.getSequenceNbr()));
// 组装数据
......@@ -172,13 +182,13 @@ public class JgUseRegistrationManageServiceImpl extends BaseService<JgUseRegistr
jgUseRegistrationManage.setCreateUserId(vehicleInformation.getCreateUserId());
jgUseRegistrationManage.setCreateDate(vehicleInformation.getRecDate());
jgUseRegistrationManage.setEquUseAddress("");
jgUseRegistrationManage.setUseUnitAddress(!ValidationUtil.isEmpty(enterpriseInfo) ? (String) enterpriseInfo.get("address") : "");
jgUseRegistrationManage.setUseRegistrationCode(vehicleInformation.getUseRegistrationCode());
jgUseRegistrationManage.setUseUnitCreditCode(vehicleInformation.getUseUnitCreditCode());
jgUseRegistrationManage.setReceiveCompanyCode(vehicleInformation.getReceiveCompanyCode());
jgUseRegistrationManage.setCertificateNo(commonServiceImpl.generateCertificateNo(equType,vehicleInformation.getAuditPassDate(),vehicleInformation.getReceiveCompanyCode()));
this.baseMapper.insert(jgUseRegistrationManage);
}
return Boolean.TRUE;
}
......@@ -194,6 +204,46 @@ public class JgUseRegistrationManageServiceImpl extends BaseService<JgUseRegistr
}
/**
* 根据sequenceNbr查询---使用登记证详情用
*
* @param sequenceNbr 主键
* @return
*/
public JgUseRegistrationManage queryDetailBySeq(String sequenceNbr) {
return this.baseMapper.selectById(sequenceNbr);
}
/**
* 根据sequenceNbr查询使用登记证 操作流水---使用登记证详情用
*
* @param sequenceNbr 主键
* @return
*/
public List<Map<String, String>> operationRecord(String sequenceNbr) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
JgUseRegistrationManage jgUseRegistrationManage = this.baseMapper.selectById(sequenceNbr);
List<JgCertificateChangeRecord> changeRecordList = jgCertificateChangeRecordService.list(new LambdaQueryWrapper<JgCertificateChangeRecord>()
.eq(JgCertificateChangeRecord::getUseRegistrationCode, jgUseRegistrationManage.getUseRegistrationCode()));
return changeRecordList.stream()
.map(x -> {
Map<String, String> map = new HashMap<>();
map.put("operatingTime", simpleDateFormat.format(x.getRecDate()));
map.put("content", x.getChangeContent());
return map;
}).collect(Collectors.toList());
}
/**
* 根据sequenceNbr查询使用登记证对应设备列表---使用登记证详情用
* 分页接口
* @param sequenceNbr 主键
* @return
*/
public Page<JSONObject> certificateEquList(int current,int size,String sequenceNbr) {
return queryEquForPageByCertificateSeqList(Collections.singletonList(Long.parseLong(sequenceNbr)), current, size);
}
/**
* 列表查询
*/
public List<JgUseRegistrationManageDto> queryByUseUnitCreditCode(JgUseRegistrationManageDto dto) {
......
......@@ -19,9 +19,7 @@ import com.yeejoin.amos.boot.biz.common.service.impl.DataDictionaryServiceImpl;
import com.yeejoin.amos.boot.biz.common.utils.RedisKey;
import com.yeejoin.amos.boot.biz.common.utils.RedisUtils;
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.entity.JgUseRegistrationEq;
import com.yeejoin.amos.boot.module.jg.api.entity.*;
import com.yeejoin.amos.boot.module.jg.api.enums.*;
import com.yeejoin.amos.boot.module.jg.api.mapper.JgUseRegistrationEqMapper;
import com.yeejoin.amos.boot.module.jg.api.mapper.JgUseRegistrationMapper;
......@@ -164,6 +162,12 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
private ESEquipmentCategory esEquipmentCategory;
@Autowired
private JgResumeInfoServiceImpl jgResumeInfoService;
@Autowired
private JgCertificateChangeRecordServiceImpl certificateChangeRecordService;
@Autowired
private JgCertificateChangeRecordEqServiceImpl certificateChangeRecordEqService;
@Autowired
private JgUseRegistrationManageServiceImpl jgUseRegistrationManageService;
/**
* @param auditPassDate 通过时间
......@@ -857,22 +861,121 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
// 查询历史暂存表
JgRegistrationHistory jgRegistrationHistory = jgRegistrationHistoryService.getOne(Wrappers.<JgRegistrationHistory>lambdaQuery()
.eq(JgRegistrationHistory::getCurrentDocumentId, String.valueOf(sequenceNbr)));
// 登记证记录主键
Long changeRecordId= sequence.nextId();
JSONObject mapData = JSONObject.parseObject(jgRegistrationHistory.getChangeData());
List<Map<String, Object>> equipmentLists = (List<Map<String, Object>>) mapData.get("equipmentLists");
if (!CollectionUtils.isEmpty(equipmentLists)) {
for (int i = 0; i < equipmentLists.size(); i++) {
Map<String, Object> equipment = equipmentLists.get(i);
mapData.put("equipId", equipment.get("record"));
// 设备ID
String equId = (String) equipment.get("record");
mapData.put("equipId", equId);
mapData.put("isFirstEquip", i == 0);
processMapData(sequenceNbr, mapData, jgUseRegistration, jgRegistrationHistory);
// 注册信息
LambdaQueryWrapper<IdxBizJgRegisterInfo> lambdaReg = new QueryWrapper<IdxBizJgRegisterInfo>().lambda();
lambdaReg.eq(IdxBizJgRegisterInfo::getRecord, equId);
IdxBizJgRegisterInfo registerInfo = idxBizJgRegisterInfoMapper.selectOne(lambdaReg);
processMapData(sequenceNbr, mapData, jgUseRegistration, jgRegistrationHistory,registerInfo);
// 查询设备制造信息
LambdaQueryWrapper<IdxBizJgFactoryInfo> factoryInfoWrapper = new LambdaQueryWrapper<>();
factoryInfoWrapper.eq(IdxBizJgFactoryInfo::getRecord, equId);
IdxBizJgFactoryInfo idxBizJgFactoryInfo = idxBizJgFactoryInfoService.getOne(factoryInfoWrapper);
// 生成tzs_jg_certificate_change_record_eq记录
JgCertificateChangeRecordEq changeRecordEq = new JgCertificateChangeRecordEq();
changeRecordEq.setChangeRecordId(String.valueOf(changeRecordId));//登记证记录主键
changeRecordEq.setEquId(registerInfo.getRecord());//设备主键
changeRecordEq.setProductCode(idxBizJgFactoryInfo.getFactoryNum());//产品编号
certificateChangeRecordEqService.save(changeRecordEq);
}
}
// 取第一条设备的注册消息--用来获取这一批设备的设备种类/类别/品种
LambdaQueryWrapper<IdxBizJgRegisterInfo> lambdaReg = new QueryWrapper<IdxBizJgRegisterInfo>().lambda();
lambdaReg.eq(IdxBizJgRegisterInfo::getRecord, String.valueOf(mapData.get("equipId")));
IdxBizJgRegisterInfo registerInfo = idxBizJgRegisterInfoMapper.selectOne(lambdaReg);
// 生成证书管理表记录
generateRegistrationManage(jgUseRegistration,registerInfo);
// 生成一条tzs_jg_certificate_change_record记录
generateCertificateChangeRecord(jgUseRegistration,registerInfo,changeRecordId);
}
this.getBaseMapper().updateById(jgUseRegistration);
commonServiceImpl.saveExecuteFlowData2Redis(jgUseRegistration.getInstanceId(), this.buildInstanceRuntimeData(jgUseRegistration));
}
private void generateCertificateChangeRecord(JgUseRegistration jgUseRegistration,IdxBizJgRegisterInfo registerInfo,Long changeRecordId) {
Map<String, String> equType = new HashMap<>();
equType.put("equList",this.baseMapper.getEquCategoryNameByCode(registerInfo.getEquList()));
equType.put("equListCode",registerInfo.getEquList());
equType.put("equCategory",this.baseMapper.getEquCategoryNameByCode(registerInfo.getEquCategory()));
equType.put("equCategoryCode",registerInfo.getEquCategory());
equType.put("equDefine",this.baseMapper.getEquCategoryNameByCode(registerInfo.getEquDefine()));
equType.put("equDefineCode",registerInfo.getEquDefine());
JgCertificateChangeRecord changeRecord = new JgCertificateChangeRecord();
changeRecord.setApplyNo(jgUseRegistration.getApplyNo());
changeRecord.setReceiveOrgName(jgUseRegistration.getReceiveOrgName());
changeRecord.setAuditPassDate(new Date());
changeRecord.setRegType(BusinessTypeEnum.JG_USAGE_REGISTRATION.getName());
changeRecord.setRegDate(jgUseRegistration.getCreateDate());
changeRecord.setChangeContent(this.buildRecordContent(jgUseRegistration));//变更内容
changeRecord.setUseRegistrationCode(jgUseRegistration.getUseRegistrationCode());//使用登记编号
changeRecord.setReceiveCompanyCode(jgUseRegistration.getReceiveCompanyOrgCode());//接收机构公司代码
changeRecord.setCertificateNo(commonServiceImpl.generateCertificateNo(equType,new Date(),jgUseRegistration.getReceiveCompanyCode()));//登记证书唯一码
changeRecord.setUseUnitCreditCode(jgUseRegistration.getUseUnitCreditCode());//使用单位统一信用代码
changeRecord.setUseUnitName(jgUseRegistration.getUseUnitName());//使用单位名称
changeRecord.setEquCategory(registerInfo.getEquCategory());//设备类别编码
changeRecord.setCreateDate(new Date());
changeRecord.setSequenceNbr(changeRecordId);
certificateChangeRecordService.save(changeRecord);
}
private void generateRegistrationManage(JgUseRegistration jgUseRegistration,IdxBizJgRegisterInfo registerInfo) {
// 使用单位信息
Map<String, Object> enterpriseInfo = commonServiceImpl.getEnterpriseInfo(jgUseRegistration.getUseUnitCreditCode());
//
Map<String, String> equType = new HashMap<>();
equType.put("equList",this.baseMapper.getEquCategoryNameByCode(registerInfo.getEquList()));
equType.put("equListCode",registerInfo.getEquList());
equType.put("equCategory",this.baseMapper.getEquCategoryNameByCode(registerInfo.getEquCategory()));
equType.put("equCategoryCode",registerInfo.getEquCategory());
equType.put("equDefine",this.baseMapper.getEquCategoryNameByCode(registerInfo.getEquDefine()));
equType.put("equDefineCode",registerInfo.getEquDefine());
JgUseRegistrationManage jgUseRegistrationManage = new JgUseRegistrationManage();
jgUseRegistrationManage.setUseUnitName(jgUseRegistration.getUseUnitName());
jgUseRegistrationManage.setApplyNo(jgUseRegistration.getApplyNo());
jgUseRegistrationManage.setCertificateStatus("已登记");
jgUseRegistrationManage.setReceiveOrgName(jgUseRegistration.getReceiveOrgName());
jgUseRegistrationManage.setAuditPassDate(jgUseRegistration.getAuditPassDate());
jgUseRegistrationManage.setRegType(BusinessTypeEnum.JG_USAGE_REGISTRATION.getName());
jgUseRegistrationManage.setRegDate(jgUseRegistration.getRegDate());
jgUseRegistrationManage.setEquList(equType.get("equList"));
jgUseRegistrationManage.setEquListCode(equType.get("equListCode"));
jgUseRegistrationManage.setEquCategory(equType.get("equCategory"));
jgUseRegistrationManage.setEquCategoryCode(equType.get("equCategoryCode"));
jgUseRegistrationManage.setEquDefine(equType.get("equDefine"));
jgUseRegistrationManage.setEquDefineCode(equType.get("equDefineCode"));
jgUseRegistrationManage.setIsDelete(Boolean.FALSE);
jgUseRegistrationManage.setRecUserId(jgUseRegistration.getRecUserId());
jgUseRegistrationManage.setRecUserName(jgUseRegistration.getRecUserName());
jgUseRegistrationManage.setRecDate(jgUseRegistration.getRecDate());
jgUseRegistrationManage.setCreateUserId(jgUseRegistration.getCreateUserId());
jgUseRegistrationManage.setCreateDate(jgUseRegistration.getRecDate());
jgUseRegistrationManage.setEquUseAddress(jgUseRegistration.getUseAddress());
jgUseRegistrationManage.setUseUnitAddress(!ValidationUtil.isEmpty(enterpriseInfo) ? (String) enterpriseInfo.get("address") : "");
jgUseRegistrationManage.setUseRegistrationCode(jgUseRegistration.getUseRegistrationCode());
jgUseRegistrationManage.setUseUnitCreditCode(jgUseRegistration.getUseUnitCreditCode());
jgUseRegistrationManage.setReceiveCompanyCode(jgUseRegistration.getReceiveCompanyCode());
jgUseRegistrationManage.setCertificateNo(commonServiceImpl.generateCertificateNo(equType,new Date(),jgUseRegistration.getReceiveCompanyCode()));
jgUseRegistrationManageService.save(jgUseRegistrationManage);
}
public JgUseRegistration updateData(Long sequenceNbr, String operate, WorkflowResultDto workflowResultDto, String carNumber, Boolean isFirst) {
ReginParams reginParams = JSONObject.parseObject(redisUtils.get(RedisKey.buildReginKey(RequestContext.getExeUserId(), RequestContext.getToken())).toString(), ReginParams.class);
String role = workflowResultDto.getNextExecutorRoleIds();
......@@ -958,23 +1061,50 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
lambdaSelect.eq(JgRegistrationHistory::getCurrentDocumentId, String.valueOf(sequenceNbr));
JgRegistrationHistory jgRegistrationHistory = jgRegistrationHistoryService.getBaseMapper().selectOne(lambdaSelect);
JSONObject mapData = JSONObject.parseObject(jgRegistrationHistory.getChangeData());
processMapData(sequenceNbr, mapData, jgUseRegistration, jgRegistrationHistory);
// 设备ID
String equId = String.valueOf(mapData.get("equipId"));
// 登记证记录主键
Long changeRecordId= sequence.nextId();
// 注册信息
LambdaQueryWrapper<IdxBizJgRegisterInfo> lambdaReg = new QueryWrapper<IdxBizJgRegisterInfo>().lambda();
lambdaReg.eq(IdxBizJgRegisterInfo::getRecord, equId);
IdxBizJgRegisterInfo registerInfo = idxBizJgRegisterInfoMapper.selectOne(lambdaReg);
processMapData(sequenceNbr, mapData, jgUseRegistration, jgRegistrationHistory,registerInfo);
// 生成证书管理表记录
generateRegistrationManage(jgUseRegistration,registerInfo);
// 生成一条tzs_jg_certificate_change_record记录
generateCertificateChangeRecord(jgUseRegistration,registerInfo,changeRecordId);
// 查询设备制造信息
LambdaQueryWrapper<IdxBizJgFactoryInfo> factoryInfoWrapper = new LambdaQueryWrapper<>();
factoryInfoWrapper.eq(IdxBizJgFactoryInfo::getRecord, equId);
IdxBizJgFactoryInfo idxBizJgFactoryInfo = idxBizJgFactoryInfoService.getOne(factoryInfoWrapper);
// 生成tzs_jg_certificate_change_record_eq记录
JgCertificateChangeRecordEq changeRecordEq = new JgCertificateChangeRecordEq();
changeRecordEq.setChangeRecordId(String.valueOf(changeRecordId));//登记证记录主键
changeRecordEq.setEquId(registerInfo.getRecord());//设备主键
changeRecordEq.setProductCode(idxBizJgFactoryInfo.getFactoryNum());
certificateChangeRecordEqService.save(changeRecordEq);
}
this.getBaseMapper().updateById(jgUseRegistration);
commonServiceImpl.saveExecuteFlowData2Redis(jgUseRegistration.getInstanceId(), this.buildInstanceRuntimeData(jgUseRegistration));
return jgUseRegistration;
}
private void processMapData(Long sequenceNbr, JSONObject mapData, JgUseRegistration jgUseRegistration, JgRegistrationHistory jgRegistrationHistory) {
private void processMapData(Long sequenceNbr, JSONObject mapData, JgUseRegistration jgUseRegistration,
JgRegistrationHistory jgRegistrationHistory,IdxBizJgRegisterInfo registerInfo) {
// 其他信息
LambdaQueryWrapper<IdxBizJgOtherInfo> lambdaOth = new QueryWrapper<IdxBizJgOtherInfo>().lambda();
lambdaOth.eq(IdxBizJgOtherInfo::getRecord, String.valueOf(mapData.get("equipId")));
IdxBizJgOtherInfo otherInfo = otherInfoMapper.selectOne(lambdaOth);
jgUseRegistration.setSupervisoryCode(otherInfo.getSupervisoryCode());
// 注册信息
LambdaQueryWrapper<IdxBizJgRegisterInfo> lambdaReg = new QueryWrapper<IdxBizJgRegisterInfo>().lambda();
lambdaReg.eq(IdxBizJgRegisterInfo::getRecord, String.valueOf(mapData.get("equipId")));
IdxBizJgRegisterInfo registerInfo = idxBizJgRegisterInfoMapper.selectOne(lambdaReg);
// 更新设备信息
updateEquipMessage(String.valueOf(sequenceNbr), jgUseRegistration, mapData, registerInfo, otherInfo);
// 生成使用登记证编号
......@@ -1044,6 +1174,13 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
.build());
}
private String buildRecordContent(JgUseRegistration obj) {
//张三办理了【单位变更】 ,单号【DWBG202407050001】,办理日期2024-07-05
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd");
return obj.getRecUserName() + "办理了【"+BusinessTypeEnum.JG_USAGE_REGISTRATION.getName()+"】," +
"单号【" + obj.getApplyNo() + "】,申请日期" + simpleDateFormat.format(obj.getRecDate());
}
/**
* 系统类型的code 自动生成设备代码
*
......
......@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Sequence;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.biz.common.bo.CompanyBo;
import com.yeejoin.amos.boot.biz.common.bo.ReginParams;
......@@ -16,9 +17,7 @@ import com.yeejoin.amos.boot.biz.common.service.impl.DataDictionaryServiceImpl;
import com.yeejoin.amos.boot.biz.common.utils.RedisKey;
import com.yeejoin.amos.boot.biz.common.utils.RedisUtils;
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.JgVehicleInformation;
import com.yeejoin.amos.boot.module.jg.api.entity.JgVehicleInformationEq;
import com.yeejoin.amos.boot.module.jg.api.entity.*;
import com.yeejoin.amos.boot.module.jg.api.enums.BusinessTypeEnum;
import com.yeejoin.amos.boot.module.jg.api.enums.CylinderTypeEnum;
import com.yeejoin.amos.boot.module.jg.api.enums.VehicleApanageEnum;
......@@ -34,7 +33,6 @@ import com.yeejoin.amos.boot.module.jg.biz.feign.TzsServiceFeignClient;
import com.yeejoin.amos.boot.module.jg.biz.service.ICmWorkflowService;
import com.yeejoin.amos.boot.module.jg.biz.utils.FileExporter;
import com.yeejoin.amos.boot.module.jg.biz.utils.ImageUtils;
import com.yeejoin.amos.boot.module.jg.flc.api.fegin.WorkFlowFeignService;
import com.yeejoin.amos.boot.module.ymt.api.dto.ESEquipmentCategoryDto;
import com.yeejoin.amos.boot.module.ymt.api.entity.*;
import com.yeejoin.amos.boot.module.ymt.api.enums.ApplicationFormTypeEnum;
......@@ -70,6 +68,7 @@ import org.typroject.tyboot.core.restful.utils.ResponseModel;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.nio.file.Files;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.ZoneId;
import java.util.*;
......@@ -109,6 +108,8 @@ public class JgVehicleInformationServiceImpl extends BaseService<JgVehicleInform
@Autowired
private RedisUtils redisUtils;
@Autowired
private Sequence sequence;
@Autowired
private JgVehicleInformationEqMapper jgVehicleInformationEqMapper;
@Autowired
private IdxBizJgUseInfoServiceImpl idxBizJgUseInfoService;
......@@ -143,7 +144,11 @@ public class JgVehicleInformationServiceImpl extends BaseService<JgVehicleInform
@Autowired
private TzBaseEnterpriseInfoMapper tzBaseEnterpriseInfoMapper;
@Autowired
private WorkFlowFeignService workFlowFeignService;
private JgCertificateChangeRecordServiceImpl certificateChangeRecordService;
@Autowired
private JgCertificateChangeRecordEqServiceImpl certificateChangeRecordEqService;
@Autowired
private JgUseRegistrationManageServiceImpl jgUseRegistrationManageService;
private Map<String, Object> fillingMediumMap;
......@@ -527,7 +532,7 @@ public class JgVehicleInformationServiceImpl extends BaseService<JgVehicleInform
if (useCodeResult != null) {
String result = dto.getEstateUnitCreditCode() + "_" + dto.getEstateUnitName() + ("个人主体".equals(useCodeResult.getUnitType())
? "_" + dto.getEstateUnitCreditCode().substring(dto.getEstateUnitCreditCode().length() - 4) : "");
? "_" + dto.getEstateUnitCreditCode().substring(dto.getEstateUnitCreditCode().length() - 4): "");
vo.setEstateUnitName(result);
}
vo.setIdCardFront(ObjectUtils.isEmpty(dto.getIdCardFront()) ? null : JSON.parseArray(dto.getIdCardFront()));
......@@ -739,12 +744,18 @@ public class JgVehicleInformationServiceImpl extends BaseService<JgVehicleInform
JgRegistrationHistory jgRegistrationHistory = jgRegistrationHistoryService.getBaseMapper().selectOne(lambdaSelect);
String jsonData = jgRegistrationHistory.getChangeData();
JSONArray jsonArray = JSONArray.parseArray(jsonData);
// 登记证记录主键
Long changeRecordId= sequence.nextId();
for (int i = 0; i < jsonArray.size(); i++) {
JSONObject mapData = jsonArray.getJSONObject(i);
// 设备ID
String equId = String.valueOf(mapData.get("record"));
// 查询注册信息
LambdaQueryWrapper<IdxBizJgRegisterInfo> queryRegisterWrapper = new QueryWrapper<IdxBizJgRegisterInfo>().lambda();
queryRegisterWrapper.eq(IdxBizJgRegisterInfo::getRecord, String.valueOf(mapData.get("record")));
queryRegisterWrapper.eq(IdxBizJgRegisterInfo::getRecord, equId);
IdxBizJgRegisterInfo registerInfo = idxBizJgRegisterInfoMapper.selectOne(queryRegisterWrapper);
registerInfo.setUseOrgCode(code);
......@@ -759,7 +770,7 @@ public class JgVehicleInformationServiceImpl extends BaseService<JgVehicleInform
// 查询其他信息
LambdaQueryWrapper<IdxBizJgOtherInfo> otherInfoWrapper = new QueryWrapper<IdxBizJgOtherInfo>().lambda();
otherInfoWrapper.eq(IdxBizJgOtherInfo::getRecord, String.valueOf(mapData.get("record")));
otherInfoWrapper.eq(IdxBizJgOtherInfo::getRecord, equId);
IdxBizJgOtherInfo otherInfo = otherInfoMapper.selectOne(otherInfoWrapper);
// 更新设备信息
......@@ -767,6 +778,18 @@ public class JgVehicleInformationServiceImpl extends BaseService<JgVehicleInform
// 更新es
updateEsData(mapData, jgVehicleInformation, otherInfo);
// 查询设备制造信息
LambdaQueryWrapper<IdxBizJgFactoryInfo> factoryInfoWrapper = new LambdaQueryWrapper<>();
factoryInfoWrapper.eq(IdxBizJgFactoryInfo::getRecord, equId);
IdxBizJgFactoryInfo idxBizJgFactoryInfo = idxBizJgFactoryInfoMapper.selectOne(factoryInfoWrapper);
// 生成tzs_jg_certificate_change_record_eq记录
JgCertificateChangeRecordEq changeRecordEq = new JgCertificateChangeRecordEq();
changeRecordEq.setChangeRecordId(String.valueOf(changeRecordId));//登记证记录主键
changeRecordEq.setEquId(registerInfo.getRecord());//设备主键
changeRecordEq.setProductCode(idxBizJgFactoryInfo.getFactoryNum());//产品编号
certificateChangeRecordEqService.save(changeRecordEq);
}
// 更新新生成的历史数据的设备代码
jgRegistrationHistory.setChangeData(JSON.toJSONString(jsonArray));
......@@ -783,6 +806,17 @@ public class JgVehicleInformationServiceImpl extends BaseService<JgVehicleInform
BeanUtil.copyProperties(jgVehicleInformation, taskMessageDto);
params.put("model", taskMessageDto);
commonService.updateTaskModel(params);
// 取第一条设备的注册消息--用来获取这一批设备的设备种类/类别/品种
LambdaQueryWrapper<IdxBizJgRegisterInfo> lambdaReg = new QueryWrapper<IdxBizJgRegisterInfo>().lambda();
lambdaReg.eq(IdxBizJgRegisterInfo::getRecord, String.valueOf(jsonArray.getJSONObject(0).get("record")));
IdxBizJgRegisterInfo registerInfo = idxBizJgRegisterInfoMapper.selectOne(lambdaReg);
// 生成证书管理表记录
generateRegistrationManage(jgVehicleInformation,registerInfo);
// 生成一条tzs_jg_certificate_change_record记录
generateCertificateChangeRecord(jgVehicleInformation,registerInfo,changeRecordId);
}
this.getBaseMapper().updateById(jgVehicleInformation);
commonService.saveExecuteFlowData2Redis(jgVehicleInformation.getInstanceId(), this.buildInstanceRuntimeData(jgVehicleInformation));
......@@ -842,13 +876,14 @@ public class JgVehicleInformationServiceImpl extends BaseService<JgVehicleInform
/**
* 批量删除
*
*/
@Transactional(rollbackFor = Exception.class)
public void deleteBatch(List<Long> ids) {
ids.forEach(id -> {
JgVehicleInformation vehicleInformation = this.baseMapper.selectById(id);
// 删除代办 + 中止流程
commonService.deleteTaskModel(String.valueOf(id), vehicleInformation.getInstanceId());
commonService.deleteTaskModel(String.valueOf(id),vehicleInformation.getInstanceId());
// 删除单子
this.deleteBySeq(id);
// 删除单子对应设备
......@@ -862,7 +897,7 @@ public class JgVehicleInformationServiceImpl extends BaseService<JgVehicleInform
public Page<Map<String, Object>> getPageList(JgVehicleInformationDto dto, String sort, Page<Map<String, Object>> page, List<String> roleIds) {
SortVo sortMap = commonService.sortFieldConversion(sort);
return this.baseMapper.getListPage(page, sortMap, dto, roleIds);
return this.baseMapper.getListPage(page,sortMap, dto, roleIds);
}
private void updateEquipMessage(JgVehicleInformation jgVehicleInformation, JSONObject map, IdxBizJgRegisterInfo registerInfo, IdxBizJgOtherInfo otherInfo) {
......@@ -1362,78 +1397,77 @@ public class JgVehicleInformationServiceImpl extends BaseService<JgVehicleInform
}
public void handleErrorVehicleForm(String applyNo) {
LambdaQueryWrapper<JgVehicleInformation> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(JgVehicleInformation::getApplyNo, applyNo);
JgVehicleInformation jgVehicleInformation = this.baseMapper.selectOne(queryWrapper);
if (jgVehicleInformation != null) {
String lockKey = CommonServiceImpl.buildJgExecuteLockKey(jgVehicleInformation.getInstanceId());
RLock lock = redissonClient.getLock(lockKey);
try {
boolean isLocked = lock.tryLock(0, 180, TimeUnit.SECONDS);
// 解决并发问题:多个人同时操作一个流程(并发执行通过、驳回、撤回)
if (!isLocked) {
throw new BadRequest("当前流程已经被执行!请重新打开页面查看并执行!");
}
// 流程执行时,状态及权限校验
ProcessTaskDTO complete = workFlowFeignService.handleErrorForm(jgVehicleInformation.getInstanceId(), jgVehicleInformation.getReceiveCompanyCode()).getResult();
ArrayList<ProcessTaskDTO> processTaskDTOS = new ArrayList<>();
processTaskDTOS.add(complete);
List<WorkflowResultDto> resultDto = commonService.buildWorkFlowInfo(processTaskDTOS);
if (!ObjectUtils.isEmpty(resultDto) && !ObjectUtils.isEmpty(resultDto.get(0))) {
WorkflowResultDto workflowResultDto = resultDto.get(0);
String role = workflowResultDto.getNextExecutorRoleIds();
String taskCode = FlowStatusEnum.TO_BE_FINISHED.getName();
if (!ObjectUtils.isEmpty(workflowResultDto.getNextTaskCode())) {
taskCode = workflowResultDto.getNextTaskCode();
}
jgVehicleInformation.setNextTaskId(workflowResultDto.getNextTaskId());
jgVehicleInformation.setNextExecuteUserIds(workflowResultDto.getNextExecutorUserIds());
jgVehicleInformation.setNextExecuteIds(role);
jgVehicleInformation.setInstanceStatus(
Optional.ofNullable(jgVehicleInformation.getInstanceStatus())
.map(status -> String.join(",", status, role))
.orElse(role)
);
jgVehicleInformation.setStatus(Objects.requireNonNull(WorkFlowStatusEnum.getMessage(taskCode)).getPass());
jgVehicleInformation.setPromoter(workflowResultDto.getStartUserId());
// 更新代办状态
HashMap<String, Object> params = new HashMap<>();
params.put("relationId", jgVehicleInformation.getInstanceId());
params.put("flowStatus", commonService.getDictionaryCodeByName(jgVehicleInformation.getStatus()));
params.put("flowStatusLabel", jgVehicleInformation.getStatus());
params.put("taskStatus", commonService.getDictionaryCodeByName(jgVehicleInformation.getStatus()));
params.put("taskStatusLabel", jgVehicleInformation.getStatus());
TaskV2Model taskV2Model = commonService.updateTaskModel(params);
// 创建新的代办
if (!ObjectUtils.isEmpty(taskV2Model)) {
TaskModelDto taskModelDto = new TaskModelDto();
BeanUtils.copyProperties(taskV2Model, taskModelDto);
TaskMessageDto taskMessageDto = new TaskMessageDto();
BeanUtil.copyProperties(jgVehicleInformation, taskMessageDto);
taskModelDto.setModel(taskMessageDto);
taskModelDto.setTaskName(workflowResultDto.getNextTaskName());
taskModelDto.setStartUserId(workflowResultDto.getExecutorId());
taskModelDto.setExecuteUserIds(workflowResultDto.getNextExecutorUserIds());
taskModelDto.setTaskStatusLabel(FlowStatusEnum.TO_BE_PROCESSED.getName());
taskModelDto.setNextExecuteUser(workflowResultDto.getNextExecutorRoleIds());
taskModelDto.setFlowCode(workflowResultDto.getNextTaskId());
commonService.buildTaskModel(Collections.singletonList(taskModelDto));
} else {
workflowResultDto.setInstanceId(jgVehicleInformation.getInstanceId());
buildTask(jgVehicleInformation, workflowResultDto);
}
}
this.getBaseMapper().updateById(jgVehicleInformation);
commonService.saveExecuteFlowData2Redis(jgVehicleInformation.getInstanceId(), this.buildInstanceRuntimeData(jgVehicleInformation));
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
if (lock.isHeldByCurrentThread()) {
lock.unlock();
}
}
}
private void generateCertificateChangeRecord(JgVehicleInformation jgVehicleInformation, IdxBizJgRegisterInfo registerInfo, Long changeRecordId) {
Map<String, String> equType = new HashMap<>();
equType.put("equList",this.baseMapper.getEquCategoryNameByCode(registerInfo.getEquList()));
equType.put("equListCode",registerInfo.getEquList());
equType.put("equCategory",this.baseMapper.getEquCategoryNameByCode(registerInfo.getEquCategory()));
equType.put("equCategoryCode",registerInfo.getEquCategory());
equType.put("equDefine",this.baseMapper.getEquCategoryNameByCode(registerInfo.getEquDefine()));
equType.put("equDefineCode",registerInfo.getEquDefine());
JgCertificateChangeRecord changeRecord = new JgCertificateChangeRecord();
changeRecord.setApplyNo(jgVehicleInformation.getApplyNo());
changeRecord.setReceiveOrgName(jgVehicleInformation.getReceiveOrgName());
changeRecord.setAuditPassDate(new Date());
changeRecord.setRegType(BusinessTypeEnum.JG_VEHICLE_GAS_APPLICATION.getName());
changeRecord.setRegDate(jgVehicleInformation.getCreateDate());
changeRecord.setChangeContent(this.buildRecordContent(jgVehicleInformation));//变更内容
changeRecord.setUseRegistrationCode(jgVehicleInformation.getUseRegistrationCode());//使用登记编号
changeRecord.setReceiveCompanyCode(jgVehicleInformation.getReceiveCompanyCode());//接收机构公司代码
changeRecord.setCertificateNo(commonService.generateCertificateNo(equType,new Date(),jgVehicleInformation.getReceiveCompanyCode()));//登记证书唯一码
changeRecord.setUseUnitCreditCode(jgVehicleInformation.getUseUnitCreditCode());//使用单位统一信用代码
changeRecord.setUseUnitName(jgVehicleInformation.getUseUnitName());//使用单位名称
changeRecord.setEquCategory(registerInfo.getEquCategory());//设备类别编码
changeRecord.setCreateDate(new Date());
changeRecord.setSequenceNbr(changeRecordId);
certificateChangeRecordService.save(changeRecord);
}
private void generateRegistrationManage(JgVehicleInformation jgVehicleInformation,IdxBizJgRegisterInfo registerInfo) {
// 使用单位信息
Map<String, Object> enterpriseInfo = commonService.getEnterpriseInfo(jgVehicleInformation.getUseUnitCreditCode());
//
Map<String, String> equType = new HashMap<>();
equType.put("equList",this.baseMapper.getEquCategoryNameByCode(registerInfo.getEquList()));
equType.put("equListCode",registerInfo.getEquList());
equType.put("equCategory",this.baseMapper.getEquCategoryNameByCode(registerInfo.getEquCategory()));
equType.put("equCategoryCode",registerInfo.getEquCategory());
equType.put("equDefine",this.baseMapper.getEquCategoryNameByCode(registerInfo.getEquDefine()));
equType.put("equDefineCode",registerInfo.getEquDefine());
JgUseRegistrationManage jgUseRegistrationManage = new JgUseRegistrationManage();
jgUseRegistrationManage.setUseUnitName(jgVehicleInformation.getUseUnitName());
jgUseRegistrationManage.setApplyNo(jgVehicleInformation.getApplyNo());
jgUseRegistrationManage.setCertificateStatus("已登记");
jgUseRegistrationManage.setReceiveOrgName(jgVehicleInformation.getReceiveOrgName());
jgUseRegistrationManage.setAuditPassDate(jgVehicleInformation.getAuditPassDate());
jgUseRegistrationManage.setRegType(BusinessTypeEnum.JG_VEHICLE_GAS_APPLICATION.getName());
jgUseRegistrationManage.setRegDate(jgVehicleInformation.getRegDate());
jgUseRegistrationManage.setEquList(equType.get("equList"));
jgUseRegistrationManage.setEquListCode(equType.get("equListCode"));
jgUseRegistrationManage.setEquCategory(equType.get("equCategory"));
jgUseRegistrationManage.setEquCategoryCode(equType.get("equCategoryCode"));
jgUseRegistrationManage.setEquDefine(equType.get("equDefine"));
jgUseRegistrationManage.setEquDefineCode(equType.get("equDefineCode"));
jgUseRegistrationManage.setIsDelete(Boolean.FALSE);
jgUseRegistrationManage.setRecUserId(jgVehicleInformation.getRecUserId());
jgUseRegistrationManage.setRecUserName(jgVehicleInformation.getRecUserName());
jgUseRegistrationManage.setRecDate(jgVehicleInformation.getRecDate());
jgUseRegistrationManage.setCreateUserId(jgVehicleInformation.getCreateUserId());
jgUseRegistrationManage.setCreateDate(jgVehicleInformation.getRecDate());
jgUseRegistrationManage.setEquUseAddress("");
jgUseRegistrationManage.setUseUnitAddress(!ValidationUtil.isEmpty(enterpriseInfo) ? (String) enterpriseInfo.get("address") : "");
jgUseRegistrationManage.setUseRegistrationCode(jgVehicleInformation.getUseRegistrationCode());
jgUseRegistrationManage.setUseUnitCreditCode(jgVehicleInformation.getUseUnitCreditCode());
jgUseRegistrationManage.setReceiveCompanyCode(jgVehicleInformation.getReceiveCompanyCode());
jgUseRegistrationManage.setCertificateNo(commonService.generateCertificateNo(equType,new Date(),jgVehicleInformation.getReceiveCompanyCode()));
jgUseRegistrationManageService.save(jgUseRegistrationManage);
}
private String buildRecordContent(JgVehicleInformation obj) {
//张三办理了【单位变更】 ,单号【DWBG202407050001】,办理日期2024-07-05
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd");
return obj.getRecUserName() + "办理了【"+BusinessTypeEnum.JG_VEHICLE_GAS_APPLICATION.getName()+"】," +
"单号【" + obj.getApplyNo() + "】,申请日期" + simpleDateFormat.format(obj.getRecDate());
}
}
\ No newline at end of file
......@@ -15,4 +15,10 @@ public class CommonConstants {
public static final String OPEN_APPLICATION_SEQ_KEY = "OPEN_APPLICATION_SEQ";
public static final String APPLICATION_SEQ_PREFIX = "JY";
/**
* 无默认机构时字符串-规则必须
*/
public static final String NONE_DEFAULT_CODE = "none";
}
......@@ -2,6 +2,11 @@ package com.yeejoin.amos.boot.module.jyjc.api.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
import org.apache.commons.lang3.StringUtils;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author LiuLin
......@@ -14,16 +19,18 @@ public enum JYJCTypeEnum {
/**
* 检验检测类型
*/
DTJC("DTJC", "电梯检测","jc"),
DQJY("DQJY", "定期检验", "jy"),
SCJY("SCJY", "首次检验", "jy"),
WXJDJY("WXJDJY", "维修监督检验", "jy"),
GZJDJY("GZJDJY", "改造监督检验", "jy"),
AZJDJY("AZJDJY", "安装监督检验", "jy");
DTJC("DTJC", "电梯检测", "jc", BizTypeEnum.DETECTION.getCode()),
DQJY("DQJY", "定期检验", "jy", BizTypeEnum.FIRST_INSPECTION.getCode()),
SCJY("SCJY", "首次检验", "jy", BizTypeEnum.FIRST_INSPECTION.getCode()),
WXJDJY("WXJDJY", "维修监督检验", "jy", BizTypeEnum.SUPERVISE.getCode()),
GZJDJY("GZJDJY", "改造监督检验", "jy", BizTypeEnum.SUPERVISE.getCode()),
AZJDJY("AZJDJY", "安装监督检验", "jy", BizTypeEnum.SUPERVISE.getCode());
private final String code;
private final String name;
private final String openBizType;
private final String bizType;
public static JYJCTypeEnum of(String code) {
......@@ -34,4 +41,11 @@ public enum JYJCTypeEnum {
}
return null;
}
public static List<JYJCTypeEnum> getListByBizType(String bizType) {
if (StringUtils.isEmpty(bizType)) {
return Arrays.asList(JYJCTypeEnum.values());
}
return Arrays.stream(JYJCTypeEnum.values()).filter(e -> e.getBizType().equals(bizType)).collect(Collectors.toList());
}
}
......@@ -80,8 +80,8 @@
<if test="jyjcInspectionApplicationModel.applicationNo != null and jyjcInspectionApplicationModel.applicationNo != ''">
and tzjia.application_no like concat('%',#{jyjcInspectionApplicationModel.applicationNo},'%')
</if>
<if test="jyjcInspectionApplicationModel.inspectionClassify != null and jyjcInspectionApplicationModel.inspectionClassify != ''">
and tzjia.inspection_classify = #{jyjcInspectionApplicationModel.inspectionClassify}
<if test="jyjcInspectionApplicationModel.inspectionType != null and jyjcInspectionApplicationModel.inspectionType != ''">
and tzjia.inspection_type = #{jyjcInspectionApplicationModel.inspectionType}
</if>
<if test="jyjcInspectionApplicationModel.equipClassify != null and jyjcInspectionApplicationModel.equipClassify != ''">
......@@ -107,10 +107,10 @@
</if>
<if test="jyjcInspectionApplicationModel.inspectionUnitName != null and jyjcInspectionApplicationModel.inspectionUnitName != ''">
and tzjia.inspection_unit_name like concat('%',#{jyjcInspectionApplicationModel.inspectionUnitName},'%'))
and tzjia.inspection_unit_name like concat('%',#{jyjcInspectionApplicationModel.inspectionUnitName},'%')
</if>
<if test="jyjcInspectionApplicationModel.applicationUnitName != null and jyjcInspectionApplicationModel.applicationUnitName != ''">
and tzjia.application_unit_name like concat('%',#{jyjcInspectionApplicationModel.applicationUnitName},'%'))
and tzjia.application_unit_name like concat('%',#{jyjcInspectionApplicationModel.applicationUnitName},'%')
</if>
<if test="jyjcInspectionApplicationModel.inspectionUnitCode != null and jyjcInspectionApplicationModel.inspectionUnitCode != ''">
and tzjia.inspection_unit_code = #{jyjcInspectionApplicationModel.inspectionUnitCode} and tzjia.status != '6610'
......
......@@ -113,38 +113,32 @@
<if test="jyjcInspectionResultModel.applicationNo != '' and jyjcInspectionResultModel.applicationNo != null">
and res.application_no like concat('%',#{jyjcInspectionResultModel.applicationNo},'%')
</if>
<if test="jyjcInspectionResultModel.applicationUnitCode != '' and jyjcInspectionResultModel.applicationUnitCode != null">
and res.application_unit_code = #{jyjcInspectionResultModel.applicationUnitCode}
</if>
<if test="jyjcInspectionResultModel.useOrgCode != '' and jyjcInspectionResultModel.useOrgCode != null">
and ibjri.use_org_code like concat('%',#{jyjcInspectionResultModel.useOrgCode},'%')
</if>
<if test="jyjcInspectionResultModel.useInnerCode != '' and jyjcInspectionResultModel.useInnerCode != null">
and ibjui.use_inner_code like concat('%',#{jyjcInspectionResultModel.useInnerCode},'%')
<if test="jyjcInspectionResultModel.applicationDate!=null">
AND res.application_date = #{jyjcInspectionResultModel.applicationDate}
</if>
<if test="jyjcInspectionResultModel.equCode != '' and jyjcInspectionResultModel.equCode != null">
and ibjri.equ_code like concat('%',#{jyjcInspectionResultModel.equCode},'%')
<if test="jyjcInspectionResultModel.inspectionType != '' and jyjcInspectionResultModel.inspectionType != null">
and res.inspection_type = #{jyjcInspectionResultModel.inspectionType}
</if>
<if test="jyjcInspectionResultModel.equipUnicode != '' and jyjcInspectionResultModel.equipUnicode != null">
and res.equip_unicode like concat('%',#{jyjcInspectionResultModel.equipUnicode},'%')
<if test="jyjcInspectionResultModel.applicationUnitName != '' and jyjcInspectionResultModel.applicationUnitName != null">
and res.application_unit_name like concat('%',#{jyjcInspectionResultModel.applicationUnitName},'%')
</if>
<if test="jyjcInspectionResultModel.equList != '' and jyjcInspectionResultModel.equList != null">
and ibjri.equ_list = #{jyjcInspectionResultModel.equList}
</if>
<if test="jyjcInspectionResultModel.inspectionType != '' and jyjcInspectionResultModel.inspectionType != null">
and res.inspection_type = #{jyjcInspectionResultModel.inspectionType}
<if test="jyjcInspectionResultModel.supervisoryCode != '' and jyjcInspectionResultModel.supervisoryCode != null">
and res.supervisory_code like concat('%',#{jyjcInspectionResultModel.supervisoryCode},'%')
</if>
<if test="jyjcInspectionResultModel.applicationDate!=null">
AND res.application_date = #{jyjcInspectionResultModel.applicationDate}
<if test="jyjcInspectionResultModel.equCode != '' and jyjcInspectionResultModel.equCode != null">
and ibjri.equ_code like concat('%',#{jyjcInspectionResultModel.equCode},'%')
</if>
<if test="jyjcInspectionResultModel.useUnitCreditCode != '' and jyjcInspectionResultModel.useUnitCreditCode != null">
and ibjui.use_unit_credit_code like concat('%',#{jyjcInspectionResultModel.useUnitCreditCode},'%')
<if test="jyjcInspectionResultModel.useOrgCode != '' and jyjcInspectionResultModel.useOrgCode != null">
and ibjri.use_org_code like concat('%',#{jyjcInspectionResultModel.useOrgCode},'%')
</if>
<if test="jyjcInspectionResultModel.inspectionUnitCode != '' and jyjcInspectionResultModel.inspectionUnitCode != null">
and res.inspection_unit_code = #{jyjcInspectionResultModel.inspectionUnitCode}
<if test="jyjcInspectionResultModel.useInnerCode != '' and jyjcInspectionResultModel.useInnerCode != null">
and ibjui.use_inner_code like concat('%',#{jyjcInspectionResultModel.useInnerCode},'%')
</if>
<if test="jyjcInspectionResultModel.applicationUnitName != '' and jyjcInspectionResultModel.applicationUnitName != null">
and bei1.use_unit like concat('%',#{jyjcInspectionResultModel.applicationUnitName},'%')
<if test="jyjcInspectionResultModel.inspectionUnitName != '' and jyjcInspectionResultModel.inspectionUnitName != null">
and res.inspection_unit_name like concat('%',#{jyjcInspectionResultModel.inspectionUnitName},'%')
</if>
<choose>
<when test="identity == 'apply'">
......
......@@ -2,6 +2,7 @@ package com.yeejoin.amos.boot.module.jyjc.biz.action;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.yeejoin.amos.boot.biz.common.utils.RedisUtils;
import com.yeejoin.amos.boot.module.jyjc.api.common.CommonConstants;
import com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcInspectionApplicationNoAcceptLog;
import com.yeejoin.amos.boot.module.jyjc.api.enums.InspectionCompanyType;
import com.yeejoin.amos.boot.module.jyjc.api.enums.LicenceTypeEnum;
......@@ -54,12 +55,13 @@ public class RuleActionHandler {
public RuleActionHandler(TzBaseUnitLicenceMapper baseUnitLicenceMapper,
TzBaseEnterpriseInfoMapper tzBaseEnterpriseInfoMapper,
RedissonClient redissonClient, RedisUtils redisUtils,
RuleCommonServiceImpl ruleCommonService) {
RuleCommonServiceImpl ruleCommonService, JyjcInspectionApplicationNoAcceptLogServiceImpl noAcceptLogService) {
this.baseUnitLicenceMapper = baseUnitLicenceMapper;
this.tzBaseEnterpriseInfoMapper = tzBaseEnterpriseInfoMapper;
this.redissonClient = redissonClient;
this.redisUtils = redisUtils;
this.ruleCommonService = ruleCommonService;
this.noAcceptLogService = noAcceptLogService;
}
/**
......@@ -158,22 +160,20 @@ public class RuleActionHandler {
private List<TzBaseEnterpriseInfoDto> getInspectionUnitListForNoAccept2(List<TzBaseUnitLicence> unitLicenceList, Boolean isMatchArea, InspectionEquipInfo inspectionEquipInfo, String openBizType, String defaultInspectionCode, String legalInspectionCodes, String inspectionCompanyType, Boolean isCanNoAccept) {
List<TzBaseEnterpriseInfoDto> matchEnterpriseInfos = new ArrayList<>();
if(inspectionCompanyType.equals(InspectionCompanyType.ALL.getCode())){
if (inspectionCompanyType.equals(InspectionCompanyType.ALL.getCode())) {
// 是否进行属地过滤
String areaCode = isMatchArea ? inspectionEquipInfo.getAreaCode() : "";
// 所有符合资质的单位code
Set<String> unitCodes = unitLicenceList.stream().map(TzBaseUnitLicence::getUnitCode).collect(Collectors.toSet());
// 1.按照资质 + 开通区域,进行单位的筛选
// 按照资质 + 开通区域,进行单位的筛选
if (unitCodes.size() > 0) {
matchEnterpriseInfos = tzBaseEnterpriseInfoMapper.getInspectionUnitListByCode(new ArrayList<>(unitCodes), areaCode, openBizType);
// 返回下一步是否可不予返回,供下一节点审核时显示判断是否显示不予受理按钮,在提交时数据会写入到主表:true-必须处理,false-可不予受理
this.setIsCanNoAccept(matchEnterpriseInfos, isCanNoAccept);
}
// 2.去掉已经不予受理的机构
List<String> unitCodesList = getNoAcceptHistoryUnit(inspectionEquipInfo);
matchEnterpriseInfos = matchEnterpriseInfos.stream().filter(u-> !unitCodesList.contains(u.getUseCode())).collect(Collectors.toList());
// 3.未空时显示默认机构(兜底机构),只匹配开通的业务类型(检验还是检测)且不匹配开通区域且不可不予受理操作
if(matchEnterpriseInfos.isEmpty()){
// 未空时显示默认机构(兜底机构),只匹配开通的业务类型(检验还是检测)且不匹配开通区域且不可不予受理操作, 预留功能
if (matchEnterpriseInfos.isEmpty() && StringUtils.isNotEmpty(defaultInspectionCode) && !defaultInspectionCode.equals(CommonConstants.NONE_DEFAULT_CODE)) {
log.info("将匹配兜底机构:{}", defaultInspectionCode);
matchEnterpriseInfos = tzBaseEnterpriseInfoMapper.getInspectionUnitListByCode(new ArrayList<>(Arrays.asList(defaultInspectionCode.split(","))), "", openBizType);
// 返回下一步是否可不予返回,供下一节点审核时显示判断是否显示不予受理按钮,在提交时数据会写入到主表:true-必须处理,false-可不予受理
this.setIsCanNoAccept(matchEnterpriseInfos, true);
......@@ -231,14 +231,15 @@ public class RuleActionHandler {
private List<TzBaseEnterpriseInfoDto> getInspectionUnitListForFirstCommit2(List<TzBaseUnitLicence> unitLicenceList, Boolean isMatchArea, InspectionEquipInfo inspectionEquipInfo, String openBizType, String defaultInspectionCode, String legalInspectionCodes, Boolean isMustAccept, String inspectionCompanyType) {
List<TzBaseEnterpriseInfoDto> matchEnterpriseInfos = new ArrayList<>();
if(inspectionCompanyType.equals(InspectionCompanyType.ALL.getCode())){
if (inspectionCompanyType.equals(InspectionCompanyType.ALL.getCode())) {
matchEnterpriseInfos = getInspectionUnitListForAll(unitLicenceList, isMatchArea, inspectionEquipInfo, openBizType, defaultInspectionCode, legalInspectionCodes, isMustAccept);
}if(inspectionCompanyType.equals(InspectionCompanyType.LEGAL.getCode())){
}
if (inspectionCompanyType.equals(InspectionCompanyType.LEGAL.getCode())) {
// 目前未使用到可替换 firstInspectionOrgMatchAction 业务
matchEnterpriseInfos = getInspectionUnitListForLegal(unitLicenceList, isMatchArea, inspectionEquipInfo, openBizType, defaultInspectionCode, legalInspectionCodes, isMustAccept);
} else if(inspectionCompanyType.equals(InspectionCompanyType.THIRD.getCode())){
} else if (inspectionCompanyType.equals(InspectionCompanyType.THIRD.getCode())) {
// TODO 待实现
log.warn("{}类型:未实现",InspectionCompanyType.THIRD.getName());
log.warn("{}类型:未实现", InspectionCompanyType.THIRD.getName());
}
return matchEnterpriseInfos;
}
......@@ -275,9 +276,12 @@ public class RuleActionHandler {
String areaCode = isMatchArea ? inspectionEquipInfo.getAreaCode() : "";
// 所有符合单位的code
Set<String> unitCodes = unitLicenceList.stream().map(TzBaseUnitLicence::getUnitCode).collect(Collectors.toSet());
List<TzBaseEnterpriseInfoDto> matchEnterpriseInfos = tzBaseEnterpriseInfoMapper.getInspectionUnitListByCode(new ArrayList<>(unitCodes), areaCode, openBizType);
List<TzBaseEnterpriseInfoDto> matchEnterpriseInfos = new ArrayList<>();
if (unitCodes.size() > 0) {
matchEnterpriseInfos = tzBaseEnterpriseInfoMapper.getInspectionUnitListByCode(new ArrayList<>(unitCodes), areaCode, openBizType);
// 返回下一步是否可不予返回,供下一节点审核时显示判断是否显示不予受理按钮,在提交时数据会写入到主表:true-必须处理,false-可不予受理
this.setIsCanNoAccept(matchEnterpriseInfos, isCanNoAccept);
}
return matchEnterpriseInfos;
}
......@@ -357,6 +361,5 @@ public class RuleActionHandler {
}
}
......@@ -13,6 +13,7 @@ import com.yeejoin.amos.boot.module.jyjc.biz.event.InspectionApplicationPushEven
import com.yeejoin.amos.boot.module.jyjc.biz.event.publisher.EventPublisher;
import com.yeejoin.amos.boot.module.jyjc.biz.service.impl.JyjcInspectionApplicationServiceImpl;
import com.yeejoin.amos.boot.module.ymt.api.dto.TzBaseEnterpriseInfoDto;
import com.yeejoin.amos.feign.systemctl.model.DictionarieModel;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -274,4 +275,11 @@ public class JyjcInspectionApplicationController extends BaseController {
public ResponseModel<List<TzBaseEnterpriseInfoDto>> getInspectionUnitListForWorkbench(@RequestParam String openBizType) {
return ResponseHelper.buildResponse(jyjcInspectionApplicationServiceImpl.getInspectionUnitListForWorkbench(openBizType));
}
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(httpMethod = "GET", value = "检验类型-按照业务查询", notes = "检验类型-按照业务查询")
@GetMapping(value = "/{bizType}/inspectType/list")
public ResponseModel<List<DictionarieModel>> inspectTypeListByBizType(@PathVariable String bizType){
return ResponseHelper.buildResponse(jyjcInspectionApplicationServiceImpl.inspectTypeListByBizType(bizType));
}
}
......@@ -5,6 +5,7 @@ import com.yeejoin.amos.boot.biz.common.controller.BaseController;
import com.yeejoin.amos.boot.module.jyjc.api.model.JyjcInspectionResultDataModel;
import com.yeejoin.amos.boot.module.jyjc.api.model.JyjcInspectionResultModel;
import com.yeejoin.amos.boot.module.jyjc.biz.service.impl.JyjcInspectionResultServiceImpl;
import com.yeejoin.amos.feign.systemctl.model.DictionarieModel;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -187,4 +188,11 @@ public class JyjcInspectionResultController extends BaseController {
public ResponseModel<List<JyjcInspectionResultDataModel>> saveResultDataBatch(@RequestBody List<JyjcInspectionResultDataModel> resultDataModels){
return ResponseHelper.buildResponse(jyjcInspectionResultServiceImpl.receivePushResultData(resultDataModels));
}
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(httpMethod = "GET", value = "检验类型-按照身份查询", notes = "\"检验类型-按照身份查询")
@GetMapping(value = "/inspectType/list")
public ResponseModel<List<DictionarieModel>> inspectTypeListByPerson(){
return ResponseHelper.buildResponse(jyjcInspectionResultServiceImpl.inspectTypeListByPerson(getSelectedOrgInfo()));
}
}
......@@ -86,7 +86,7 @@ public class DisableRuleDataPreparationListener implements ApplicationListener<I
private String getBizTypeByInspectionType(String inspectionType) {
JYJCTypeEnum jyjcTypeEnum = JYJCTypeEnum.of(inspectionType);
if (jyjcTypeEnum != null) {
return jyjcTypeEnum.getBizType();
return jyjcTypeEnum.getOpenBizType();
}
return OpenBizTypeEnum.JY.getCode();
}
......
......@@ -40,9 +40,6 @@ public class TouchRuleEventListener implements ApplicationListener<TouchRuleEven
}
private void touchRuleWithApi(InspectionEquipInfo inspectionEquipInfo) {
if (log.isInfoEnabled()) {
log.info("发送规则的消息对象:{}", toJSONString(inspectionEquipInfo));
}
try {
RequestContext.setToken(amosRequestContext.getToken());
RequestContext.setAppKey(amosRequestContext.getAppKey());
......
......@@ -39,7 +39,7 @@ public class OpenApplicationTimingDiscardJob {
if (CollectionUtils.isNotEmpty(longs)) {
for (Long aLong : longs) {
String remark = "到期作废";
String remark = "许可到期,系统自动作废";
jyjcOpeningApplicationServiceImpl.doDiscard(aLong, remark);
}
......
......@@ -7,7 +7,6 @@ import com.alibaba.fastjson.JSON;
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.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.biz.common.bo.CompanyBo;
......@@ -25,21 +24,21 @@ import com.yeejoin.amos.boot.module.jyjc.api.mapper.JyjcInspectionApplicationEqu
import com.yeejoin.amos.boot.module.jyjc.api.mapper.JyjcInspectionApplicationMapper;
import com.yeejoin.amos.boot.module.jyjc.api.model.*;
import com.yeejoin.amos.boot.module.jyjc.api.service.IJyjcInspectionApplicationService;
import com.yeejoin.amos.boot.module.jyjc.biz.dao.ESEquipmentCategory;
import com.yeejoin.amos.boot.module.jyjc.biz.event.InspectionApplicationPushEvent;
import com.yeejoin.amos.boot.module.jyjc.biz.event.publisher.EventPublisher;
import com.yeejoin.amos.boot.module.jyjc.biz.feign.JgFeignClient;
import com.yeejoin.amos.boot.module.jyjc.biz.feign.TzsServiceFeignClient;
import com.yeejoin.amos.boot.module.jyjc.biz.service.TaskModelServiceImpl;
import com.yeejoin.amos.boot.module.ymt.api.dto.ESEquipmentCategoryDto;
import com.yeejoin.amos.boot.module.ymt.api.dto.TzBaseEnterpriseInfoDto;
import com.yeejoin.amos.boot.module.ymt.api.entity.IdxBizJgUseInfo;
import com.yeejoin.amos.boot.module.ymt.api.enums.ApplicationFormTypeEnum;
import com.yeejoin.amos.boot.module.ymt.api.enums.EquimentEnum;
import com.yeejoin.amos.boot.module.ymt.api.enums.FlowStatusEnum;
import com.yeejoin.amos.boot.module.ymt.api.mapper.EquipmentCategoryMapper;
import com.yeejoin.amos.boot.module.ymt.api.mapper.IdxBizJgUseInfoMapper;
import com.yeejoin.amos.component.feign.model.FeignClientResult;
import com.yeejoin.amos.feign.privilege.Privilege;
import com.yeejoin.amos.feign.privilege.model.CompanyModel;
import com.yeejoin.amos.feign.systemctl.model.DictionarieModel;
import com.yeejoin.amos.feign.systemctl.model.TaskV2Model;
import com.yeejoin.amos.feign.workflow.model.ActWorkflowBatchDTO;
import com.yeejoin.amos.feign.workflow.model.ActWorkflowStartDTO;
......@@ -73,6 +72,7 @@ import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import org.typroject.tyboot.core.rdbms.service.BaseService;
import org.typroject.tyboot.core.restful.exception.instance.BadRequest;
import javax.validation.constraints.NotNull;
import java.io.IOException;
import java.util.*;
import java.util.concurrent.TimeUnit;
......@@ -146,9 +146,6 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
DataDictionaryServiceImpl dataDictionaryService;
@Autowired
EquipmentCategoryMapper equipmentCategoryMapper;
@Autowired
JyjcOpeningApplicationServiceImpl openingApplicationService;
@Autowired
......@@ -163,6 +160,9 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
@Autowired
JyjcInspectionApplicationNoAcceptLogServiceImpl noAcceptLogService;
@Autowired
private ESEquipmentCategory esEquipmentCategory;
private static final String EQU_STATE = "EQU_STATE";
private static final String EQU_CODE = "EQU_CODE";
......@@ -230,10 +230,19 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
model.setPromoter(RequestContext.getExeUserId());
model.setNextExecuteUserIds(nextUserIds);
model.setStatus(String.valueOf(FlowStatusEnum.TO_SUBMITTED.getCode())); //6611 对应数据字典 检验流程状态 待受理
model.setStatusName(FlowStatusEnum.TO_SUBMITTED.getName());
commonService.saveExecuteFlowData2Redis(model.getProcessInstanceId(), this.buildInstanceRuntimeData(model));
} else if ("1".equals(model.getOperationType())) { // 工作台暂存、详情保存逻辑
setNameAndIsMustAccept(model);
if(null == model.getSequenceNbr()){
// 工作台暂存
model.setStatus(String.valueOf(FlowStatusEnum.TO_BE_SUBMITTED.getCode()));
model.setStatusName(FlowStatusEnum.TO_BE_SUBMITTED.getName());
} else {
// 详情保存
log.info("详情保存,不修改业务状态");
}
setNameAndIsMustAccept(model);
}
LambdaQueryWrapper<JyjcOpeningApplication> wa = new LambdaQueryWrapper<JyjcOpeningApplication>().eq(JyjcOpeningApplication::getUnitCode, model.getInspectionUnitCode()).eq(JyjcOpeningApplication::getStatus, FlowStatusEnum.TO_BE_FINISHED.getCode());
......@@ -250,8 +259,6 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
model.setApplicationDate(new Date());
model.setPromoter(reginParams.getUserModel().getUserId());
model.setApplicationUnitName(reginParams.getCompany().getCompanyName());
jyjcInspectionApplicationEquipService.getBaseMapper().deleteByApplicationSeq(model.getSequenceNbr());
List<JyjcInspectionApplicationEquip> equipInfos = new ArrayList<>();
if (null != model.getEquip() && model.getEquip().size() > 0) {
List<JyjcInspectionApplicationEquipDto> equips = JSONObject.parseArray(JSON.toJSONString(model.getEquip()), JyjcInspectionApplicationEquipDto.class);
......@@ -264,8 +271,8 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
equipInfo.setSupervisoryCode(equip.getSupervisoryCode());
equipInfos.add(equipInfo);
}
model.setEquList(model.getEquip().get(0).getOrDefault("EQU_LIST", "").toString());
model.setSupervisoryCode(model.getEquip().get(0).getOrDefault("SUPERVISORY_CODE", "").toString());
model.setEquList(null2String(model.getEquip().get(0).get("EQU_LIST")));
model.setSupervisoryCode(null2String(model.getEquip().get(0).get("SUPERVISORY_CODE")));
}
model.setCreateUserId(reginParams.getUserModel().getUserId());
model.setNumberOfEquip(equipInfos.size());
......@@ -299,8 +306,8 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
taskModelService.buildTaskModel(Arrays.asList(dto));
}
} else {
jyjcInspectionApplicationEquipService.getBaseMapper().deleteByApplicationSeq(model.getSequenceNbr());
model = this.updateWithModel(model);
if (StringUtils.isNotBlank(model.getProcessInstanceId()) && model.getOperationType().equals("0")) {
taskModelService.deleteTaskModel(model.getSequenceNbr() + "");
this.createdTaskModel(model);
......@@ -319,6 +326,7 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
}
applicationEquipService.saveBatch(equipInfos);
// 附件保存
jyjcInspectionApplicationAttachmentService.getBaseMapper().deleteByApplicationSeq(model.getSequenceNbr());
List<String> enumNameList = DocumentEnum.getEnumNameList();
for (String code : enumNameList) {
if (obj.containsKey(code)) {
......@@ -357,8 +365,8 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
equipInfo.setApplicationSeq(model.getSequenceNbr());
jyjcInspectionApplicationEquipService.save(equipInfo);
}
model.setEquList(model.getEquip().get(0).getOrDefault("EQU_LIST", "").toString());
model.setSupervisoryCode(model.getEquip().get(0).getOrDefault("SUPERVISORY_CODE", "").toString());
model.setEquList(null2String(model.getEquip().get(0).get("EQU_LIST")));
model.setSupervisoryCode(null2String(model.getEquip().get(0).get("SUPERVISORY_CODE")));
}
// 附件更新
......@@ -420,7 +428,12 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
return this.buildRedundancyField(model);
}
private String null2String(Object obj){
return obj == null ? "" : obj.toString();
}
private void setNameAndIsMustAccept(JyjcInspectionApplicationModel model) {
if(model.getInspectionUnitCode() != null){
String[] inspectionUnit = model.getInspectionUnitCode().split("_");
if (inspectionUnit.length == 2) {
model.setInspectionUnitCode(inspectionUnit[0]);
......@@ -430,6 +443,7 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
this.setInspectionUnitNameAfterSave(model);
}
}
}
/**
* 提交时校验是否有在流程中(流程状态待受理)的设备
......@@ -548,42 +562,59 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
public Map<String, Object> selectBySeq(Long sequenceNbr, String companyType) {
JyjcInspectionApplicationModel model = this.getBaseMapper().selectDataBySeq(sequenceNbr);
Map<String, Object> map = BeanUtil.beanToMap(model);
// 附件
Map<String, Object> attMap = getAttachmentMap(sequenceNbr);
// 设备
List<Map<String, Object>> arrayList = getEquipInfoList(sequenceNbr);
map.put("equip", arrayList);
map.putAll(attMap);
map.put("companyType", companyType);
this.setPlanData(sequenceNbr, map);
return map;
}
private List<Map<String, Object>> getEquipInfoList(Long sequenceNbr) {
Iterable<ESEquipmentCategoryDto> equips = getEsEquipmentCategoryDtos(sequenceNbr);
return getEquipListMaps(equips);
}
private Map<String, Object> getAttachmentMap(Long sequenceNbr) {
List<Map<String, Object>> dataByApplicationSeq = jyjcInspectionApplicationAttachmentService.getBaseMapper().getDataByApplicationSeq(sequenceNbr);
Map<String, Object> attMap = new HashMap<>();
for (Map<String, Object> maps : dataByApplicationSeq) {
List<AttachmentDto> data = JSONArray.parseArray(maps.get("attachment_url").toString(), AttachmentDto.class);
attMap.put(maps.get("attachment_type").toString(), data);
}
LambdaQueryWrapper<JyjcInspectionApplicationEquip> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(JyjcInspectionApplicationEquip::getApplicationSeq, sequenceNbr);
List<JyjcInspectionApplicationEquip> jyjcInspectionApplicationEquips = jyjcInspectionApplicationEquipMapper.selectList(wrapper);
String collect = jyjcInspectionApplicationEquips.stream().map(JyjcInspectionApplicationEquip::getEquipUnicode).distinct().collect(Collectors.joining(","));
HashMap<String, Object> hashMap = new HashMap<>();
hashMap.put("number", 1);
hashMap.put("size", jyjcInspectionApplicationEquips.size());
hashMap.put("SEQUENCE_NBR", collect);
FeignClientResult<Page<JSONObject>> response = jgFeignClient.queryForPage(hashMap);
if (200 == response.getStatus() && ObjectUtils.isNotEmpty(response.getResult())) {
List<JSONObject> records = response.getResult().getRecords();
ArrayList<Map<String, Object>> arrayList = new ArrayList<>();
records.forEach(item -> {
HashMap<String, Object> objectHashMap = new HashMap<>();
for (Map.Entry<String, Object> stringObjectEntry : item.entrySet()) {
objectHashMap.put(stringObjectEntry.getKey(), stringObjectEntry.getValue());
String s = stringObjectEntry.getKey().toLowerCase();
objectHashMap.put(CharSequenceUtil.toCamelCase(s), stringObjectEntry.getValue());
if (stringObjectEntry.getKey().equals("SEQUENCE_NBR")) {
objectHashMap.put("record", stringObjectEntry.getValue());
}
return attMap;
}
private List<Map<String, Object>> getEquipListMaps(Iterable<ESEquipmentCategoryDto> equips) {
List<Map<String, Object>> arrayList = new ArrayList<>();
equips.forEach(equip -> {
Map<String, Object> objectHashMap = new HashMap<>();
BeanUtil.beanToMap(equip, objectHashMap, false,false);
objectHashMap.put("record", equip.getSEQUENCE_NBR());
objectHashMap.put("ADDRESS", concatDetailAddress(equip));
arrayList.add(objectHashMap);
});
map.put("equip", arrayList);
return arrayList;
}
map.putAll(attMap);
map.put("companyType", companyType);
this.setPlanData(sequenceNbr, map);
return map;
private String concatDetailAddress(ESEquipmentCategoryDto esEquipmentCategoryDto) {
// 省、市、区
String usePlace = esEquipmentCategoryDto.getUSE_PLACE();
// 详细地址
String address = esEquipmentCategoryDto.getADDRESS();
return String.format("%s%s",usePlace, address);
}
private Iterable<ESEquipmentCategoryDto> getEsEquipmentCategoryDtos(Long sequenceNbr) {
LambdaQueryWrapper<JyjcInspectionApplicationEquip> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(JyjcInspectionApplicationEquip::getApplicationSeq, sequenceNbr);
wrapper.select(JyjcInspectionApplicationEquip::getEquipUnicode);
List<JyjcInspectionApplicationEquip> jyjcInspectionApplicationEquips = jyjcInspectionApplicationEquipMapper.selectList(wrapper);
List<String> records = jyjcInspectionApplicationEquips.stream().map(JyjcInspectionApplicationEquip::getEquipUnicode).distinct().collect(Collectors.toList());
return esEquipmentCategory.findAllById(records);
}
private void setPlanData(Long sequenceNbr, Map<String, Object> map) {
......@@ -1271,7 +1302,7 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
private Object removeSplitLine(JSONObject item) {
String fullAddress = item.getString("USE_PLACE") + item.getString("ADDRESS");
fullAddress = fullAddress.replace("/","") ;
fullAddress = fullAddress.replace("/", "");
return fullAddress;
}
......@@ -1279,4 +1310,20 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
public List<TzBaseEnterpriseInfoDto> getInspectionUnitListForWorkbench(String openBizType) {
return commonService.getInspectionUnitList(openBizType);
}
public List<DictionarieModel> inspectTypeListByBizType(String bizType) {
return getDictionarieModels(bizType);
}
@NotNull
public static List<DictionarieModel> getDictionarieModels(String bizType) {
List<JYJCTypeEnum> enums = JYJCTypeEnum.getListByBizType(bizType);
return enums.stream().map(e -> {
DictionarieModel dictionarieModel = new DictionarieModel();
dictionarieModel.setDictCode(e.getCode());
dictionarieModel.setDictName(e.getName());
return dictionarieModel;
}).collect(Collectors.toList());
}
}
\ No newline at end of file
......@@ -16,7 +16,9 @@ import com.yeejoin.amos.boot.module.jyjc.api.common.StringUtil;
import com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcInspectionResult;
import com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcInspectionResultAttachment;
import com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcInspectionResultParam;
import com.yeejoin.amos.boot.module.jyjc.api.enums.BizTypeEnum;
import com.yeejoin.amos.boot.module.jyjc.api.enums.EquipCategoryEnum;
import com.yeejoin.amos.boot.module.jyjc.api.enums.JYJCTypeEnum;
import com.yeejoin.amos.boot.module.jyjc.api.enums.ResultStatusEnum;
import com.yeejoin.amos.boot.module.jyjc.api.mapper.JyjcInspectionResultMapper;
import com.yeejoin.amos.boot.module.jyjc.api.model.JyjcInspectionResultDataModel;
......@@ -33,6 +35,7 @@ import com.yeejoin.amos.boot.module.ymt.api.entity.InspectionDetectionInfo;
import com.yeejoin.amos.boot.module.ymt.api.entity.TzsUserInfo;
import com.yeejoin.amos.boot.module.ymt.api.enums.EquipmentClassifityEnum;
import com.yeejoin.amos.boot.module.ymt.api.mapper.*;
import com.yeejoin.amos.feign.systemctl.model.DictionarieModel;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
......@@ -187,6 +190,16 @@ public class JyjcInspectionResultServiceImpl extends BaseService<JyjcInspectionR
return "no";
}
static String getPersonIdentityByType(String companyType) {
if ("使用单位".equals(companyType)) {
return BizTypeEnum.FIRST_INSPECTION.getCode();
} else if ("安装改造维修单位".equals(companyType)) {
return BizTypeEnum.SUPERVISE.getCode();
} else {
return "";
}
}
@Transactional(rollbackFor = Exception.class)
public JyjcInspectionResultModel updateJyjcInspectionResult(Map<String, Map<String, Object>> tableModel) {
......@@ -291,7 +304,8 @@ public class JyjcInspectionResultServiceImpl extends BaseService<JyjcInspectionR
info.setInspectStaffCode(model.getInspector());
info.setInspectReport(jybgFile.getAttachmentUrl());
info.setInspectConclusion(model.getInspectionConclusion());
info.setProblemRemark(model.getNonConformance());
// json字段暂时注释
// info.setProblemRemark(model.getNonConformance());
info.setNextInspectDate(model.getNextInspectionDate());
info.setSequenceCode(model.getEquipUnicode());
info.setInspectOrgCode(model.getInspectionUnitCode());
......@@ -408,11 +422,11 @@ public class JyjcInspectionResultServiceImpl extends BaseService<JyjcInspectionR
private void deleteAndCreateSubTable(Map<String, JyjcInspectionResult> resultListMap, List<JyjcInspectionResultAttachment> resultAttachments, List<JyjcInspectionResultParam> resultParams) {
List<JyjcInspectionResult> resultList = new ArrayList<>(resultListMap.values());
List<Long> resultIds = resultList.stream().map(BaseEntity::getSequenceNbr).collect(Collectors.toList());
if(resultAttachments.size() > 0){
attachmentService.remove(new LambdaQueryWrapper<JyjcInspectionResultAttachment>().in(JyjcInspectionResultAttachment::getResultSeq,resultIds));
if (resultAttachments.size() > 0) {
attachmentService.remove(new LambdaQueryWrapper<JyjcInspectionResultAttachment>().in(JyjcInspectionResultAttachment::getResultSeq, resultIds));
attachmentService.saveBatch(resultAttachments);
}
if(resultParams.size() >0){
if (resultParams.size() > 0) {
resultParamService.remove(new LambdaQueryWrapper<JyjcInspectionResultParam>().in(JyjcInspectionResultParam::getResultSeq, resultIds));
resultParamService.saveBatch(resultParams);
}
......@@ -469,7 +483,7 @@ public class JyjcInspectionResultServiceImpl extends BaseService<JyjcInspectionR
}
private String getUserSeqByPersonCode(String innerPersonCode) {
if(StrUtil.isNotEmpty(innerPersonCode)){
if (StrUtil.isNotEmpty(innerPersonCode)) {
List<TzsUserInfo> tzsUserInfos = tzsUserInfoMapper.selectList(new LambdaQueryWrapper<TzsUserInfo>().in(TzsUserInfo::getInnerPersonCode, Arrays.asList(innerPersonCode.split(","))));
return tzsUserInfos.stream().map(u -> u.getSequenceNbr() + "").collect(Collectors.joining(","));
}
......@@ -484,6 +498,11 @@ public class JyjcInspectionResultServiceImpl extends BaseService<JyjcInspectionR
wrapper.in(JyjcInspectionResult::getApplicationNo, applicationNos);
wrapper.in(JyjcInspectionResult::getSupervisoryCode, supervisoryCodes);
List<JyjcInspectionResult> resultList = this.list(wrapper);
return resultList.stream().collect(Collectors.toMap((c)-> c.getApplicationNo() + ":" + c.getSupervisoryCode(), Function.identity()));
return resultList.stream().collect(Collectors.toMap((c) -> c.getApplicationNo() + ":" + c.getSupervisoryCode(), Function.identity()));
}
public List<DictionarieModel> inspectTypeListByPerson(ReginParams selectedOrgInfo) {
String group = getPersonIdentityByType(selectedOrgInfo.getCompany().getCompanyType());
return JyjcInspectionApplicationServiceImpl.getDictionarieModels(group);
}
}
\ No newline at end of file
......@@ -316,7 +316,7 @@ public class JyjcOpeningApplicationServiceImpl extends BaseService<JyjcOpeningAp
LambdaUpdateWrapper<JyjcOpeningApplication> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.set(JyjcOpeningApplication::getStatus, FlowStatusEnum.TO_BE_DISCARD.getCode())
.set(JyjcOpeningApplication::getStatusName, FlowStatusEnum.TO_BE_DISCARD.getName())
.set(JyjcOpeningApplication::getRemark, "到期作废")
.set(JyjcOpeningApplication::getRemark, "新开通申请生效,原有开通申请自动作废")
.in(org.typroject.tyboot.core.rdbms.orm.entity.BaseEntity::getSequenceNbr, ids);
this.update(updateWrapper);
}
......@@ -453,18 +453,21 @@ public class JyjcOpeningApplicationServiceImpl extends BaseService<JyjcOpeningAp
}
private void setBaseUnitLicences(String unitCode, JyjcOpeningApplicationModel jyjcOpeningApplicationModel, boolean isNeedFilter) {
List<BaseUnitLicence> baseUnitLicences = baseUnitLicenceMapper.selectList(new LambdaQueryWrapper<BaseUnitLicence>().eq(BaseUnitLicence::getUnitCode, unitCode).in(BaseUnitLicence::getCertTypeCode, Arrays.asList(jyCertTypeCode, jcCertTypeCode)));
List<TzBaseUnitLicenceDto> baseUnitLicencesDtos = baseUnitLicences.stream().map(l -> {
List<BaseUnitLicence> baseUnitLicences = baseUnitLicenceMapper.selectList(new LambdaQueryWrapper<BaseUnitLicence>()
.eq(BaseUnitLicence::getUnitCode, unitCode)
.gt(BaseUnitLicence::getExpiryDate , new Date())
.in(BaseUnitLicence::getCertTypeCode, Arrays.asList(jyCertTypeCode, jcCertTypeCode)));
List<TzBaseUnitLicenceDto> licences = baseUnitLicences.stream().map(l -> {
TzBaseUnitLicenceDto licenceDto = new TzBaseUnitLicenceDto();
BeanUtil.copyProperties(l, licenceDto);
licenceDto.setCertTypeCode(this.castCode2Str(l.getCertTypeCode()));
return licenceDto;
}).collect(Collectors.toList());
if (isNeedFilter) {
baseUnitLicencesDtos = baseUnitLicencesDtos.stream().filter(u -> u.getCertTypeCode().equals(jyjcOpeningApplicationModel.getOpenBizType())).collect(Collectors.toList());
jyjcOpeningApplicationModel.setBaseUnitLicences(baseUnitLicencesDtos);
licences = licences.stream().filter(u -> u.getCertTypeCode().equals(jyjcOpeningApplicationModel.getOpenBizType())).collect(Collectors.toList());
jyjcOpeningApplicationModel.setBaseUnitLicences(licences);
} else {
jyjcOpeningApplicationModel.setBaseUnitLicences(baseUnitLicencesDtos);
jyjcOpeningApplicationModel.setBaseUnitLicences(licences);
}
}
......@@ -486,6 +489,7 @@ public class JyjcOpeningApplicationServiceImpl extends BaseService<JyjcOpeningAp
LambdaQueryWrapper<TzsUserInfo> userInfoQueryWrapper = new LambdaQueryWrapper<>();
userInfoQueryWrapper.eq(TzsUserInfo::getUnitCode, unitCode);
userInfoQueryWrapper.eq(BaseEntity::getIsDelete, false);
this.castPersonType2Post(userInfoQueryWrapper, openBizType);
List<TzsUserInfo> userInfos = userInfoMapper.selectList(userInfoQueryWrapper);
if (!ValidationUtil.isEmpty(userInfos)) {
List<TzsUserInfoVo> tzsUserInfoVos = userInfos.stream().map(userInfo -> {
......@@ -674,6 +678,8 @@ public class JyjcOpeningApplicationServiceImpl extends BaseService<JyjcOpeningAp
taskParams.put("taskStatusLabel", FlowStatusEnum.TO_BE_FINISHED.getName());
taskParams.put("model", jyjcOpeningApplication);
taskModelService.updateTaskModel(taskParams);
List<String> detectionRegion = (List<String>)params.get("detectionRegion");
jyjcOpeningApplication.setDetectionRegion(detectionRegion);
jyjcOpeningApplication.setPromoter("");
jyjcOpeningApplication.setNextTaskId("");
jyjcOpeningApplication.setNextExecuteUserIds("");
......
......@@ -68,3 +68,5 @@ inspection.rule.enabled.AZJDJY=true
inspection.rule.enabled.GZJDJY=true
#维修监督检验是否启用规则:true-启用,false-不启用
inspection.rule.enabled.WXJDJY=true
#电梯检测是否启用规则:true-启用,false-不启用
inspection.rule.enabled.DTJC=true
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment