Commit 0a97bcfc authored by 刘林's avatar 刘林

Merge remote-tracking branch 'origin/develop_tzs_register' into develop_tzs_register

parents e75d5d77 f510d0cd
...@@ -31,7 +31,7 @@ ...@@ -31,7 +31,7 @@
<dependency> <dependency>
<groupId>com.baomidou</groupId> <groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId> <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>3.1.0</version> <version>3.4.1</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
......
package com.yeejoin.amos.api.openapi.face.service; package com.yeejoin.amos.api.openapi.face.service;
import com.yeejoin.amos.api.openapi.face.model.*; import com.yeejoin.amos.api.openapi.face.model.*;
import com.yeejoin.amos.api.openapi.face.orm.dao.ESCylinderFillingRecordRepository;
import com.yeejoin.amos.boot.biz.common.utils.DateUtils;
import com.yeejoin.amos.boot.module.cylinder.api.entity.ESCylinderFillingRecordDto;
import com.yeejoin.amos.boot.module.cylinder.flc.api.dto.*; import com.yeejoin.amos.boot.module.cylinder.flc.api.dto.*;
import com.yeejoin.amos.boot.module.cylinder.flc.api.mapper.*;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.util.ObjectUtils;
import org.typroject.tyboot.core.foundation.utils.Bean; import org.typroject.tyboot.core.foundation.utils.Bean;
import com.baomidou.dynamic.datasource.annotation.DS; import com.baomidou.dynamic.datasource.annotation.DS;
...@@ -20,18 +26,14 @@ import com.yeejoin.amos.boot.module.cylinder.flc.api.entity.CylinderInspection; ...@@ -20,18 +26,14 @@ import com.yeejoin.amos.boot.module.cylinder.flc.api.entity.CylinderInspection;
import com.yeejoin.amos.boot.module.cylinder.flc.api.entity.CylinderTags; import com.yeejoin.amos.boot.module.cylinder.flc.api.entity.CylinderTags;
import com.yeejoin.amos.boot.module.cylinder.flc.api.entity.CylinderUnit; import com.yeejoin.amos.boot.module.cylinder.flc.api.entity.CylinderUnit;
import com.yeejoin.amos.boot.module.cylinder.flc.api.entity.CylinderUnitVideo; import com.yeejoin.amos.boot.module.cylinder.flc.api.entity.CylinderUnitVideo;
import com.yeejoin.amos.boot.module.cylinder.flc.api.mapper.CylCylinderFillingCheckMapper;
import com.yeejoin.amos.boot.module.cylinder.flc.api.mapper.CylinderFillingCheckMapper;
import com.yeejoin.amos.boot.module.cylinder.flc.api.mapper.CylinderFillingExamineMapper;
import com.yeejoin.amos.boot.module.cylinder.flc.api.mapper.CylinderFillingMapper;
import com.yeejoin.amos.boot.module.cylinder.flc.api.mapper.CylinderInfoMapper;
import com.yeejoin.amos.boot.module.cylinder.flc.api.mapper.CylinderInspectionMapper;
import com.yeejoin.amos.boot.module.cylinder.flc.api.mapper.CylinderTagsMapper;
import com.yeejoin.amos.boot.module.cylinder.flc.api.mapper.CylinderUnitMapper;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
@Component @Component
@DS("tzs")
public class SyncCylinderDataService public class SyncCylinderDataService
{ {
/** /**
...@@ -50,11 +52,6 @@ public class SyncCylinderDataService ...@@ -50,11 +52,6 @@ public class SyncCylinderDataService
@Autowired @Autowired
private CylinderFillingMapper cylinderFillingMapper; private CylinderFillingMapper cylinderFillingMapper;
/** /**
* 液化气体气瓶充装信息-充装记录
*/
@Autowired
private CylinderFillingRecord cylinderFillingRecord;
/**
* 液化气体气瓶充装信息-充装后复查 * 液化气体气瓶充装信息-充装后复查
*/ */
@Autowired @Autowired
...@@ -77,7 +74,13 @@ public class SyncCylinderDataService ...@@ -77,7 +74,13 @@ public class SyncCylinderDataService
@Autowired @Autowired
private CylinderInspectionMapper cylinderInspectionMapper; private CylinderInspectionMapper cylinderInspectionMapper;
@DS("tzs") @Autowired
CylinderFillingRecordMapper cylinderFillingRecordMapper;
@Autowired
ESCylinderFillingRecordRepository esCylinderFillingRecordRepository;
public void syncCylinderUnit(List<TmCylinderUnitModel> cylinderUnitDto) { public void syncCylinderUnit(List<TmCylinderUnitModel> cylinderUnitDto) {
// List<CylinderUnit> cylinderUnits = Bean.toModels(cylinderUnitDto,CylinderUnit.class); // List<CylinderUnit> cylinderUnits = Bean.toModels(cylinderUnitDto,CylinderUnit.class);
// LambdaQueryWrapper<CylinderUnit> wrapper = new LambdaQueryWrapper<>(); // LambdaQueryWrapper<CylinderUnit> wrapper = new LambdaQueryWrapper<>();
...@@ -85,40 +88,85 @@ public class SyncCylinderDataService ...@@ -85,40 +88,85 @@ public class SyncCylinderDataService
List<CylinderUnit> cylinderUnitList = Bean.toModels(cylinderUnitDto,CylinderUnit.class); List<CylinderUnit> cylinderUnitList = Bean.toModels(cylinderUnitDto,CylinderUnit.class);
cylinderUnitMapper.saveOrUpdateBatch(cylinderUnitList); cylinderUnitMapper.saveOrUpdateBatch(cylinderUnitList);
} }
@DS("tzs")
public void syncCylinderInfo(final List<TmCylinderInfoModel> cylinderInfoDto) { public void syncCylinderInfo(final List<TmCylinderInfoModel> cylinderInfoDto) {
List<CylinderInfo> cylinderUnitList = Bean.toModels(cylinderInfoDto,CylinderInfo.class); List<CylinderInfo> cylinderUnitList = Bean.toModels(cylinderInfoDto,CylinderInfo.class);
cylinderInfoMapper.saveOrUpdateBatch(cylinderUnitList); cylinderInfoMapper.saveOrUpdateBatch(cylinderUnitList);
} }
@DS("tzs")
public void syncCylinderFillingExamine(List<TmCylinderFillingExamineModel> cylinderFillingExamineDto) { public void syncCylinderFillingExamine(List<TmCylinderFillingExamineModel> cylinderFillingExamineDto) {
List<CylinderFillingExamine> cylinderFillingExamineList = Bean.toModels(cylinderFillingExamineDto, List<CylinderFillingExamine> cylinderFillingExamineList = Bean.toModels(cylinderFillingExamineDto,
CylinderFillingExamine.class); CylinderFillingExamine.class);
cylinderFillingExamineMapper.saveOrUpdateBatch(cylinderFillingExamineList); cylinderFillingExamineMapper.saveOrUpdateBatch(cylinderFillingExamineList);
} }
@DS("tzs")
public void syncCylinderFillingRecord(List<TmCylinderFillingRecordModel> cylinderFillingRecordDtos) { public void syncCylinderFillingRecord(List<TmCylinderFillingRecordModel> cylinderFillingRecordDtos) {
List<CylinderFillingRecord> cylinderFillingRecordList = Bean.toModels(cylinderFillingRecordDtos, CylinderFillingRecord.class); List<CylinderFillingRecord> cylinderFillingRecordList = Bean.toModels(cylinderFillingRecordDtos, CylinderFillingRecord.class);
cylCylinderFillingCheckMapper.batchInsertOrUpdate(cylinderFillingRecordList); cylCylinderFillingCheckMapper.batchInsertOrUpdate(cylinderFillingRecordList);
} }
@DS("tzs")
public void syncCylinderInspection(List<TmCylinderInspectionModel> cylinderInspectionDto) { public void syncCylinderInspection(List<TmCylinderInspectionModel> cylinderInspectionDto) {
List<CylinderInspection> cylinderInspectionList = Bean.toModels(cylinderInspectionDto, CylinderInspection.class); List<CylinderInspection> cylinderInspectionList = Bean.toModels(cylinderInspectionDto, CylinderInspection.class);
cylinderInspectionMapper.saveOrUpdateBatch(cylinderInspectionList); cylinderInspectionMapper.saveOrUpdateBatch(cylinderInspectionList);
} }
@DS("tzs")
public void syncCylinderTag(List<TmCylinderTagsModel> cylinderTagsDtos) { public void syncCylinderTag(List<TmCylinderTagsModel> cylinderTagsDtos) {
List<CylinderTags> cylinderTagsList = Bean.toModels(cylinderTagsDtos, CylinderTags.class); List<CylinderTags> cylinderTagsList = Bean.toModels(cylinderTagsDtos, CylinderTags.class);
cylinderTagsMapper.saveOrUpdateBatch(cylinderTagsList); cylinderTagsMapper.saveOrUpdateBatch(cylinderTagsList);
} }
@DS("tzs")
public void syncCylinderFillingBefore(List<TmCylinderFillingModel> cylinderFillingDtos) { public void syncCylinderFillingBefore(List<TmCylinderFillingModel> cylinderFillingDtos) {
List<CylinderFilling> cylinderFillingList = Bean.toModels(cylinderFillingDtos, CylinderFilling.class); List<CylinderFilling> cylinderFillingList = Bean.toModels(cylinderFillingDtos, CylinderFilling.class);
cylCylinderFillingCheckMapper.saveAndBatchInsert(cylinderFillingList); cylCylinderFillingCheckMapper.saveAndBatchInsert(cylinderFillingList);
} }
@DS("tzs")
public void syncCylinderFillingAfter(List<TmCylinderFillingCheckModel> cylinderFillingCheckDtos) { public void syncCylinderFillingAfter(List<TmCylinderFillingCheckModel> cylinderFillingCheckDtos) {
List<CylinderFillingCheck> cylinderFillingChecList = Bean.toModels(cylinderFillingCheckDtos, CylinderFillingCheck.class); List<CylinderFillingCheck> cylinderFillingChecList = Bean.toModels(cylinderFillingCheckDtos, CylinderFillingCheck.class);
cylinderFillingCheckMapper.saveOrUpdateByCondition(cylinderFillingChecList); cylinderFillingCheckMapper.saveOrUpdateByCondition(cylinderFillingChecList);
} }
public void createCylinderFillingRecord(List<ESCylinderFillingRecordDto> cylinderFillingRecord) {
if (!ObjectUtils.isEmpty(cylinderFillingRecord)) {
List<String> appIds = cylinderFillingRecord.stream().map(ESCylinderFillingRecordDto::getAppId).collect(Collectors.toList());
List<String> sequenceCodeS = cylinderFillingRecord.stream().map(ESCylinderFillingRecordDto::getSequenceCode).collect(Collectors.toList());
List<ESCylinderFillingRecordDto> cylinderFillingRecordInfo = cylinderFillingRecordMapper.getCylinderFillingRecordInfo(appIds, sequenceCodeS);
cylinderFillingRecord.stream().map(item -> {
List<ESCylinderFillingRecordDto> collect = cylinderFillingRecordInfo.stream().filter(e -> item.getAppIdAndSequenceCode().equals(e.getAppIdAndSequenceCode())).collect(Collectors.toList());
if (!ObjectUtils.isEmpty(collect)) {
item.setUnitName(collect.get(0).getUnitName());
item.setFactoryNum(collect.get(0).getFactoryNum());
item.setCylinderVariety(collect.get(0).getCylinderVariety());
item.setCylinderVarietyName(collect.get(0).getCylinderVarietyName());
item.setUnitInnerCode(collect.get(0).getUnitInnerCode());
item.setSequenceCode(collect.get(0).getSequenceCode());
item.setQrCode(collect.get(0).getQrCode());
item.setElectronicLabelCode(collect.get(0).getElectronicLabelCode());
item.setAppId(collect.get(0).getAppId());
item.setCreditCode(collect.get(0).getCreditCode());
item.setRegionCode(collect.get(0).getRegionCode());
try {
item.setInspectionDateMs(ObjectUtils.isEmpty(item.getFillingStartTime()) ? 0L : DateUtils.dateParseWithPattern(item.getFillingStartTime()).getTime());
item.setInspectionDateAfterMS(ObjectUtils.isEmpty(item.getFillingEndTime()) ? 0L : DateUtils.dateParseWithPattern(item.getFillingEndTime()).getTime());
} catch (ParseException e) {
throw new RuntimeException(e);
}
}
return item;
}).collect(Collectors.toList());
saveCylinderFillingRecord2ES(cylinderFillingRecord);
}
}
public void saveCylinderFillingRecord2ES(List<ESCylinderFillingRecordDto> records) {
List<String> ids = new ArrayList<>();
for (ESCylinderFillingRecordDto record : records) {
CylinderFillingRecord cylinderFillingRecord = new CylinderFillingRecord();
BeanUtils.copyProperties(record, cylinderFillingRecord);
ids.add(String.valueOf(record.getSequenceNbr()));
}
esCylinderFillingRecordRepository.saveAll(records);
cylinderFillingRecordMapper.updateCylinderFillingToEsStatus(ids);
}
} }
...@@ -4,6 +4,7 @@ package com.yeejoin.amos.api.openapi.face.service; ...@@ -4,6 +4,7 @@ package com.yeejoin.amos.api.openapi.face.service;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import com.baomidou.dynamic.datasource.annotation.DSTransactional;
import com.yeejoin.amos.boot.module.cylinder.flc.api.dto.CylinderFillingCheckDto; import com.yeejoin.amos.boot.module.cylinder.flc.api.dto.CylinderFillingCheckDto;
import com.yeejoin.amos.boot.module.cylinder.flc.api.dto.CylinderFillingDto; import com.yeejoin.amos.boot.module.cylinder.flc.api.dto.CylinderFillingDto;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -37,7 +38,8 @@ public class TmCylinderFillingCheckService extends BaseService<TmCylinderFilling ...@@ -37,7 +38,8 @@ public class TmCylinderFillingCheckService extends BaseService<TmCylinderFilling
private RedisTemplate redisTemplate; private RedisTemplate redisTemplate;
@Autowired @Autowired
private SyncCylinderDataService syncCylinderDataService; private SyncCylinderDataService syncCylinderDataService;
@Transactional(rollbackFor= {Exception.class})
@DSTransactional
public String createCylinderFillingAfter(List<TmCylinderFillingCheckModel> model) { public String createCylinderFillingAfter(List<TmCylinderFillingCheckModel> model) {
// TODO Auto-generated method stub // TODO Auto-generated method stub
// if (ValidationUtil.isEmpty(model)) // if (ValidationUtil.isEmpty(model))
......
...@@ -4,6 +4,7 @@ package com.yeejoin.amos.api.openapi.face.service; ...@@ -4,6 +4,7 @@ package com.yeejoin.amos.api.openapi.face.service;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import com.baomidou.dynamic.datasource.annotation.DSTransactional;
import com.yeejoin.amos.api.openapi.face.model.TmCylinderUnitModel; import com.yeejoin.amos.api.openapi.face.model.TmCylinderUnitModel;
import com.yeejoin.amos.boot.module.cylinder.flc.api.dto.CylinderFillingExamineDto; import com.yeejoin.amos.boot.module.cylinder.flc.api.dto.CylinderFillingExamineDto;
import com.yeejoin.amos.boot.module.cylinder.flc.api.dto.CylinderUnitDto; import com.yeejoin.amos.boot.module.cylinder.flc.api.dto.CylinderUnitDto;
...@@ -42,7 +43,7 @@ public class TmCylinderFillingExamineService extends BaseService<TmCylinderFilli ...@@ -42,7 +43,7 @@ public class TmCylinderFillingExamineService extends BaseService<TmCylinderFilli
private SyncCylinderDataService syncCylinderDataService; private SyncCylinderDataService syncCylinderDataService;
@Transactional(rollbackFor= {Exception.class}) @DSTransactional
public String createCylinderFillingExamine(List<TmCylinderFillingExamineModel> model) { public String createCylinderFillingExamine(List<TmCylinderFillingExamineModel> model) {
// TODO Auto-generated method stub // TODO Auto-generated method stub
if (ValidationUtil.isEmpty(model)) if (ValidationUtil.isEmpty(model))
......
...@@ -8,6 +8,7 @@ import java.util.List; ...@@ -8,6 +8,7 @@ import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import com.baomidou.dynamic.datasource.annotation.DS; import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.dynamic.datasource.annotation.DSTransactional;
import com.yeejoin.amos.api.openapi.face.orm.dao.ESCylinderFillingRecordRepository; import com.yeejoin.amos.api.openapi.face.orm.dao.ESCylinderFillingRecordRepository;
import com.yeejoin.amos.boot.biz.common.utils.DateUtils; import com.yeejoin.amos.boot.biz.common.utils.DateUtils;
import com.yeejoin.amos.boot.module.cylinder.api.entity.ESCylinderFillingRecordDto; import com.yeejoin.amos.boot.module.cylinder.api.entity.ESCylinderFillingRecordDto;
...@@ -55,12 +56,13 @@ public class TmCylinderFillingRecordService extends BaseService<TmCylinderFillin ...@@ -55,12 +56,13 @@ public class TmCylinderFillingRecordService extends BaseService<TmCylinderFillin
@Autowired @Autowired
private SyncCylinderDataService syncCylinderDataService; private SyncCylinderDataService syncCylinderDataService;
@Transactional(rollbackFor= {Exception.class}) @DSTransactional
public String createCylinderFilling(List<TmCylinderFillingRecordModel> model) { public String createCylinderFilling(List<TmCylinderFillingRecordModel> model) {
// TODO Auto-generated method stub // TODO Auto-generated method stub
// if (ValidationUtil.isEmpty(model)) // if (ValidationUtil.isEmpty(model))
// throw new BadRequest("气瓶标签信息为空."); // throw new BadRequest("气瓶标签信息为空.");
syncCylinderFilling(model); syncCylinderFilling(model);
for (TmCylinderFillingRecordModel cylinderFillingRecordModel : model) { for (TmCylinderFillingRecordModel cylinderFillingRecordModel : model) {
cylinderFillingRecordModel.setRecDate(new Date()); cylinderFillingRecordModel.setRecDate(new Date());
cylinderFillingRecordModel.setAppId(getAppId()); cylinderFillingRecordModel.setAppId(getAppId());
...@@ -69,8 +71,12 @@ public class TmCylinderFillingRecordService extends BaseService<TmCylinderFillin ...@@ -69,8 +71,12 @@ public class TmCylinderFillingRecordService extends BaseService<TmCylinderFillin
return "OK"; return "OK";
} }
@DS("tzs")
private void syncCylinderFilling(List<TmCylinderFillingRecordModel> model) { private void syncCylinderFilling(List<TmCylinderFillingRecordModel> model) {
syncCylinderDataService.syncCylinderFillingRecord(model); syncCylinderDataService.syncCylinderFillingRecord(model);
ArrayList<ESCylinderFillingRecordDto> models = Bean.toModels(model, ESCylinderFillingRecordDto.class);
syncCylinderDataService.createCylinderFillingRecord(models);
} }
private String getAppId() { private String getAppId() {
...@@ -83,50 +89,4 @@ public class TmCylinderFillingRecordService extends BaseService<TmCylinderFillin ...@@ -83,50 +89,4 @@ public class TmCylinderFillingRecordService extends BaseService<TmCylinderFillin
return baseMapper.getDateList(); return baseMapper.getDateList();
} }
@DS("tzs")
public void createCylinderFillingRecord(List<ESCylinderFillingRecordDto> cylinderFillingRecord) {
if (!ObjectUtils.isEmpty(cylinderFillingRecord)) {
List<String> appIds = cylinderFillingRecord.stream().map(ESCylinderFillingRecordDto::getAppId).collect(Collectors.toList());
List<String> sequenceCodeS = cylinderFillingRecord.stream().map(ESCylinderFillingRecordDto::getSequenceCode).collect(Collectors.toList());
List<ESCylinderFillingRecordDto> cylinderFillingRecordInfo = cylinderFillingRecordMapper.getCylinderFillingRecordInfo(appIds, sequenceCodeS);
cylinderFillingRecord.stream().map(item -> {
List<ESCylinderFillingRecordDto> collect = cylinderFillingRecordInfo.stream().filter(e -> item.getAppIdAndSequenceCode().equals(e.getAppIdAndSequenceCode())).collect(Collectors.toList());
if (!ObjectUtils.isEmpty(collect)) {
item.setUnitName(collect.get(0).getUnitName());
item.setFactoryNum(collect.get(0).getFactoryNum());
item.setCylinderVariety(collect.get(0).getCylinderVariety());
item.setCylinderVarietyName(collect.get(0).getCylinderVarietyName());
item.setUnitInnerCode(collect.get(0).getUnitInnerCode());
item.setSequenceCode(collect.get(0).getSequenceCode());
item.setQrCode(collect.get(0).getQrCode());
item.setElectronicLabelCode(collect.get(0).getElectronicLabelCode());
item.setAppId(collect.get(0).getAppId());
item.setCreditCode(collect.get(0).getCreditCode());
item.setRegionCode(collect.get(0).getRegionCode());
try {
item.setInspectionDateMs(ObjectUtils.isEmpty(item.getFillingStartTime()) ? 0L : DateUtils.dateParseWithPattern(item.getFillingStartTime()).getTime());
item.setInspectionDateAfterMS(ObjectUtils.isEmpty(item.getFillingEndTime()) ? 0L : DateUtils.dateParseWithPattern(item.getFillingEndTime()).getTime());
} catch (ParseException e) {
throw new RuntimeException(e);
}
}
return item;
}).collect(Collectors.toList());
saveCylinderFillingRecord2ES(cylinderFillingRecord);
}
}
public void saveCylinderFillingRecord2ES(List<ESCylinderFillingRecordDto> records) {
List<String> ids = new ArrayList<>();
for (ESCylinderFillingRecordDto record : records) {
CylinderFillingRecord cylinderFillingRecord = new CylinderFillingRecord();
BeanUtils.copyProperties(record, cylinderFillingRecord);
ids.add(String.valueOf(record.getSequenceNbr()));
}
esCylinderFillingRecordRepository.saveAll(records);
cylinderFillingRecordMapper.updateCylinderFillingToEsStatus(ids);
}
} }
...@@ -4,6 +4,7 @@ package com.yeejoin.amos.api.openapi.face.service; ...@@ -4,6 +4,7 @@ package com.yeejoin.amos.api.openapi.face.service;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import com.baomidou.dynamic.datasource.annotation.DSTransactional;
import com.yeejoin.amos.api.openapi.face.model.TmCylinderUnitModel; import com.yeejoin.amos.api.openapi.face.model.TmCylinderUnitModel;
import com.yeejoin.amos.boot.module.cylinder.flc.api.dto.CylinderFillingDto; import com.yeejoin.amos.boot.module.cylinder.flc.api.dto.CylinderFillingDto;
import com.yeejoin.amos.boot.module.cylinder.flc.api.dto.CylinderInfoDto; import com.yeejoin.amos.boot.module.cylinder.flc.api.dto.CylinderInfoDto;
...@@ -40,7 +41,7 @@ public class TmCylinderFillingService extends BaseService<TmCylinderFillingModel ...@@ -40,7 +41,7 @@ public class TmCylinderFillingService extends BaseService<TmCylinderFillingModel
@Autowired @Autowired
private SyncCylinderDataService syncCylinderDataService; private SyncCylinderDataService syncCylinderDataService;
@Transactional(rollbackFor= {Exception.class}) @DSTransactional
public String createCylinderFillingBefore(List<TmCylinderFillingModel> model) { public String createCylinderFillingBefore(List<TmCylinderFillingModel> model) {
// TODO Auto-generated method stub // TODO Auto-generated method stub
// if (ValidationUtil.isEmpty(model)) // if (ValidationUtil.isEmpty(model))
......
...@@ -6,6 +6,7 @@ import java.util.ArrayList; ...@@ -6,6 +6,7 @@ import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import com.baomidou.dynamic.datasource.annotation.DSTransactional;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.yeejoin.amos.api.openapi.face.model.TmCylinderUnitModel; import com.yeejoin.amos.api.openapi.face.model.TmCylinderUnitModel;
import com.yeejoin.amos.api.openapi.face.orm.dao.ESCylinderInfoRepository; import com.yeejoin.amos.api.openapi.face.orm.dao.ESCylinderInfoRepository;
...@@ -58,15 +59,19 @@ public class TmCylinderInfoService extends BaseService<TmCylinderInfoModel, TmCy ...@@ -58,15 +59,19 @@ public class TmCylinderInfoService extends BaseService<TmCylinderInfoModel, TmCy
@Autowired @Autowired
ESCylinderInfoRepository esCylinderInfoRepository; ESCylinderInfoRepository esCylinderInfoRepository;
@Transactional(rollbackFor= {Exception.class}) @DSTransactional
public String createCylinderInfo(List<TmCylinderInfoModel> model) { public String createCylinderInfo(List<TmCylinderInfoModel> model) {
// TODO Auto-generated method stub // TODO Auto-generated method stub
if (ValidationUtil.isEmpty(model)) if (ValidationUtil.isEmpty(model))
throw new BadRequest("气瓶基本信息数据为空."); throw new BadRequest("气瓶基本信息数据为空.");
syncCylinderInfo(model); syncCylinderInfo(model);
for (TmCylinderInfoModel cylinderInfoModel : model) { for (TmCylinderInfoModel cylinderInfoModel : model) {
cylinderInfoModel.setRecDate(new Date()); cylinderInfoModel.setRecDate(new Date());
cylinderInfoModel.setAppId(getAppId()); cylinderInfoModel.setAppId(getAppId());
createCylinderInfo2ES(cylinderInfoModel);
this.createWithModel(cylinderInfoModel); this.createWithModel(cylinderInfoModel);
} }
return "OK"; return "OK";
...@@ -82,7 +87,8 @@ public class TmCylinderInfoService extends BaseService<TmCylinderInfoModel, TmCy ...@@ -82,7 +87,8 @@ public class TmCylinderInfoService extends BaseService<TmCylinderInfoModel, TmCy
} }
public void createCylinderInfo2ES(CylinderInfoDto cylinderInfoDto) { public void createCylinderInfo2ES(TmCylinderInfoModel cylinderInfoModel) {
CylinderInfoDto cylinderInfoDto = Bean.toModel(cylinderInfoModel, new CylinderInfoDto());
List<ESCylinderInfoDto> esCylinderInfoDto = new ArrayList<>(); List<ESCylinderInfoDto> esCylinderInfoDto = new ArrayList<>();
ESCylinderInfoDto esCylinderInfo = new ESCylinderInfoDto(); ESCylinderInfoDto esCylinderInfo = new ESCylinderInfoDto();
BeanUtils.copyProperties(cylinderInfoDto, esCylinderInfo); BeanUtils.copyProperties(cylinderInfoDto, esCylinderInfo);
......
...@@ -4,6 +4,7 @@ package com.yeejoin.amos.api.openapi.face.service; ...@@ -4,6 +4,7 @@ package com.yeejoin.amos.api.openapi.face.service;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import com.baomidou.dynamic.datasource.annotation.DSTransactional;
import com.yeejoin.amos.boot.module.cylinder.flc.api.dto.CylinderInspectionDto; import com.yeejoin.amos.boot.module.cylinder.flc.api.dto.CylinderInspectionDto;
import com.yeejoin.amos.boot.module.cylinder.flc.api.dto.CylinderUnitDto; import com.yeejoin.amos.boot.module.cylinder.flc.api.dto.CylinderUnitDto;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -39,7 +40,8 @@ public class TmCylinderInspectionService extends BaseService<TmCylinderInspectio ...@@ -39,7 +40,8 @@ public class TmCylinderInspectionService extends BaseService<TmCylinderInspectio
private RedisTemplate redisTemplate; private RedisTemplate redisTemplate;
@Autowired @Autowired
private SyncCylinderDataService syncCylinderDataService; private SyncCylinderDataService syncCylinderDataService;
@Transactional(rollbackFor= {Exception.class})
@DSTransactional
public String createCylinderInspection(List<TmCylinderInspectionModel> model) { public String createCylinderInspection(List<TmCylinderInspectionModel> model) {
if (ValidationUtil.isEmpty(model)) if (ValidationUtil.isEmpty(model))
throw new BadRequest("气瓶检验信息为空."); throw new BadRequest("气瓶检验信息为空.");
......
...@@ -4,6 +4,7 @@ package com.yeejoin.amos.api.openapi.face.service; ...@@ -4,6 +4,7 @@ package com.yeejoin.amos.api.openapi.face.service;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import com.baomidou.dynamic.datasource.annotation.DSTransactional;
import com.yeejoin.amos.boot.module.cylinder.flc.api.dto.CylinderInspectionDto; import com.yeejoin.amos.boot.module.cylinder.flc.api.dto.CylinderInspectionDto;
import com.yeejoin.amos.boot.module.cylinder.flc.api.dto.CylinderTagsDto; import com.yeejoin.amos.boot.module.cylinder.flc.api.dto.CylinderTagsDto;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -40,7 +41,7 @@ public class TmCylinderTagsService extends BaseService<TmCylinderTagsModel, TmCy ...@@ -40,7 +41,7 @@ public class TmCylinderTagsService extends BaseService<TmCylinderTagsModel, TmCy
@Autowired @Autowired
private SyncCylinderDataService syncCylinderDataService; private SyncCylinderDataService syncCylinderDataService;
@Transactional(rollbackFor= {Exception.class}) @DSTransactional
public String createCylinderTag(List<TmCylinderTagsModel> model) { public String createCylinderTag(List<TmCylinderTagsModel> model) {
// TODO Auto-generated method stub // TODO Auto-generated method stub
if (ValidationUtil.isEmpty(model)) if (ValidationUtil.isEmpty(model))
......
...@@ -4,6 +4,7 @@ package com.yeejoin.amos.api.openapi.face.service; ...@@ -4,6 +4,7 @@ package com.yeejoin.amos.api.openapi.face.service;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import com.baomidou.dynamic.datasource.annotation.DSTransactional;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
...@@ -39,7 +40,8 @@ public class TmCylinderUnitService extends BaseService<TmCylinderUnitModel, TmCy ...@@ -39,7 +40,8 @@ public class TmCylinderUnitService extends BaseService<TmCylinderUnitModel, TmCy
private RedisTemplate redisTemplate; private RedisTemplate redisTemplate;
@Autowired @Autowired
private SyncCylinderDataService syncCylinderDataService; private SyncCylinderDataService syncCylinderDataService;
@Transactional(rollbackFor= {Exception.class})
@DSTransactional
public String createCylinderUnit(List<TmCylinderUnitModel> model) { public String createCylinderUnit(List<TmCylinderUnitModel> model) {
if (ValidationUtil.isEmpty(model)) if (ValidationUtil.isEmpty(model))
throw new BadRequest("气瓶企业信息数据为空."); throw new BadRequest("气瓶企业信息数据为空.");
......
...@@ -12,8 +12,8 @@ public enum QuestionTypeEnum { ...@@ -12,8 +12,8 @@ public enum QuestionTypeEnum {
/** /**
* 问题类型 * 问题类型
*/ */
WBLSYDJ("1", "未办理使用登记"), XKCQ("1", "许可超期"),
XKCQ("2", "许可超期"), WBLSYDJ("2", "未办理使用登记"),
JYCQ("3", "检验超期"), JYCQ("3", "检验超期"),
JYBHG("4", "检验不合格"), JYBHG("4", "检验不合格"),
WJXCZJJ("5", "未进行充装检查"), WJXCZJJ("5", "未进行充装检查"),
......
...@@ -109,4 +109,9 @@ public class CylinderUnitDto extends BaseDto { ...@@ -109,4 +109,9 @@ public class CylinderUnitDto extends BaseDto {
@ApiModelProperty(value = "技术服务商") @ApiModelProperty(value = "技术服务商")
private String developerAgency; private String developerAgency;
/**
* 资质到期日期
*/
private Date expireDate;
} }
...@@ -34,7 +34,7 @@ public interface CylCylinderFillingCheckMapper extends BaseMapper<CylinderFillin ...@@ -34,7 +34,7 @@ public interface CylCylinderFillingCheckMapper extends BaseMapper<CylinderFillin
boolean updataSyncFilling(@Param("ids") List<Long> appIds); boolean updataSyncFilling(@Param("ids") List<Long> appIds);
boolean saveAndBatchInsert(@Param("list") List<CylinderFilling> list); void saveAndBatchInsert(@Param("list") List<CylinderFilling> list);
Long selectCountTotal(); Long selectCountTotal();
......
...@@ -119,7 +119,9 @@ public interface CylinderInfoMapper extends BaseMapper<CylinderInfo> { ...@@ -119,7 +119,9 @@ public interface CylinderInfoMapper extends BaseMapper<CylinderInfo> {
List<CylinderInfoDto> queryCylinderOfInspectionOverdue(); List<CylinderInfoDto> queryCylinderOfInspectionOverdue();
List<CylinderInfoDto> queryCylinderOfUnqualifiedQuestion(); List<CylinderInfoDto> queryCylinderOfUnqualifiedQuestion();
List<Map<String, Object>> countFillingTimesAndQuantityByCity(); List<Map<String, Object>> countFillingTimesAndQuantityByCity();
String getAttachmentByUnitCode (@Param("appId") String appId);
} }
...@@ -2,6 +2,7 @@ package com.yeejoin.amos.boot.module.cylinder.flc.api.mapper; ...@@ -2,6 +2,7 @@ package com.yeejoin.amos.boot.module.cylinder.flc.api.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yeejoin.amos.boot.module.cylinder.flc.api.dto.CityCylinderInfoDto; import com.yeejoin.amos.boot.module.cylinder.flc.api.dto.CityCylinderInfoDto;
import com.yeejoin.amos.boot.module.cylinder.flc.api.dto.CylinderInfoDto;
import com.yeejoin.amos.boot.module.cylinder.flc.api.dto.CylinderUnitDto; import com.yeejoin.amos.boot.module.cylinder.flc.api.dto.CylinderUnitDto;
import com.yeejoin.amos.boot.module.cylinder.flc.api.entity.CylinderUnit; import com.yeejoin.amos.boot.module.cylinder.flc.api.entity.CylinderUnit;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
...@@ -55,5 +56,14 @@ public interface CylinderUnitMapper extends BaseMapper<CylinderUnit> { ...@@ -55,5 +56,14 @@ public interface CylinderUnitMapper extends BaseMapper<CylinderUnit> {
* @return list * @return list
*/ */
List<CityCylinderInfoDto> getCylinderDataByLevel(@Param("level") String level); List<CityCylinderInfoDto> getCylinderDataByLevel(@Param("level") String level);
void saveOrUpdateBatch(@Param("list") List<CylinderUnit> list); void saveOrUpdateBatch(@Param("list") List<CylinderUnit> list);
/**
* 查询资质超期但是还没生成问题的单位
* @param questionType 问题类型
* @return List<CylinderInfoDto>
*/
List<CylinderUnitDto> queryCylinderUnitOfPermissionExpire(@Param("questionType") String questionType);
} }
...@@ -141,10 +141,8 @@ ...@@ -141,10 +141,8 @@
LIMIT 1000 LIMIT 1000
</select> </select>
<insert id="saveAndBatchInsert"> <insert id="saveAndBatchInsert" parameterType="com.yeejoin.amos.boot.module.cylinder.flc.api.entity.CylinderFillingRecord">
INSERT INTO "tz_cylinder_filling" INSERT INTO tz_cylinder_filling( sequence_nbr,
(
sequence_nbr,
filling_before_id, filling_before_id,
filling_unit_name, filling_unit_name,
sequence_code, sequence_code,
......
...@@ -419,6 +419,17 @@ ...@@ -419,6 +419,17 @@
GROUP BY regionCode GROUP BY regionCode
</select> </select>
<select id="getAttachmentByUnitCode" resultType="java.lang.String">
select qualification_certificate_attachment as qualificationCertificateAttachment
FROM view_cylinder_unit_info
<where>
<if test="appId != null and appId != ''">
"app_id" = #{appId}
</if>
</where>
limit 1
</select>
<select id="countNumber" resultType="java.lang.Integer"> <select id="countNumber" resultType="java.lang.Integer">
SELECT count(DISTINCT(onlyCode)) SELECT count(DISTINCT(onlyCode))
FROM( FROM(
...@@ -468,7 +479,7 @@ ...@@ -468,7 +479,7 @@
tz_cylinder_unit u tz_cylinder_unit u
where where
a.sequence_code = b.sequence_code a.sequence_code = b.sequence_code
and u.credit_code = a.credit_code and u.app_id = a.app_id
and a.last_inspection_id = b.sequence_nbr and a.last_inspection_id = b.sequence_nbr
and date_gt(CURRENT_DATE, cast(b.next_inspection_date as date)) and date_gt(CURRENT_DATE, cast(b.next_inspection_date as date))
</select> </select>
...@@ -486,7 +497,7 @@ ...@@ -486,7 +497,7 @@
tz_cylinder_unit u tz_cylinder_unit u
where where
a.sequence_code = b.sequence_code a.sequence_code = b.sequence_code
and u.credit_code = a.credit_code and u.app_id = a.app_id
and a.last_inspection_id = b.sequence_nbr and a.last_inspection_id = b.sequence_nbr
and (b.is_deal_question = false or b.is_deal_question is null) and (b.is_deal_question = false or b.is_deal_question is null)
</select> </select>
......
...@@ -65,6 +65,19 @@ ...@@ -65,6 +65,19 @@
FROM tz_cylinder_unit tcu FROM tz_cylinder_unit tcu
WHERE tcu.region_code like concat('%', #{regionCode}, '%') WHERE tcu.region_code like concat('%', #{regionCode}, '%')
</select> </select>
<select id="queryCylinderUnitOfPermissionExpire" resultType="com.yeejoin.amos.boot.module.cylinder.flc.api.dto.CylinderUnitDto">
SELECT
(SELECT min(l.expiry_date) from tz_base_unit_licence l where l."UNIT_CODE" = u.credit_code) as expire_date,
u.app_id,
u.unit_name,
u.region_code,
u.credit_code
FROM
tz_cylinder_unit u
where
date_gt(CURRENT_DATE, expire_date)
and not EXISTS (select 1 from tz_cylinder_question_info q where u.credit_code = q.question_object_id and q.question_type = #{questionType} )
</select>
<insert id="saveOrUpdateBatch" parameterType="com.yeejoin.amos.boot.module.cylinder.flc.api.entity.CylinderUnit"> <insert id="saveOrUpdateBatch" parameterType="com.yeejoin.amos.boot.module.cylinder.flc.api.entity.CylinderUnit">
INSERT INTO "tz_cylinder_unit"(sequence_nbr,unit_id,region_code,unit_name,credit_code,address,unit_person,person_mobile_phone,person_telephone,postal_code,rec_date,rec_user_id,sync_date,sync_state,app_id,security_adm,security_adm_phone,region_name) INSERT INTO "tz_cylinder_unit"(sequence_nbr,unit_id,region_code,unit_name,credit_code,address,unit_person,person_mobile_phone,person_telephone,postal_code,rec_date,rec_user_id,sync_date,sync_state,app_id,security_adm,security_adm_phone,region_name)
VALUES VALUES
......
package com.yeejoin.amos.boot.module.cylinder.biz.job;
import com.yeejoin.amos.boot.module.cylinder.api.entity.CylinderQuestionInfo;
import com.yeejoin.amos.boot.module.cylinder.api.enums.QuestionTypeEnum;
import com.yeejoin.amos.boot.module.cylinder.biz.service.impl.CylinderQuestionInfoServiceImpl;
import com.yeejoin.amos.boot.module.cylinder.flc.api.dto.CylinderUnitDto;
import com.yeejoin.amos.boot.module.cylinder.flc.api.mapper.CylinderUnitMapper;
import net.javacrumbs.shedlock.spring.annotation.SchedulerLock;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import javax.validation.constraints.NotNull;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author Administrator
*/
@Component
@EnableScheduling
public class CompanyQuestionJob {
private CylinderUnitMapper cylinderUnitMapper;
private CylinderQuestionInfoServiceImpl questionInfoService;
public CompanyQuestionJob(CylinderUnitMapper cylinderUnitMapper,
CylinderQuestionInfoServiceImpl questionInfoService) {
this.cylinderUnitMapper = cylinderUnitMapper;
this.questionInfoService = questionInfoService;
}
/**
* 资质超期
*/
@SchedulerLock(name = "genCompanyQuestionOfPermissionExpireJob", lockAtMostFor = "PT4M")
@Scheduled(cron = "${inspection.cert.expire.job.cron:0 0/2 * * * ?}")
@Transactional(rollbackFor = Exception.class)
public void genCompanyQuestionOfPermissionExpire() {
List<CylinderUnitDto> cylinderUnitDtoList = cylinderUnitMapper.queryCylinderUnitOfPermissionExpire(QuestionTypeEnum.XKCQ.getCode());
List<CylinderQuestionInfo> cylinderQuestionInfos = cylinderUnitDtoList.stream().map(cylinderUnitDto -> {
CylinderQuestionInfo cylinderQuestionInfo = new CylinderQuestionInfo();
cylinderQuestionInfo.setQuestionType(QuestionTypeEnum.XKCQ.getCode());
cylinderQuestionInfo.setQuestionTypeName(QuestionTypeEnum.XKCQ.getName());
return this.fillCommonField(cylinderUnitDto, cylinderQuestionInfo);
}).collect(Collectors.toList());
if (cylinderQuestionInfos.size() > 0) {
questionInfoService.saveBatch(cylinderQuestionInfos);
}
}
@NotNull
private CylinderQuestionInfo fillCommonField(CylinderUnitDto cylinderUnitDto, CylinderQuestionInfo cylinderQuestionInfo) {
cylinderQuestionInfo.setHappenDate(new Date());
cylinderQuestionInfo.setRecDate(new Date());
cylinderQuestionInfo.setRegionCode(cylinderUnitDto.getRegionCode());
cylinderQuestionInfo.setQuestionObjectId(cylinderUnitDto.getCreditCode());
cylinderQuestionInfo.setQuestionObjectName(cylinderUnitDto.getUnitName());
cylinderQuestionInfo.setQuestionAttributionId(cylinderUnitDto.getAppId());
cylinderQuestionInfo.setQuestionAttributionName(cylinderUnitDto.getUnitName());
return cylinderQuestionInfo;
}
}
package com.yeejoin.amos.boot.module.cylinder.biz.job; package com.yeejoin.amos.boot.module.cylinder.biz.job;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.yeejoin.amos.boot.module.cylinder.api.entity.CylinderQuestionInfo; import com.yeejoin.amos.boot.module.cylinder.api.entity.CylinderQuestionInfo;
import com.yeejoin.amos.boot.module.cylinder.api.enums.QuestionTypeEnum; import com.yeejoin.amos.boot.module.cylinder.api.enums.QuestionTypeEnum;
...@@ -16,8 +17,10 @@ import org.springframework.transaction.annotation.Transactional; ...@@ -16,8 +17,10 @@ import org.springframework.transaction.annotation.Transactional;
import org.typroject.tyboot.core.rdbms.orm.entity.BaseEntity; import org.typroject.tyboot.core.rdbms.orm.entity.BaseEntity;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Set;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
...@@ -46,8 +49,8 @@ public class InspectionQuestionJob { ...@@ -46,8 +49,8 @@ public class InspectionQuestionJob {
/** /**
* 检验超期 * 检验超期
*/ */
@SchedulerLock(name = "genOverdueQuestionJobCylinder", lockAtMostFor = "PT1H") @SchedulerLock(name = "genOverdueQuestionJobCylinder2", lockAtMostFor = "PT1H")
@Scheduled(cron = "${inspection.overdue.job.cron:0 0 2 * * ?}") @Scheduled(cron = "${inspection.overdue.job.cron:0 0 1 * * ?}")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void genOverdueQuestion() { public void genOverdueQuestion() {
List<CylinderInfoDto> cylinderList = cylinderInfoMapper.queryCylinderOfInspectionOverdue(); List<CylinderInfoDto> cylinderList = cylinderInfoMapper.queryCylinderOfInspectionOverdue();
...@@ -57,17 +60,34 @@ public class InspectionQuestionJob { ...@@ -57,17 +60,34 @@ public class InspectionQuestionJob {
cylinderQuestionInfo.setQuestionTypeName(QuestionTypeEnum.JYCQ.getName()); cylinderQuestionInfo.setQuestionTypeName(QuestionTypeEnum.JYCQ.getName());
return fillCommonField(cylinderInfoDto, cylinderQuestionInfo); return fillCommonField(cylinderInfoDto, cylinderQuestionInfo);
}).collect(Collectors.toList()); }).collect(Collectors.toList());
// 已经生成的数据不再重复生成
List<CylinderQuestionInfo> needToDbQuestionInfos = this.removeRepeatData(cylinderQuestionInfos);
if (needToDbQuestionInfos.size() > 0) {
questionInfoService.saveBatch(needToDbQuestionInfos);
}
}
private List<CylinderQuestionInfo> removeRepeatData(List<CylinderQuestionInfo> cylinderQuestionInfos) {
if (cylinderQuestionInfos.size() > 0) { if (cylinderQuestionInfos.size() > 0) {
questionInfoService.saveBatch(cylinderQuestionInfos); Set<String> questionObjectIds = cylinderQuestionInfos.stream().map(CylinderQuestionInfo::getQuestionObjectId).collect(Collectors.toSet());
Set<String> appIds = cylinderQuestionInfos.stream().map(CylinderQuestionInfo::getQuestionAttributionId).collect(Collectors.toSet());
// 已经生成问题的气瓶
List<CylinderQuestionInfo> questionInfos = questionInfoService.list(new LambdaQueryWrapper<CylinderQuestionInfo>()
.in(CylinderQuestionInfo::getQuestionObjectId, questionObjectIds)
.in(CylinderQuestionInfo::getQuestionAttributionId, appIds).eq(CylinderQuestionInfo::getQuestionType, QuestionTypeEnum.JYCQ.getCode()));
// 去掉已经生成的气瓶问题,不在重复生成问题
return cylinderQuestionInfos.stream().filter(c -> questionInfos.stream().noneMatch(d -> d.getQuestionObjectId().equals(c.getQuestionObjectId()) &&
d.getQuestionAttributionId().equals(c.getQuestionAttributionId()))).collect(Collectors.toList());
} }
return new ArrayList<>();
} }
/** /**
* 检验不合格任务 * 检验不合格任务
*/ */
@SchedulerLock(name = "genInspectionUnqualifiedQuestionJobCylinder", lockAtMostFor = "PT1H") @SchedulerLock(name = "genInspectionUnqualifiedQuestionJobCylinder2", lockAtMostFor = "PT20M")
@Scheduled(cron = "${inspection.unqualified.job.cron:0 0/5 * * * ?}") @Scheduled(cron = "${inspection.unqualified.job.cron:0 0/10 * * * ?}")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void genInspectionUnqualifiedQuestion() { public void genInspectionUnqualifiedQuestion() {
List<CylinderInfoDto> cylinderList = cylinderInfoMapper.queryCylinderOfUnqualifiedQuestion(); List<CylinderInfoDto> cylinderList = cylinderInfoMapper.queryCylinderOfUnqualifiedQuestion();
......
package com.yeejoin.amos.boot.module.cylinder.flc.biz.controller; package com.yeejoin.amos.boot.module.cylinder.flc.biz.controller;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
...@@ -51,6 +52,7 @@ import org.typroject.tyboot.core.restful.utils.ResponseModel; ...@@ -51,6 +52,7 @@ import org.typroject.tyboot.core.restful.utils.ResponseModel;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
import java.util.stream.Collectors;
/** /**
* 气瓶基本信息 * 气瓶基本信息
...@@ -1361,7 +1363,28 @@ public class CylinderInfoController extends BaseController { ...@@ -1361,7 +1363,28 @@ public class CylinderInfoController extends BaseController {
@TycloudOperation(ApiLevel = UserType.AGENCY) @TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(httpMethod = "GET", value = "市级为维度,各市的充装次数和累计充装量") @ApiOperation(httpMethod = "GET", value = "市级为维度,各市的充装次数和累计充装量")
@GetMapping(value = "/countFillingTimesAndQuantityByCity") @GetMapping(value = "/countFillingTimesAndQuantityByCity")
public ResponseModel<Object> countFillingTimesAndQuantityByCity() { public ResponseModel<Map<String, Object>> countFillingTimesAndQuantityByCity() {
return ResponseHelper.buildResponse(cylinderInfoServiceImpl.countFillingTimesAndQuantityByCity()); return ResponseHelper.buildResponse(cylinderInfoServiceImpl.countFillingTimesAndQuantityByCity());
} }
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(httpMethod = "GET", value = "资质附件,轮播图用")
@GetMapping(value = "/getAttachmentByUnitCode")
public ResponseModel<List<String>> getAttachmentByUnitCode(@RequestParam(value = "companyId") String companyId) {
List<String> result = new ArrayList<>();
String attachmentByUnitCode = cylinderInfoServiceImpl.getBaseMapper().getAttachmentByUnitCode(companyId);
if (attachmentByUnitCode != null && !attachmentByUnitCode.isEmpty()) {
JSONArray jsonArray = JSON.parseArray(attachmentByUnitCode);
if (jsonArray != null) {
jsonArray.stream()
.filter(JSONObject.class::isInstance)
.map(JSONObject.class::cast)
.map(obj -> obj.getString("url"))
.filter(Objects::nonNull)
.forEach(result::add);
}
}
return ResponseHelper.buildResponse(result);
}
} }
...@@ -1265,66 +1265,120 @@ public class CylinderInfoServiceImpl extends BaseService<CylinderInfoDto, Cylind ...@@ -1265,66 +1265,120 @@ public class CylinderInfoServiceImpl extends BaseService<CylinderInfoDto, Cylind
public List<Map<String, Object>> countFillingTimesAndQuantityByCity() { public Map<String, Object> countFillingTimesAndQuantityByCity() {
// 查询所有的市级城市 // 查询所有的市级城市
List<RegionModel> regionModelList = Systemctl.regionClient.queryByLevel("2").getResult(); List<RegionModel> regionModelList = Systemctl.regionClient.queryByLevel("2").getResult();
// 并行处理每个城市的数据 // 并行处理每个城市的数据
List<CompletableFuture<Map<String, Object>>> futures = regionModelList.stream() List<CompletableFuture<Map<String, Object>>> futures = regionModelList.stream()
.map(regionModel -> CompletableFuture.supplyAsync(() -> esQuery(regionModel))) .map(regionModel -> CompletableFuture.supplyAsync(() -> esQuery(regionModel)))
.collect(Collectors.toList()); .collect(Collectors.toList());
return futures.stream() List<Map<String, Object>> collect = futures.stream()
.map(CompletableFuture::join) .map(CompletableFuture::join)
.collect(Collectors.toList()); .collect(Collectors.toList());
return assemblingHistogramData(collect);
// Map<String, Object> stringObjectMap = esQuery(regionModelList.get(3));
// ArrayList<Map<String, Object>> ss = new ArrayList<>();
// ss.add(stringObjectMap);
// return assemblingHistogramData(ss);
}
private static Map<String, Object> assemblingHistogramData(List<Map<String, Object>> collect) {
// 组装数据
// {
// "seriesData": [
// {
// "data": [
// 3,
// 2,
// 2,
// 3,
// 1
// ],
// "name": "正常点",
// "stack": "正常点"
// },
// {
// "data": [
// 1,
// 1,
// 2,
// 1,
// 2
// ],
// "name": "异常点",
// "stack": "巡检点"
// }
// ],
// "axisData": [
// "A",
// "B",
// "C",
// "D",
// "E"
// ]
// }
Map<String, Object> result = new HashMap<>();
List<Map<String, Object>> seriesData = new ArrayList<>();
List<String> axisData = new ArrayList<>();
List<String> seriesFillingTimesDataList = new ArrayList<>();
List<String> seriesCumulativeFillingQuantityDataList = new ArrayList<>();
collect.forEach(x->{
axisData.add(String.valueOf(x.get("regionName")));
seriesFillingTimesDataList.add(String.valueOf(x.get("fillingTimes")));
seriesCumulativeFillingQuantityDataList.add(String.valueOf(x.get("fillingQuantity")));
});
HashMap<String, Object> temMap1 = new HashMap<>();
temMap1.put("data",seriesFillingTimesDataList);
temMap1.put("name","充装次数");
temMap1.put("stack","充装次数");
HashMap<String, Object> temMap2 = new HashMap<>();
temMap2.put("data",seriesCumulativeFillingQuantityDataList);
temMap2.put("name","累计充装量");
temMap2.put("stack","累计充装量");
seriesData.add(temMap1);
seriesData.add(temMap2);
result.put("seriesData",seriesData);
result.put("axisData",axisData);
return result;
} }
private Map<String, Object> esQuery(RegionModel regionModel) { private Map<String, Object> esQuery(RegionModel regionModel) {
SearchRequest searchRequest = new SearchRequest(INDEX_NAME); SearchRequest searchRequest = new SearchRequest(INDEX_NAME);
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
// 将 regionModel.getRegionCode() 转换成匹配中间部分的格式 // 将 regionModel.getRegionCode() 转换成匹配中间部分的格式
String regionCodePattern = "*" + regionModel.getRegionCode() + "*"; String regionCodePattern = "*" + regionModel.getRegionCode() + "*";
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
boolQueryBuilder.must(QueryBuilders.wildcardQuery("regionCode", regionCodePattern)); boolQueryBuilder.must(QueryBuilders.wildcardQuery("regionCode", regionCodePattern));
searchSourceBuilder.query(boolQueryBuilder); searchSourceBuilder.query(boolQueryBuilder);
searchSourceBuilder.aggregation( searchSourceBuilder.aggregation(
AggregationBuilders.cardinality("total_filling_count") AggregationBuilders.cardinality("total_filling_count")
.field("sequenceNbr.keyword") .field("sequenceNbr")
); );
searchSourceBuilder.aggregation( searchSourceBuilder.aggregation(
AggregationBuilders.sum("total_filling_quantity") AggregationBuilders.sum("total_filling_quantity")
.field("fillingQuantity") .field("fillingQuantity")
); );
searchRequest.source(searchSourceBuilder); searchRequest.source(searchSourceBuilder);
System.out.println("Search Request: " + searchRequest); System.out.println("Search Request: " + searchRequest);
try { try {
// 执行搜索请求 // 执行搜索请求
SearchResponse searchResponse = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT); SearchResponse searchResponse = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);
// 获取所有聚合结果 // 获取所有聚合结果
Aggregations aggregations = searchResponse.getAggregations(); Aggregations aggregations = searchResponse.getAggregations();
ParsedCardinality cardinalityAgg = aggregations.get("total_filling_count"); ParsedCardinality cardinalityAgg = aggregations.get("total_filling_count");
long uniqueCount = cardinalityAgg.getValue(); long uniqueCount = cardinalityAgg.getValue();
Sum sumAgg = aggregations.get("total_filling_quantity"); Sum sumAgg = aggregations.get("total_filling_quantity");
double totalSum = sumAgg.getValue(); double totalSum = sumAgg.getValue();
System.out.println("填充数量的唯一值数量: " + uniqueCount); System.out.println("填充数量的唯一值数量: " + uniqueCount);
System.out.println("填充量的总和: " + totalSum); System.out.println("填充量的总和: " + totalSum);
Map<String, Object> resultMap = new HashMap<>(); Map<String, Object> resultMap = new HashMap<>();
resultMap.put(REGION_CODE, regionModel.getRegionCode()); resultMap.put(REGION_CODE, regionModel.getRegionCode());
resultMap.put(REGION_NAME, regionModel.getRegionName()); resultMap.put(REGION_NAME, regionModel.getRegionName());
resultMap.put(FILLING_TIMES, uniqueCount); resultMap.put(FILLING_TIMES, uniqueCount);
resultMap.put(FILLING_QUANTITY, totalSum); resultMap.put(FILLING_QUANTITY, totalSum);
return resultMap; return resultMap;
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment