新增执法检查、执法信息、企业信息、企业分级分类、企业上报审核等接口
This commit is contained in:
parent
a7420da684
commit
133ef6a2de
|
|
@ -0,0 +1,680 @@
|
|||
package com.aisino.iles.lawenforcement.service;
|
||||
|
||||
|
||||
import com.aisino.iles.common.model.enums.IndustryCategoryForFile;
|
||||
import com.aisino.iles.common.service.FtpService;
|
||||
import com.aisino.iles.common.util.KmsServer;
|
||||
import com.aisino.iles.common.util.PageableHelper;
|
||||
import com.aisino.iles.core.exception.BusinessError;
|
||||
import com.aisino.iles.core.repository.DictItemRepo;
|
||||
import com.aisino.iles.lawenforcement.event.DataChangeAction;
|
||||
import com.aisino.iles.lawenforcement.event.aop.PublishDataChange;
|
||||
import com.aisino.iles.lawenforcement.model.*;
|
||||
import com.aisino.iles.lawenforcement.model.dto.EnforceCheckDto;
|
||||
import com.aisino.iles.lawenforcement.model.dto.EnforceCheckResDto;
|
||||
import com.aisino.iles.lawenforcement.model.dto.EnforceCheckScenePicDto;
|
||||
import com.aisino.iles.lawenforcement.model.dto.FormDataDto;
|
||||
import com.aisino.iles.lawenforcement.model.enums.FlowNode;
|
||||
import com.aisino.iles.lawenforcement.model.query.EnforceCheckQuery;
|
||||
import com.aisino.iles.lawenforcement.repository.*;
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.github.f4b6a3.ulid.Ulid;
|
||||
import com.smartlx.sso.client.model.RemoteUserInfo;
|
||||
import jakarta.persistence.criteria.Join;
|
||||
import jakarta.persistence.criteria.JoinType;
|
||||
import jakarta.persistence.criteria.Predicate;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.jpa.domain.Specification;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.StringUtils;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.atomic.AtomicReference;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
/**
|
||||
* 执法检查记录服务类
|
||||
*/
|
||||
@Service
|
||||
@Slf4j
|
||||
public class EnforceCheckService {
|
||||
private final EnforceCheckRepository enforceCheckRepo;
|
||||
private final CheckItemRepository checkItemRepo;
|
||||
private final MaterialsRepository materialsRepo;
|
||||
private final EnforcementInfoRepository enforcementInfoRepo;
|
||||
private final SpotCheckRepository spotCheckRepo;
|
||||
private final SpotCheckListRepository spotCheckListRepo;
|
||||
private final ObjectMapper objectMapper;
|
||||
private final FtpService ftpService;
|
||||
private final AgencyRepository agencyRepository;
|
||||
private final OfficerRepository officerRepo;
|
||||
private final DictItemRepo dictItemRepo;
|
||||
private final CaseRepository caseRepo;
|
||||
|
||||
public EnforceCheckService(EnforceCheckRepository enforceCheckRepo,
|
||||
CheckItemRepository checkItemRepo,
|
||||
MaterialsRepository materialsRepo,
|
||||
ObjectMapper objectMapper,
|
||||
FtpService ftpService,
|
||||
EnforcementInfoRepository enforcementInfoRepo,
|
||||
AgencyRepository agencyRepository,
|
||||
SpotCheckRepository spotCheckRepo,
|
||||
SpotCheckListRepository spotCheckListRepo,
|
||||
OfficerRepository officerRepo,
|
||||
DictItemRepo dictItemRepo,
|
||||
CaseRepository caseRepo) {
|
||||
this.enforceCheckRepo = enforceCheckRepo;
|
||||
this.checkItemRepo = checkItemRepo;
|
||||
this.materialsRepo = materialsRepo;
|
||||
this.objectMapper = objectMapper;
|
||||
this.ftpService = ftpService;
|
||||
this.enforcementInfoRepo = enforcementInfoRepo;
|
||||
this.agencyRepository = agencyRepository;
|
||||
this.spotCheckRepo = spotCheckRepo;
|
||||
this.spotCheckListRepo = spotCheckListRepo;
|
||||
this.officerRepo = officerRepo;
|
||||
this.dictItemRepo = dictItemRepo;
|
||||
this.caseRepo = caseRepo;
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存执法检查记录
|
||||
*
|
||||
* @param enforceCheck 执法检查记录
|
||||
* @return 保存后的执法检查记录
|
||||
*/
|
||||
@PublishDataChange(action = DataChangeAction.SAVE)
|
||||
@Transactional
|
||||
public List<Object> saveEnforceCheck(EnforceCheck enforceCheck, RemoteUserInfo user, String type) {
|
||||
LocalDateTime now = LocalDateTime.now();
|
||||
List<Object> publishData = new ArrayList<>();
|
||||
publishData.add(enforceCheck);
|
||||
if ("add".equals(type)) {
|
||||
enforceCheck.setCreateTime(now);
|
||||
if (null != user) {
|
||||
enforceCheck.setCreatedBy(user.getXm());
|
||||
enforceCheck.setCreatedAccountBy(user.getYhwybs());
|
||||
}
|
||||
}
|
||||
String tag = enforceCheck.getTag();
|
||||
if ("check".equals(tag) || "rechecked".equals(tag)) {
|
||||
if (!enforceCheck.getItems().isEmpty()) {
|
||||
if ("check".equals(tag)) {
|
||||
enforceCheckRepo.findById(enforceCheck.getEnforceCheckId()).ifPresent(e -> {
|
||||
Map<String, Object> result = e.getCheckItemResult();
|
||||
for (CheckItem item : enforceCheck.getItems()) {
|
||||
String itemId = item.getItemId();
|
||||
if (null != result && result.containsKey(itemId)) {
|
||||
EnforceCheckScenePicDto scenePicDto = objectMapper.convertValue(result.get(itemId), EnforceCheckScenePicDto.class);
|
||||
scenePicDto.setItemId(itemId);
|
||||
scenePicDto.setCheckNote(item.getCheckNote());
|
||||
scenePicDto.setEligibility(item.getEligibility());
|
||||
scenePicDto.setCheckResultCode(item.getCheckResultCode());
|
||||
result.put(itemId, scenePicDto);
|
||||
} else {
|
||||
if (null == result)
|
||||
result = new HashMap<>();
|
||||
EnforceCheckScenePicDto dto = new EnforceCheckScenePicDto();
|
||||
dto.setItemId(itemId);
|
||||
dto.setEligibility(item.getEligibility());
|
||||
dto.setCheckNote(item.getCheckNote());
|
||||
// 适配app保存接口
|
||||
List<String> urls =new ArrayList<>();
|
||||
item.getPaths().forEach(url -> {
|
||||
urls.add(url);
|
||||
});
|
||||
if(urls.size()>0){
|
||||
dto.setUrls(urls);
|
||||
}
|
||||
dto.setCheckResultCode(item.getCheckResultCode());
|
||||
result.put(itemId, dto);
|
||||
}
|
||||
}
|
||||
enforceCheck.setCheckItemResult(result);
|
||||
});
|
||||
}
|
||||
}
|
||||
//修改执法信息状态
|
||||
enforcementInfoRepo.findById(enforceCheck.getEnforcementId()).ifPresent(enforcementInfo -> {
|
||||
if ("check".equals(tag)) {
|
||||
enforcementInfo.setCurrentNodeCode(FlowNode.fromString(enforceCheck.getCurrentNodeCode()));
|
||||
enforcementInfo.setCurrentNode(enforceCheck.getCurrentNode());
|
||||
if ("2".equals(enforceCheck.getCheckResult())) { //2-责令当场整改
|
||||
enforcementInfo.setRechecked("2");
|
||||
} else if ("3".equals(enforceCheck.getCheckResult())) { //3-责令限期整改
|
||||
enforcementInfo.setRechecked("1");
|
||||
} else if ("4".equals(enforceCheck.getCheckResult())) { //4-其他
|
||||
enforcementInfo.setRechecked("3");
|
||||
} else {
|
||||
enforcementInfo.setRechecked("0");
|
||||
}
|
||||
if ("1".equals(enforceCheck.getEnforcementInfo().getFillingFlag())) {//1-正常
|
||||
enforcementInfo.setFillingFlag("1");
|
||||
enforcementInfo.setFillingTime(now);
|
||||
} else {
|
||||
enforcementInfo.setFillingFlag("0");
|
||||
}
|
||||
} else {
|
||||
enforcementInfo.setRechecked("11");
|
||||
}
|
||||
enforcementInfo.setUpdateTime(now);
|
||||
enforcementInfoRepo.save(enforcementInfo);
|
||||
publishData.add(enforcementInfo);
|
||||
});
|
||||
}
|
||||
enforceCheck.setUpdateTime(now);
|
||||
enforceCheckRepo.save(enforceCheck);
|
||||
return publishData;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据ID查询执法检查记录
|
||||
*
|
||||
* @param enforceCheckId 检查项ID
|
||||
* @return 执法检查记录
|
||||
*/
|
||||
public Optional<EnforceCheck> findEnforceCheckById(String enforceCheckId) {
|
||||
if (!StringUtils.hasText(enforceCheckId)) {
|
||||
throw new BusinessError("法检查记录ID不能为空");
|
||||
}
|
||||
return enforceCheckRepo.findById(enforceCheckId).map(enforceCheck -> {
|
||||
String itemIds = enforceCheck.getCheckItemIds();
|
||||
if (StringUtils.hasText(itemIds)) {
|
||||
String[] arr = itemIds.split(",");
|
||||
List<CheckItem> items = checkItemRepo.findAllById(List.of(arr));
|
||||
Map<String, Object> result = enforceCheck.getCheckItemResult();
|
||||
|
||||
if (null != result) {
|
||||
items.forEach(item -> {
|
||||
EnforceCheckScenePicDto dto = objectMapper.convertValue(result.get(item.getItemId()), EnforceCheckScenePicDto.class);
|
||||
if (null != dto) {
|
||||
item.setEligibility(dto.getEligibility());
|
||||
item.setCheckNote(dto.getCheckNote());
|
||||
List<String> urls = dto.getUrls();
|
||||
if (null != urls && !urls.isEmpty()) {
|
||||
List<Map<String, String>> list = urls.stream().map(u -> {
|
||||
Map<String, String> m = new HashMap<>();
|
||||
m.put("path", u);
|
||||
m.put("url", ftpService.getFileUrl(u));
|
||||
m.put("id", Ulid.fast().toLowerCase());
|
||||
return m;
|
||||
}).collect(Collectors.toList());
|
||||
item.setUrls(list);
|
||||
}
|
||||
item.setCheckResultCode(dto.getCheckResultCode());
|
||||
}
|
||||
});
|
||||
}
|
||||
enforceCheck.setItems(items);
|
||||
}
|
||||
enforceCheck.setDzcls(materialsRepo.findByLinkId(enforceCheck.getEnforceCheckId()).stream().peek(dzcl -> {
|
||||
String dzclUrl = dzcl.getSavePath();
|
||||
if (StringUtils.hasText(dzclUrl)) {
|
||||
dzcl.setUrl(ftpService.getFileUrl(dzclUrl));
|
||||
dzcl.setDownloadUrl(ftpService.getFileDownloadUrl(dzclUrl));
|
||||
}
|
||||
}).collect(Collectors.toList()));
|
||||
return enforceCheck;
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据查询条件分页查询执法检查记录
|
||||
*
|
||||
* @param query 查询条件
|
||||
* @return 分页执法检查记录
|
||||
*/
|
||||
@Transactional(readOnly = true)
|
||||
public Page<EnforceCheck> findEnforceCheckPage(EnforceCheckQuery query, RemoteUserInfo user) {
|
||||
return enforceCheckRepo.findAll(build(query, user), PageableHelper.buildPageRequest(query.page(), query.pageSize(), query.sort(), query.dir())).map(this::handleResult);
|
||||
}
|
||||
|
||||
private EnforceCheck handleResult(EnforceCheck check) {
|
||||
Optional.ofNullable(check.getEnforcementInfo().getAgency()).ifPresent(agency -> agency.getAgencyName());
|
||||
// check.getEnforcementInfo().getAgency().getAgencyName();
|
||||
check.getEnforcementInfo().getEnterprise().getUnitName();
|
||||
check.getEnforcementInfo().getEnterprise().getUnifiedSocialCode();
|
||||
return check;
|
||||
}
|
||||
|
||||
/**
|
||||
* 构建查询条件
|
||||
*
|
||||
* @param query 查询条件
|
||||
* @return 规格
|
||||
*/
|
||||
private Specification<EnforceCheck> build(EnforceCheckQuery query, RemoteUserInfo user) {
|
||||
Agency currentAgency = agencyRepository.findByAgencyCode(user.getGajgjgdm()).orElseThrow(() -> new RuntimeException("当前用户机构数据错误,请检查!"));
|
||||
return (root, criteriaQuery, criteriaBuilder) -> {
|
||||
List<Predicate> predicates = new ArrayList<>();
|
||||
Optional.ofNullable(query.getEnterpriseId()).filter(StringUtils::hasText).ifPresent(o -> predicates.add(criteriaBuilder.equal(root.get(EnforceCheck_.enforcementInfo).get(EnforcementInfo_.enterpriseId), o)));
|
||||
if (currentAgency.getAgencyLevel() == 3) {
|
||||
Join<EnforceCheck, EnforcementInfo> enforcementInfoEnforceCheckRoot = root.join("enforcementInfo", JoinType.LEFT);
|
||||
predicates.add(criteriaBuilder.equal((enforcementInfoEnforceCheckRoot.get(EnforcementInfo_.agency).get(Agency_.agencyCode)), currentAgency.getAgencyCode()));
|
||||
}
|
||||
Optional.ofNullable(query.getSupplementVerifyResult()).ifPresent(o -> {
|
||||
// 填报内容查询
|
||||
if ("tb".equals(o)) {
|
||||
predicates.add(criteriaBuilder.or(
|
||||
criteriaBuilder.notEqual(root.get("supplementVerifyResult"), "1"),
|
||||
criteriaBuilder.isNull(root.get("supplementVerifyResult"))
|
||||
));
|
||||
}
|
||||
//审批内容查询
|
||||
else if ("sp".equals(o)) {
|
||||
predicates.add(criteriaBuilder.equal(root.get("supplementVerifyResult"), "2"));
|
||||
} else {
|
||||
predicates.add(criteriaBuilder.equal(root.get("supplementVerifyResult"), o));
|
||||
}
|
||||
});
|
||||
Optional.ofNullable(query.getCreateTime()).filter(f -> f.length == 2).map(f -> {
|
||||
List<Predicate> timePredicates = new ArrayList<>();
|
||||
Optional.ofNullable(f[0]).map(from -> criteriaBuilder.greaterThanOrEqualTo(root.get("createTime"), from)).ifPresent(timePredicates::add);
|
||||
Optional.ofNullable(f[1]).map(to -> criteriaBuilder.lessThanOrEqualTo(root.get("createTime"), to)).ifPresent(timePredicates::add);
|
||||
return timePredicates;
|
||||
}).ifPresent(predicates::addAll);
|
||||
Optional.ofNullable(query.getCheckDate()).filter(f -> f.length == 2).map(f -> {
|
||||
List<Predicate> timePredicates = new ArrayList<>();
|
||||
Optional.ofNullable(f[0]).map(from -> criteriaBuilder.greaterThanOrEqualTo(root.get("checkDate"), from)).ifPresent(timePredicates::add);
|
||||
Optional.ofNullable(f[1]).map(to -> criteriaBuilder.lessThanOrEqualTo(root.get("checkDate"), to)).ifPresent(timePredicates::add);
|
||||
return timePredicates;
|
||||
}).ifPresent(predicates::addAll);
|
||||
Optional.ofNullable(query.getSupplementVerifyTime()).filter(f -> f.length == 2).map(f -> {
|
||||
List<Predicate> timePredicates = new ArrayList<>();
|
||||
Optional.ofNullable(f[0]).map(from -> criteriaBuilder.greaterThanOrEqualTo(root.get("supplementVerifyTime"), from)).ifPresent(timePredicates::add);
|
||||
Optional.ofNullable(f[1]).map(to -> criteriaBuilder.lessThanOrEqualTo(root.get("supplementVerifyTime"), to)).ifPresent(timePredicates::add);
|
||||
return timePredicates;
|
||||
}).ifPresent(predicates::addAll);
|
||||
if ("dc".equals(query.getTag())) {
|
||||
Arrays.stream("plan_approval,plan_approval_failed".split(","))
|
||||
.map(FlowNode::fromString)
|
||||
.forEach(flowNode -> predicates.add(criteriaBuilder.notEqual(root.get(EnforceCheck_.enforcementInfo).get(EnforcementInfo_.currentNodeCode), flowNode)));
|
||||
Optional.ofNullable(query.getAgency())
|
||||
.map(Agency::getAgencyCode)
|
||||
.ifPresent(o -> predicates.add(criteriaBuilder.like(root.get(EnforceCheck_.enforcementInfo).get(EnforcementInfo_.agency).get(Agency_.agencyCode), com.aisino.iles.common.util.StringUtils.trimEven0(o) + "%")));
|
||||
}
|
||||
|
||||
if ("jcs".equals(query.getTag())) {
|
||||
predicates.add(criteriaBuilder.notEqual(root.get(EnforceCheck_.enforcementInfo).get(EnforcementInfo_.currentNodeCode), FlowNode.plan_approval));
|
||||
predicates.add(criteriaBuilder.notEqual(root.get(EnforceCheck_.enforcementInfo).get(EnforcementInfo_.currentNodeCode), FlowNode.plan_approval_failed));
|
||||
predicates.add(criteriaBuilder.notEqual(root.get(EnforceCheck_.enforcementInfo).get(EnforcementInfo_.currentNodeCode), FlowNode.plan_approved));
|
||||
Optional.ofNullable(query.getAgency())
|
||||
.map(Agency::getAgencyCode)
|
||||
.ifPresent(o -> predicates.add(criteriaBuilder.like(root.get(EnforceCheck_.enforcementInfo).get(EnforcementInfo_.agency).get(Agency_.agencyCode), com.aisino.iles.common.util.StringUtils.trimEven0(o) + "%")));
|
||||
}
|
||||
return criteriaBuilder.and(predicates.toArray(new Predicate[0]));
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据ID删除执法检查记录
|
||||
*
|
||||
* @param enforceCheckId 检查项ID
|
||||
*/
|
||||
@Transactional
|
||||
public void deleteEnforceCheckById(String enforceCheckId) {
|
||||
enforceCheckRepo.deleteById(enforceCheckId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查项是否存在
|
||||
*
|
||||
* @param enforceCheckId 检查项ID
|
||||
* @return 是否存在
|
||||
*/
|
||||
public Boolean existsEnforceCheckById(String enforceCheckId) {
|
||||
return enforceCheckRepo.existsById(enforceCheckId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加现场图片
|
||||
*
|
||||
* @param formData 图片信息
|
||||
* @return 执行检查信息
|
||||
*/
|
||||
@Transactional
|
||||
public EnforceCheck addScenePicOrFile(FormDataDto formData) {
|
||||
MultipartFile file = formData.getFile1();
|
||||
EnforceCheck enforceCheck = new EnforceCheck();
|
||||
try {
|
||||
enforceCheck = objectMapper.readValue(formData.getFormDataJson(), EnforceCheck.class);
|
||||
if (null != file) {
|
||||
String url;
|
||||
String tag = enforceCheck.getTag();
|
||||
try {
|
||||
url = ftpService.uploadTempFile(IndustryCategoryForFile.pub, file.getOriginalFilename(), file.getInputStream());
|
||||
if (!StringUtils.hasText(url)) {
|
||||
throw new BusinessError(("file".equals(tag) ? "执行检查材料" : "执行检查现场图") + "返回失败:上传时异常");
|
||||
}
|
||||
} catch (Exception e) {
|
||||
throw new BusinessError(("file".equals(tag) ? "执行检查材料" : "执行检查现场图") + "上传失败:" + e);
|
||||
}
|
||||
if ("file".equals(tag)) {
|
||||
String fileName = file.getOriginalFilename();
|
||||
Materials materials = new Materials();
|
||||
materials.setLrsj(LocalDateTime.now());
|
||||
materials.setFileType(StringUtils.hasText(fileName) ? fileName.split("\\.")[1] : null);
|
||||
materials.setName(fileName);
|
||||
materials.setLinkId(enforceCheck.getEnforceCheckId());
|
||||
materials.setSavePath(url);
|
||||
materials.setIsOriginal("1");
|
||||
materials.setMaterialsTypeCode("2");
|
||||
materials.setMaterialsTypeName("执法现场检查材料");
|
||||
materialsRepo.save(materials);
|
||||
} else {
|
||||
Optional<EnforceCheck> optional = enforceCheckRepo.findById(enforceCheck.getEnforceCheckId());
|
||||
if (optional.isPresent()) {
|
||||
EnforceCheck e = optional.get();
|
||||
Map<String, Object> result = e.getCheckItemResult();
|
||||
String itemId = enforceCheck.getItemId();
|
||||
if (null != result && result.containsKey(itemId)) {
|
||||
EnforceCheckScenePicDto dto = objectMapper.convertValue(result.get(itemId), EnforceCheckScenePicDto.class);
|
||||
List<String> urls = dto.getUrls();
|
||||
if (null == urls)
|
||||
urls = new ArrayList<>();
|
||||
urls.add(url);
|
||||
dto.setUrls(urls);
|
||||
result.put(itemId, dto);
|
||||
} else {
|
||||
if (null == result)
|
||||
result = new HashMap<>();
|
||||
EnforceCheckScenePicDto dto = new EnforceCheckScenePicDto();
|
||||
dto.setItemId(itemId);
|
||||
dto.setEligibility(enforceCheck.getEligibility());
|
||||
dto.setCheckNote(enforceCheck.getCheckNote());
|
||||
dto.setUrls(List.of(url));
|
||||
result.put(itemId, dto);
|
||||
}
|
||||
e.setCheckItemResult(result);
|
||||
List<Object> publishData = saveEnforceCheck(e, null, "update");
|
||||
if (!publishData.isEmpty()) {
|
||||
enforceCheck = (EnforceCheck) publishData.get(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (JsonProcessingException e) {
|
||||
log.error(e.getMessage(), e);
|
||||
}
|
||||
return enforceCheck;
|
||||
}
|
||||
|
||||
@Transactional(readOnly = true)
|
||||
public Optional<EnforceCheck> getEnforceCheckByEnforcementId(String enforcementId) {
|
||||
if (!StringUtils.hasText(enforcementId)) {
|
||||
throw new BusinessError("执法信息ID不能为空");
|
||||
}
|
||||
return enforceCheckRepo.findFirstByEnforcementIdOrderByCreateTimeDesc(enforcementId).map(o -> {
|
||||
Optional.ofNullable(o.getEnforcementInfo()).ifPresent(enforcement -> enforcement.getAgency().getAgencyCode());
|
||||
String itemIds = o.getCheckItemIds();
|
||||
if (StringUtils.hasText(itemIds)) {
|
||||
String[] arr = itemIds.split(",");
|
||||
List<CheckItem> items = checkItemRepo.findAllById(List.of(arr));
|
||||
Map<String, Object> result = o.getCheckItemResult();
|
||||
if (null != result) {
|
||||
items.forEach(item -> {
|
||||
EnforceCheckScenePicDto dto = objectMapper.convertValue(result.get(item.getItemId()), EnforceCheckScenePicDto.class);
|
||||
if (null != dto) {
|
||||
item.setEligibility(dto.getEligibility());
|
||||
item.setCheckNote(dto.getCheckNote());
|
||||
List<String> urls = dto.getUrls();
|
||||
if (null != urls && !urls.isEmpty()) {
|
||||
List<Map<String, String>> list = urls.stream().map(u -> {
|
||||
Map<String, String> m = new HashMap<>();
|
||||
m.put("path", u);
|
||||
m.put("url", ftpService.getFileUrl(u));
|
||||
m.put("id", Ulid.fast().toLowerCase());
|
||||
return m;
|
||||
}).collect(Collectors.toList());
|
||||
item.setUrls(list);
|
||||
}
|
||||
item.setCheckResultCode(dto.getCheckResultCode());
|
||||
}
|
||||
});
|
||||
}
|
||||
o.setItems(items);
|
||||
}
|
||||
o.setDzcls(materialsRepo.findByLinkId(o.getEnforceCheckId()).stream().peek(dzcl -> {
|
||||
String dzclUrl = dzcl.getSavePath();
|
||||
if (StringUtils.hasText(dzclUrl)) {
|
||||
dzcl.setUrl(ftpService.getFileUrl(dzclUrl));
|
||||
dzcl.setDownloadUrl(ftpService.getFileDownloadUrl(dzclUrl));
|
||||
}
|
||||
}).collect(Collectors.toList()));
|
||||
AtomicReference<String> officerNames = new AtomicReference<>("");
|
||||
AtomicReference<String> agencyCodes = new AtomicReference<>("");
|
||||
List<Officer> officerList = new ArrayList<>();
|
||||
Optional.ofNullable(o.getOfficerIds()).filter(StringUtils::hasText).ifPresent(officers -> {
|
||||
Arrays.stream(officers.split(",")).forEach(officerId -> {
|
||||
officerRepo.findById(officerId).ifPresent(officer -> {
|
||||
officerNames.set(officerNames + officer.getOfficerName() + ",");
|
||||
agencyCodes.set(agencyCodes + officer.getCertificateNo() + ",");
|
||||
officerList.add(officer);
|
||||
});
|
||||
});
|
||||
});
|
||||
o.setAgencyNames(officerNames.get());
|
||||
o.setAgencyCodes(agencyCodes.get());
|
||||
o.setOfficerList(officerList);
|
||||
return o;
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除现场图或者检查文件
|
||||
*
|
||||
* @param resDto 删除对象
|
||||
*/
|
||||
@Transactional
|
||||
public void deleteByIdScenePicFile(EnforceCheckResDto resDto) {
|
||||
if ("file".equals(resDto.getTag())) {
|
||||
materialsRepo.findById(resDto.getMaterialsId()).ifPresent(materials -> {
|
||||
String savePath = materials.getSavePath();
|
||||
if (StringUtils.hasText(savePath)) ftpService.deletePathFile(savePath);
|
||||
materialsRepo.delete(materials);
|
||||
});
|
||||
} else {
|
||||
enforceCheckRepo.findById(resDto.getEnforceCheckId()).ifPresent(enforceCheck -> {
|
||||
Map<String, Object> result = enforceCheck.getCheckItemResult();
|
||||
EnforceCheckScenePicDto dto = objectMapper.convertValue(result.get(resDto.getItemId()), EnforceCheckScenePicDto.class);
|
||||
if (null != dto) {
|
||||
String url = resDto.getUrl();
|
||||
dto.getUrls().removeIf(v -> Objects.equals(v, url));
|
||||
if (StringUtils.hasText(url)) ftpService.deletePathFile(url);
|
||||
result.put(resDto.getItemId(), dto);
|
||||
enforceCheck.setCheckItemResult(result);
|
||||
}
|
||||
enforceCheck.setUpdateTime(LocalDateTime.now());
|
||||
enforceCheckRepo.save(enforceCheck);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加抽样数据
|
||||
*
|
||||
* @param spotCheck 抽样数据
|
||||
* @return 抽样数据
|
||||
*/
|
||||
@Transactional
|
||||
public SpotCheck addSpotCheck(SpotCheck spotCheck) {
|
||||
LocalDateTime now = LocalDateTime.now();
|
||||
spotCheck.setCreateTime(now);
|
||||
spotCheck.setUpdateTime(now);
|
||||
// 检验加密签名保存
|
||||
Optional.ofNullable(spotCheck.getContact()).filter(StringUtils::hasText).ifPresent(s -> spotCheck.setSginData(KmsServer.kmsSign(s)));
|
||||
SpotCheck save = spotCheckRepo.save(spotCheck);
|
||||
List<SpotCheckList> spotCheckList = spotCheck.getSpotCheckList();
|
||||
if (null != spotCheckList && !spotCheckList.isEmpty()) {
|
||||
spotCheckList.forEach(item -> {
|
||||
item.setSpotId(spotCheck.getSpotId());
|
||||
item.setCreateTime(now);
|
||||
item.setUpdateTime(now);
|
||||
item.setSpotId(save.getSpotId());
|
||||
spotCheckListRepo.save(item);
|
||||
});
|
||||
}
|
||||
return save;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据执法信息ID查询抽样数据
|
||||
*
|
||||
* @param enforcementId 执法信息ID
|
||||
* @return 抽样数据
|
||||
*/
|
||||
public Optional<SpotCheck> getSpotCheck(String enforcementId) {
|
||||
return spotCheckRepo.findByEnforcementId(enforcementId).map(o -> {
|
||||
o.setSpotCheckList(spotCheckListRepo.findBySpotId(o.getSpotId()));
|
||||
return o;
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改抽样数据
|
||||
*
|
||||
* @param enforcementId 执法信息ID
|
||||
*/
|
||||
@Transactional
|
||||
public void modifySpotCheck(String enforcementId, SpotCheck spotCheck) {
|
||||
spotCheckRepo.findByEnforcementId(enforcementId).map(o -> {
|
||||
List<SpotCheckList> list = spotCheckListRepo.findBySpotId(o.getSpotId());
|
||||
List<SpotCheckList> spotCheckList = spotCheck.getSpotCheckList();
|
||||
LocalDateTime now = LocalDateTime.now();
|
||||
Stream.concat(list.stream(), spotCheckList.stream()).forEach(item -> {
|
||||
if (spotCheckList.contains(item)) {
|
||||
if (list.contains(item)) {// 两边都有的,以 spotCheckList 为主
|
||||
item.setUpdateTime(now);
|
||||
spotCheckListRepo.save(item);
|
||||
} else {// spotCheckList 中存在但 list 中不存在的
|
||||
item.setCreateTime(now);
|
||||
item.setUpdateTime(now);
|
||||
item.setSpotId(o.getSpotId());
|
||||
spotCheckListRepo.save(item);
|
||||
}
|
||||
} else { // list 中存在但 spotCheckList 中不存在的
|
||||
spotCheckListRepo.delete(item);
|
||||
}
|
||||
});
|
||||
spotCheck.setUpdateTime(now);
|
||||
// 检验加密签名保存
|
||||
Optional.ofNullable(spotCheck.getContact()).filter(StringUtils::hasText).ifPresent(s -> spotCheck.setSginData(KmsServer.kmsSign(s)));
|
||||
return spotCheckRepo.save(spotCheck);
|
||||
});
|
||||
}
|
||||
|
||||
@Transactional(readOnly = true)
|
||||
public Page<EnforceCheckDto> findEnforceCheckDtoPage(EnforceCheckQuery query, RemoteUserInfo user) {
|
||||
return enforceCheckRepo.findAll(build(query, user), PageableHelper.buildPageRequest(query.page(), query.pageSize(), "checkDate", "desc"), "enforcementInfo")
|
||||
.map(enforceCheck -> {
|
||||
EnforceCheckDto dto = new EnforceCheckDto();
|
||||
dto.setCheckDate(enforceCheck.getCheckDate());
|
||||
if (StringUtils.hasText(enforceCheck.getCheckTimeStart()) || StringUtils.hasText(enforceCheck.getCheckTimeEnd()))
|
||||
dto.setCheckTime(enforceCheck.getCheckTimeStart() + " - " + enforceCheck.getCheckTimeEnd());
|
||||
String officerIds = enforceCheck.getOfficerIds();
|
||||
if (StringUtils.hasText(officerIds)) {
|
||||
String[] array = officerIds.split(",");
|
||||
String s = officerRepo.findAllById(Arrays.asList(array)).stream().map(Officer::getOfficerName).collect(Collectors.joining(","));
|
||||
dto.setOfficers(s);
|
||||
}
|
||||
dto.setAgencyName(Optional.ofNullable(enforceCheck.getEnforcementInfo())
|
||||
.map(EnforcementInfo::getAgency)
|
||||
.map(Agency::getAgencyName)
|
||||
.orElse(null));
|
||||
dictItemRepo.findByDictDictCodeAndValue("dm_cljg", enforceCheck.getCheckResult()).ifPresent(o -> dto.setCheckResult(o.getDisplay()));
|
||||
return dto;
|
||||
});
|
||||
}
|
||||
|
||||
@PublishDataChange(action = DataChangeAction.SAVE)
|
||||
@Transactional
|
||||
public EnforceCheck saveSupplement(EnforceCheck ec, RemoteUserInfo user) {
|
||||
return enforceCheckRepo.findById(ec.getEnforceCheckId()).map(oldCheck -> {
|
||||
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
||||
ec.getSupplement().put("tbr", user.getXm());
|
||||
ec.getSupplement().put("tbsj", LocalDateTime.now().format(formatter));
|
||||
oldCheck.setSupplement(ec.getSupplement());
|
||||
oldCheck.setSupplementVerifyResult("2");
|
||||
return enforceCheckRepo.save(oldCheck);
|
||||
}).get();
|
||||
}
|
||||
|
||||
@PublishDataChange(action = DataChangeAction.SAVE)
|
||||
@Transactional
|
||||
public EnforceCheck updateSupplementVerify(EnforceCheck ec, RemoteUserInfo user) {
|
||||
return enforceCheckRepo.findById(ec.getEnforceCheckId()).map(oldCheck -> {
|
||||
oldCheck.setSupplementVerifyResult(ec.getSupplementVerifyResult());
|
||||
oldCheck.setSupplementVerifyDesc(ec.getSupplementVerifyDesc());
|
||||
oldCheck.setSupplementVerifyUserName(user.getXm());
|
||||
oldCheck.setSupplementVerifyTime(LocalDateTime.now());
|
||||
return enforceCheckRepo.save(oldCheck);
|
||||
}).get();
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改检查项id
|
||||
*
|
||||
* @param enforceCheck 执法检查实体
|
||||
* @param user 用户信息
|
||||
* @return 执法检查实体
|
||||
*/
|
||||
public Optional<EnforceCheck> updateCheckItem(EnforceCheck enforceCheck, RemoteUserInfo user) {
|
||||
return enforceCheckRepo.findById(enforceCheck.getEnforceCheckId()).map(oldCheck -> {
|
||||
oldCheck.setCheckItemIds(enforceCheck.getCheckItemIds());
|
||||
oldCheck.setUpdateTime(LocalDateTime.now());
|
||||
return enforceCheckRepo.save(oldCheck);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 保存现场处理措施
|
||||
*
|
||||
* @param ec
|
||||
* @param user
|
||||
* @return
|
||||
*/
|
||||
@PublishDataChange(action = DataChangeAction.SAVE)
|
||||
@Transactional
|
||||
public EnforceCheck updateXcclcs(EnforceCheck ec, RemoteUserInfo user) {
|
||||
return enforceCheckRepo.findById(ec.getEnforceCheckId()).map(oldCheck -> {
|
||||
oldCheck.setXcclcstable(ec.getXcclcstable());
|
||||
oldCheck.setXcclcscljd(ec.getXcclcscljd());
|
||||
enforcementInfoRepo.findById(ec.getEnforcementId()).ifPresent(enforcementInfo -> enforcementInfo.setRechecked("21"));
|
||||
// enforcementInfoRepo.findById(oldCheck.getEnforcementId()).ifPresent(is -> {
|
||||
// is.setRechecked("3"); // 是否重新检查 0: 初始状态 1:是 2:已复查 3:现场处理
|
||||
// });
|
||||
return enforceCheckRepo.save(oldCheck);
|
||||
}).get();
|
||||
}
|
||||
|
||||
/**
|
||||
* 多条执法检查查询
|
||||
*
|
||||
* @param query 查询条件
|
||||
* @param user 用户信息
|
||||
* @return 多条执法检查
|
||||
*/
|
||||
@Transactional(readOnly = true)
|
||||
public List<EnforceCheck> list(EnforceCheckQuery query, RemoteUserInfo user) {
|
||||
return enforceCheckRepo.findAll(build(query, user)).stream().map(o -> {
|
||||
if ("1".equals(o.getCheckResult())) o.setCheckResultMsg("正常");
|
||||
else if ("2".equals(o.getCheckResult())) o.setCheckResultMsg("责令当场整改");
|
||||
else if ("3".equals(o.getCheckResult())) o.setCheckResultMsg("责令限期整改");
|
||||
else if ("9".equals(o.getCheckResult())) o.setCheckResultMsg("其他");
|
||||
Optional.ofNullable(o.getEnforcementInfo()).ifPresent(EnforcementInfo::getEnforcementName);
|
||||
Optional.ofNullable(o.getEnforcementInfo()).flatMap(oo -> Optional.ofNullable(oo.getEnterprise())).ifPresent(Enterprise::getUnitName);
|
||||
Optional.ofNullable(o.getEnforcementInfo()).flatMap(oo -> Optional.ofNullable(oo.getAgency())).ifPresent(Agency::getAgencyName);
|
||||
return o;
|
||||
}).toList();
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,377 @@
|
|||
package com.aisino.iles.lawenforcement.service;
|
||||
|
||||
|
||||
import com.aisino.iles.common.util.Constants;
|
||||
import com.aisino.iles.common.util.PageableHelper;
|
||||
import com.aisino.iles.lawenforcement.event.DataChangeAction;
|
||||
import com.aisino.iles.lawenforcement.event.aop.PublishDataChange;
|
||||
import com.aisino.iles.lawenforcement.model.*;
|
||||
import com.aisino.iles.lawenforcement.model.enums.FlowNode;
|
||||
import com.aisino.iles.lawenforcement.model.query.CaseQuery;
|
||||
import com.aisino.iles.lawenforcement.repository.*;
|
||||
import com.smartlx.sso.client.model.RemoteUserInfo;
|
||||
import jakarta.persistence.criteria.CriteriaBuilder;
|
||||
import jakarta.persistence.criteria.Join;
|
||||
import jakarta.persistence.criteria.JoinType;
|
||||
import jakarta.persistence.criteria.Predicate;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.domain.Sort;
|
||||
import org.springframework.data.jpa.domain.Specification;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.LocalTime;
|
||||
import java.time.temporal.TemporalAdjusters;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
|
||||
@Service
|
||||
@Slf4j
|
||||
public class EnforcementInfoHistoryService {
|
||||
private final EnforcementInfoHistoryRepository enforcementInfoHistoryRepository;
|
||||
|
||||
private final CaseRepository caseRepository;
|
||||
|
||||
private final EnforceCheckService enforceCheckService;
|
||||
private final AgencyRepository agencyRepo;
|
||||
|
||||
public EnforcementInfoHistoryService( EnforcementInfoHistoryRepository enforcementInfoHistoryRepository,AgencyRepository agencyRepo,
|
||||
CaseRepository caseRepository,EnforceCheckService enforceCheckService) {
|
||||
this.enforcementInfoHistoryRepository = enforcementInfoHistoryRepository;
|
||||
this.agencyRepo = agencyRepo;
|
||||
this.caseRepository = caseRepository;
|
||||
this.enforceCheckService = enforceCheckService;
|
||||
}
|
||||
|
||||
/**
|
||||
* 历史执法信息
|
||||
*
|
||||
* @param query@return 分页历史执法信息
|
||||
*/
|
||||
@Transactional(readOnly = true)
|
||||
public Page<EnforcementInfoHistory> findCasesPage(CaseQuery query, RemoteUserInfo user) {
|
||||
return enforcementInfoHistoryRepository.findAll(buildSpec(query, user), PageableHelper.buildPageRequest(query.page(), query.pageSize(), query.sort(), query.dir())).map(this::getDetailInfo);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
private Specification<EnforcementInfoHistory> buildSpec(CaseQuery query, RemoteUserInfo user) {
|
||||
Agency currentAgency = agencyRepo.findByAgencyCode(user.getGajgjgdm()).orElseThrow(() -> new RuntimeException("当前用户机构数据错误,请检查!"));
|
||||
return Specification.where((root, q, criteriaBuilder) -> {
|
||||
List<Predicate> predicates = new ArrayList<>();
|
||||
predicates.add(criteriaBuilder.equal((root.get(EnforcementInfoHistory_.agency).get(Agency_.agencyCode)), currentAgency.getAgencyCode()));
|
||||
Optional.ofNullable(query.getFillingDate()).filter(f -> f.length == 2).map(f -> {
|
||||
List<Predicate> timePredicates = new ArrayList<>();
|
||||
Optional.ofNullable(f[0]).map(from -> criteriaBuilder.greaterThanOrEqualTo(root.get("fillingDate"), from)).ifPresent(timePredicates::add);
|
||||
Optional.ofNullable(f[1]).map(to -> criteriaBuilder.lessThanOrEqualTo(root.get("fillingDate"), to)).ifPresent(timePredicates::add);
|
||||
return timePredicates;
|
||||
}).ifPresent(predicates::addAll);
|
||||
Optional.ofNullable(query.getCaseName()).ifPresent(o -> predicates.add(criteriaBuilder.like(root.get("caseName"), "%" + o + "%")));
|
||||
Optional.ofNullable(query.getUnitName()).ifPresent(o -> predicates.add(criteriaBuilder.like(root.get("unitName"), "%" + o + "%")));
|
||||
|
||||
Optional.ofNullable(query.getCreatedTime()).filter(f -> f.length == 2).map(f -> {
|
||||
List<Predicate> timePredicates = new ArrayList<>();
|
||||
Optional.ofNullable(f[0]).map(from -> criteriaBuilder.greaterThanOrEqualTo(root.get("createdTime"), from)).ifPresent(timePredicates::add);
|
||||
Optional.ofNullable(f[1]).map(to -> criteriaBuilder.lessThanOrEqualTo(root.get("createdTime"), to)).ifPresent(timePredicates::add);
|
||||
return timePredicates;
|
||||
}).ifPresent(predicates::addAll);
|
||||
Optional.ofNullable(query.getSupplementVerifyResult()).ifPresent(o -> {
|
||||
// 填报内容查询
|
||||
if("tb".equals(o)){
|
||||
predicates.add(criteriaBuilder.or(
|
||||
criteriaBuilder.notEqual(root.get("supplementVerifyResult"), "1" ),
|
||||
criteriaBuilder.isNull(root.get("supplementVerifyResult"))
|
||||
));
|
||||
}
|
||||
//审批内容查询
|
||||
else if ("sp".equals(o)) {
|
||||
predicates.add(criteriaBuilder.equal(root.get("supplementVerifyResult"), "2"));
|
||||
}
|
||||
else{
|
||||
predicates.add(criteriaBuilder.equal(root.get("supplementVerifyResult"), o ));
|
||||
}
|
||||
});
|
||||
Optional.ofNullable(query.getSupplementVerifyTime()).filter(f -> f.length == 2).map(f -> {
|
||||
List<Predicate> timePredicates = new ArrayList<>();
|
||||
Optional.ofNullable(f[0]).map(from -> criteriaBuilder.greaterThanOrEqualTo(root.get("supplementVerifyTime"), from)).ifPresent(timePredicates::add);
|
||||
Optional.ofNullable(f[1]).map(to -> criteriaBuilder.lessThanOrEqualTo(root.get("supplementVerifyTime"), to)).ifPresent(timePredicates::add);
|
||||
return timePredicates;
|
||||
}).ifPresent(predicates::addAll);
|
||||
|
||||
// if(currentAgency.getAgencyLevel()==3){
|
||||
// predicates.add(criteriaBuilder.equal((enforcementInfoCaseRoot.get(EnforcementInfo_.agency).get(Agency_.agencyCode)), currentAgency.getAgencyCode()));
|
||||
// }
|
||||
|
||||
return criteriaBuilder.and(predicates.toArray(new Predicate[0]));
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 保存填报历史执法记录
|
||||
*
|
||||
* @param o 历史执法记录
|
||||
* @return 保存后历史执法记录
|
||||
*/
|
||||
@PublishDataChange(action = DataChangeAction.SAVE)
|
||||
@Transactional
|
||||
public EnforcementInfoHistory saveEnforcementInfoHistory(EnforcementInfoHistory o, RemoteUserInfo user) {
|
||||
o.setSupplementVerifyResult("2");
|
||||
Agency currentAgency = agencyRepo.findByAgencyCode(user.getGajgjgdm()).orElseThrow(() -> new RuntimeException("当前用户机构数据错误,请检查!"));
|
||||
o.setAgencyId(currentAgency.getAgencyId());
|
||||
return enforcementInfoHistoryRepository.save(o);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
private EnforcementInfoHistory getDetailInfo(EnforcementInfoHistory c) {
|
||||
c.getAgency().getAgencyName();
|
||||
c.getAgency().getAgencyCode();
|
||||
c.getAgency().getAgencyLevel();
|
||||
return c;
|
||||
}
|
||||
|
||||
@PublishDataChange(action = DataChangeAction.SAVE)
|
||||
@Transactional
|
||||
public EnforcementInfoHistory updateSupplementVerify(EnforcementInfoHistory c, RemoteUserInfo user) {
|
||||
return enforcementInfoHistoryRepository.findById(c.getHistoryId()).map(oldCase -> {
|
||||
oldCase.setSupplementVerifyResult(c.getSupplementVerifyResult());
|
||||
oldCase.setSupplementVerifyDesc(c.getSupplementVerifyDesc());
|
||||
oldCase.setSupplementVerifyUserName(user.getXm());
|
||||
oldCase.setSupplementVerifyTime(LocalDateTime.now());
|
||||
return enforcementInfoHistoryRepository.save(oldCase);
|
||||
}).get();
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询案件集合
|
||||
* @param query 查询条件
|
||||
* @return 查询结果
|
||||
*/
|
||||
@Transactional(readOnly = true)
|
||||
public List<EnforcementInfoHistory> listLsZflatj(CaseQuery query, RemoteUserInfo user) {
|
||||
|
||||
// Sort sort = Sort.by(Sort.Direction.DESC, "supplementVerifyTime");
|
||||
// query.setSort(sort.toString());
|
||||
//判断周期类型组装日期条件
|
||||
Optional.ofNullable(query.getPeriod()).ifPresent(o -> {
|
||||
if ("month".equals(o)) {
|
||||
LocalDate[] fillingDate = new LocalDate[]{query.getYd(), query.getYd().with(TemporalAdjusters.lastDayOfMonth())};
|
||||
query.setFillingDate(fillingDate);
|
||||
} else if ("quarter".equals(o)) {
|
||||
if (query.getJd() == 1) {
|
||||
LocalDate start = LocalDate.of(LocalDate.now().getYear(), 1, 1);
|
||||
LocalDate end = LocalDate.of(LocalDate.now().getYear(), 3, 31);
|
||||
LocalDate[] fillingDate = new LocalDate[]{start, end};
|
||||
query.setFillingDate(fillingDate);
|
||||
} else if (query.getJd() == 2) {
|
||||
LocalDate start = LocalDate.of(LocalDate.now().getYear(), 4, 1);
|
||||
LocalDate end = LocalDate.of(LocalDate.now().getYear(), 6, 30);
|
||||
LocalDate[] fillingDate = new LocalDate[]{start, end};
|
||||
query.setFillingDate(fillingDate);
|
||||
} else if (query.getJd() == 3) {
|
||||
LocalDate start = LocalDate.of(LocalDate.now().getYear(), 7, 1);
|
||||
LocalDate end = LocalDate.of(LocalDate.now().getYear(), 9, 30);
|
||||
LocalDate[] fillingDate = new LocalDate[]{start, end};
|
||||
query.setFillingDate(fillingDate);
|
||||
} else if (query.getJd() == 4) {
|
||||
LocalDate start = LocalDate.of(LocalDate.now().getYear(), 10, 1);
|
||||
LocalDate end = LocalDate.of(LocalDate.now().getYear(), 12, 31);
|
||||
LocalDate[] fillingDate = new LocalDate[]{start, end};
|
||||
query.setFillingDate(fillingDate);
|
||||
}
|
||||
}
|
||||
});
|
||||
List<EnforcementInfoHistory> historyList = enforcementInfoHistoryRepository.findAll(buildSpec(query,user)).stream().map(this::transferHistoryInfo).toList();
|
||||
List<EnforcementInfoHistory> casetoHistoryList = listZflatj(query,user);
|
||||
List<EnforcementInfoHistory> mergedList = Stream.of(historyList, casetoHistoryList)
|
||||
.flatMap(List::stream)
|
||||
.collect(Collectors.toList());
|
||||
return mergedList;
|
||||
}
|
||||
|
||||
private EnforcementInfoHistory transferHistoryInfo(EnforcementInfoHistory c){
|
||||
c.getAgency().getAgencyName();
|
||||
String industryTypeName = Constants.DictDisplay.hylbMap.get(c.getIndustryType());
|
||||
c.setIndustryType(industryTypeName);
|
||||
return c;
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询案件上报集合
|
||||
* @param query 查询条件
|
||||
* @return 查询结果
|
||||
*/
|
||||
@Transactional(readOnly = true)
|
||||
public List<EnforcementInfoHistory> listZflatj(CaseQuery query, RemoteUserInfo user) {
|
||||
|
||||
//判断周期类型组装日期条件
|
||||
Optional.ofNullable(query.getPeriod()).ifPresent(o -> {
|
||||
if ("month".equals(o)) {
|
||||
LocalDate[] fillingDate = new LocalDate[]{query.getYd(), query.getYd().with(TemporalAdjusters.lastDayOfMonth())};
|
||||
query.setFillingDate(fillingDate);
|
||||
} else if ("quarter".equals(o)) {
|
||||
if (query.getJd() == 1) {
|
||||
LocalDate start = LocalDate.of(LocalDate.now().getYear(), 1, 1);
|
||||
LocalDate end = LocalDate.of(LocalDate.now().getYear(), 3, 31);
|
||||
LocalDate[] fillingDate = new LocalDate[]{start, end};
|
||||
query.setFillingDate(fillingDate);
|
||||
} else if (query.getJd() == 2) {
|
||||
LocalDate start = LocalDate.of(LocalDate.now().getYear(), 4, 1);
|
||||
LocalDate end = LocalDate.of(LocalDate.now().getYear(), 6, 30);
|
||||
LocalDate[] fillingDate = new LocalDate[]{start, end};
|
||||
query.setFillingDate(fillingDate);
|
||||
} else if (query.getJd() == 3) {
|
||||
LocalDate start = LocalDate.of(LocalDate.now().getYear(), 7, 1);
|
||||
LocalDate end = LocalDate.of(LocalDate.now().getYear(), 9, 30);
|
||||
LocalDate[] fillingDate = new LocalDate[]{start, end};
|
||||
query.setFillingDate(fillingDate);
|
||||
} else if (query.getJd() == 4) {
|
||||
LocalDate start = LocalDate.of(LocalDate.now().getYear(), 10, 1);
|
||||
LocalDate end = LocalDate.of(LocalDate.now().getYear(), 12, 31);
|
||||
LocalDate[] fillingDate = new LocalDate[]{start, end};
|
||||
query.setFillingDate(fillingDate);
|
||||
}
|
||||
}
|
||||
});
|
||||
return caseRepository.findAll(buildcaseSpec(query,user)).stream().map(this::transferInfo).toList();
|
||||
}
|
||||
|
||||
private Specification<Case> buildcaseSpec(CaseQuery query, RemoteUserInfo user) {
|
||||
// Agency currentAgency = agencyRepo.findByAgencyCode(user.getGajgjgdm()).orElseThrow(() -> new RuntimeException("当前用户机构数据错误,请检查!"));
|
||||
return Specification.where((root, q, criteriaBuilder) -> {
|
||||
List<Predicate> predicates = new ArrayList<>();
|
||||
Optional.ofNullable(query.getFillingDate()).filter(f -> f.length == 2).map(f -> {
|
||||
List<Predicate> timePredicates = new ArrayList<>();
|
||||
Optional.ofNullable(f[0]).map(from -> criteriaBuilder.greaterThanOrEqualTo(root.get("fillingDate"), from)).ifPresent(timePredicates::add);
|
||||
Optional.ofNullable(f[1]).map(to -> criteriaBuilder.lessThanOrEqualTo(root.get("fillingDate"), to)).ifPresent(timePredicates::add);
|
||||
return timePredicates;
|
||||
}).ifPresent(predicates::addAll);
|
||||
|
||||
// if(currentAgency.getAgencyLevel()==3){
|
||||
// predicates.add(criteriaBuilder.equal((enforcementInfoCaseRoot.get(EnforcementInfo_.agency).get(Agency_.agencyCode)), currentAgency.getAgencyCode()));
|
||||
// }
|
||||
predicates.add(criteriaBuilder.equal(root.get("supplementVerifyResult"), "1"));
|
||||
return criteriaBuilder.and(predicates.toArray(new Predicate[0]));
|
||||
});
|
||||
}
|
||||
|
||||
private EnforcementInfoHistory transferInfo(Case c){
|
||||
c.getEnforcementInfo().getAgency().getAgencyName();
|
||||
String industryType = c.getEnforcementInfo().getEnterprise().getIndustryType();
|
||||
String industryTypeName = Constants.DictDisplay.hylbMap.get( industryType);
|
||||
|
||||
EnforcementInfoHistory o = new EnforcementInfoHistory();
|
||||
//获取 执法检查信息
|
||||
enforceCheckService.getEnforceCheckByEnforcementId(c.getEnforcementInfo().getEnforcementId()).ifPresent(check -> {
|
||||
o.setCheckDate(check.getCheckDate());
|
||||
});
|
||||
o.setAgency(c.getEnforcementInfo().getAgency());
|
||||
o.setUnitName(c.getEnforcementInfo().getEnterprise().getUnitName());
|
||||
o.setUnifiedSocialCode(c.getEnforcementInfo().getEnterprise().getUnifiedSocialCode());
|
||||
o.setIndustryType(industryTypeName);
|
||||
o.setLegalRepresentative(c.getEnforcementInfo().getEnterprise().getLegalRepresentative());
|
||||
o.setOpLocAddress(c.getEnforcementInfo().getEnterprise().getOpLocAddress());
|
||||
Optional.ofNullable(c.getCaseSourceCode()).ifPresent(caseSourseCode -> {
|
||||
switch (caseSourseCode) {
|
||||
case "1" -> o.setCaseSourceCode("日常检查发现");
|
||||
case "2" -> o.setCaseSourceCode("机构监测报告");
|
||||
case "3" -> o.setCaseSourceCode("举报投诉");
|
||||
case "4" -> o.setCaseSourceCode("上级交办");
|
||||
case "5" -> o.setCaseSourceCode("下级情报");
|
||||
case "6" -> o.setCaseSourceCode("有关部门移送");
|
||||
case "7" -> o.setCaseSourceCode("其他");
|
||||
|
||||
}
|
||||
});
|
||||
Optional.ofNullable(c.getCaseCause()).ifPresent(caseCause -> {
|
||||
switch (caseCause) {
|
||||
case "1" -> o.setCaseCause("安全生产行政许可类违法");
|
||||
case "2" -> o.setCaseCause("安全生产管理机构和管理人员类违法");
|
||||
case "3" -> o.setCaseCause("安全生产建设工程项目类违法");
|
||||
case "4" -> o.setCaseCause("安全生产规章制度类违法");
|
||||
case "5" -> o.setCaseCause("安全生产培训教育类违法");
|
||||
case "6" -> o.setCaseCause("安全生产资金投入类违法");
|
||||
case "7" -> o.setCaseCause("安全生产隐患管理类违法");
|
||||
case "8" -> o.setCaseCause("生产安全事故应急救援类违法");
|
||||
case "9" -> o.setCaseCause("安全生产承包租赁类违法");
|
||||
case "10" -> o.setCaseCause("安全生产警示标志类违法");
|
||||
case "11" -> o.setCaseCause("安全生产中介机构类违法");
|
||||
case "12" -> o.setCaseCause("安全设备使用维护类违法");
|
||||
case "13" -> o.setCaseCause("重大危险源管理类违法");
|
||||
case "14" -> o.setCaseCause("生产经营单位作业现场管理类违法");
|
||||
case "15" -> o.setCaseCause("生产安全事故报告类违法");
|
||||
case "16" -> o.setCaseCause("生产安全事故责任类违法");
|
||||
case "17" -> o.setCaseCause("其他");
|
||||
}
|
||||
});
|
||||
o.setCaseName(c.getCaseName());
|
||||
o.setCaseNum(c.getCaseNum());
|
||||
o.setCaseSourceCode(c.getCaseSourceCode());
|
||||
o.setCaseHandler(c.getCaseHandler());
|
||||
o.setFillingDate(c.getFillingDate());
|
||||
o.setAuditTime(c.getEnforcementInfo().getAuditTime());
|
||||
o.setCaseClosingDate(c.getCaseClosingDate());
|
||||
// Optional.ofNullable(value).orElse(0)
|
||||
|
||||
Optional.ofNullable(c.getSupplement()).ifPresent(supplement -> {
|
||||
Optional.ofNullable(supplement.get("wfxwsl")).ifPresent(v-> o.setWfxwsl(Integer.parseInt(String.valueOf(v))));
|
||||
Optional.ofNullable(supplement.get("sfyasf")).ifPresent(v-> o.setSfyasf((Integer)v));
|
||||
Optional.ofNullable(supplement.get("fkze")).ifPresent(v-> o.setFkze(Float.parseFloat(String.valueOf(v))));
|
||||
|
||||
Optional.ofNullable(supplement.get("cfqy")).ifPresent(v-> o.setCfqy(Float.parseFloat(String.valueOf(v))));
|
||||
Optional.ofNullable(supplement.get("cfgr")).ifPresent(v-> o.setCfgr(Float.parseFloat(String.valueOf(v))));
|
||||
|
||||
|
||||
Optional.ofNullable(supplement.get("sfyj")).ifPresent(v-> o.setSfyj((Integer)v));
|
||||
Optional.ofNullable(supplement.get("sjrys")).ifPresent(v-> o.setSjrys(Integer.parseInt(String.valueOf(v))));
|
||||
Optional.ofNullable(supplement.get("yttbzzrs")).ifPresent(v-> o.setYttbzzrs(Integer.parseInt(String.valueOf(v))));
|
||||
Optional.ofNullable(supplement.get("yttbzzrrlx")).ifPresent(v-> o.setYttbzzrrlx(String.valueOf(v)));
|
||||
|
||||
|
||||
o.setSfzltczd((Integer)supplement.get("sfzltczd"));
|
||||
o.setSfzkzz((Integer)supplement.get("sfzkzz"));
|
||||
o.setSfgb((Integer)supplement.get("sfgb"));
|
||||
o.setSffy((Integer)supplement.get("sffy"));
|
||||
Optional.ofNullable(supplement.get("fyjg")).ifPresent(v-> o.setFyjg(String.valueOf(v)));
|
||||
|
||||
o.setSfss((Integer)supplement.get("sfss"));
|
||||
Optional.ofNullable(supplement.get("ssjg")).ifPresent(v-> o.setSsjg(String.valueOf(v)));
|
||||
});
|
||||
|
||||
|
||||
// Optional.ofNullable(c.getSupplement().get("wfxwsl")).ifPresent(v-> o.setWfxwsl(Integer.parseInt(String.valueOf(v))));
|
||||
// Optional.ofNullable(c.getSupplement().get("sfyasf")).ifPresent(v-> o.setSfyasf((Integer)v));
|
||||
// Optional.ofNullable(c.getSupplement().get("fkze")).ifPresent(v-> o.setFkze(Float.parseFloat(String.valueOf(v))));
|
||||
//
|
||||
// Optional.ofNullable(c.getSupplement().get("cfqy")).ifPresent(v-> o.setCfqy(Float.parseFloat(String.valueOf(v))));
|
||||
// Optional.ofNullable(c.getSupplement().get("cfgr")).ifPresent(v-> o.setCfgr(Float.parseFloat(String.valueOf(v))));
|
||||
//
|
||||
//
|
||||
// Optional.ofNullable(c.getSupplement().get("sfyj")).ifPresent(v-> o.setSfyj((Integer)v));
|
||||
// Optional.ofNullable(c.getSupplement().get("sjrys")).ifPresent(v-> o.setSjrys(Integer.parseInt(String.valueOf(v))));
|
||||
// Optional.ofNullable(c.getSupplement().get("yttbzzrs")).ifPresent(v-> o.setYttbzzrs(Integer.parseInt(String.valueOf(v))));
|
||||
// Optional.ofNullable(c.getSupplement().get("yttbzzrrlx")).ifPresent(v-> o.setYttbzzrrlx(String.valueOf(v)));
|
||||
//
|
||||
//
|
||||
// o.setSfzltczd((Integer)c.getSupplement().get("sfzltczd"));
|
||||
// o.setSfzkzz((Integer)c.getSupplement().get("sfzkzz"));
|
||||
// o.setSfgb((Integer)c.getSupplement().get("sfgb"));
|
||||
// o.setSffy((Integer)c.getSupplement().get("sffy"));
|
||||
// Optional.ofNullable(c.getSupplement().get("fyjg")).ifPresent(v-> o.setFyjg(String.valueOf(v)));
|
||||
//
|
||||
// o.setSfss((Integer)c.getSupplement().get("sfss"));
|
||||
// Optional.ofNullable(c.getSupplement().get("ssjg")).ifPresent(v-> o.setSsjg(String.valueOf(v)));
|
||||
o.setSupplementVerifyTime(c.getSupplementVerifyTime());
|
||||
return o;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,606 @@
|
|||
package com.aisino.iles.lawenforcement.service;
|
||||
|
||||
import com.aisino.iles.common.model.enums.IndustryCategoryForFile;
|
||||
import com.aisino.iles.common.service.FtpService;
|
||||
import com.aisino.iles.common.util.PageableHelper;
|
||||
import com.aisino.iles.common.util.StringUtils;
|
||||
import com.aisino.iles.core.exception.BusinessError;
|
||||
import com.aisino.iles.core.repository.DictItemRepo;
|
||||
import com.aisino.iles.core.service.GenerateCodeService;
|
||||
import com.aisino.iles.lawenforcement.event.DataChangeAction;
|
||||
import com.aisino.iles.lawenforcement.event.aop.PublishDataChange;
|
||||
import com.aisino.iles.lawenforcement.model.*;
|
||||
import com.aisino.iles.lawenforcement.model.dto.CaseInfoDto;
|
||||
import com.aisino.iles.lawenforcement.model.dto.EnforcementInfoDto;
|
||||
import com.aisino.iles.lawenforcement.model.enums.FlowNode;
|
||||
import com.aisino.iles.lawenforcement.model.query.EnforcementInfoQuery;
|
||||
import com.aisino.iles.lawenforcement.repository.*;
|
||||
import com.smartlx.sso.client.model.RemoteUserInfo;
|
||||
import jakarta.persistence.criteria.CriteriaBuilder;
|
||||
import jakarta.persistence.criteria.Predicate;
|
||||
import org.apache.commons.lang3.ArrayUtils;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.jpa.domain.Specification;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Executors;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 执法信息服务类
|
||||
*/
|
||||
@Service
|
||||
public class EnforcementInfoService {
|
||||
|
||||
private final EnforcementInfoRepository enforcementInfoRepository;
|
||||
private final EnterpriseRepository enterpriseRepository;
|
||||
private final OfficerRepository officerRepository;
|
||||
private final EnforceCheckRepository enforceCheckRepository;
|
||||
private final CheckItemRepository checkItemRepository;
|
||||
private final CaseRepository caseRepository;
|
||||
private final AgencyRepository agencyRepository;
|
||||
private final DictItemRepo dictItemRepo;
|
||||
private final GenerateCodeService generateCodeService;
|
||||
private final FtpService ftpService;
|
||||
private final ExecutorService fileUploadExecutor = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors() * 2);
|
||||
|
||||
public EnforcementInfoService(EnforcementInfoRepository enforcementInfoRepository,
|
||||
EnterpriseRepository enterpriseRepository,
|
||||
OfficerRepository officerRepository,
|
||||
EnforceCheckRepository enforceCheckRepository,
|
||||
CheckItemRepository checkItemRepository,
|
||||
CaseRepository caseRepository,
|
||||
GenerateCodeService generateCodeService,
|
||||
AgencyRepository agencyRepository,
|
||||
DictItemRepo dictItemRepo,
|
||||
FtpService ftpService) {
|
||||
this.enforcementInfoRepository = enforcementInfoRepository;
|
||||
this.enterpriseRepository = enterpriseRepository;
|
||||
this.officerRepository = officerRepository;
|
||||
this.enforceCheckRepository = enforceCheckRepository;
|
||||
this.checkItemRepository = checkItemRepository;
|
||||
this.caseRepository = caseRepository;
|
||||
this.agencyRepository = agencyRepository;
|
||||
this.dictItemRepo = dictItemRepo;
|
||||
this.generateCodeService = generateCodeService;
|
||||
this.ftpService = ftpService;
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存执法信息
|
||||
*
|
||||
* @param enforcementInfoDto 执法信息
|
||||
* @param user 用户信息
|
||||
* @return 保存结果列表
|
||||
*/
|
||||
@Transactional
|
||||
@PublishDataChange(action = DataChangeAction.SAVE)
|
||||
public List<Object> saveEnforcementInfo(EnforcementInfoDto enforcementInfoDto, RemoteUserInfo user) {
|
||||
// 1. 校验企业ID列表是否为空
|
||||
List<String> enterpriseIds = enforcementInfoDto.getEnterpriseIds();
|
||||
if (CollectionUtils.isEmpty(enterpriseIds)) {
|
||||
throw new BusinessError("企业信息不能为空!");
|
||||
}
|
||||
List<Object> result = new ArrayList<>();
|
||||
// 2. 处理每个企业ID
|
||||
enterpriseIds.forEach(enterpriseId -> {
|
||||
// 2.1 查询企业信息
|
||||
Enterprise enterprise = enterpriseRepository.findById(enterpriseId).orElseThrow(() -> new BusinessError("企业ID不存在:" + enterpriseId));
|
||||
// 2.2 构建 EnforcementInfo 对象
|
||||
EnforcementInfo enforcementInfo = buildEnforcementInfo(enforcementInfoDto, enterprise);
|
||||
enforcementInfoRepository.save(enforcementInfo);
|
||||
result.add(enforcementInfo);
|
||||
// 2.3 构建 EnforceCheck 对象(每个企业共用相同的检查项)
|
||||
EnforceCheck enforceCheck = buildEnforceCheck(enforcementInfoDto, enforcementInfo, user);
|
||||
enforceCheckRepository.save(enforceCheck);
|
||||
result.add(enforceCheck);
|
||||
});
|
||||
return result;
|
||||
}
|
||||
|
||||
private EnforcementInfo buildEnforcementInfo(EnforcementInfoDto enforcementInfoDto, Enterprise enterprise) {
|
||||
EnforcementInfo enforcementInfo = new EnforcementInfo();
|
||||
// 方案名称
|
||||
enforcementInfo.setEnforcementName(enforcementInfoDto.getEnforcementName());
|
||||
// 设置执法时间
|
||||
LocalDate[] enforcementTime = enforcementInfoDto.getEnforcementTime();
|
||||
if (enforcementTime == null || enforcementTime.length < 2) {
|
||||
throw new BusinessError("执法时间不能为空!");
|
||||
}
|
||||
enforcementInfo.setEnforcementStartTime(enforcementTime[0]);
|
||||
enforcementInfo.setEnforcementEndTime(enforcementTime[1]);
|
||||
// 方案内容
|
||||
enforcementInfo.setEnforcementContent(enforcementInfoDto.getEnforcementContent());
|
||||
// 方案依据
|
||||
enforcementInfo.setEnforcementBasis(enforcementInfoDto.getEnforcementBasis());
|
||||
// 附件
|
||||
MultipartFile[] files = enforcementInfoDto.getAnnexs();
|
||||
if (ArrayUtils.isNotEmpty(files)) {
|
||||
List<Map<String, Object>> annexs = uploadAllFiles(files);
|
||||
enforcementInfo.setAnnexs(annexs);
|
||||
}
|
||||
// 企业id
|
||||
enforcementInfo.setEnterpriseId(enterprise.getEnterpriseId());
|
||||
// 机构id
|
||||
enforcementInfo.setAgencyId(enforcementInfoDto.getAgencyId());
|
||||
// 设置数据来源(默认"1")
|
||||
String dataFrom = StringUtils.defaultIfEmpty(enforcementInfoDto.getDataFrom(), "1");
|
||||
enforcementInfo.setDataFrom(dataFrom);
|
||||
// 设置流程节点(根据 dataFrom 判断)
|
||||
if ("34".contains(dataFrom)) { // 举报核查转交/自动执法计划派发
|
||||
enforcementInfo.setAgencyId(enterprise.getAgency().getAgencyId());
|
||||
enforcementInfo.setCurrentNodeCode(FlowNode.plan_approved);
|
||||
enforcementInfo.setCurrentNode("方案审批通过");
|
||||
} else {
|
||||
enforcementInfo.setCurrentNodeCode(FlowNode.plan_approval);
|
||||
enforcementInfo.setCurrentNode("方案待审批");
|
||||
}
|
||||
// 设置创建信息
|
||||
enforcementInfo.setCreateTime(LocalDateTime.now());
|
||||
return enforcementInfo;
|
||||
}
|
||||
|
||||
private EnforceCheck buildEnforceCheck(EnforcementInfoDto enforcementInfoDto, EnforcementInfo enforcementInfo, RemoteUserInfo user) {
|
||||
EnforceCheck enforceCheck = new EnforceCheck();
|
||||
enforceCheck.setEnforcementId(enforcementInfo.getEnforcementId());
|
||||
Optional.ofNullable(enforcementInfoDto.getCheckItemIds()).ifPresent(ids -> enforceCheck.setCheckItemIds(String.join(",", ids)));
|
||||
// 1.日常检查 2.专项检查 3.举报核查(举报核查转交)4.随机抽查 5.督导检查(专项检查)6.交叉互查(投诉举报)7.重点企业检查(自动执法计划)8.双随机检查(自动执法计划)
|
||||
if ("3".equals(enforcementInfo.getDataFrom())) {
|
||||
enforceCheck.setCheckType("3");
|
||||
} else if ("4".equals(enforcementInfo.getDataFrom())) {
|
||||
enforceCheck.setPlanId(enforcementInfoDto.getPlanId());
|
||||
if ("1".equals(enforcementInfoDto.getPlanType())) { // 1:重点检查企业清单,
|
||||
enforceCheck.setCheckType("7");
|
||||
} else if ("2".equals(enforcementInfoDto.getPlanType())) { // 2:双重双随机一公开清单
|
||||
enforceCheck.setCheckType("8");
|
||||
}
|
||||
} else {
|
||||
enforceCheck.setCheckType(enforcementInfoDto.getCheckType());
|
||||
}
|
||||
enforceCheck.setCheckStatus("1");
|
||||
enforceCheck.setCheckFlag("1");
|
||||
enforceCheck.setCreateTime(LocalDateTime.now());
|
||||
enforceCheck.setWriterId(user.getYhwybs());
|
||||
enforceCheck.setCreatedBy(user.getXm());
|
||||
enforceCheck.setCreatedAccountBy(user.getYhwybs());
|
||||
return enforceCheck;
|
||||
}
|
||||
|
||||
// 上传所有文件并返回结果
|
||||
private List<Map<String, Object>> uploadAllFiles(MultipartFile[] files) {
|
||||
// 1. 转换为List并过滤空文件
|
||||
List<MultipartFile> validFiles = Arrays.stream(files).filter(file -> !file.isEmpty()).collect(Collectors.toList());
|
||||
|
||||
// 2. 创建上传任务
|
||||
List<CompletableFuture<Map<String, Object>>> uploadFutures = validFiles.stream().map(this::uploadFile).collect(Collectors.toList());
|
||||
|
||||
// 3. 合并所有Future
|
||||
CompletableFuture<Void> allFutures = CompletableFuture.allOf(uploadFutures.toArray(new CompletableFuture[0]));
|
||||
|
||||
// 4. 获取所有结果
|
||||
return allFutures.thenApply(v -> uploadFutures.stream().map(CompletableFuture::join).collect(Collectors.toList())).join(); // 在当前线程等待完成
|
||||
}
|
||||
|
||||
// 单个文件上传方法
|
||||
private CompletableFuture<Map<String, Object>> uploadFile(MultipartFile file) {
|
||||
return CompletableFuture.supplyAsync(() -> {
|
||||
try {
|
||||
String originalFilename = file.getOriginalFilename();
|
||||
String fileExtension = getFileExtension(originalFilename);
|
||||
|
||||
// 上传文件
|
||||
String url = ftpService.uploadTempFile(IndustryCategoryForFile.pub, originalFilename, file.getInputStream());
|
||||
|
||||
if (!org.springframework.util.StringUtils.hasText(url)) {
|
||||
throw new BusinessError("文件上传失败: " + originalFilename);
|
||||
}
|
||||
|
||||
// 构建返回结果
|
||||
Map<String, Object> result = new HashMap<>();
|
||||
result.put("name", originalFilename);
|
||||
result.put("type", fileExtension);
|
||||
result.put("savePathName", url);
|
||||
result.put("downloadUrl", ftpService.getFileUrl(url));
|
||||
result.put("size", file.getSize());
|
||||
|
||||
return result;
|
||||
} catch (Exception e) {
|
||||
throw new BusinessError("文件上传异常: " + file.getOriginalFilename(), e);
|
||||
}
|
||||
}, fileUploadExecutor); // 使用专用线程池
|
||||
}
|
||||
|
||||
// 获取文件扩展名
|
||||
private String getFileExtension(String filename) {
|
||||
if (filename == null) {
|
||||
return "";
|
||||
}
|
||||
int lastDotIndex = filename.lastIndexOf('.');
|
||||
return lastDotIndex == -1 ? "" : filename.substring(lastDotIndex + 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询执法信息
|
||||
*
|
||||
* @param query@return 分页执法信息
|
||||
*/
|
||||
@Transactional(readOnly = true)
|
||||
public Page<EnforcementInfo> findEnforcementInfosPage(EnforcementInfoQuery query) {
|
||||
return enforcementInfoRepository
|
||||
.findAll(buildSpecification(query), PageableHelper.buildPageRequest(query.page(), query.pageSize(), "createTime", "desc"))
|
||||
.map(this::handleResult);
|
||||
}
|
||||
|
||||
private Specification<EnforcementInfo> buildSpecification(EnforcementInfoQuery query) {
|
||||
return Specification.where((root, criteriaQuery, criteriaBuilder) -> {
|
||||
List<Predicate> predicates = new ArrayList<>();
|
||||
Optional.ofNullable(query.getAgencyCode()).ifPresent(o -> predicates.add(criteriaBuilder.like(root.get("agency").get("agencyCode"), StringUtils.trimEven0(o) + "%")));
|
||||
Optional.ofNullable(query.getUnitName()).ifPresent(o -> predicates.add(criteriaBuilder.like(root.get("enterprise").get("unitName"), "%" + o + "%")));
|
||||
Optional.ofNullable(query.getFillingFlag()).ifPresent(o -> predicates.add(criteriaBuilder.equal(root.get(EnforcementInfo_.fillingFlag), o)));
|
||||
Optional.ofNullable(query.getCurrentNodeCode()).filter(StringUtils::isNotEmpty).ifPresent(o -> {
|
||||
List<Predicate> orPredicates = Arrays.stream(o.split(","))
|
||||
.map(code -> criteriaBuilder.equal(root.get(EnforcementInfo_.currentNodeCode), FlowNode.fromString(code)))
|
||||
.toList();
|
||||
predicates.add(orPredicates.size() == 1 ? orPredicates.get(0) : criteriaBuilder.or(orPredicates.toArray(new Predicate[0])));
|
||||
});
|
||||
Optional.ofNullable(query.getNotCurrentNodeCode()).filter(StringUtils::isNotEmpty).ifPresent(o -> {
|
||||
Arrays.stream(o.split(","))
|
||||
.map(FlowNode::fromString)
|
||||
.forEach(flowNode -> predicates.add(criteriaBuilder.notEqual(root.get(EnforcementInfo_.currentNodeCode), flowNode)));
|
||||
});
|
||||
Optional.ofNullable(query.getStartTime()).ifPresent(o -> predicates.add(criteriaBuilder.greaterThanOrEqualTo(root.get("createTime"), o)));
|
||||
Optional.ofNullable(query.getEndTime()).ifPresent(o -> predicates.add(criteriaBuilder.lessThanOrEqualTo(root.get("createTime"), o)));
|
||||
Optional.ofNullable(query.getEnterpriseId()).ifPresent(o -> predicates.add(criteriaBuilder.equal(root.get(EnforcementInfo_.enterpriseId), o)));
|
||||
Optional.ofNullable(query.getAgency())
|
||||
.map(Agency::getAgencyCode)
|
||||
.ifPresent(o -> predicates.add(criteriaBuilder.like(root.get(EnforcementInfo_.agency).get(Agency_.agencyCode), StringUtils.trimEven0(o) + "%")));
|
||||
Optional.ofNullable(query.getCreateTimeArr()).filter(f -> f.length == 2).map(f -> {
|
||||
List<Predicate> ts = new ArrayList<>();
|
||||
Optional.ofNullable(f[0]).map(from -> criteriaBuilder.greaterThanOrEqualTo(root.get(EnforcementInfo_.createTime), from)).ifPresent(ts::add);
|
||||
Optional.ofNullable(f[1]).map(to -> criteriaBuilder.lessThanOrEqualTo(root.get(EnforcementInfo_.createTime), to)).ifPresent(ts::add);
|
||||
return ts;
|
||||
}).ifPresent(predicates::addAll);
|
||||
Optional.ofNullable(query.getRechecked()).ifPresent(o -> predicates.add(criteriaBuilder.equal(root.get("rechecked"), o)));
|
||||
String[] recheckedArr = query.getRecheckedArr();
|
||||
if (recheckedArr != null && recheckedArr.length > 0) {
|
||||
CriteriaBuilder.In<String> in = criteriaBuilder.in(root.get("rechecked"));
|
||||
Arrays.stream(recheckedArr).forEach(in::value);
|
||||
predicates.add(in);
|
||||
}
|
||||
return criteriaBuilder.and(predicates.toArray(new Predicate[0]));
|
||||
});
|
||||
}
|
||||
|
||||
private EnforcementInfo handleResult(EnforcementInfo enforcementInfoDto) {
|
||||
Optional.ofNullable(enforcementInfoDto.getEnterprise()).ifPresent(enterprise -> enterprise.getUnitName());
|
||||
Optional.ofNullable(enforcementInfoDto.getAgency()).ifPresent(agency -> agency.getAgencyName());
|
||||
// 案件信息
|
||||
caseRepository.findByEnforcementInfoEnforcementId(enforcementInfoDto.getEnforcementId()).ifPresent(caseInfo -> enforcementInfoDto.setCaseInfo(caseInfo));
|
||||
return enforcementInfoDto;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据ID查询执法信息
|
||||
*
|
||||
* @param enforcementId 执法信息ID
|
||||
* @return 执法信息
|
||||
*/
|
||||
@Transactional(readOnly = true)
|
||||
public Optional<EnforcementInfo> findEnforcementInfoById(String enforcementId) {
|
||||
return enforcementInfoRepository.findById(enforcementId).map(enforcementInfo -> {
|
||||
// 机构信息
|
||||
Optional.ofNullable(enforcementInfo.getAgency()).ifPresent(agency -> agency.getAgencyName());
|
||||
// 企业信息
|
||||
Optional.ofNullable(enforcementInfo.getEnterprise()).ifPresent(enterprise -> enterprise.getUnitName());
|
||||
// 附件
|
||||
List<Map<String, Object>> annexs = enforcementInfo.getAnnexs();
|
||||
if (annexs != null) {
|
||||
annexs.forEach(annex -> {
|
||||
String savePathName = annex.get("savePathName").toString();
|
||||
String fileUrl = ftpService.getFileUrl(savePathName);
|
||||
annex.put("downloadUrl", fileUrl);
|
||||
});
|
||||
enforcementInfo.setAnnexs(annexs);
|
||||
}
|
||||
// 检查记录信息
|
||||
List<EnforceCheck> enforceChecks = enforceCheckRepository.findByEnforcementId(enforcementInfo.getEnforcementId());
|
||||
enforceChecks.forEach(enforceCheck -> {
|
||||
String officerIds = enforceCheck.getOfficerIds();
|
||||
if (StringUtils.isNotEmpty(officerIds)) {
|
||||
List<Officer> officerList = new ArrayList<>();
|
||||
Arrays.stream(officerIds.split(",")).forEach(id -> officerRepository.findById(id).ifPresent(officerList::add));
|
||||
enforceCheck.setOfficerList(officerList);
|
||||
}
|
||||
// String checkStatusMsg = "1".equals(enforceCheck.getCheckStatus()) ? "待检查" : "已检查";
|
||||
// enforceCheck.setCheckStatusMsg(checkStatusMsg);
|
||||
dictItemRepo.findByDictDictCodeAndValue("dm_cljg", enforceCheck.getCheckResult()).ifPresent(o -> enforceCheck.setCheckResultMsg(o.getDisplay()));
|
||||
});
|
||||
// 排序
|
||||
enforceChecks.stream().sorted((a, b) -> b.getCheckDate().compareTo(a.getCheckDate())).collect(Collectors.toList());
|
||||
enforcementInfo.setEnforceChecks(enforceChecks);
|
||||
// 检查项信息
|
||||
if (enforceChecks.size() > 0 && StringUtils.isNotEmpty(enforceChecks.get(0).getCheckItemIds())) {
|
||||
enforcementInfo.setCheckItems(checkItemRepository.findByItemIdIn(enforceChecks.get(0).getCheckItemIds().split(",")));
|
||||
}
|
||||
// 案件信息
|
||||
caseRepository.findByEnforcementInfoEnforcementId(enforcementInfo.getEnforcementId()).ifPresent(caseInfo -> {
|
||||
agencyRepository.findById(caseInfo.getAgencyId()).ifPresent(agency -> caseInfo.setAgency(agency));
|
||||
enforcementInfo.setCaseInfo(caseInfo);
|
||||
});
|
||||
return enforcementInfo;
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查执法信息是否存在
|
||||
*
|
||||
* @param enforcementId 执法信息ID
|
||||
* @return 是否存在
|
||||
*/
|
||||
public boolean existsEnforcementInfoById(String enforcementId) {
|
||||
return enforcementInfoRepository.existsById(enforcementId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改执法信息
|
||||
*
|
||||
* @param enforcementInfoDto 执法信息
|
||||
*/
|
||||
@Transactional
|
||||
public void updateEnforcementInfo(EnforcementInfoDto enforcementInfoDto) {
|
||||
if (StringUtils.isEmpty(enforcementInfoDto.getEnterpriseId())) throw new BusinessError("企业信息不能为空!");
|
||||
enforcementInfoRepository.findById(enforcementInfoDto.getEnforcementId()).ifPresent(enforcementInfo -> {
|
||||
enterpriseRepository.findById(enforcementInfoDto.getEnterpriseIds().get(0)).ifPresent(enterprise -> {
|
||||
// 方案名称
|
||||
enforcementInfo.setEnforcementName(enforcementInfoDto.getEnforcementName());
|
||||
// 方案内容
|
||||
enforcementInfo.setEnforcementContent(enforcementInfoDto.getEnforcementContent());
|
||||
// 方案依据
|
||||
enforcementInfo.setEnforcementBasis(enforcementInfoDto.getEnforcementBasis());
|
||||
// 设置执法时间
|
||||
LocalDate[] enforcementTime = enforcementInfoDto.getEnforcementTime();
|
||||
if (enforcementTime == null || enforcementTime.length < 2) {
|
||||
throw new BusinessError("执法时间不能为空!");
|
||||
}
|
||||
enforcementInfo.setEnforcementStartTime(enforcementTime[0]);
|
||||
enforcementInfo.setEnforcementEndTime(enforcementTime[1]);
|
||||
enforcementInfo.setAgencyId(enforcementInfoDto.getAgencyId());
|
||||
enforcementInfo.setEnterpriseId(enterprise.getEnterpriseId());
|
||||
enforcementInfo.setUpdateTime(LocalDateTime.now());
|
||||
enforcementInfoRepository.save(enforcementInfo);
|
||||
});
|
||||
enforceCheckRepository.findById(enforcementInfoDto.getEnforceCheckId()).ifPresent(enforceCheck -> {
|
||||
Optional.ofNullable(enforcementInfoDto.getCheckItemIds()).ifPresent(ids -> enforceCheck.setCheckItemIds(String.join(",", ids)));
|
||||
enforceCheck.setCheckType(enforcementInfoDto.getCheckType());
|
||||
enforceCheck.setUpdateTime(LocalDateTime.now());
|
||||
enforceCheckRepository.save(enforceCheck);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据ID删除执法信息
|
||||
*
|
||||
* @param enforcementId 执法信息ID
|
||||
*/
|
||||
@Transactional
|
||||
public void deleteEnforcementInfoById(String enforcementId) {
|
||||
// 删除检查信息
|
||||
List<String> enforceCheckIds = enforceCheckRepository.findByEnforcementId(enforcementId).stream().map(EnforceCheck::getEnforceCheckId).collect(Collectors.toList());
|
||||
enforceCheckRepository.deleteAllById(enforceCheckIds);
|
||||
// 删除执法信息
|
||||
enforcementInfoRepository.deleteById(enforcementId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除执法信息
|
||||
*
|
||||
* @param enforcementIds 执法信息ID列表
|
||||
*/
|
||||
@Transactional
|
||||
public void deleteEnforcementInfosByIds(List<String> enforcementIds) {
|
||||
// 删除检查信息
|
||||
enforcementIds.forEach(enforcementId -> {
|
||||
List<String> enforceCheckIds = enforceCheckRepository.findByEnforcementId(enforcementId).stream().map(EnforceCheck::getEnforceCheckId).collect(Collectors.toList());
|
||||
enforceCheckRepository.deleteAllById(enforceCheckIds);
|
||||
});
|
||||
// 删除执法信息
|
||||
enforcementInfoRepository.deleteAllById(enforcementIds);
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存方案审批信息
|
||||
*
|
||||
* @param enforcementInfoDto 方案审批信息
|
||||
*/
|
||||
@Transactional
|
||||
public void savePlanApproval(EnforcementInfoDto enforcementInfoDto) {
|
||||
String enforcementId = enforcementInfoDto.getEnforcementId();
|
||||
enforcementInfoRepository.findById(enforcementId).ifPresent(enforcementInfo -> {
|
||||
enforcementInfo.setPlanIsPass(enforcementInfoDto.getPlanIsPass());
|
||||
if ("1".equals(enforcementInfoDto.getPlanIsPass())) {
|
||||
enforcementInfo.setCurrentNodeCode(FlowNode.plan_approved);
|
||||
enforcementInfo.setCurrentNode("方案审批通过");
|
||||
} else {
|
||||
enforcementInfo.setCurrentNodeCode(FlowNode.plan_approval_failed);
|
||||
enforcementInfo.setCurrentNode("方案审批未通过");
|
||||
}
|
||||
enforcementInfo.setPlanApprovalDesc(enforcementInfoDto.getPlanApprovalDesc());
|
||||
enforcementInfo.setPlanApprovalUserId(enforcementInfoDto.getPlanApprovalUserId());
|
||||
enforcementInfo.setPlanApprovalUserName(enforcementInfoDto.getPlanApprovalUserName());
|
||||
enforcementInfo.setPlanApprovalTime(enforcementInfoDto.getPlanApprovalTime());
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存总结信息
|
||||
*
|
||||
* @param enforcementInfoDto 总结信息
|
||||
*/
|
||||
@Transactional
|
||||
public void saveSummarize(EnforcementInfoDto enforcementInfoDto) {
|
||||
String enforcementId = enforcementInfoDto.getEnforcementId();
|
||||
enforcementInfoRepository.findById(enforcementId).ifPresent(enforcementInfo -> {
|
||||
if ("1".equals(enforcementInfoDto.getIsRegister())) {
|
||||
enforcementInfo.setFillingFlag("1");
|
||||
enforcementInfo.setCurrentNodeCode(FlowNode.inspect_summarize);
|
||||
enforcementInfo.setCurrentNode("总结");
|
||||
} else {
|
||||
enforcementInfo.setFillingFlag("0");
|
||||
enforcementInfo.setCurrentNodeCode(FlowNode.done);
|
||||
enforcementInfo.setCurrentNode("完成");
|
||||
}
|
||||
enforcementInfo.setSummarizeDesc(enforcementInfoDto.getSummarizeDesc());
|
||||
enforcementInfo.setSummarizeUserId(enforcementInfoDto.getSummarizeUserId());
|
||||
enforcementInfo.setSummarizeUserName(enforcementInfoDto.getSummarizeUserName());
|
||||
enforcementInfo.setSummarizeTime(enforcementInfoDto.getSummarizeTime());
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存案件信息
|
||||
*
|
||||
* @param caseInfoDto 案件信息
|
||||
*/
|
||||
@Transactional
|
||||
public void saveCaseInfo(CaseInfoDto caseInfoDto) {
|
||||
String enforcementId = caseInfoDto.getEnforcementId();
|
||||
enforcementInfoRepository.findById(enforcementId).ifPresent(enforcementInfo -> {
|
||||
enforcementInfo.setCurrentNodeCode(FlowNode.filed);
|
||||
enforcementInfo.setCurrentNode("已立案");
|
||||
enforcementInfo.setFillingFlag("1");
|
||||
enforcementInfo.setFillingTime(caseInfoDto.getFillingTime());
|
||||
Case caseInfo = new Case();
|
||||
caseInfo.setCaseNum(generateCodeService.buildCode("xa", "case", null, 0));
|
||||
caseInfo.setEnforcementId(enforcementInfo.getEnforcementId());
|
||||
caseInfo.setAgencyId(caseInfoDto.getAgencyId());
|
||||
caseInfo.setFiledUserName(caseInfoDto.getFiledUserName());
|
||||
caseInfo.setFiledUserId(caseInfoDto.getFiledUserId());
|
||||
caseInfo.setFillingDate(LocalDate.now());
|
||||
caseInfo.setIsLawBreak(caseInfoDto.getIsLawBreak());
|
||||
caseInfo.setCaseSourceCode(caseInfoDto.getCaseSourceCode());
|
||||
caseInfo.setCaseSource(caseInfoDto.getCaseSource());
|
||||
caseInfo.setCaseName(caseInfoDto.getCaseName());
|
||||
caseInfo.setCaseAdd(caseInfoDto.getCaseAdd());
|
||||
caseInfo.setCaseTime(caseInfoDto.getCaseTime());
|
||||
caseInfo.setCaseCause(caseInfoDto.getCaseCause());
|
||||
caseInfo.setCaseDesc(caseInfoDto.getCaseDesc());
|
||||
caseInfo.setDisposition(caseInfoDto.getDisposition());
|
||||
caseInfo.setCreatedTime(LocalDateTime.now());
|
||||
caseInfo.setStatus(Case.CaseStatus.filed);
|
||||
caseInfo.setEnterpriseId(enforcementInfo.getEnterpriseId());
|
||||
caseRepository.save(caseInfo);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 推送案件信息
|
||||
*
|
||||
* @param caseInfoDto 案件信息
|
||||
*/
|
||||
@Transactional
|
||||
public void pushCaseInfo(CaseInfoDto caseInfoDto) {
|
||||
String enforcementId = caseInfoDto.getEnforcementId();
|
||||
caseRepository.findByEnforcementInfoEnforcementId(enforcementId).ifPresent(caseInfo -> {
|
||||
// Case caseInfo = new Case();
|
||||
// caseInfo.setCaseNum(caseInfoDto.getCaseNum());
|
||||
// caseInfo.setCaseName(caseInfoDto.getCaseName());
|
||||
// caseInfo.setCaseCause(caseInfoDto.getCaseCause());
|
||||
// caseInfo.setCaseSource(caseInfoDto.getCaseSource());
|
||||
// caseInfo.setFillingDate(LocalDate.now());
|
||||
// caseInfo.setCreatedTime(LocalDateTime.now());
|
||||
// caseInfo.setStatus(Case.CaseStatus.filed);
|
||||
// caseInfo.setEnterpriseId(enforcementInfo.getEnterpriseId());
|
||||
// caseInfo.setEnforcementId(enforcementInfo.getEnforcementId());
|
||||
// caseInfo.setFiledUserId();
|
||||
enforcementInfoRepository.findById(enforcementId).ifPresent(enforcementInfo -> {
|
||||
enforcementInfo.setCurrentNodeCode(FlowNode.investigating);
|
||||
enforcementInfo.setCurrentNode("调查取证");
|
||||
});
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存集体讨论信息
|
||||
*
|
||||
* @param enforcementInfoDto 集体讨论信息
|
||||
*/
|
||||
@Transactional
|
||||
public void saveBrainstorm(EnforcementInfoDto enforcementInfoDto) {
|
||||
String enforcementId = enforcementInfoDto.getEnforcementId();
|
||||
enforcementInfoRepository.findById(enforcementId).ifPresent(enforcementInfo -> {
|
||||
if ("1".equals(enforcementInfoDto.getIsRegister())) {
|
||||
enforcementInfo.setCurrentNodeCode(FlowNode.closed);
|
||||
enforcementInfo.setCurrentNode("结案");
|
||||
enforcementInfo.setCaseClosingTime(LocalDateTime.now());
|
||||
} else {
|
||||
enforcementInfo.setCurrentNodeCode(FlowNode.brainstorm);
|
||||
enforcementInfo.setCurrentNode("集体讨论");
|
||||
}
|
||||
enforcementInfo.setBrainstormDesc(enforcementInfoDto.getBrainstormDesc());
|
||||
enforcementInfo.setBrainstormUserId(enforcementInfoDto.getBrainstormUserId());
|
||||
enforcementInfo.setBrainstormUserName(enforcementInfoDto.getBrainstormUserName());
|
||||
enforcementInfo.setBrainstormTime(enforcementInfoDto.getBrainstormTime());
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存案件审核信息
|
||||
*
|
||||
* @param enforcementInfoDto 案件审核信息
|
||||
*/
|
||||
@Transactional
|
||||
public void saveCaseExamine(EnforcementInfoDto enforcementInfoDto) {
|
||||
String enforcementId = enforcementInfoDto.getEnforcementId();
|
||||
caseRepository.findByEnforcementInfoEnforcementId(enforcementId).ifPresent(caseInfo -> {
|
||||
caseInfo.setExamineUserId(enforcementInfoDto.getExamineUserId());
|
||||
caseInfo.setExamineUserName(enforcementInfoDto.getExamineUserName());
|
||||
caseInfo.setExamineDesc(enforcementInfoDto.getExamineDesc());
|
||||
caseInfo.setExamineTime(enforcementInfoDto.getExamineTime());
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存案件审批信息
|
||||
*
|
||||
* @param enforcementInfoDto 案件审批信息
|
||||
*/
|
||||
@Transactional
|
||||
public void saveCaseApprove(EnforcementInfoDto enforcementInfoDto) {
|
||||
String enforcementId = enforcementInfoDto.getEnforcementId();
|
||||
enforcementInfoRepository.findById(enforcementId).ifPresent(enforcementInfo -> {
|
||||
enforcementInfo.setCurrentNodeCode(FlowNode.done);
|
||||
enforcementInfo.setCurrentNode("完成");
|
||||
});
|
||||
caseRepository.findByEnforcementInfoEnforcementId(enforcementId).ifPresent(caseInfo -> {
|
||||
caseInfo.setApproveUserId(enforcementInfoDto.getApproveUserId());
|
||||
caseInfo.setApproveUserName(enforcementInfoDto.getApproveUserName());
|
||||
caseInfo.setApproveDesc(enforcementInfoDto.getApproveDesc());
|
||||
caseInfo.setApproveTime(enforcementInfoDto.getApproveTime());
|
||||
});
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public void updateFillingFlag(EnforcementInfoDto enforcementInfoDto) {
|
||||
String enforcementId = enforcementInfoDto.getEnforcementId();
|
||||
enforceCheckRepository.findByEnforcementId(enforcementId).forEach(enforceCheck -> {
|
||||
enforceCheck.setCheckStatus("2");
|
||||
enforceCheckRepository.save(enforceCheck);
|
||||
});
|
||||
enforcementInfoRepository.findById(enforcementId).ifPresent(enforcementInfo -> {
|
||||
enforcementInfo.setFillingFlag(enforcementInfoDto.getFillingFlag());
|
||||
enforcementInfo.setFillingTime(LocalDateTime.now());
|
||||
enforcementInfoRepository.save(enforcementInfo);
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,400 @@
|
|||
package com.aisino.iles.lawenforcement.service;
|
||||
|
||||
|
||||
import cn.hutool.http.HttpRequest;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.aisino.iles.common.util.BeanUtils;
|
||||
import com.aisino.iles.common.util.KmsServer;
|
||||
import com.aisino.iles.lawenforcement.model.*;
|
||||
import com.aisino.iles.lawenforcement.model.dto.EnterpriseInterfaceDto;
|
||||
import com.aisino.iles.lawenforcement.model.query.EnterpriseQuery;
|
||||
import com.aisino.iles.lawenforcement.repository.EnterpriseAuditRepository;
|
||||
import com.aisino.iles.lawenforcement.repository.EnterpriseHistoryRepository;
|
||||
import com.aisino.iles.lawenforcement.repository.EnterpriseRepository;
|
||||
import com.smartlx.sso.client.model.RemoteUserInfo;
|
||||
import com.smartlx.sso.client.properties.SsoClientProperties;
|
||||
import jakarta.persistence.criteria.Predicate;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.domain.PageRequest;
|
||||
import org.springframework.data.domain.Sort;
|
||||
import org.springframework.data.jpa.domain.Specification;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import java.math.RoundingMode;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
/**
|
||||
* 企业审核信息服务类
|
||||
*/
|
||||
@Service
|
||||
@Slf4j
|
||||
public class EnterpriseAuditService {
|
||||
private final EnterpriseAuditRepository enterpriseAuditRepo;
|
||||
private final EnterpriseHistoryRepository enterpriseHistoryRepo;
|
||||
private final EnterpriseRepository enterpriseRepo;
|
||||
private final SsoClientProperties ssoClientProperties;
|
||||
private final String saveUrl;
|
||||
private final EnterpriseService enterpriseService;
|
||||
private final AdministrativeLicenseService administrativeLicenseService;
|
||||
|
||||
public EnterpriseAuditService(EnterpriseAuditRepository enterpriseAuditRepo,
|
||||
EnterpriseHistoryRepository enterpriseHistoryRepo,
|
||||
EnterpriseRepository enterpriseRepo,
|
||||
SsoClientProperties ssoClientProperties,
|
||||
@Value("${third-party.enterprise.save:}") String saveUrl,
|
||||
EnterpriseService enterpriseService,
|
||||
AdministrativeLicenseService administrativeLicenseService) {
|
||||
this.enterpriseAuditRepo = enterpriseAuditRepo;
|
||||
this.enterpriseHistoryRepo = enterpriseHistoryRepo;
|
||||
this.enterpriseRepo = enterpriseRepo;
|
||||
this.ssoClientProperties = ssoClientProperties;
|
||||
this.saveUrl = saveUrl;
|
||||
this.enterpriseService = enterpriseService;
|
||||
this.administrativeLicenseService = administrativeLicenseService;
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存企业审核信息
|
||||
*
|
||||
* @param enterpriseAudit 企业审核信息
|
||||
* @return 保存后的企业审核信息
|
||||
*/
|
||||
@Transactional
|
||||
public EnterpriseAudit saveEnterpriseAudit(EnterpriseAudit enterpriseAudit, RemoteUserInfo user, String type) {
|
||||
LocalDateTime now = LocalDateTime.now();
|
||||
String enterpriseId = enterpriseAudit.getEnterpriseId();
|
||||
if ("update".equals(type)) {
|
||||
EnterpriseAudit audit = enterpriseAuditRepo.findById(enterpriseId).orElseThrow(() -> new RuntimeException("单位信息不存在"));
|
||||
String unifiedSocialCode = enterpriseAudit.getUnifiedSocialCode();
|
||||
if (enterpriseAuditRepo.existsByUnifiedSocialCodeAndDelFlagAndEnterpriseIdNot(unifiedSocialCode, (short) 0, enterpriseId)
|
||||
|| enterpriseRepo.existsByUnifiedSocialCodeAndDelFlag(unifiedSocialCode, (short) 0))
|
||||
throw new RuntimeException("社会统一信用代码【" + unifiedSocialCode + "】在企业上报审核/企业信息管理已存在");
|
||||
String legalPhone = enterpriseAudit.getLegalPhone();
|
||||
if (enterpriseAuditRepo.existsByLegalPhoneAndDelFlagAndEnterpriseIdNot(legalPhone, (short) 0, enterpriseId)
|
||||
|| enterpriseRepo.existsByLegalPhoneAndDelFlag(legalPhone, (short) 0))
|
||||
throw new RuntimeException("联系电话【" + legalPhone + "】在企业上报审核/企业信息管理已存在");
|
||||
EnterpriseHistory history = new EnterpriseHistory();
|
||||
BeanUtils.copyProperties(audit, history);
|
||||
history.setTheType("普通修改");
|
||||
if (null != user) {
|
||||
history.setHistoryTime(now);
|
||||
history.setTheUserName(user.getXm());
|
||||
history.setTheUserName(user.getYhwybs());
|
||||
}
|
||||
history.setHistorySide("2");
|
||||
enterpriseHistoryRepo.save(history);
|
||||
//测试使用
|
||||
// enterpriseRepo.findById(audit.getEnterpriseId()).ifPresent(enterprise -> uploadEnterprise(enterprise, user));
|
||||
} else if ("audit".equals(type)) {
|
||||
EnterpriseAudit audit = enterpriseAuditRepo.findById(enterpriseId).orElseThrow(() -> new RuntimeException("单位信息不存在"));
|
||||
String unifiedSocialCode = audit.getUnifiedSocialCode();
|
||||
if (enterpriseAuditRepo.existsByUnifiedSocialCodeAndDelFlagAndEnterpriseIdNot(unifiedSocialCode, (short) 0, enterpriseId)
|
||||
|| enterpriseRepo.existsByUnifiedSocialCodeAndDelFlag(unifiedSocialCode, (short) 0))
|
||||
throw new RuntimeException("社会统一信用代码【" + unifiedSocialCode + "】在企业上报审核/企业信息管理已存在");
|
||||
String legalPhone = audit.getLegalPhone();
|
||||
if (enterpriseAuditRepo.existsByLegalPhoneAndDelFlagAndEnterpriseIdNot(legalPhone, (short) 0, enterpriseId)
|
||||
|| enterpriseRepo.existsByLegalPhoneAndDelFlag(legalPhone, (short) 0))
|
||||
throw new RuntimeException("联系电话【" + legalPhone + "】在企业上报审核/企业信息管理已存在");
|
||||
EnterpriseHistory history = new EnterpriseHistory();
|
||||
BeanUtils.copyProperties(audit, history);
|
||||
history.setTheType("审核");
|
||||
if (null != user) {
|
||||
history.setHistoryTime(now);
|
||||
history.setTheUserName(user.getXm());
|
||||
history.setTheUserName(user.getYhwybs());
|
||||
audit.setAuditTime(now);
|
||||
audit.setAuditNickName(user.getXm());
|
||||
audit.setAuditUserName(user.getYhwybs());
|
||||
audit.setModifyNickName(user.getXm());
|
||||
audit.setModifyUserName(user.getYhwybs());
|
||||
}
|
||||
history.setHistorySide("2");
|
||||
enterpriseHistoryRepo.save(history);
|
||||
audit.setAuditStatus(enterpriseAudit.getAuditStatus());
|
||||
audit.setAuditTime(enterpriseAudit.getAuditTime());
|
||||
audit.setAuditOpinion(enterpriseAudit.getAuditOpinion());
|
||||
audit.setModifyTime(now);
|
||||
if ("1".equals(enterpriseAudit.getAuditStatus())) {
|
||||
Enterprise enterprise = new Enterprise();
|
||||
BeanUtils.copyProperties(audit, enterprise);
|
||||
enterprise.setOperate("add");
|
||||
enterpriseService.saveEnterprise(enterprise, user);
|
||||
uploadEnterprise(enterprise, user);
|
||||
}
|
||||
// 检验加密签名保存
|
||||
StringBuilder signOrg = new StringBuilder();
|
||||
Optional.ofNullable(audit.getContactPhone()).filter(StringUtils::hasText).ifPresent(signOrg::append);
|
||||
Optional.ofNullable(audit.getLegalPhone()).filter(StringUtils::hasText).ifPresent(signOrg::append);
|
||||
Optional.ofNullable(audit.getLegalPersonIdNumber()).filter(StringUtils::hasText).ifPresent(signOrg::append);
|
||||
Optional.ofNullable(audit.getMainPhone()).filter(StringUtils::hasText).ifPresent(signOrg::append);
|
||||
Optional.of(signOrg.toString()).filter(StringUtils::hasText).ifPresent(s -> audit.setSginData(KmsServer.kmsSign(s)));
|
||||
return enterpriseAuditRepo.save(audit);
|
||||
} else {
|
||||
String unifiedSocialCode = enterpriseAudit.getUnifiedSocialCode();
|
||||
if (enterpriseAuditRepo.existsByUnifiedSocialCodeAndDelFlag(unifiedSocialCode, (short) 0)
|
||||
|| enterpriseRepo.existsByUnifiedSocialCodeAndDelFlag(unifiedSocialCode, (short) 0))
|
||||
throw new RuntimeException("社会统一信用代码【" + unifiedSocialCode + "】在企业上报审核/企业信息管理已存在");
|
||||
String legalPhone = enterpriseAudit.getLegalPhone();
|
||||
if (enterpriseAuditRepo.existsByLegalPhoneAndDelFlag(legalPhone, (short) 0)
|
||||
|| enterpriseRepo.existsByLegalPhoneAndDelFlag(legalPhone, (short) 0))
|
||||
throw new RuntimeException("联系电话【" + legalPhone + "】在企业上报审核/企业信息管理已存在");
|
||||
enterpriseAudit.setEntryTime(now);
|
||||
enterpriseAudit.setAuditStatus("0");
|
||||
if (!StringUtils.hasText(enterpriseAudit.getBusinessCategory())) {
|
||||
if ("5".equals(enterpriseAudit.getIndustryType()))
|
||||
enterpriseAudit.setBusinessCategory("2");
|
||||
else enterpriseAudit.setBusinessCategory("1");
|
||||
}
|
||||
if (null != user) {
|
||||
enterpriseAudit.setEntryNickName(user.getXm());
|
||||
enterpriseAudit.setEntryUserName(user.getYhwybs());
|
||||
enterpriseAudit.setModifyNickName(user.getXm());
|
||||
enterpriseAudit.setModifyUserName(user.getYhwybs());
|
||||
}
|
||||
}
|
||||
enterpriseAudit.setModifyTime(now);
|
||||
// 检验加密签名保存
|
||||
StringBuilder signOrg = new StringBuilder();
|
||||
Optional.ofNullable(enterpriseAudit.getContactPhone()).filter(StringUtils::hasText).ifPresent(signOrg::append);
|
||||
Optional.ofNullable(enterpriseAudit.getLegalPhone()).filter(StringUtils::hasText).ifPresent(signOrg::append);
|
||||
Optional.ofNullable(enterpriseAudit.getLegalPersonIdNumber()).filter(StringUtils::hasText).ifPresent(signOrg::append);
|
||||
Optional.ofNullable(enterpriseAudit.getMainPhone()).filter(StringUtils::hasText).ifPresent(signOrg::append);
|
||||
Optional.of(signOrg.toString()).filter(StringUtils::hasText).ifPresent(s -> enterpriseAudit.setSginData(KmsServer.kmsSign(s)));
|
||||
EnterpriseAudit save = enterpriseAuditRepo.save(enterpriseAudit);
|
||||
List<AdministrativeLicense> administrativeLicenseInfos = enterpriseAudit.getAdministrativeLicenseInfos();
|
||||
if (null != administrativeLicenseInfos && !administrativeLicenseInfos.isEmpty())
|
||||
administrativeLicenseService.saveAdministrativeLicense(administrativeLicenseInfos, save.getEnterpriseId());
|
||||
return save;
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量保存企业审核信息
|
||||
*
|
||||
* @param enterpriseAudits 企业审核信息列表
|
||||
* @return 保存后的企业审核信息列表
|
||||
*/
|
||||
@Transactional
|
||||
public List<EnterpriseAudit> saveEnterpriseAudits(List<EnterpriseAudit> enterpriseAudits) {
|
||||
return enterpriseAuditRepo.saveAll(enterpriseAudits);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据ID查询企业审核信息
|
||||
*
|
||||
* @param enterpriseId 企业ID
|
||||
* @return 企业审核信息
|
||||
*/
|
||||
public Optional<EnterpriseAudit> findEnterpriseAuditById(String enterpriseId) {
|
||||
return enterpriseAuditRepo.findById(enterpriseId).map(enterprise -> {
|
||||
List<AdministrativeLicense> administrativeLicenses = Optional.ofNullable(administrativeLicenseService.findAllByEnterpriseId(enterpriseId))
|
||||
.filter(list -> !list.isEmpty())
|
||||
.orElseGet(() -> new ArrayList<>(Collections.singletonList(new AdministrativeLicense())));
|
||||
enterprise.setAdministrativeLicenseInfos(administrativeLicenses);
|
||||
return enterprise;
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询所有企业审核信息
|
||||
*
|
||||
* @return 企业审核信息列表
|
||||
*/
|
||||
public List<EnterpriseAudit> findAllEnterpriseAudits(EnterpriseQuery query) {
|
||||
return enterpriseAuditRepo.findAll(buildSpecification(query));
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询企业审核信息
|
||||
*
|
||||
* @param pageRequest 分页请求
|
||||
* @return 分页企业审核信息
|
||||
*/
|
||||
public Page<EnterpriseAudit> findEnterpriseAuditsPage(PageRequest pageRequest) {
|
||||
return enterpriseAuditRepo.findAll(pageRequest);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据查询条件分页查询企业审核信息
|
||||
*
|
||||
* @param query 查询条件
|
||||
* @return 分页企业审核信息
|
||||
*/
|
||||
public Page<EnterpriseAudit> findEnterpriseAuditsPage(EnterpriseQuery query) {
|
||||
Specification<EnterpriseAudit> spec = buildSpecification(query);
|
||||
// 构建分页和排序
|
||||
PageRequest pageRequest;
|
||||
if (StringUtils.hasText(query.sort())) {
|
||||
Sort.Direction direction = "desc".equalsIgnoreCase(query.dir()) ? Sort.Direction.DESC : Sort.Direction.ASC;
|
||||
Sort sort = Sort.by(direction, query.sort());
|
||||
pageRequest = PageRequest.of(query.page() - 1, query.pageSize(), sort);
|
||||
} else {
|
||||
pageRequest = PageRequest.of(query.page() - 1, query.pageSize());
|
||||
}
|
||||
|
||||
return enterpriseAuditRepo.findAll(spec, pageRequest);
|
||||
}
|
||||
|
||||
/**
|
||||
* 构建查询条件
|
||||
*
|
||||
* @param query 查询条件
|
||||
* @return 规格
|
||||
*/
|
||||
private Specification<EnterpriseAudit> buildSpecification(EnterpriseQuery query) {
|
||||
return (root, criteriaQuery, criteriaBuilder) -> {
|
||||
List<Predicate> predicates = new ArrayList<>();
|
||||
Optional.ofNullable(query.getDynamicRiskLevel()).filter(StringUtils::hasText).ifPresent(o -> predicates.add(criteriaBuilder.equal(root.get(EnterpriseAudit_.dynamicRiskLevel), o)));
|
||||
Optional.ofNullable(query.getEnterpriseId()).filter(StringUtils::hasText).ifPresent(o -> predicates.add(criteriaBuilder.equal(root.get(EnterpriseAudit_.enterpriseId), o)));
|
||||
Optional.ofNullable(query.getUnitName()).filter(StringUtils::hasText).ifPresent(o -> predicates.add(criteriaBuilder.like(root.get(EnterpriseAudit_.unitName), "%" + o + "%")));
|
||||
Optional.ofNullable(query.getUnifiedSocialCode()).filter(StringUtils::hasText).ifPresent(o -> predicates.add(criteriaBuilder.like(root.get(EnterpriseAudit_.unifiedSocialCode), "%" + o + "%")));
|
||||
Optional.ofNullable(query.getAgency()).ifPresent(o -> predicates.add(criteriaBuilder.like(root.get(EnterpriseAudit_.agency).get(Agency_.agencyCode), com.aisino.iles.common.util.StringUtils.trimEven0(o.getAgencyCode()) + "%")));
|
||||
Optional.ofNullable(query.getAgencyCode()).filter(StringUtils::hasText).ifPresent(o -> predicates.add(criteriaBuilder.like(root.get(EnterpriseAudit_.agency).get(Agency_.agencyCode), com.aisino.iles.common.util.StringUtils.trimEven0(o) + "%")));
|
||||
Optional.ofNullable(query.getIndustryType()).filter(StringUtils::hasText).ifPresent(o -> predicates.add(criteriaBuilder.equal(root.get(EnterpriseAudit_.industryType), o)));
|
||||
Optional.ofNullable(query.getRiskCategory()).filter(StringUtils::hasText).ifPresent(o -> predicates.add(criteriaBuilder.equal(root.get(EnterpriseAudit_.riskCategory), o)));
|
||||
Optional.ofNullable(query.getLegalRepresentative()).filter(StringUtils::hasText).ifPresent(o -> predicates.add(criteriaBuilder.like(root.get(EnterpriseAudit_.legalRepresentative), "%" + o + "%")));
|
||||
Optional.ofNullable(query.getContactPhone()).filter(StringUtils::hasText).ifPresent(o -> predicates.add(criteriaBuilder.equal(root.get(EnterpriseAudit_.contactPhone), o)));
|
||||
Optional.ofNullable(query.getContactPhone()).filter(StringUtils::hasText).ifPresent(o -> predicates.add(criteriaBuilder.equal(root.get(EnterpriseAudit_.contactPhone), o)));
|
||||
Optional.ofNullable(query.getBusinessStatus()).filter(StringUtils::hasText).ifPresent(o -> predicates.add(criteriaBuilder.equal(root.get(EnterpriseAudit_.businessStatus), o)));
|
||||
Optional.ofNullable(query.getContactPerson()).filter(StringUtils::hasText).ifPresent(o -> predicates.add(criteriaBuilder.like(root.get(EnterpriseAudit_.contactPerson), "%" + o + "%")));
|
||||
Optional.ofNullable(query.getMainName()).filter(StringUtils::hasText).ifPresent(o -> predicates.add(criteriaBuilder.like(root.get(EnterpriseAudit_.mainName), "%" + o + "%")));
|
||||
Optional.ofNullable(query.getDetailedAddress()).filter(StringUtils::hasText).ifPresent(o -> predicates.add(criteriaBuilder.like(root.get(EnterpriseAudit_.detailedAddress), "%" + o + "%")));
|
||||
Optional.ofNullable(query.getUnitType()).filter(StringUtils::hasText).ifPresent(o -> predicates.add(criteriaBuilder.equal(root.get(EnterpriseAudit_.unitType), o)));
|
||||
Optional.ofNullable(query.getOperationStatus()).filter(StringUtils::hasText).ifPresent(o -> predicates.add(criteriaBuilder.equal(root.get(EnterpriseAudit_.operationStatus), o)));
|
||||
Optional.ofNullable(query.getBusinessRating()).ifPresent(o -> predicates.add(criteriaBuilder.equal(root.get(EnterpriseAudit_.businessRating), o)));
|
||||
Optional.ofNullable(query.getBusinessCategory()).ifPresent(o -> predicates.add(criteriaBuilder.equal(root.get(EnterpriseAudit_.businessCategory), o)));
|
||||
Optional.ofNullable(query.getEstablishmentDateList()).filter(f -> f.length == 2).map(f -> {
|
||||
List<Predicate> ts = new ArrayList<>();
|
||||
Optional.ofNullable(f[0]).map(from -> criteriaBuilder.greaterThanOrEqualTo(root.get(EnterpriseAudit_.establishmentDate), from)).ifPresent(ts::add);
|
||||
Optional.ofNullable(f[1]).map(to -> criteriaBuilder.lessThanOrEqualTo(root.get(EnterpriseAudit_.establishmentDate), to)).ifPresent(ts::add);
|
||||
return ts;
|
||||
}).ifPresent(predicates::addAll);
|
||||
return criteriaBuilder.and(predicates.toArray(new Predicate[0]));
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 根据ID删除企业审核信息
|
||||
*
|
||||
* @param enterpriseId 企业ID
|
||||
*/
|
||||
@Transactional
|
||||
public void deleteEnterpriseAuditById(String enterpriseId) {
|
||||
enterpriseAuditRepo.deleteById(enterpriseId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除企业审核信息
|
||||
*
|
||||
* @param enterpriseIds 企业ID列表
|
||||
*/
|
||||
@Transactional
|
||||
public void deleteEnterpriseAuditsByIds(List<String> enterpriseIds) {
|
||||
enterpriseAuditRepo.deleteAllById(enterpriseIds);
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查企业审核信息是否存在
|
||||
*
|
||||
* @param enterpriseId 企业ID
|
||||
* @return 是否存在
|
||||
*/
|
||||
public boolean existsEnterpriseAuditById(String enterpriseId) {
|
||||
return enterpriseAuditRepo.existsById(enterpriseId);
|
||||
}
|
||||
|
||||
public void uploadEnterprise(Enterprise enterprise, RemoteUserInfo user) {
|
||||
EnterpriseInterfaceDto dto = new EnterpriseInterfaceDto();
|
||||
dto.setCjrYhwybs(enterprise.getEntryUserName());//创建人用户唯一标识
|
||||
dto.setCjsj(enterprise.getEntryTime());//创建时间
|
||||
dto.setGxrYhwybs(enterprise.getModifyUserName());//更新人用户唯一标识
|
||||
dto.setGxsj(enterprise.getModifyTime());//更新时间
|
||||
dto.setSjyxx("1");//数据有效性(1:有效 0:无效)
|
||||
dto.setQybh(null);//企业编号
|
||||
dto.setQymc(enterprise.getUnitName());//企业名称
|
||||
dto.setTyshxydm(enterprise.getUnifiedSocialCode());//统一社会信用代码
|
||||
String economicType = enterprise.getEconomicType();
|
||||
if (StringUtils.hasText(economicType)) {//经济类型分类代码
|
||||
switch (economicType) {
|
||||
case "1" -> dto.setJjlxfldm("110");
|
||||
case "2" -> dto.setJjlxfldm("120");
|
||||
case "3" -> dto.setJjlxfldm("130");
|
||||
case "4" -> dto.setJjlxfldm("140");
|
||||
case "5" -> dto.setJjlxfldm("150");
|
||||
case "6" -> dto.setJjlxfldm("160");
|
||||
case "7" -> dto.setJjlxfldm("170");
|
||||
case "8" -> dto.setJjlxfldm("190");
|
||||
case "9" -> dto.setJjlxfldm("290");
|
||||
case "10" -> dto.setJjlxfldm("310");
|
||||
case "11" -> dto.setJjlxfldm("330");
|
||||
case "12" -> dto.setJjlxfldm("159");
|
||||
}
|
||||
}
|
||||
if (null != enterprise.getEstablishmentDate())
|
||||
dto.setClrq(enterprise.getEstablishmentDate().atTime(0, 0, 0));//成立日期
|
||||
dto.setFddbrRybh(null);//法定代表人人员编号
|
||||
dto.setQyjc(enterprise.getShortName());//企业简称
|
||||
dto.setQygm(enterprise.getUnitScale());//企业规模代码
|
||||
dto.setZgrs(enterprise.getEmployeeCount());//职工人数
|
||||
dto.setZcdzXxdz(enterprise.getDetailedAddress());//注册地址详细地址
|
||||
dto.setZcdzXzqhdm(enterprise.getAreaComb());//注册地址行政区划代码
|
||||
if (null != enterprise.getRegisteredCapital())
|
||||
dto.setZczb(enterprise.getRegisteredCapital().setScale(0, RoundingMode.DOWN).longValue());//注册资本
|
||||
dto.setScjydzXxdz(enterprise.getOpLocAddress());//生产经营地址详细地址
|
||||
dto.setScjydzXzqhdm(enterprise.getOpLocAreaComb());//生产经营地址行政区划代码
|
||||
dto.setScjydzJd(null != enterprise.getLongitude() ? String.valueOf(enterprise.getLongitude()) : null);//经营地址经度
|
||||
dto.setScjydzWd(null != enterprise.getLatitude() ? String.valueOf(enterprise.getLatitude()) : null);//经营地址纬度
|
||||
dto.setJyfw(enterprise.getOpScope());//经营范围
|
||||
if (null != enterprise.getExpiryDate())
|
||||
dto.setYyqx(enterprise.getExpiryDate().atTime(0, 0, 0));//营业期限
|
||||
dto.setYygldwZzjgdm(enterprise.getAgency().getAgencyCode());//发证机关代码
|
||||
dto.setFzjgdm(enterprise.getOrgCode());
|
||||
dto.setYyzt("11".equals(enterprise.getBusinessStatus()) ? "1" : "9");//1-正常(存续、在营、开业、注册、设立);2-异常(未年报、未年检、证书逾期、未年度考核);3-吊销;4-注销/撤销;9-其他
|
||||
dto.setQyLxdh(enterprise.getMainPhone());//企业注册固定电话
|
||||
dto.setLxrRybh(null);//联系人-人员编号关联
|
||||
dto.setQyfzrRybh(null);//企业负责人-人员编号关联
|
||||
//1-煤矿 2-非煤矿山 3-危险化学品 4-烟花爆竹 5-工贸行业 99-其他
|
||||
String industryType = enterprise.getIndustryType();
|
||||
//1-工贸企业 2-危化企业 3-矿山企业 4-建筑施工企业 5-民用爆炸物企业 6-食品药品企业 7-交通运输企业
|
||||
//1-矿山 2-危险化学品生产 3-危险化学品经营 4-危险化学品经营 5-加油站 6-工业企业 7-商贸企业 8-安全生产中介机构 9-安全生产检验检测机构 10-安全生产培训机构 99-其他
|
||||
if (StringUtils.hasText(industryType)) {//管理类型代码
|
||||
if (industryType.equals("1")) dto.setGllx("3");
|
||||
if (industryType.equals("2")) dto.setGllx("2");
|
||||
if (industryType.equals("3")) dto.setGllx("2");
|
||||
if (industryType.equals("4")) dto.setGllx("2");
|
||||
if (industryType.equals("6")) dto.setGllx("1");
|
||||
if (industryType.equals("7")) dto.setGllx("1");
|
||||
else dto.setGllx(null);
|
||||
}
|
||||
if (StringUtils.hasText(enterprise.getEconCategoryTypec()))
|
||||
dto.setGmjjhyfldm(enterprise.getEconCategoryTypec());//国民经济行业分类代码《国民经济行业分类》(GB/T 4754—2017)
|
||||
else if (StringUtils.hasText(enterprise.getEconCategoryTypeb()))
|
||||
dto.setGmjjhyfldm(enterprise.getEconCategoryTypeb());
|
||||
dto.setLxrxm(enterprise.getLegalRepresentative());//企业联系人
|
||||
dto.setQyfzrxm(enterprise.getMainName());//企业负责人姓名
|
||||
String accessToken = user.getAccessToken().getAccess_token();
|
||||
String tokenType = user.getAccessToken().getToken_type();
|
||||
String clientId = ssoClientProperties.getClientId();
|
||||
log.info("url:{}, token:{}, clientId:{}", saveUrl, accessToken, clientId);
|
||||
try {
|
||||
String body = HttpRequest.post(saveUrl)
|
||||
.header("Content-Type", "application/json") // 设置 Content-Type 为 JSON
|
||||
.header("Authorization", tokenType + " " + accessToken) // 添加 appToken 请求头
|
||||
.header("appId", clientId) // 添加 appId 请求头
|
||||
.body(JSONUtil.toJsonStr(dto)) // 将 dto 转换为 JSON 字符串作为请求体
|
||||
.execute().body();
|
||||
log.info("企业信息上传结果:{}", body);
|
||||
} catch (Exception e) {
|
||||
log.info("企业信息上报失败:" + e);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,49 @@
|
|||
package com.aisino.iles.lawenforcement.service;
|
||||
|
||||
|
||||
import com.aisino.iles.lawenforcement.model.EnterpriseCamera;
|
||||
import com.aisino.iles.lawenforcement.repository.EnterpriseCameraRepository;
|
||||
import jakarta.persistence.criteria.Predicate;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.data.jpa.domain.Specification;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
/**
|
||||
* 企业信息服务类
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
public class EnterpriseCameraService {
|
||||
|
||||
private final EnterpriseCameraRepository enterpriseCameraRepository;
|
||||
|
||||
public EnterpriseCameraService(EnterpriseCameraRepository enterpriseCameraRepository) {
|
||||
this.enterpriseCameraRepository = enterpriseCameraRepository;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 分页查询企业监控点信息
|
||||
*
|
||||
* @param uscc
|
||||
* @return
|
||||
*/
|
||||
public List<EnterpriseCamera> findEnterpriseCamera(String uscc) {
|
||||
return enterpriseCameraRepository.findAll(buildSpecification(uscc));
|
||||
// .map(this::handleResult);
|
||||
}
|
||||
|
||||
private Specification<EnterpriseCamera> buildSpecification(String uscc) {
|
||||
return Specification.where((root, criteriaQuery, criteriaBuilder) -> {
|
||||
List<Predicate> predicates = new ArrayList<>();
|
||||
Optional.ofNullable(uscc).ifPresent(o -> predicates.add(criteriaBuilder.equal(root.get("unifiedSocialCode"), o)));
|
||||
return criteriaBuilder.and(predicates.toArray(new Predicate[0]));
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,145 @@
|
|||
package com.aisino.iles.lawenforcement.service;
|
||||
|
||||
import com.aisino.iles.common.util.PageableHelper;
|
||||
import com.aisino.iles.lawenforcement.model.*;
|
||||
import com.aisino.iles.lawenforcement.model.query.EnterpriseQuery;
|
||||
import com.aisino.iles.lawenforcement.repository.AccidentHazardRepository;
|
||||
import com.aisino.iles.lawenforcement.repository.DangerInfoRepository;
|
||||
import com.aisino.iles.lawenforcement.repository.DocumentRepository;
|
||||
import com.aisino.iles.lawenforcement.repository.EnterpriseRepository;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import jakarta.persistence.criteria.Predicate;
|
||||
import lombok.Data;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.jpa.domain.Specification;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
|
||||
@Service
|
||||
public class EnterpriseSubtableService {
|
||||
private final DocumentRepository documentRepo;
|
||||
private final AccidentHazardRepository accidentHazardRepo;
|
||||
private final DangerInfoRepository dangerInfoRepo;
|
||||
private final EnterpriseRepository enterpriseRepo;
|
||||
|
||||
public EnterpriseSubtableService(DocumentRepository documentRepo,
|
||||
AccidentHazardRepository accidentHazardRepo,
|
||||
DangerInfoRepository dangerInfoRepo,
|
||||
EnterpriseRepository enterpriseRepo) {
|
||||
this.documentRepo = documentRepo;
|
||||
this.accidentHazardRepo = accidentHazardRepo;
|
||||
this.dangerInfoRepo = dangerInfoRepo;
|
||||
this.enterpriseRepo = enterpriseRepo;
|
||||
}
|
||||
|
||||
/**
|
||||
* 重大事故隐患信息
|
||||
*
|
||||
* @param query 查询参数
|
||||
* @return 结果
|
||||
*/
|
||||
@Transactional(readOnly = true)
|
||||
public Page<DocumentDto> findCasePage(EnterpriseQuery query) {
|
||||
return documentRepo.findAll(buildDocument(query),
|
||||
PageableHelper.buildPageRequest(query.page(), query.pageSize(), "documentDate", "desc"))
|
||||
.map(document -> {
|
||||
DocumentDto dto = new DocumentDto();
|
||||
Map<String, Object> map = document.getDocumenContent();
|
||||
String cf = String.valueOf(map.get("cf"));
|
||||
dto.setDocumentId(document.getDocumentId());
|
||||
Optional.ofNullable(document.getCaseInfo().getEnterpriseId())
|
||||
.flatMap(enterpriseRepo::findById).ifPresent(enterprise -> dto.setPenaltyUnit(enterprise.getUnitName()));
|
||||
dto.setCaseName(document.getCaseInfo().getCaseName());
|
||||
dto.setPenaltyRes(cf);
|
||||
dto.setPenaltyTime(LocalDate.now());
|
||||
return dto;
|
||||
});
|
||||
}
|
||||
|
||||
@Data
|
||||
public static class DocumentDto {
|
||||
/**
|
||||
* 文书ID
|
||||
*/
|
||||
private String documentId;
|
||||
/**
|
||||
* 处罚单位
|
||||
*/
|
||||
private String penaltyUnit;
|
||||
/**
|
||||
* 涉案种类
|
||||
*/
|
||||
private String caseKind;
|
||||
/**
|
||||
* 案件名称
|
||||
*/
|
||||
private String caseName;
|
||||
/**
|
||||
* 处罚结果
|
||||
*/
|
||||
private String penaltyRes;
|
||||
/**
|
||||
* 处罚结果
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
private LocalDate penaltyTime;
|
||||
}
|
||||
|
||||
private Specification<Document> buildDocument(EnterpriseQuery query) {
|
||||
return (root, criteriaQuery, criteriaBuilder) -> {
|
||||
List<Predicate> predicates = new ArrayList<>();
|
||||
Optional.ofNullable(query.getEnterpriseId()).filter(StringUtils::hasText).ifPresent(o -> predicates.add(criteriaBuilder.equal(root.get(Document_.caseInfo).get(Case_.enterpriseId), o)));
|
||||
// predicates.add(criteriaBuilder.equal(root.get(Document_.status), Document.DocumentStatus.done));
|
||||
predicates.add(criteriaBuilder.equal(root.get(Document_.documentNo), 28));
|
||||
return criteriaBuilder.and(predicates.toArray(new Predicate[0]));
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* 重大事故隐患信息
|
||||
*
|
||||
* @param query 查询参数
|
||||
* @return 结果
|
||||
*/
|
||||
public Page<AccidentHazard> findAccidentHazardPage(EnterpriseQuery query) {
|
||||
return accidentHazardRepo.findAll(buildAccidentHazard(query),
|
||||
PageableHelper.buildPageRequest(query.page(), query.pageSize(), "createdon", "desc"));
|
||||
}
|
||||
|
||||
private Specification<AccidentHazard> buildAccidentHazard(EnterpriseQuery query) {
|
||||
return (root, criteriaQuery, criteriaBuilder) -> {
|
||||
List<Predicate> predicates = new ArrayList<>();
|
||||
Optional.ofNullable(query.getEnterpriseId()).filter(StringUtils::hasText).ifPresent(o -> predicates.add(criteriaBuilder.equal(root.get(AccidentHazard_.enterpriseId), o)));
|
||||
predicates.add(criteriaBuilder.equal(root.get(AccidentHazard_.deletestatus), 0L));
|
||||
return criteriaBuilder.and(predicates.toArray(new Predicate[0]));
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* 重大危险源
|
||||
*
|
||||
* @param query 查询参数
|
||||
* @return 结果
|
||||
*/
|
||||
public Page<DangerInfo> findDangerPage(EnterpriseQuery query) {
|
||||
return dangerInfoRepo.findAll(buildDanger(query),
|
||||
PageableHelper.buildPageRequest(query.page(), query.pageSize(), "createdon", "desc"));
|
||||
}
|
||||
|
||||
private Specification<DangerInfo> buildDanger(EnterpriseQuery query) {
|
||||
return (root, criteriaQuery, criteriaBuilder) -> {
|
||||
List<Predicate> predicates = new ArrayList<>();
|
||||
Optional.ofNullable(query.getEnterpriseId()).filter(StringUtils::hasText).ifPresent(o -> predicates.add(criteriaBuilder.equal(root.get(DangerInfo_.enterpriseId), o)));
|
||||
predicates.add(criteriaBuilder.equal(root.get(DangerInfo_.deletestatus), 0L));
|
||||
return criteriaBuilder.and(predicates.toArray(new Predicate[0]));
|
||||
};
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,69 @@
|
|||
package com.aisino.iles.lawenforcement.service;
|
||||
|
||||
import cn.hutool.json.JSONObject;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.aisino.iles.lawenforcement.model.EnterpriseWarn;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.kafka.annotation.KafkaListener;
|
||||
import org.springframework.kafka.support.Acknowledgment;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.ZonedDateTime;
|
||||
|
||||
@Slf4j
|
||||
@Component
|
||||
@RequiredArgsConstructor
|
||||
public class EnterpriseWarnKafka {
|
||||
|
||||
private final EnterpriseWarnService enterpriseWarnService;
|
||||
|
||||
@KafkaListener(topics = "zhyj_hkspfx_sjbw", groupId = "zhzf-group")
|
||||
public void listenToMessage(String message, Acknowledgment acknowledgment) {
|
||||
log.info("kafka监听到的消息:" + message);
|
||||
try {
|
||||
JSONObject jsonObject = JSONUtil.parseObj(message);
|
||||
if (jsonObject != null) {
|
||||
log.info("kafka监听到的消息--开始解析数据:" + jsonObject);
|
||||
JSONObject params = jsonObject.getJSONObject("params");
|
||||
if (params != null) {
|
||||
params.getJSONArray("events")
|
||||
.forEach(item -> {
|
||||
JSONObject event = JSONUtil.parseObj(item);
|
||||
if (event != null) {
|
||||
JSONObject data = event.getJSONObject("data");
|
||||
EnterpriseWarn enterpriseWarn = new EnterpriseWarn();
|
||||
if (data != null) {
|
||||
enterpriseWarn.setLat(data.getStr("latitude"));
|
||||
enterpriseWarn.setLng(data.getStr("longitude"));
|
||||
}
|
||||
enterpriseWarn.setAlarmId(event.getStr("eventId"));
|
||||
enterpriseWarn.setApiType(event.getStr("eventTypeCode"));
|
||||
enterpriseWarn.setEventDesc(event.getStr("eventName"));
|
||||
enterpriseWarn.setCameraName(event.getStr("srcName"));
|
||||
enterpriseWarn.setAddress(event.getStr("srcName"));
|
||||
enterpriseWarn.setInternationalCode(event.getStr("externalIndexCode"));
|
||||
enterpriseWarn.setImageUrl("https://10.17.97.98" + event.getStr("snappedPicUrl"));
|
||||
LocalDateTime time = ZonedDateTime.parse(event.getStr("happenTime")).toLocalDateTime();
|
||||
enterpriseWarn.setTime(time);
|
||||
// enterpriseWarn.setVideoUrl(event.getStr("snappedPicUrl"));
|
||||
// enterpriseWarn.setStreetcode(enterpriseWarnDto.getStreetcode());
|
||||
// enterpriseWarn.setStreet(enterpriseWarnDto.getStreet());
|
||||
enterpriseWarn.setConfidence(event.getStr("similarity"));
|
||||
enterpriseWarn.setJudgment(1);
|
||||
enterpriseWarn.setRemark(event.getStr("remark"));
|
||||
enterpriseWarnService.saveEnterpriseWarn(enterpriseWarn);
|
||||
}
|
||||
});
|
||||
acknowledgment.acknowledge();
|
||||
log.info("kafka监听到的消息--数据保存成功。");
|
||||
}
|
||||
}
|
||||
log.info("kafka监听到的消息--结束解析数据。");
|
||||
} catch (Exception e) {
|
||||
log.info("视频智能分析--对外对接第三方数据接口;保存失败:{}", e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,98 @@
|
|||
package com.aisino.iles.lawenforcement.service;
|
||||
|
||||
import com.aisino.iles.common.util.PageableHelper;
|
||||
import com.aisino.iles.lawenforcement.model.EnterpriseWarn;
|
||||
import com.aisino.iles.lawenforcement.model.dto.EnterpriseWarnDto;
|
||||
import com.aisino.iles.lawenforcement.model.query.EnterpriseWarnQuery;
|
||||
import com.aisino.iles.lawenforcement.repository.EnterpriseWarnRepository;
|
||||
import jakarta.persistence.criteria.Predicate;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.jpa.domain.Specification;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 企业信息服务类
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
public class EnterpriseWarnService {
|
||||
|
||||
private final EnterpriseWarnRepository enterpriseWarnRepository;
|
||||
|
||||
public EnterpriseWarnService(EnterpriseWarnRepository enterpriseWarnRepository) {
|
||||
this.enterpriseWarnRepository = enterpriseWarnRepository;
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public void saveEnterpriseWarn(EnterpriseWarnDto enterpriseWarnDto) {
|
||||
EnterpriseWarn enterpriseWarn = new EnterpriseWarn();
|
||||
enterpriseWarn.setAlarmId(enterpriseWarnDto.getAlarmId().toString());
|
||||
enterpriseWarn.setApiType(enterpriseWarnDto.getApiType().toString());
|
||||
enterpriseWarn.setEventDesc(enterpriseWarnDto.getEventDesc());
|
||||
enterpriseWarn.setCameraName(enterpriseWarnDto.getCameraName());
|
||||
enterpriseWarn.setAddress(enterpriseWarnDto.getAddress());
|
||||
enterpriseWarn.setInternationalCode(enterpriseWarnDto.getInternationalCode());
|
||||
enterpriseWarn.setLat(enterpriseWarnDto.getLat().toString());
|
||||
enterpriseWarn.setLng(enterpriseWarnDto.getLng().toString());
|
||||
enterpriseWarn.setImageUrl(enterpriseWarnDto.getImageUrl());
|
||||
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
||||
LocalDateTime time = LocalDateTime.parse(enterpriseWarnDto.getTime(), formatter);
|
||||
enterpriseWarn.setTime(time);
|
||||
enterpriseWarn.setVideoUrl(enterpriseWarnDto.getVideoUrl());
|
||||
enterpriseWarn.setStreetcode(enterpriseWarnDto.getStreetcode());
|
||||
enterpriseWarn.setStreet(enterpriseWarnDto.getStreet());
|
||||
enterpriseWarn.setConfidence(enterpriseWarnDto.getConfidence().toString());
|
||||
enterpriseWarn.setJudgment(enterpriseWarnDto.getJudgment());
|
||||
try {
|
||||
enterpriseWarnRepository.save(enterpriseWarn);
|
||||
}catch (Exception e) {
|
||||
log.info("企业预警信息保存失败:{}", e);
|
||||
}
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public void saveEnterpriseWarn(EnterpriseWarn enterpriseWarn) {
|
||||
enterpriseWarnRepository.save(enterpriseWarn);
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询企业预警信息
|
||||
*
|
||||
* @param query
|
||||
* @return
|
||||
*/
|
||||
public Page<EnterpriseWarn> findEnterpriseWarnPage(EnterpriseWarnQuery query) {
|
||||
return enterpriseWarnRepository
|
||||
.findAll(buildSpecification(query), PageableHelper.buildPageRequest(query.page(), query.pageSize(), query.sort(), query.dir()));
|
||||
// .map(this::handleResult);
|
||||
}
|
||||
|
||||
private Specification<EnterpriseWarn> buildSpecification(EnterpriseWarnQuery query) {
|
||||
return Specification.where((root, criteriaQuery, criteriaBuilder) -> {
|
||||
List<Predicate> predicates = new ArrayList<>();
|
||||
// Optional.ofNullable(query.getUnifiedSocialCode())
|
||||
// .ifPresent(o -> predicates.add(criteriaBuilder.equal(root.get("agency"), StringUtils.trimEven0(o) + "%")));
|
||||
// Optional.ofNullable(query.getCreateTimeArr()).filter(f -> f.length == 2).map(f -> {
|
||||
// List<Predicate> ts = new ArrayList<>();
|
||||
// Optional.ofNullable(f[0]).map(from -> criteriaBuilder.greaterThanOrEqualTo(root.get(EnforcementInfo_.createTime), from)).ifPresent(ts::add);
|
||||
// Optional.ofNullable(f[1]).map(to -> criteriaBuilder.lessThanOrEqualTo(root.get(EnforcementInfo_.createTime), to)).ifPresent(ts::add);
|
||||
// return ts;
|
||||
// }).ifPresent(predicates::addAll);
|
||||
return criteriaBuilder.and(predicates.toArray(new Predicate[0]));
|
||||
});
|
||||
}
|
||||
|
||||
// private EnforcementInfo handleResult(EnforcementInfo enforcementInfoDto) {
|
||||
// Optional.ofNullable(enforcementInfoDto.getEnterprise()).ifPresent(enterprise -> enterprise.getUnitName());
|
||||
// Optional.ofNullable(enforcementInfoDto.getAgency()).ifPresent(agency -> agency.getAgencyName());
|
||||
// return enforcementInfoDto;
|
||||
// }
|
||||
|
||||
}
|
||||
Loading…
Reference in New Issue