Commit 1b68dfaa authored by tianbo's avatar tianbo

feat(cylinder-info): 气瓶接口同步调整

parent fa32d31b
...@@ -2,9 +2,11 @@ package com.yeejoin.amos; ...@@ -2,9 +2,11 @@ package com.yeejoin.amos;
import java.net.InetAddress; import java.net.InetAddress;
import com.yeejoin.amos.api.openapi.service.StartPlatformTokenService;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
import org.mybatis.spring.annotation.MapperScan; import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplication;
import org.springframework.boot.WebApplicationType; import org.springframework.boot.WebApplicationType;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
...@@ -15,6 +17,7 @@ import org.springframework.cloud.client.discovery.EnableDiscoveryClient; ...@@ -15,6 +17,7 @@ import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient; import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.openfeign.EnableFeignClients; import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.FilterType; import org.springframework.context.annotation.FilterType;
import org.springframework.core.env.Environment; import org.springframework.core.env.Environment;
...@@ -55,6 +58,9 @@ public class OpenapiApplication { ...@@ -55,6 +58,9 @@ public class OpenapiApplication {
private static final Logger logger = LogManager.getLogger(OpenapiApplication.class); private static final Logger logger = LogManager.getLogger(OpenapiApplication.class);
@Autowired
private StartPlatformTokenService startPlatformTokenService;
public static void main(String[] args) throws Exception { public static void main(String[] args) throws Exception {
// //license授权验证 // //license授权验证
// System.setProperty("root.path",ClassPathUtil.getPath()+"/config"); // System.setProperty("root.path",ClassPathUtil.getPath()+"/config");
...@@ -71,4 +77,9 @@ public class OpenapiApplication { ...@@ -71,4 +77,9 @@ public class OpenapiApplication {
+ "Application Amos-Biz-Boot is running! Access URLs:\n\t" + "Swagger文档: \thttp://" + ip + ":" + port + "Application Amos-Biz-Boot is running! Access URLs:\n\t" + "Swagger文档: \thttp://" + ip + ":" + port
+ path + "/doc.html\n" + "----------------------------------------------------------"); + path + "/doc.html\n" + "----------------------------------------------------------");
} }
@Bean
public void init() {
startPlatformTokenService.getToken();
}
} }
package com.yeejoin.amos.api.openapi.controller; package com.yeejoin.amos.api.openapi.controller;
import java.util.HashMap; import com.yeejoin.amos.api.common.restful.utils.ResponseHelper;
import java.util.List; import com.yeejoin.amos.api.common.restful.utils.ResponseModel;
import java.util.Map;
import com.yeejoin.amos.api.openapi.face.model.*; import com.yeejoin.amos.api.openapi.face.model.*;
import com.yeejoin.amos.api.openapi.face.service.*; import com.yeejoin.amos.api.openapi.face.service.*;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import net.sf.json.JSONObject;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -17,15 +18,11 @@ import org.typroject.tyboot.component.event.RestEventTrigger; ...@@ -17,15 +18,11 @@ import org.typroject.tyboot.component.event.RestEventTrigger;
import org.typroject.tyboot.core.foundation.enumeration.UserType; import org.typroject.tyboot.core.foundation.enumeration.UserType;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil; import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import org.typroject.tyboot.core.restful.doc.TycloudOperation; import org.typroject.tyboot.core.restful.doc.TycloudOperation;
import org.typroject.tyboot.core.restful.doc.TycloudResource;
import org.typroject.tyboot.core.restful.exception.instance.BadRequest; import org.typroject.tyboot.core.restful.exception.instance.BadRequest;
import com.yeejoin.amos.api.common.restful.utils.ResponseHelper; import java.util.HashMap;
import com.yeejoin.amos.api.common.restful.utils.ResponseModel; import java.util.List;
import java.util.Map;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import net.sf.json.JSONObject;
@RestController @RestController
@RequestMapping(value = "/cylinder") @RequestMapping(value = "/cylinder")
...@@ -55,8 +52,8 @@ public class CylinderController { ...@@ -55,8 +52,8 @@ public class CylinderController {
@ApiOperation(value = "气瓶企业信息") @ApiOperation(value = "气瓶企业信息")
@PostMapping(value = "/unit") @PostMapping(value = "/unit")
@RestEventTrigger(value = "openapiLogEventHandler") @RestEventTrigger(value = "openapiLogEventHandler")
public ResponseModel<String> cylinderUnit(@RequestBody List<TmCylinderUnitModel> unitData) throws Exception { public ResponseModel<String> cylinderUnit(@RequestBody List<TmCylinderUnitModel> unitData) {
cylinderFillingDataValidationService.validatEcylinderUnit(unitData); cylinderFillingDataValidationService.validateCylinderUnit(unitData);
return ResponseHelper.buildResponse(cylinderUnitService.createCylinderUnit(unitData)); return ResponseHelper.buildResponse(cylinderUnitService.createCylinderUnit(unitData));
} }
...@@ -64,7 +61,7 @@ public class CylinderController { ...@@ -64,7 +61,7 @@ public class CylinderController {
@ApiOperation(value = "气瓶基础数据") @ApiOperation(value = "气瓶基础数据")
@PostMapping(value = "/info") @PostMapping(value = "/info")
@RestEventTrigger(value = "openapiLogEventHandler") @RestEventTrigger(value = "openapiLogEventHandler")
public ResponseModel<String> cylinderInfo(@RequestBody List<TmCylinderInfoModel> infoData) throws Exception { public ResponseModel<String> cylinderInfo(@RequestBody List<TmCylinderInfoModel> infoData) {
cylinderFillingDataValidationService.validateCylinderInfo(infoData); cylinderFillingDataValidationService.validateCylinderInfo(infoData);
return ResponseHelper.buildResponse(cylinderInfoService.createCylinderInfo(infoData)); return ResponseHelper.buildResponse(cylinderInfoService.createCylinderInfo(infoData));
} }
...@@ -73,7 +70,7 @@ public class CylinderController { ...@@ -73,7 +70,7 @@ public class CylinderController {
@ApiOperation(value = "气瓶标签数据") @ApiOperation(value = "气瓶标签数据")
@PostMapping(value = "/tag") @PostMapping(value = "/tag")
@RestEventTrigger(value = "openapiLogEventHandler") @RestEventTrigger(value = "openapiLogEventHandler")
public ResponseModel<String> cylinderTagInfo(@RequestBody List<TmCylinderTagsModel> tagData) throws Exception { public ResponseModel<String> cylinderTagInfo(@RequestBody List<TmCylinderTagsModel> tagData) {
cylinderFillingDataValidationService.validateCylinderTag(tagData); cylinderFillingDataValidationService.validateCylinderTag(tagData);
return ResponseHelper.buildResponse(cylinderTagsService.createCylinderTag(tagData)); return ResponseHelper.buildResponse(cylinderTagsService.createCylinderTag(tagData));
} }
...@@ -82,7 +79,7 @@ public class CylinderController { ...@@ -82,7 +79,7 @@ public class CylinderController {
@ApiOperation(value = "气瓶检验数据") @ApiOperation(value = "气瓶检验数据")
@PostMapping(value = "/inspection") @PostMapping(value = "/inspection")
@RestEventTrigger(value = "openapiLogEventHandler") @RestEventTrigger(value = "openapiLogEventHandler")
public ResponseModel<String> cylinderInspectionInfo(@RequestBody List<TmCylinderInspectionModel> inspectionData) throws Exception { public ResponseModel<String> cylinderInspectionInfo(@RequestBody List<TmCylinderInspectionModel> inspectionData) {
cylinderFillingDataValidationService.validateCylinderInspection(inspectionData); cylinderFillingDataValidationService.validateCylinderInspection(inspectionData);
return ResponseHelper.buildResponse(cylinderInspectionService.createCylinderInspection(inspectionData)); return ResponseHelper.buildResponse(cylinderInspectionService.createCylinderInspection(inspectionData));
...@@ -94,43 +91,34 @@ public class CylinderController { ...@@ -94,43 +91,34 @@ public class CylinderController {
@RestEventTrigger(value = "openapiLogEventHandler") @RestEventTrigger(value = "openapiLogEventHandler")
public ResponseModel<String> cylinderFillingInfo(@RequestBody String fillingData) throws Exception { public ResponseModel<String> cylinderFillingInfo(@RequestBody String fillingData) throws Exception {
// logger.info("气瓶充装数据"+fillingData);
JSONObject jsonobject = JSONObject.fromObject(fillingData); JSONObject jsonobject = JSONObject.fromObject(fillingData);
cylinderFillingDataValidationService.validateFilling(jsonobject); cylinderFillingDataValidationService.validateFilling(jsonobject);
Map<String, Class> classMap = new HashMap<String, Class>(); Map<String, Class> classMap = new HashMap<>();
classMap.put("fillingBefore", TmCylinderFillingModel.class); classMap.put("fillingBefore", TmCylinderFillingModel.class);
classMap.put("filling", TmCylinderFillingRecordModel.class); classMap.put("filling", TmCylinderFillingRecordModel.class);
classMap.put("fillingAfter", TmCylinderFillingCheckModel.class); classMap.put("fillingAfter", TmCylinderFillingCheckModel.class);
TmCylinderFillingModelList cylinderFillingModelList = (TmCylinderFillingModelList) JSONObject.toBean(jsonobject, TmCylinderFillingModelList cylinderFillingModelList = (TmCylinderFillingModelList) JSONObject.toBean(jsonobject,
TmCylinderFillingModelList.class, classMap); TmCylinderFillingModelList.class, classMap);
List<TmCylinderFillingModel> fillingBefores = cylinderFillingModelList.getFillingBefore(); List<TmCylinderFillingModel> fillingBeforeList = cylinderFillingModelList.getFillingBefore();
List<TmCylinderFillingRecordModel> fillings = cylinderFillingModelList.getFilling(); List<TmCylinderFillingRecordModel> fillingList = cylinderFillingModelList.getFilling();
List<TmCylinderFillingCheckModel> fillingAfters = cylinderFillingModelList.getFillingAfter(); List<TmCylinderFillingCheckModel> fillingAfterList = cylinderFillingModelList.getFillingAfter();
if (ValidationUtil.isEmpty(fillingBefores) && ValidationUtil.isEmpty(fillings) && ValidationUtil.isEmpty(fillingAfters)) { if (ValidationUtil.isEmpty(fillingBeforeList) && ValidationUtil.isEmpty(fillingList) && ValidationUtil.isEmpty(fillingAfterList)) {
throw new BadRequest("液化气体气瓶充装信息-充装前检查信息、液化气体气瓶充装信息-充装记录信息、液化气体气瓶充装信息-充装后复查信息为空."); throw new BadRequest("液化气体气瓶充装信息-充装前检查信息、液化气体气瓶充装信息-充装记录信息、液化气体气瓶充装信息-充装后复查信息为空.");
} }
cylinderFillingService.createCylinderFillingBefore(fillingBefores); cylinderFillingService.createCylinderFillingBefore(fillingBeforeList);
cylinderFillingRecordService.createCylinderFilling(fillings); cylinderFillingRecordService.createCylinderFilling(fillingList);
cylinderFillingCheckService.createCylinderFillingAfter(fillingAfters); cylinderFillingCheckService.createCylinderFillingAfter(fillingAfterList);
// if (ValidationUtil.isEmpty(fillings)) { return ResponseHelper.buildResponse("OK");
// throw new BadRequest("液化气体气瓶充装信息-充装记录信息为空.");
// }else {
// }
// if (ValidationUtil.isEmpty(fillingAfters)) {
// throw new BadRequest("液化气体气瓶充装信息-充装后复查信息为空.");
// }else {
// }
return ResponseHelper.buildResponse("");
} }
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false) @TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@ApiOperation(value = "气瓶充装审核数据") @ApiOperation(value = "气瓶充装审核数据")
@PostMapping(value = "/fillingAudit") @PostMapping(value = "/fillingAudit")
@RestEventTrigger(value = "openapiLogEventHandler") @RestEventTrigger(value = "openapiLogEventHandler")
public ResponseModel<String> cylinderFillingAudit(@RequestBody List<TmCylinderFillingExamineModel> fillingAuditData) throws Exception { public ResponseModel<String> cylinderFillingAudit(@RequestBody List<TmCylinderFillingExamineModel> fillingAuditData) {
cylinderFillingDataValidationService.validateCylinderFillingExamineModel(fillingAuditData); cylinderFillingDataValidationService.validateCylinderFillingExamineModel(fillingAuditData);
return ResponseHelper.buildResponse(cylinderFillingExamineService.createCylinderFillingExamine(fillingAuditData)); return ResponseHelper.buildResponse(cylinderFillingExamineService.createCylinderFillingExamine(fillingAuditData));
......
...@@ -2,7 +2,9 @@ package com.yeejoin.amos.api.openapi.controller; ...@@ -2,7 +2,9 @@ package com.yeejoin.amos.api.openapi.controller;
import com.yeejoin.amos.api.common.restful.utils.ResponseHelper; import com.yeejoin.amos.api.common.restful.utils.ResponseHelper;
import com.yeejoin.amos.api.common.restful.utils.ResponseModel; import com.yeejoin.amos.api.common.restful.utils.ResponseModel;
import com.yeejoin.amos.api.openapi.constant.Constant;
import com.yeejoin.amos.api.openapi.enums.FileFolderPathEnum; import com.yeejoin.amos.api.openapi.enums.FileFolderPathEnum;
import com.yeejoin.amos.api.openapi.face.model.BizTokenModel;
import com.yeejoin.amos.component.feign.model.FeignClientResult; import com.yeejoin.amos.component.feign.model.FeignClientResult;
import com.yeejoin.amos.feign.systemctl.Systemctl; import com.yeejoin.amos.feign.systemctl.Systemctl;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
...@@ -10,8 +12,12 @@ import io.swagger.annotations.ApiOperation; ...@@ -10,8 +12,12 @@ import io.swagger.annotations.ApiOperation;
import net.sf.json.JSONObject; import net.sf.json.JSONObject;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import org.typroject.tyboot.component.cache.Redis;
import org.typroject.tyboot.core.foundation.context.RequestContext;
import org.typroject.tyboot.core.foundation.enumeration.UserType; import org.typroject.tyboot.core.foundation.enumeration.UserType;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil; import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import org.typroject.tyboot.core.restful.doc.TycloudOperation; import org.typroject.tyboot.core.restful.doc.TycloudOperation;
...@@ -28,13 +34,22 @@ import java.util.Map; ...@@ -28,13 +34,22 @@ import java.util.Map;
public class FilesController { public class FilesController {
private static final Logger logger = LogManager.getLogger(FilesController.class); private static final Logger logger = LogManager.getLogger(FilesController.class);
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false) @Autowired
private RedisTemplate redisTemplate;
@TycloudOperation(ApiLevel = UserType.AGENCY, enableLimitStrategy = true, needAuth = false)
@ApiOperation(value = "气瓶充装审核数据") @ApiOperation(value = "气瓶充装审核数据")
@PostMapping(value = "/") @PostMapping(value = "/upload")
public ResponseModel<String> uploadCylinderFiles( public ResponseModel<String> uploadCylinderFiles(
@RequestBody MultipartFile file) throws Exception { @RequestBody MultipartFile file) {
logger.info(file); logger.info(file);
JSONObject jsonObj = uploadFile(file, FileFolderPathEnum.CYLINDER.getPath()); String tokenKey = Redis.genKey(Constant.TOKEN_PREFIX, RequestContext.getToken());
BizTokenModel bizTokenModel = (BizTokenModel) this.redisTemplate.opsForValue().get(tokenKey);
if (bizTokenModel == null) {
throw new BadRequest("登录信息失效.");
}
String appId = bizTokenModel.getAppId();
JSONObject jsonObj = uploadFile(file, FileFolderPathEnum.CYLINDER.getPath() + appId);
return ResponseHelper.buildResponse(jsonObj.toString()); return ResponseHelper.buildResponse(jsonObj.toString());
} }
...@@ -42,7 +57,7 @@ public class FilesController { ...@@ -42,7 +57,7 @@ public class FilesController {
@ApiOperation(value = "检验报告数据") @ApiOperation(value = "检验报告数据")
@PostMapping(value = "/csei") @PostMapping(value = "/csei")
public ResponseModel<String> uploadCseiFiles( public ResponseModel<String> uploadCseiFiles(
@RequestBody MultipartFile file) throws Exception { @RequestBody MultipartFile file) {
logger.info(file); logger.info(file);
JSONObject jsonObj = uploadFile(file, FileFolderPathEnum.JY.getPath()); JSONObject jsonObj = uploadFile(file, FileFolderPathEnum.JY.getPath());
return ResponseHelper.buildResponse(jsonObj.toString()); return ResponseHelper.buildResponse(jsonObj.toString());
......
...@@ -14,20 +14,18 @@ public enum CylinderFillingAuditFieldEnum { ...@@ -14,20 +14,18 @@ public enum CylinderFillingAuditFieldEnum {
fillingExamineId(true, true), fillingExamineId(true, true),
fillingAuditDate(true, false), fillingAuditDate(true, false),
fillingAuditUrl(true, false), fillingAuditUrl(true, false),
fillingAuditname(true, false), fillingAuditName(true, false),
syncDate(true, false), syncDate(true, false),
syncState(true, false); syncState(true, false);
private boolean isRequire; private final boolean isRequire;
private boolean isUnique; private final boolean isUnique;
public static List<String> getAllRequireKeys() { public static List<String> getAllRequireKeys() {
List<String> keys = Arrays.stream(values()).filter(e -> e.isRequire).map(e -> e.name()).collect(Collectors.toList()); return Arrays.stream(values()).filter(e -> e.isRequire).map(Enum::name).collect(Collectors.toList());
return keys;
} }
public static List<String> getAllUniqueKeys() { public static List<String> getAllUniqueKeys() {
List<String> keys = Arrays.stream(values()).filter(e -> e.isUnique).map(e -> e.name()).collect(Collectors.toList()); return Arrays.stream(values()).filter(e -> e.isUnique).map(Enum::name).collect(Collectors.toList());
return keys;
} }
} }
...@@ -20,6 +20,7 @@ public enum CylinderInfoFieldEnum { ...@@ -20,6 +20,7 @@ public enum CylinderInfoFieldEnum {
fillingMediaName(true, false), fillingMediaName(true, false),
manufacturingUnit(true, false), manufacturingUnit(true, false),
manufacturingDate(true, false), manufacturingDate(true, false),
manufacturingUnitCreditCode(true, false),
valveManufacturUnit(true, false), valveManufacturUnit(true, false),
nominalWorkPressure(true, false), nominalWorkPressure(true, false),
volume(true, false), volume(true, false),
...@@ -35,12 +36,10 @@ public enum CylinderInfoFieldEnum { ...@@ -35,12 +36,10 @@ public enum CylinderInfoFieldEnum {
private boolean isUnique; private boolean isUnique;
public static List<String> getAllRequireKeys() { public static List<String> getAllRequireKeys() {
List<String> keys = Arrays.stream(values()).filter(e -> e.isRequire).map(e -> e.name()).collect(Collectors.toList()); return Arrays.stream(values()).filter(e -> e.isRequire).map(Enum::name).collect(Collectors.toList());
return keys;
} }
public static List<String> getAllUniqueKeys() { public static List<String> getAllUniqueKeys() {
List<String> keys = Arrays.stream(values()).filter(e -> e.isUnique).map(e -> e.name()).collect(Collectors.toList()); return Arrays.stream(values()).filter(e -> e.isUnique).map(Enum::name).collect(Collectors.toList());
return keys;
} }
} }
...@@ -11,24 +11,23 @@ import java.util.stream.Collectors; ...@@ -11,24 +11,23 @@ import java.util.stream.Collectors;
@Getter @Getter
public enum CylinderInspectionFieldEnum { public enum CylinderInspectionFieldEnum {
sequenceCode(true, true), sequenceCode(true, true),
inspectionUnit(true, true), inspectionUnit(true, false),
inspectionDate(true, true), inspectionDate(true, false),
inspectionResult(true, true), inspectionResult(true, false),
scrapQuantity(true, true), scrapQuantity(true, false),
nextInspectionDate(true, true), nextInspectionDate(true, false),
syncDate(true, true), syncDate(true, false),
syncState(true, true); syncState(true, false);
private boolean isRequire; private final boolean isRequire;
private boolean isUnique; private final boolean isUnique;
public static List<String> getAllRequireKeys() { public static List<String> getAllRequireKeys() {
List<String> keys = Arrays.stream(values()).filter(e -> e.isRequire).map(e -> e.name()).collect(Collectors.toList()); return Arrays.stream(values()).filter(e -> e.isRequire).map(Enum::name).collect(Collectors.toList());
return keys;
} }
public static List<String> getAllUniqueKeys() { public static List<String> getAllUniqueKeys() {
List<String> keys = Arrays.stream(values()).filter(e -> e.isUnique).map(e -> e.name()).collect(Collectors.toList()); return Arrays.stream(values()).filter(e -> e.isUnique).map(Enum::name).collect(Collectors.toList());
return keys;
} }
} }
...@@ -13,20 +13,18 @@ public enum CylinderTagFieldEnum { ...@@ -13,20 +13,18 @@ public enum CylinderTagFieldEnum {
sequenceCode(true, true), sequenceCode(true, true),
qrCode(true, true), qrCode(true, true),
electronicLabelCode(true, true), electronicLabelCode(true, true),
gasCylinderStamp(true, true), gasCylinderStamp(true, false),
syncDate(true, false), syncDate(true, false),
syncState(true, false); syncState(true, false);
private boolean isRequire; private final boolean isRequire;
private boolean isUnique; private final boolean isUnique;
public static List<String> getAllRequireKeys() { public static List<String> getAllRequireKeys() {
List<String> keys = Arrays.stream(values()).filter(e -> e.isRequire).map(e -> e.name()).collect(Collectors.toList()); return Arrays.stream(values()).filter(e -> e.isRequire).map(Enum::name).collect(Collectors.toList());
return keys;
} }
public static List<String> getAllUniqueKeys() { public static List<String> getAllUniqueKeys() {
List<String> keys = Arrays.stream(values()).filter(e -> e.isUnique).map(e -> e.name()).collect(Collectors.toList()); return Arrays.stream(values()).filter(e -> e.isUnique).map(Enum::name).collect(Collectors.toList());
return keys;
} }
} }
...@@ -24,18 +24,19 @@ public enum CylinderUnitFieldEnum { ...@@ -24,18 +24,19 @@ public enum CylinderUnitFieldEnum {
securityAdmPhone(true, false), securityAdmPhone(true, false),
postalCode(true, false), postalCode(true, false),
syncDate(true, false), syncDate(true, false),
syncState(true, false); syncState(true, false),
qualificationFile(true, false),
useRegisterFile(true, false),
deviceSummaryFile(true, false);
private boolean isRequire; private final boolean isRequire;
private boolean isUnique; private final boolean isUnique;
public static List<String> getAllRequireKeys() { public static List<String> getAllRequireKeys() {
List<String> keys = Arrays.stream(values()).filter(e -> e.isRequire).map(e -> e.name()).collect(Collectors.toList()); return Arrays.stream(values()).filter(e -> e.isRequire).map(Enum::name).collect(Collectors.toList());
return keys;
} }
public static List<String> getAllUniqueKeys() { public static List<String> getAllUniqueKeys() {
List<String> keys = Arrays.stream(values()).filter(e -> e.isUnique).map(e -> e.name()).collect(Collectors.toList()); return Arrays.stream(values()).filter(e -> e.isUnique).map(Enum::name).collect(Collectors.toList());
return keys;
} }
} }
...@@ -18,7 +18,7 @@ public enum FileFolderPathEnum { ...@@ -18,7 +18,7 @@ public enum FileFolderPathEnum {
/** /**
* 气瓶 * 气瓶
*/ */
CYLINDER("cylinder","/cylinder"), CYLINDER("cylinder","cylinder/"),
/** /**
* 一码通 * 一码通
*/ */
......
...@@ -15,7 +15,7 @@ public enum FillingAfterFieldEnum { ...@@ -15,7 +15,7 @@ public enum FillingAfterFieldEnum {
withinScope(true, false), withinScope(true, false),
sealedState(true, false), sealedState(true, false),
defective(true, false), defective(true, false),
abnormaLTemperature(true, false), abnormalTemperature(true, false),
warningSign(true, false), warningSign(true, false),
compliance(true, false), compliance(true, false),
checkResults(true, false), checkResults(true, false),
...@@ -25,16 +25,14 @@ public enum FillingAfterFieldEnum { ...@@ -25,16 +25,14 @@ public enum FillingAfterFieldEnum {
syncDate(true, false), syncDate(true, false),
syncState(true, false); syncState(true, false);
private boolean isRequire; private final boolean isRequire;
private boolean isUnique; private final boolean isUnique;
public static List<String> getAllRequireKeys() { public static List<String> getAllRequireKeys() {
List<String> keys = Arrays.stream(values()).filter(e -> e.isRequire).map(e -> e.name()).collect(Collectors.toList()); return Arrays.stream(values()).filter(e -> e.isRequire).map(Enum::name).collect(Collectors.toList());
return keys;
} }
public static List<String> getAllUniqueKeys() { public static List<String> getAllUniqueKeys() {
List<String> keys = Arrays.stream(values()).filter(e -> e.isUnique).map(e -> e.name()).collect(Collectors.toList()); return Arrays.stream(values()).filter(e -> e.isUnique).map(Enum::name).collect(Collectors.toList());
return keys;
} }
} }
...@@ -30,16 +30,14 @@ public enum FillingBeforeFieldEnum { ...@@ -30,16 +30,14 @@ public enum FillingBeforeFieldEnum {
syncDate(true, false), syncDate(true, false),
syncState(true, false); syncState(true, false);
private boolean isRequire; private final boolean isRequire;
private boolean isUnique; private final boolean isUnique;
public static List<String> getAllRequireKeys() { public static List<String> getAllRequireKeys() {
List<String> keys = Arrays.stream(values()).filter(e -> e.isRequire).map(e -> e.name()).collect(Collectors.toList()); return Arrays.stream(values()).filter(e -> e.isRequire).map(Enum::name).collect(Collectors.toList());
return keys;
} }
public static List<String> getAllUniqueKeys() { public static List<String> getAllUniqueKeys() {
List<String> keys = Arrays.stream(values()).filter(e -> e.isUnique).map(e -> e.name()).collect(Collectors.toList()); return Arrays.stream(values()).filter(e -> e.isUnique).map(Enum::name).collect(Collectors.toList());
return keys;
} }
} }
...@@ -27,16 +27,14 @@ public enum FillingRecordFieldEnum { ...@@ -27,16 +27,14 @@ public enum FillingRecordFieldEnum {
syncDate(true, false), syncDate(true, false),
syncState(true, false); syncState(true, false);
private boolean isRequire; private final boolean isRequire;
private boolean isUnique; private final boolean isUnique;
public static List<String> getAllRequireKeys() { public static List<String> getAllRequireKeys() {
List<String> keys = Arrays.stream(values()).filter(e -> e.isRequire).map(e -> e.name()).collect(Collectors.toList()); return Arrays.stream(values()).filter(e -> e.isRequire).map(Enum::name).collect(Collectors.toList());
return keys;
} }
public static List<String> getAllUniqueKeys() { public static List<String> getAllUniqueKeys() {
List<String> keys = Arrays.stream(values()).filter(e -> e.isUnique).map(e -> e.name()).collect(Collectors.toList()); return Arrays.stream(values()).filter(e -> e.isUnique).map(Enum::name).collect(Collectors.toList());
return keys;
} }
} }
package com.yeejoin.amos.api.openapi.face.builder;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import java.util.List;
public interface QueryConditionBuilder {
<T> void buildQueryWrapper(QueryWrapper<T> queryWrapper, List<T> entity);
}
package com.yeejoin.amos.api.openapi.face.builder;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Assert;
import com.yeejoin.amos.api.openapi.face.orm.entity.*;
import java.util.List;
import java.util.stream.Collectors;
public class UniqueFieldsQueryBuilder implements QueryConditionBuilder{
@Override
public <T> void buildQueryWrapper(QueryWrapper<T> queryWrapper, List<T> entityList) {
Assert.notEmpty(entityList, "error: entityList must not be empty");
T entity = entityList.get(0); // 根据气瓶对接数据具体业务,每个接口都只包含一种类型,所以可根据其中一个元素来进行类型判断
if (entity instanceof TmCylinderUnit) {
List<TmCylinderUnit> unitList = (List<TmCylinderUnit>) entityList;
queryWrapper.eq("app_id", unitList.stream().map(AbstractBaseEntity::getAppId).findFirst().get());
}
if (entity instanceof TmCylinderInfo) {
List<TmCylinderInfo> infoList = (List<TmCylinderInfo>) entityList;
queryWrapper.in("app_id", infoList.stream().map(AbstractBaseEntity::getAppId).collect(Collectors.toList()));
queryWrapper.in("sequence_code", infoList.stream().map(TmCylinderInfo::getSequenceCode).collect(Collectors.toList()));
}
if (entity instanceof TmCylinderTags) {
List<TmCylinderTags> tagsList = (List<TmCylinderTags>) entityList;
queryWrapper.in("app_id", tagsList.stream().map(AbstractBaseEntity::getAppId).collect(Collectors.toList()));
queryWrapper.in("sequence_code", tagsList.stream().map(TmCylinderTags::getSequenceCode).collect(Collectors.toList()));
}
if (entity instanceof TmCylinderInspection) {
List<TmCylinderInspection> inspectionList = (List<TmCylinderInspection>) entityList;
queryWrapper.in("app_id", inspectionList.stream().map(AbstractBaseEntity::getAppId).collect(Collectors.toList()));
queryWrapper.in("sequence_code", inspectionList.stream().map(TmCylinderInspection::getSequenceCode).collect(Collectors.toList()));
queryWrapper.in("inspection_date", inspectionList.stream().map(TmCylinderInspection::getInspectionDate).collect(Collectors.toList()));
}
if (entity instanceof TmCylinderFillingExamine) {
List<TmCylinderFillingExamine> fillingExamineList = (List<TmCylinderFillingExamine>) entityList;
queryWrapper.in("app_id", fillingExamineList.stream().map(AbstractBaseEntity::getAppId).collect(Collectors.toList()));
queryWrapper.in("sequence_code", fillingExamineList.stream().map(TmCylinderFillingExamine::getSequenceCode).collect(Collectors.toList()));
}
if (entity instanceof TmCylinderFillingRecord) {
List<TmCylinderFillingRecord> fillingRecordList = (List<TmCylinderFillingRecord>) entityList;
queryWrapper.in("app_id", fillingRecordList.stream().map(AbstractBaseEntity::getAppId).collect(Collectors.toList()));
queryWrapper.in("sequence_code", fillingRecordList.stream().map(TmCylinderFillingRecord::getSequenceCode).collect(Collectors.toList()));
}
if (entity instanceof TmCylinderFilling) {
List<TmCylinderFilling> fillingBeforeList = (List<TmCylinderFilling>) entityList;
queryWrapper.in("app_id", fillingBeforeList.stream().map(AbstractBaseEntity::getAppId).collect(Collectors.toList()));
queryWrapper.in("sequence_code", fillingBeforeList.stream().map(TmCylinderFilling::getSequenceCode).collect(Collectors.toList()));
}
if (entity instanceof TmCylinderFillingCheck) {
List<TmCylinderFillingCheck> fillingBeforeList = (List<TmCylinderFillingCheck>) entityList;
queryWrapper.in("app_id", fillingBeforeList.stream().map(AbstractBaseEntity::getAppId).collect(Collectors.toList()));
queryWrapper.in("sequence_code", fillingBeforeList.stream().map(TmCylinderFillingCheck::getSequenceCode).collect(Collectors.toList()));
}
}
}
...@@ -20,4 +20,10 @@ public abstract class AbstractBaseModel extends BaseModel{ ...@@ -20,4 +20,10 @@ public abstract class AbstractBaseModel extends BaseModel{
* 对接公司编码 * 对接公司编码
*/ */
protected String appId; protected String appId;
/**
* 对接接口版本
*/
protected String version = "v1";
} }
...@@ -15,6 +15,6 @@ public class TmCylinderFillingExamineModel extends AbstractBaseModel{ ...@@ -15,6 +15,6 @@ public class TmCylinderFillingExamineModel extends AbstractBaseModel{
private String fillingExamineId; //充装信息审核ID private String fillingExamineId; //充装信息审核ID
private String fillingAuditDate; //报表生成时间 private String fillingAuditDate; //报表生成时间
private String fillingAuditUrl; //充装审核报表附件地址 private String fillingAuditUrl; //充装审核报表附件地址
private String fillingAuditname; //充装审核报表附件名称 private String fillingAuditName; //充装审核报表附件名称
} }
...@@ -19,6 +19,7 @@ public class TmCylinderInfoModel extends AbstractBaseModel{ ...@@ -19,6 +19,7 @@ public class TmCylinderInfoModel extends AbstractBaseModel{
private String fillingMedia; private String fillingMedia;
private String manufacturingUnit; private String manufacturingUnit;
private String manufacturingDate; private String manufacturingDate;
private String manufacturingUnitCreditCode;
private String productName; private String productName;
private String factoryNum; private String factoryNum;
private Double volume; private Double volume;
......
...@@ -27,4 +27,20 @@ public class TmCylinderUnitModel extends AbstractBaseModel{ ...@@ -27,4 +27,20 @@ public class TmCylinderUnitModel extends AbstractBaseModel{
* 所属区域 * 所属区域
*/ */
private String regionName; private String regionName;
/**
* 企业资质附件
*/
private String qualificationFile;
/**
* 使用登记证附件
*/
private String useRegisterFile;
/**
* 设备汇总表附件
*/
private String deviceSummaryFile;
} }
...@@ -3,6 +3,7 @@ package com.yeejoin.amos.api.openapi.face.orm.entity; ...@@ -3,6 +3,7 @@ package com.yeejoin.amos.api.openapi.face.orm.entity;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
/** /**
...@@ -53,6 +54,6 @@ public class TmCylinderFilling extends AbstractBaseEntity{/** ...@@ -53,6 +54,6 @@ public class TmCylinderFilling extends AbstractBaseEntity{/**
@TableField("filling_before_id") @TableField("filling_before_id")
private String fillingBeforeId; private String fillingBeforeId;
@ApiModelProperty(value = "对接接口版本")
protected String version = "v1";
} }
...@@ -3,6 +3,7 @@ package com.yeejoin.amos.api.openapi.face.orm.entity; ...@@ -3,6 +3,7 @@ package com.yeejoin.amos.api.openapi.face.orm.entity;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
/** /**
...@@ -42,4 +43,7 @@ public class TmCylinderFillingCheck extends AbstractBaseEntity{/** ...@@ -42,4 +43,7 @@ public class TmCylinderFillingCheck extends AbstractBaseEntity{/**
private String checkResults; private String checkResults;
@TableField("nonconformances") @TableField("nonconformances")
private String nonconformances; private String nonconformances;
@ApiModelProperty(value = "对接接口版本")
protected String version = "v1";
} }
...@@ -3,6 +3,7 @@ package com.yeejoin.amos.api.openapi.face.orm.entity; ...@@ -3,6 +3,7 @@ package com.yeejoin.amos.api.openapi.face.orm.entity;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
/** /**
...@@ -26,5 +27,8 @@ public class TmCylinderFillingExamine extends AbstractBaseEntity{/** ...@@ -26,5 +27,8 @@ public class TmCylinderFillingExamine extends AbstractBaseEntity{/**
@TableField("filling_audit_url") @TableField("filling_audit_url")
private String fillingAuditUrl; //充装审核报表附件地址 private String fillingAuditUrl; //充装审核报表附件地址
@TableField("filling_audit_name") @TableField("filling_audit_name")
private String fillingAuditname; //充装审核报表附件名称 private String fillingAuditName; //充装审核报表附件名称
@ApiModelProperty(value = "对接接口版本")
protected String version = "v1";
} }
...@@ -3,6 +3,7 @@ package com.yeejoin.amos.api.openapi.face.orm.entity; ...@@ -3,6 +3,7 @@ package com.yeejoin.amos.api.openapi.face.orm.entity;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
/** /**
...@@ -43,4 +44,7 @@ public class TmCylinderFillingRecord extends AbstractBaseEntity{/** ...@@ -43,4 +44,7 @@ public class TmCylinderFillingRecord extends AbstractBaseEntity{/**
private String fillingExamineId; private String fillingExamineId;
@TableField("discharge_volume") @TableField("discharge_volume")
private double dischargeVolume; // 卸液量(Kg) 小数点两位 private double dischargeVolume; // 卸液量(Kg) 小数点两位
@ApiModelProperty(value = "对接接口版本")
protected String version = "v1";
} }
...@@ -82,5 +82,9 @@ public class TmCylinderInfo extends AbstractBaseEntity{ ...@@ -82,5 +82,9 @@ public class TmCylinderInfo extends AbstractBaseEntity{
*/ */
private String fillingMediaName; private String fillingMediaName;
@ApiModelProperty(value = "对接接口版本")
protected String version = "v1";
@ApiModelProperty(value = "制造单位统一信用代码")
private String manufacturingUnitCreditCode;
} }
...@@ -3,30 +3,37 @@ package com.yeejoin.amos.api.openapi.face.orm.entity; ...@@ -3,30 +3,37 @@ package com.yeejoin.amos.api.openapi.face.orm.entity;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import java.lang.reflect.Method;
/** /**
* 气瓶检验信息 * 气瓶检验信息
* @author kinky
* *
* @author kinky
*/ */
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@Data @Data
@TableName("tm_cylinder_inspection") @TableName("tm_cylinder_inspection")
public class TmCylinderInspection extends AbstractBaseEntity{/** public class TmCylinderInspection extends AbstractBaseEntity {
*
*/ private static final long serialVersionUID = 1L;
private static final long serialVersionUID = 1L; @TableField("scrap_quantity")
@TableField("scrap_quantity") private String scrapQuantity; //不合格报废数量
private String scrapQuantity; //不合格报废数量 @TableField("inspection_unit")
@TableField("inspection_unit") private String inspectionUnit; //检验单位*
private String inspectionUnit; //检验单位* @TableField("sequence_code")
@TableField("sequence_code") private String sequenceCode; //气瓶唯一标识码*
private String sequenceCode; //气瓶唯一标识码* @TableField("inspection_date")
@TableField("inspection_date") private String inspectionDate; //检验日期*
private String inspectionDate; //检验日期* @TableField("next_inspection_date")
@TableField("next_inspection_date") private String nextInspectionDate; //下次检验日期*
private String nextInspectionDate; //下次检验日期* @TableField("inspection_result")
@TableField("inspection_result") private String inspectionResult; //检验结果*
private String inspectionResult; //检验结果*
@ApiModelProperty(value = "对接接口版本")
protected String version = "v1";
} }
...@@ -3,6 +3,7 @@ package com.yeejoin.amos.api.openapi.face.orm.entity; ...@@ -3,6 +3,7 @@ package com.yeejoin.amos.api.openapi.face.orm.entity;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
/** /**
...@@ -27,4 +28,6 @@ public class TmCylinderTags extends AbstractBaseEntity{/** ...@@ -27,4 +28,6 @@ public class TmCylinderTags extends AbstractBaseEntity{/**
@TableField("gas_cylinder_stamp") @TableField("gas_cylinder_stamp")
private String gasCylinderStamp;//气瓶钢印标识 private String gasCylinderStamp;//气瓶钢印标识
@ApiModelProperty(value = "对接接口版本")
protected String version = "v1";
} }
...@@ -3,6 +3,7 @@ package com.yeejoin.amos.api.openapi.face.orm.entity; ...@@ -3,6 +3,7 @@ package com.yeejoin.amos.api.openapi.face.orm.entity;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
/** /**
...@@ -40,31 +41,47 @@ public class TmCylinderUnit extends AbstractBaseEntity{/** ...@@ -40,31 +41,47 @@ public class TmCylinderUnit extends AbstractBaseEntity{/**
private String securityAdmPhone; private String securityAdmPhone;
@TableField("postal_code") @TableField("postal_code")
private String postalCode; //企业邮编 private String postalCode; //企业邮编
@TableField("unit_abbreviation")
private String unitAbbreviation; //企业简称 // @TableField("unit_abbreviation")
@TableField("filling_license") // private String unitAbbreviation; //企业简称
private String fillingLicense; //充装许可证号 // @TableField("filling_license")
@TableField("filling_permit_date") // private String fillingLicense; //充装许可证号
private String fillingPermitDate; //充装许可证有效期 // @TableField("filling_permit_date")
@TableField("filling_perm_scope") // private String fillingPermitDate; //充装许可证有效期
private String fillingPermScope; //充装许可范围 // @TableField("filling_perm_scope")
@TableField("inspection_license") // private String fillingPermScope; //充装许可范围
private String inspectionLicense; //检验许可证号 // @TableField("inspection_license")
@TableField("inspection_scope") // private String inspectionLicense; //检验许可证号
private String inspectionScope; //检验范围 // @TableField("inspection_scope")
@TableField("effective_date") // private String inspectionScope; //检验范围
private String effectiveDate; //检验许可证有效期 // @TableField("effective_date")
@TableField("manufacturing_license") // private String effectiveDate; //检验许可证有效期
private String manufacturingLicense; //制造许可证号 // @TableField("manufacturing_license")
@TableField("manufacturing_date") // private String manufacturingLicense; //制造许可证号
private String manufacturingDate; //制造许可证有效期 // @TableField("manufacturing_date")
@TableField("manufacturing_scope") // private String manufacturingDate; //制造许可证有效期
private String manufacturingScope; //制造许可范围 // @TableField("manufacturing_scope")
@TableField("manufacturing_unit_code") // private String manufacturingScope; //制造许可范围
private String manufacturingUnitCode; //制造单位代码 // @TableField("manufacturing_unit_code")
// private String manufacturingUnitCode; //制造单位代码
/** /**
* 所属区域 * 所属区域
*/ */
private String regionName; private String regionName;
@ApiModelProperty(value = "企业资质附件")
@TableField("qualification_file")
private String qualificationFile;
@ApiModelProperty(value = "使用登记证附件")
@TableField("use_register_file")
private String useRegisterFile;
@ApiModelProperty(value = "设备汇总表附件")
@TableField("device_summary_file")
private String deviceSummaryFile;
@ApiModelProperty(value = "对接接口版本")
protected String version = "v1";
} }
...@@ -26,20 +26,21 @@ public class CylinderFillingDataValidationService { ...@@ -26,20 +26,21 @@ public class CylinderFillingDataValidationService {
@Autowired @Autowired
BaseEnterpriseInfoService enterpriseInfoService; BaseEnterpriseInfoService enterpriseInfoService;
@Autowired @Autowired
MidEquipRegistrationInfoMapper registrationInfoMapper; MidEquipRegistrationInfoMapper registrationInfoMapper;
/** /**
* 企业信息校验 * 企业信息校验
*
* @param unitData * @param unitData
* @return
*/ */
public boolean validatEcylinderUnit(List<TmCylinderUnitModel> unitData) { public void validateCylinderUnit(List<TmCylinderUnitModel> unitData) {
JSONArray jsonArray = JSONArray.fromObject(unitData); JSONArray jsonArray = JSONArray.fromObject(unitData);
// 1.必填校验 // 1.必填校验
List<String> errorRows = validateRequired(CylinderUnitFieldEnum.getAllRequireKeys(), jsonArray); List<String> errorRows = validateRequired(CylinderUnitFieldEnum.getAllRequireKeys(), jsonArray);
if (!ObjectUtils.isEmpty(errorRows)) { if (!ObjectUtils.isEmpty(errorRows)) {
throw new BadRequest(JSONArray.fromObject( errorRows.stream().map(e -> "必填字段不能为空:" + e).collect(Collectors.toList())).toString()); throw new BadRequest(JSONArray.fromObject( errorRows.stream().map(e -> "必填字段不能为空:" + e).collect(Collectors.toList())).toString());
} }
// 2.本次上传数据唯一性校验 // 2.本次上传数据唯一性校验
errorRows = validateUnique(CylinderUnitFieldEnum.getAllUniqueKeys(), jsonArray); errorRows = validateUnique(CylinderUnitFieldEnum.getAllUniqueKeys(), jsonArray);
...@@ -52,21 +53,20 @@ public class CylinderFillingDataValidationService { ...@@ -52,21 +53,20 @@ public class CylinderFillingDataValidationService {
// if (!ObjectUtils.isEmpty(errorRows)) { // if (!ObjectUtils.isEmpty(errorRows)) {
// throw new BadRequest(JSONArray.fromObject(errorRows.stream().map(e -> "企业统一社会信用代码不存在:" + e).collect(Collectors.toList())).toString()); // throw new BadRequest(JSONArray.fromObject(errorRows.stream().map(e -> "企业统一社会信用代码不存在:" + e).collect(Collectors.toList())).toString());
// } // }
return true;
} }
/** /**
* 校验气瓶基本信息数据 * 校验气瓶基本信息数据
*
* @param infoData * @param infoData
* @return
*/ */
public boolean validateCylinderInfo(List<TmCylinderInfoModel> infoData) { public void validateCylinderInfo(List<TmCylinderInfoModel> infoData) {
JSONArray jsonArray = JSONArray.fromObject(infoData); JSONArray jsonArray = JSONArray.fromObject(infoData);
// 1.必填校验 // 1.必填校验
List<String> errorRows = validateRequired(CylinderInfoFieldEnum.getAllRequireKeys(), jsonArray); List<String> errorRows = validateRequired(CylinderInfoFieldEnum.getAllRequireKeys(), jsonArray);
if (!ObjectUtils.isEmpty(errorRows)) { if (!ObjectUtils.isEmpty(errorRows)) {
throw new BadRequest(JSONArray.fromObject( errorRows.stream().map(e -> "必填字段不能为空:" + e).collect(Collectors.toList())).toString()); throw new BadRequest(JSONArray.fromObject( errorRows.stream().map(e -> "必填字段不能为空:" + e).collect(Collectors.toList())).toString());
} }
// 2.本次上传数据唯一性校验 // 2.本次上传数据唯一性校验
errorRows = validateUnique(CylinderInfoFieldEnum.getAllUniqueKeys(), jsonArray); errorRows = validateUnique(CylinderInfoFieldEnum.getAllUniqueKeys(), jsonArray);
...@@ -85,20 +85,19 @@ public class CylinderFillingDataValidationService { ...@@ -85,20 +85,19 @@ public class CylinderFillingDataValidationService {
// if (!ObjectUtils.isEmpty(errorRows)) { // if (!ObjectUtils.isEmpty(errorRows)) {
// throw new BadRequest(JSONArray.fromObject( errorRows.stream().map(e -> "企业统一社会信用代码不存在:" + e).collect(Collectors.toList())).toString()); // throw new BadRequest(JSONArray.fromObject( errorRows.stream().map(e -> "企业统一社会信用代码不存在:" + e).collect(Collectors.toList())).toString());
// } // }
return true;
} }
/** /**
* 校验气瓶标签 * 校验气瓶标签
*
* @param tagData * @param tagData
* @return
*/ */
public boolean validateCylinderTag(List<TmCylinderTagsModel> tagData) { public void validateCylinderTag(List<TmCylinderTagsModel> tagData) {
JSONArray jsonArray = JSONArray.fromObject(tagData); JSONArray jsonArray = JSONArray.fromObject(tagData);
// 1.必填校验 // 1.必填校验
List<String> errorRows = validateRequired(CylinderTagFieldEnum.getAllRequireKeys(), jsonArray); List<String> errorRows = validateRequired(CylinderTagFieldEnum.getAllRequireKeys(), jsonArray);
if (!ObjectUtils.isEmpty(errorRows)) { if (!ObjectUtils.isEmpty(errorRows)) {
throw new BadRequest(JSONArray.fromObject( errorRows.stream().map(e -> "必填字段不能为空:" + e).collect(Collectors.toList())).toString()); throw new BadRequest(JSONArray.fromObject( errorRows.stream().map(e -> "必填字段不能为空:" + e).collect(Collectors.toList())).toString());
} }
// 2.本次上传数据唯一性校验 // 2.本次上传数据唯一性校验
...@@ -112,20 +111,19 @@ public class CylinderFillingDataValidationService { ...@@ -112,20 +111,19 @@ public class CylinderFillingDataValidationService {
// if (!ObjectUtils.isEmpty(errorRows)) { // if (!ObjectUtils.isEmpty(errorRows)) {
// throw new BadRequest(JSONArray.fromObject( errorRows.stream().map(e -> "气瓶唯一标识码不存在:" + e).collect(Collectors.toList())).toString()); // throw new BadRequest(JSONArray.fromObject( errorRows.stream().map(e -> "气瓶唯一标识码不存在:" + e).collect(Collectors.toList())).toString());
// } // }
return true;
} }
/** /**
* 气瓶检验信息 * 气瓶检验信息
*
* @param inspectionData * @param inspectionData
* @return
*/ */
public boolean validateCylinderInspection(List<TmCylinderInspectionModel> inspectionData) { public void validateCylinderInspection(List<TmCylinderInspectionModel> inspectionData) {
JSONArray jsonArray = JSONArray.fromObject(inspectionData); JSONArray jsonArray = JSONArray.fromObject(inspectionData);
// 1.必填校验 // 1.必填校验
List<String> errorRows = validateRequired(CylinderInspectionFieldEnum.getAllRequireKeys(), jsonArray); List<String> errorRows = validateRequired(CylinderInspectionFieldEnum.getAllRequireKeys(), jsonArray);
if (!ObjectUtils.isEmpty(errorRows)) { if (!ObjectUtils.isEmpty(errorRows)) {
throw new BadRequest(JSONArray.fromObject( errorRows.stream().map(e -> "必填字段不能为空:" + e).collect(Collectors.toList())).toString()); throw new BadRequest(JSONArray.fromObject( errorRows.stream().map(e -> "必填字段不能为空:" + e).collect(Collectors.toList())).toString());
} }
// 2.本次上传数据唯一性校验 // 2.本次上传数据唯一性校验
...@@ -139,21 +137,20 @@ public class CylinderFillingDataValidationService { ...@@ -139,21 +137,20 @@ public class CylinderFillingDataValidationService {
// if (!ObjectUtils.isEmpty(errorRows)) { // if (!ObjectUtils.isEmpty(errorRows)) {
// throw new BadRequest(JSONArray.fromObject( errorRows.stream().map(e -> "气瓶唯一标识码不存在:" + e).collect(Collectors.toList())).toString()); // throw new BadRequest(JSONArray.fromObject( errorRows.stream().map(e -> "气瓶唯一标识码不存在:" + e).collect(Collectors.toList())).toString());
// } // }
return true;
} }
/** /**
* 校验审核信息 * 校验审核信息
*
* @param inspectionData * @param inspectionData
* @return
*/ */
public boolean validateCylinderFillingExamineModel(List<TmCylinderFillingExamineModel> inspectionData) { public void validateCylinderFillingExamineModel(List<TmCylinderFillingExamineModel> inspectionData) {
JSONArray jsonArray = JSONArray.fromObject(inspectionData); JSONArray jsonArray = JSONArray.fromObject(inspectionData);
// 1.必填校验 // 1.必填校验
List<String> errorRows = validateRequired(CylinderFillingAuditFieldEnum.getAllRequireKeys(), jsonArray); List<String> errorRows = validateRequired(CylinderFillingAuditFieldEnum.getAllRequireKeys(), jsonArray);
if (!ObjectUtils.isEmpty(errorRows)) { if (!ObjectUtils.isEmpty(errorRows)) {
throw new BadRequest(JSONArray.fromObject( errorRows.stream().map(e -> "必填字段不能为空:" + e).collect(Collectors.toList())).toString()); throw new BadRequest(JSONArray.fromObject( errorRows.stream().map(e -> "必填字段不能为空:" + e).collect(Collectors.toList())).toString());
} }
// 2.本次上传数据唯一性校验 // 2.本次上传数据唯一性校验
...@@ -167,7 +164,6 @@ public class CylinderFillingDataValidationService { ...@@ -167,7 +164,6 @@ public class CylinderFillingDataValidationService {
// if (!ObjectUtils.isEmpty(errorRows)) { // if (!ObjectUtils.isEmpty(errorRows)) {
// throw new BadRequest(JSONArray.fromObject( errorRows.stream().map(e -> "气瓶唯一标识码不存在:" + e).collect(Collectors.toList())).toString()); // throw new BadRequest(JSONArray.fromObject( errorRows.stream().map(e -> "气瓶唯一标识码不存在:" + e).collect(Collectors.toList())).toString());
// } // }
return true;
} }
/** /**
...@@ -375,7 +371,7 @@ public class CylinderFillingDataValidationService { ...@@ -375,7 +371,7 @@ public class CylinderFillingDataValidationService {
public List<String> getNotExistEnterpriseInfoByCreditCode(Set<String> creditCodes) { public List<String> getNotExistEnterpriseInfoByCreditCode(Set<String> creditCodes) {
List<TzBaseEnterpriseInfoDto> enterpriseInfos = enterpriseInfoService.getEnterpriseInfoByCreditCode(creditCodes); List<TzBaseEnterpriseInfoDto> enterpriseInfos = enterpriseInfoService.getEnterpriseInfoByCreditCode(creditCodes);
if (enterpriseInfos.size() < creditCodes.size()) { if (enterpriseInfos.size() < creditCodes.size()) {
List<String> userCodes = enterpriseInfos.stream().map(e -> e.getUseCode()).collect(Collectors.toList()); List<String> userCodes = enterpriseInfos.stream().map(TzBaseEnterpriseInfoDto::getUseCode).collect(Collectors.toList());
return creditCodes.stream().filter(c -> !userCodes.contains(c)).collect(Collectors.toList()); return creditCodes.stream().filter(c -> !userCodes.contains(c)).collect(Collectors.toList());
} }
return null; return null;
......
...@@ -9,7 +9,7 @@ import com.yeejoin.amos.api.openapi.face.orm.dao.ESCylinderInfoRepository; ...@@ -9,7 +9,7 @@ import com.yeejoin.amos.api.openapi.face.orm.dao.ESCylinderInfoRepository;
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;
import com.yeejoin.amos.boot.module.cylinder.api.entity.ESCylinderInfoDto; import com.yeejoin.amos.boot.module.cylinder.api.entity.ESCylinderInfoDto;
import com.yeejoin.amos.boot.module.cylinder.flc.api.dto.CylinderInfoDto; import com.yeejoin.amos.boot.module.cylinder.api.enums.CylDictEnum;
import com.yeejoin.amos.boot.module.cylinder.flc.api.entity.*; import com.yeejoin.amos.boot.module.cylinder.flc.api.entity.*;
import com.yeejoin.amos.boot.module.cylinder.flc.api.mapper.*; import com.yeejoin.amos.boot.module.cylinder.flc.api.mapper.*;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -26,6 +26,7 @@ import org.typroject.tyboot.core.foundation.utils.Bean; ...@@ -26,6 +26,7 @@ import org.typroject.tyboot.core.foundation.utils.Bean;
import java.text.ParseException; import java.text.ParseException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@Slf4j @Slf4j
...@@ -77,6 +78,9 @@ public class SyncCylinderDataService { ...@@ -77,6 +78,9 @@ public class SyncCylinderDataService {
@Autowired @Autowired
EmqKeeper emqKeeper; EmqKeeper emqKeeper;
@Autowired
TmCylinderInfoService tmCylinderInfoService;
@Value("${cylinder.filling.insert.topic:cylinder/filling/insert/topic}") @Value("${cylinder.filling.insert.topic:cylinder/filling/insert/topic}")
private String insertTopic; private String insertTopic;
...@@ -87,6 +91,13 @@ public class SyncCylinderDataService { ...@@ -87,6 +91,13 @@ public class SyncCylinderDataService {
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);
// 处理字典值
cylinderUnitList.forEach(cylinderInfo -> {
cylinderInfo.setCylinderStatus(Objects.requireNonNull(CylDictEnum.getEnum(cylinderInfo.getCylinderStatus(),
CylDictEnum.cylinder_Status_0.getKey())).getSeqNbr());
cylinderInfo.setCylinderVariety(Objects.requireNonNull(CylDictEnum.getEnum(cylinderInfo.getCylinderVariety(),
CylDictEnum.cylinder_Variety_1.getKey())).getSeqNbr());
});
cylinderInfoMapper.saveOrUpdateBatch(cylinderUnitList); cylinderInfoMapper.saveOrUpdateBatch(cylinderUnitList);
} }
...@@ -98,11 +109,18 @@ public class SyncCylinderDataService { ...@@ -98,11 +109,18 @@ public class SyncCylinderDataService {
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);
cylinderFillingRecordList.forEach(cylinderFillingRecord -> {
cylinderFillingRecord.setAbnormal(Objects.requireNonNull(CylDictEnum.getEnum(cylinderFillingRecord.getAbnormal(), CylDictEnum.abnormal_0.getKey())).getSeqNbr());
});
cylCylinderFillingCheckMapper.batchInsertOrUpdate(cylinderFillingRecordList); cylCylinderFillingCheckMapper.batchInsertOrUpdate(cylinderFillingRecordList);
} }
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);
cylinderInspectionList.forEach(cylinderInspection -> {
cylinderInspection.setInspectionResult(Objects.requireNonNull(CylDictEnum.getEnum(Integer.valueOf(cylinderInspection.getInspectionResult()),
CylDictEnum.inspection_Result_0.getKey())).getSeqNbr().toString());
});
cylinderInspectionMapper.saveOrUpdateBatch(cylinderInspectionList); cylinderInspectionMapper.saveOrUpdateBatch(cylinderInspectionList);
} }
...@@ -113,11 +131,38 @@ public class SyncCylinderDataService { ...@@ -113,11 +131,38 @@ public class SyncCylinderDataService {
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);
cylinderFillingList.forEach(cylinderFilling -> {
cylinderFilling.setIsValid(String.valueOf(Objects.requireNonNull(CylDictEnum.getEnum(Integer.valueOf(cylinderFilling.getIsValid()), CylDictEnum.isValid_0.getKey()))));
cylinderFilling.setSame(Objects.requireNonNull(CylDictEnum.getEnum(cylinderFilling.getSame(),
CylDictEnum.same_0.getKey())).getSeqNbr());
cylinderFilling.setIsRegulations(Objects.requireNonNull(CylDictEnum.getEnum(cylinderFilling.getIsRegulations(),
CylDictEnum.isRegulations_0.getKey())).getSeqNbr());
cylinderFilling.setIsComplianceWithgbt(Objects.requireNonNull(CylDictEnum.getEnum(cylinderFilling.getIsComplianceWithgbt(),
CylDictEnum.isComplianceWithGBT_0.getKey())).getSeqNbr());
cylinderFilling.setHaveStillPressure(Objects.requireNonNull(CylDictEnum.getEnum(cylinderFilling.getHaveStillPressure(),
CylDictEnum.haveStillPressure_0.getKey())).getSeqNbr());
cylinderFilling.setIsComplete(Objects.requireNonNull(CylDictEnum.getEnum(cylinderFilling.getIsComplete(),
CylDictEnum.isComplete_0.getKey())).getSeqNbr());
cylinderFilling.setHaveSecurityDocuments(Objects.requireNonNull(CylDictEnum.getEnum(cylinderFilling.getHaveSecurityDocuments(),
CylDictEnum.SecurityDocuments_0.getKey())).getSeqNbr());
});
cylCylinderFillingCheckMapper.saveAndBatchInsert(cylinderFillingList); cylCylinderFillingCheckMapper.saveAndBatchInsert(cylinderFillingList);
} }
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);
cylinderFillingChecList.forEach(cylinderFillingCheck -> {
cylinderFillingCheck.setAbnormalTemperature(Objects.requireNonNull(CylDictEnum.getEnum(cylinderFillingCheck.getAbnormalTemperature(),
CylDictEnum.abnormalTemperature_0.getKey())).getSeqNbr());
cylinderFillingCheck.setSealedState(Objects.requireNonNull(CylDictEnum.getEnum(cylinderFillingCheck.getSealedState(),
CylDictEnum.sealedState_0.getKey())).getSeqNbr());
cylinderFillingCheck.setWarningSign(Objects.requireNonNull(CylDictEnum.getEnum(cylinderFillingCheck.getWarningSign(),
CylDictEnum.warningSign_0.getKey())).getSeqNbr());
cylinderFillingCheck.setDefective(Objects.requireNonNull(CylDictEnum.getEnum(cylinderFillingCheck.getDefective(),
CylDictEnum.defective_0.getKey())).getSeqNbr());
cylinderFillingCheck.setWithinScope(Objects.requireNonNull(CylDictEnum.getEnum(cylinderFillingCheck.getWithinScope(),
CylDictEnum.withinScope_0.getKey())).getSeqNbr());
});
cylinderFillingCheckMapper.saveOrUpdateByCondition(cylinderFillingChecList); cylinderFillingCheckMapper.saveOrUpdateByCondition(cylinderFillingChecList);
} }
...@@ -130,6 +175,7 @@ public class SyncCylinderDataService { ...@@ -130,6 +175,7 @@ public class SyncCylinderDataService {
cylinderFillingRecord.stream().map(item -> { cylinderFillingRecord.stream().map(item -> {
List<ESCylinderFillingRecordDto> collect = cylinderFillingRecordInfo.stream().filter(e -> item.getAppIdAndSequenceCode().equals(e.getAppIdAndSequenceCode())).collect(Collectors.toList()); List<ESCylinderFillingRecordDto> collect = cylinderFillingRecordInfo.stream().filter(e -> item.getAppIdAndSequenceCode().equals(e.getAppIdAndSequenceCode())).collect(Collectors.toList());
if (!ObjectUtils.isEmpty(collect)) { if (!ObjectUtils.isEmpty(collect)) {
item.setSequenceNbr(collect.get(0).getSequenceNbr());
item.setUnitName(collect.get(0).getUnitName()); item.setUnitName(collect.get(0).getUnitName());
item.setFactoryNum(collect.get(0).getFactoryNum()); item.setFactoryNum(collect.get(0).getFactoryNum());
item.setCylinderVariety(collect.get(0).getCylinderVariety()); item.setCylinderVariety(collect.get(0).getCylinderVariety());
...@@ -149,7 +195,7 @@ public class SyncCylinderDataService { ...@@ -149,7 +195,7 @@ public class SyncCylinderDataService {
} }
} }
return item; return item;
}).collect(Collectors.toList()); });
saveCylinderFillingRecord2ES(cylinderFillingRecord); saveCylinderFillingRecord2ES(cylinderFillingRecord);
} }
} }
...@@ -181,32 +227,33 @@ public class SyncCylinderDataService { ...@@ -181,32 +227,33 @@ public class SyncCylinderDataService {
} }
} }
/**
public void createCylinderInfo2ES(TmCylinderInfoModel cylinderInfoModel) { * 同步气瓶信息至业务es
CylinderInfoDto cylinderInfoDto = Bean.toModel(cylinderInfoModel, new CylinderInfoDto()); * @param cylinderInfoModel
List<ESCylinderInfoDto> esCylinderInfoDto = new ArrayList<>(); */
ESCylinderInfoDto esCylinderInfo = new ESCylinderInfoDto(); public void createCylinderInfo2ES(List<TmCylinderInfoModel> cylinderInfoModel) {
BeanUtils.copyProperties(cylinderInfoDto, esCylinderInfo); List<String> seqCodeList = Lists.newArrayList();
esCylinderInfoDto.add(esCylinderInfo); String appId = tmCylinderInfoService.getAppId();
try { List<ESCylinderInfoDto> esCylinderInfoDtoList = Bean.toModels(cylinderInfoModel, ESCylinderInfoDto.class);
esCylinderInfo.setInspectionDateMs(ObjectUtils.isEmpty(esCylinderInfo.getInspectionDate()) ? 0L : DateUtils.dateParse(esCylinderInfo.getInspectionDate(), DateUtils.DATE_TIME_PATTERN).getTime()); esCylinderInfoDtoList.forEach(es -> {
} catch (ParseException e) { try {
throw new RuntimeException(e); es.setInspectionDateMs(ObjectUtils.isEmpty(es.getInspectionDate()) ? 0L : DateUtils.dateParse(es.getInspectionDate(), DateUtils.DATE_TIME_PATTERN).getTime());
} seqCodeList.add(es.getSequenceCode());
} catch (ParseException e) {
List<String> ids = Lists.newArrayList(); throw new RuntimeException(e);
}
});
StopWatch stopWatch = new StopWatch(); StopWatch stopWatch = new StopWatch();
stopWatch.start(); stopWatch.start();
esCylinderInfoRepository.saveAll(esCylinderInfoDto); esCylinderInfoRepository.saveAll(esCylinderInfoDtoList);
ids.add(String.valueOf(cylinderInfoDto.getSequenceNbr()));
stopWatch.stop(); stopWatch.stop();
if (log.isInfoEnabled()) { if (log.isInfoEnabled()) {
log.info("存入es耗时:{} 秒", stopWatch.getTotalTimeSeconds()); log.info("存入es耗时:{} 秒", stopWatch.getTotalTimeSeconds());
} }
StopWatch stopWatch1 = new StopWatch(); StopWatch stopWatch1 = new StopWatch();
stopWatch1.start(); stopWatch1.start();
cylinderInfoMapper.updateEsCylinderInfoStatus(ids); cylinderInfoMapper.updateCylinderInfoEsStatusBySeqCodes(appId, seqCodeList);
stopWatch1.stop(); stopWatch1.stop();
if (log.isInfoEnabled()) { if (log.isInfoEnabled()) {
log.info("更新业务数据耗时:{} 秒", stopWatch1.getTotalTimeSeconds()); log.info("更新业务数据耗时:{} 秒", stopWatch1.getTotalTimeSeconds());
......
package com.yeejoin.amos.api.openapi.face.service; package com.yeejoin.amos.api.openapi.face.service;
import java.util.Date;
import java.util.List;
import com.baomidou.dynamic.datasource.annotation.DSTransactional; import com.baomidou.dynamic.datasource.annotation.DSTransactional;
import com.yeejoin.amos.boot.module.cylinder.flc.api.dto.CylinderFillingCheckDto; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.yeejoin.amos.boot.module.cylinder.flc.api.dto.CylinderFillingDto; import com.yeejoin.amos.api.openapi.face.model.TmCylinderFillingCheckModel;
import com.yeejoin.amos.api.openapi.face.orm.dao.TmCylinderFillingCheckMapper;
import com.yeejoin.amos.api.openapi.face.orm.entity.TmCylinderFillingCheck;
import com.yeejoin.amos.api.openapi.service.MyBaseServiceImpl;
import com.yeejoin.amos.api.openapi.util.MultiFieldKey;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.typroject.tyboot.component.cache.Redis;
import org.typroject.tyboot.core.foundation.context.RequestContext;
import org.typroject.tyboot.core.foundation.utils.Bean; import org.typroject.tyboot.core.foundation.utils.Bean;
import org.typroject.tyboot.core.rdbms.service.BaseService;
import com.yeejoin.amos.api.openapi.constant.Constant; import java.util.Date;
import com.yeejoin.amos.api.openapi.face.model.BizTokenModel; import java.util.List;
import com.yeejoin.amos.api.openapi.face.model.TmCylinderFillingCheckModel;
import com.yeejoin.amos.api.openapi.face.orm.dao.TmCylinderFillingCheckMapper;
import com.yeejoin.amos.api.openapi.face.orm.entity.TmCylinderFillingCheck;
/** /**
...@@ -33,33 +27,38 @@ import com.yeejoin.amos.api.openapi.face.orm.entity.TmCylinderFillingCheck; ...@@ -33,33 +27,38 @@ import com.yeejoin.amos.api.openapi.face.orm.entity.TmCylinderFillingCheck;
* @version $Id: ElevatorService.java, v 0.1 2021年9月30日 下午3:28:55 gwb Exp $ * @version $Id: ElevatorService.java, v 0.1 2021年9月30日 下午3:28:55 gwb Exp $
*/ */
@Component @Component
public class TmCylinderFillingCheckService extends BaseService<TmCylinderFillingCheckModel, TmCylinderFillingCheck, TmCylinderFillingCheckMapper> { public class TmCylinderFillingCheckService extends MyBaseServiceImpl<TmCylinderFillingCheckModel, TmCylinderFillingCheck, TmCylinderFillingCheckMapper> {
@Autowired
private RedisTemplate redisTemplate;
@Autowired @Autowired
private SyncCylinderDataService syncCylinderDataService; private SyncCylinderDataService syncCylinderDataService;
@DSTransactional @DSTransactional
public String createCylinderFillingAfter(List<TmCylinderFillingCheckModel> model) { @Transactional
// TODO Auto-generated method stub public void createCylinderFillingAfter(List<TmCylinderFillingCheckModel> model) {
// if (ValidationUtil.isEmpty(model)) String appId = getAppId();
// throw new BadRequest("气瓶标签信息为空."); Date now = new Date();
syncCylinderFillingAfter(model);
for (TmCylinderFillingCheckModel cylinderFillingCheckModel : model) { for (TmCylinderFillingCheckModel cylinderFillingCheckModel : model) {
cylinderFillingCheckModel.setRecDate(new Date()); cylinderFillingCheckModel.setSequenceNbr(null);
cylinderFillingCheckModel.setAppId(getAppId()); cylinderFillingCheckModel.setRecDate(now);
this.createWithModel(cylinderFillingCheckModel); cylinderFillingCheckModel.setAppId(appId);
} }
return "OK"; // 同步至气瓶业务库
syncCylinderFillingAfter(model);
List<TmCylinderFillingCheck> tmCylinderFillingCheckList = Bean.toModels(model, TmCylinderFillingCheck.class);
saveOrUpdateBatchByUniqueFields(
tmCylinderFillingCheckList,
tmCylinderFillingCheck -> new LambdaQueryWrapper<TmCylinderFillingCheck>()
.eq(TmCylinderFillingCheck::getAppId, tmCylinderFillingCheck.getAppId())
.eq(TmCylinderFillingCheck::getSequenceCode, tmCylinderFillingCheck.getSequenceCode())
.eq(TmCylinderFillingCheck::getFillingCheckId, tmCylinderFillingCheck.getFillingCheckId()),
entity -> new MultiFieldKey(entity.getFillingCheckId()),
"appId",
"sequenceCode",
"fillingCheckId");
} }
private void syncCylinderFillingAfter(List<TmCylinderFillingCheckModel> model) { private void syncCylinderFillingAfter(List<TmCylinderFillingCheckModel> model) {
syncCylinderDataService.syncCylinderFillingAfter(model); syncCylinderDataService.syncCylinderFillingAfter(model);
} }
private String getAppId() {
String tokenKey = Redis.genKey(Constant.TOKEN_PREFIX,RequestContext.getToken());
BizTokenModel bizTokenModel = (BizTokenModel) redisTemplate.opsForValue().get(tokenKey);
return bizTokenModel.getAppId();
}
} }
package com.yeejoin.amos.api.openapi.face.service; package com.yeejoin.amos.api.openapi.face.service;
import java.util.Date;
import java.util.List;
import com.baomidou.dynamic.datasource.annotation.DSTransactional; import com.baomidou.dynamic.datasource.annotation.DSTransactional;
import com.yeejoin.amos.api.openapi.face.model.TmCylinderUnitModel; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.yeejoin.amos.boot.module.cylinder.flc.api.dto.CylinderFillingExamineDto; import com.yeejoin.amos.api.openapi.face.model.TmCylinderFillingExamineModel;
import com.yeejoin.amos.boot.module.cylinder.flc.api.dto.CylinderUnitDto; import com.yeejoin.amos.api.openapi.face.orm.dao.TmCylinderFillingExamineMapper;
import com.yeejoin.amos.api.openapi.face.orm.entity.TmCylinderFillingExamine;
import com.yeejoin.amos.api.openapi.service.MyBaseServiceImpl;
import com.yeejoin.amos.api.openapi.util.MultiFieldKey;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.typroject.tyboot.component.cache.Redis;
import org.typroject.tyboot.core.foundation.context.RequestContext;
import org.typroject.tyboot.core.foundation.utils.Bean; import org.typroject.tyboot.core.foundation.utils.Bean;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil; import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import org.typroject.tyboot.core.rdbms.service.BaseService;
import org.typroject.tyboot.core.restful.exception.instance.BadRequest; import org.typroject.tyboot.core.restful.exception.instance.BadRequest;
import com.yeejoin.amos.api.openapi.constant.Constant; import java.util.Date;
import com.yeejoin.amos.api.openapi.face.model.BizTokenModel; import java.util.List;
import com.yeejoin.amos.api.openapi.face.model.TmCylinderFillingExamineModel;
import com.yeejoin.amos.api.openapi.face.orm.dao.TmCylinderFillingExamineMapper;
import com.yeejoin.amos.api.openapi.face.orm.entity.TmCylinderFillingExamine;
/** /**
...@@ -36,31 +29,36 @@ import com.yeejoin.amos.api.openapi.face.orm.entity.TmCylinderFillingExamine; ...@@ -36,31 +29,36 @@ import com.yeejoin.amos.api.openapi.face.orm.entity.TmCylinderFillingExamine;
* @version $Id: ElevatorService.java, v 0.1 2021年9月30日 下午3:28:55 gwb Exp $ * @version $Id: ElevatorService.java, v 0.1 2021年9月30日 下午3:28:55 gwb Exp $
*/ */
@Component @Component
public class TmCylinderFillingExamineService extends BaseService<TmCylinderFillingExamineModel, TmCylinderFillingExamine, TmCylinderFillingExamineMapper> { public class TmCylinderFillingExamineService extends MyBaseServiceImpl<TmCylinderFillingExamineModel, TmCylinderFillingExamine, TmCylinderFillingExamineMapper> {
@Autowired
private RedisTemplate redisTemplate;
@Autowired @Autowired
private SyncCylinderDataService syncCylinderDataService; private SyncCylinderDataService syncCylinderDataService;
@DSTransactional @DSTransactional
@Transactional(rollbackFor = Exception.class)
public String createCylinderFillingExamine(List<TmCylinderFillingExamineModel> model) { public String createCylinderFillingExamine(List<TmCylinderFillingExamineModel> model) {
// TODO Auto-generated method stub
if (ValidationUtil.isEmpty(model)) if (ValidationUtil.isEmpty(model))
throw new BadRequest("液化气体气瓶充装信息审核为空."); throw new BadRequest("液化气体气瓶充装信息审核为空.");
syncCylinderFillingExamine(model);
for (TmCylinderFillingExamineModel cylinderFillingExamineModel : model) { for (TmCylinderFillingExamineModel cylinderFillingExamineModel : model) {
cylinderFillingExamineModel.setRecDate(new Date()); cylinderFillingExamineModel.setRecDate(new Date());
cylinderFillingExamineModel.setAppId(getAppId()); cylinderFillingExamineModel.setAppId(getAppId());
this.createWithModel(cylinderFillingExamineModel);
} }
return "OK"; // 同步至气瓶业务库
} syncCylinderFillingExamine(model);
private String getAppId() { List<TmCylinderFillingExamine> tmCylinderFillingExamineList = Bean.toModels(model, TmCylinderFillingExamine.class);
String tokenKey = Redis.genKey(Constant.TOKEN_PREFIX,RequestContext.getToken()); this.saveOrUpdateBatchByUniqueFields(
BizTokenModel bizTokenModel = (BizTokenModel) redisTemplate.opsForValue().get(tokenKey); tmCylinderFillingExamineList,
return bizTokenModel.getAppId(); tmCylinderFillingExamine -> new LambdaQueryWrapper<TmCylinderFillingExamine>()
.eq(TmCylinderFillingExamine::getAppId, getAppId())
.eq(TmCylinderFillingExamine::getSequenceCode, tmCylinderFillingExamine.getSequenceCode())
.eq(TmCylinderFillingExamine::getFillingExamineId, tmCylinderFillingExamine.getFillingExamineId()),
entity -> new MultiFieldKey(entity.getAppId(), entity.getSequenceCode(), entity.getFillingExamineId()),
"appId",
"sequenceCode",
"fillingExamineId");
return "OK";
} }
private void syncCylinderFillingExamine(List<TmCylinderFillingExamineModel> model ) { private void syncCylinderFillingExamine(List<TmCylinderFillingExamineModel> model ) {
......
package com.yeejoin.amos.api.openapi.face.service; package com.yeejoin.amos.api.openapi.face.service;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
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.baomidou.dynamic.datasource.annotation.DSTransactional;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.yeejoin.amos.api.openapi.face.model.TmCylinderFillingRecordModel;
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.api.openapi.face.orm.dao.TmCylinderFillingRecordMapper;
import com.yeejoin.amos.api.openapi.face.orm.entity.TmCylinderFillingRecord;
import com.yeejoin.amos.api.openapi.service.MyBaseServiceImpl;
import com.yeejoin.amos.api.openapi.util.MultiFieldKey;
import com.yeejoin.amos.boot.module.cylinder.api.entity.ESCylinderFillingRecordDto; import com.yeejoin.amos.boot.module.cylinder.api.entity.ESCylinderFillingRecordDto;
import com.yeejoin.amos.boot.module.cylinder.flc.api.dto.CylinderFillingRecordDto;
import com.yeejoin.amos.boot.module.cylinder.flc.api.dto.CylinderUnitDto;
import com.yeejoin.amos.boot.module.cylinder.flc.api.entity.CylinderFillingRecord;
import com.yeejoin.amos.boot.module.cylinder.flc.api.mapper.CylinderFillingRecordMapper; import com.yeejoin.amos.boot.module.cylinder.flc.api.mapper.CylinderFillingRecordMapper;
import org.springframework.beans.BeanUtils;
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;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.ObjectUtils;
import org.typroject.tyboot.component.cache.Redis;
import org.typroject.tyboot.core.foundation.context.RequestContext;
import org.typroject.tyboot.core.foundation.utils.Bean; import org.typroject.tyboot.core.foundation.utils.Bean;
import org.typroject.tyboot.core.rdbms.service.BaseService;
import com.yeejoin.amos.api.openapi.constant.Constant; import java.util.ArrayList;
import com.yeejoin.amos.api.openapi.face.model.BizTokenModel; import java.util.Date;
import com.yeejoin.amos.api.openapi.face.model.TmCylinderFillingRecordModel; import java.util.List;
import com.yeejoin.amos.api.openapi.face.orm.dao.TmCylinderFillingRecordMapper;
import com.yeejoin.amos.api.openapi.face.orm.entity.TmCylinderFillingRecord;
/** /**
...@@ -44,7 +33,7 @@ import com.yeejoin.amos.api.openapi.face.orm.entity.TmCylinderFillingRecord; ...@@ -44,7 +33,7 @@ import com.yeejoin.amos.api.openapi.face.orm.entity.TmCylinderFillingRecord;
* @version $Id: ElevatorService.java, v 0.1 2021年9月30日 下午3:28:55 gwb Exp $ * @version $Id: ElevatorService.java, v 0.1 2021年9月30日 下午3:28:55 gwb Exp $
*/ */
@Component @Component
public class TmCylinderFillingRecordService extends BaseService<TmCylinderFillingRecordModel, TmCylinderFillingRecord, TmCylinderFillingRecordMapper> { public class TmCylinderFillingRecordService extends MyBaseServiceImpl<TmCylinderFillingRecordModel, TmCylinderFillingRecord, TmCylinderFillingRecordMapper> {
@Autowired @Autowired
private RedisTemplate redisTemplate; private RedisTemplate redisTemplate;
...@@ -53,22 +42,35 @@ public class TmCylinderFillingRecordService extends BaseService<TmCylinderFillin ...@@ -53,22 +42,35 @@ public class TmCylinderFillingRecordService extends BaseService<TmCylinderFillin
@Autowired @Autowired
ESCylinderFillingRecordRepository esCylinderFillingRecordRepository; ESCylinderFillingRecordRepository esCylinderFillingRecordRepository;
@Autowired @Autowired
private SyncCylinderDataService syncCylinderDataService; private SyncCylinderDataService syncCylinderDataService;
@DSTransactional @DSTransactional
public String createCylinderFilling(List<TmCylinderFillingRecordModel> model) { @Transactional(rollbackFor = Exception.class)
// TODO Auto-generated method stub public void createCylinderFilling(List<TmCylinderFillingRecordModel> model) {
// if (ValidationUtil.isEmpty(model)) Date now = new Date();
// throw new BadRequest("气瓶标签信息为空."); String appId = getAppId();
syncCylinderFilling(model);
for (TmCylinderFillingRecordModel cylinderFillingRecordModel : model) { for (TmCylinderFillingRecordModel cylinderFillingRecordModel : model) {
cylinderFillingRecordModel.setRecDate(new Date()); cylinderFillingRecordModel.setSequenceNbr(null);
cylinderFillingRecordModel.setAppId(getAppId()); cylinderFillingRecordModel.setRecDate(now);
this.createWithModel(cylinderFillingRecordModel); cylinderFillingRecordModel.setAppId(appId);
} }
return "OK"; // 同步至气瓶业务库
syncCylinderFilling(model);
List<TmCylinderFillingRecord> tmCylinderFillingRecordList = Bean.toModels(model, TmCylinderFillingRecord.class);
this.saveOrUpdateBatchByUniqueFields(
tmCylinderFillingRecordList,
tmCylinderFillingRecord -> new LambdaQueryWrapper<TmCylinderFillingRecord>()
.eq(TmCylinderFillingRecord::getAppId, tmCylinderFillingRecord.getAppId())
.eq(TmCylinderFillingRecord::getSequenceCode, tmCylinderFillingRecord.getSequenceCode())
.eq(TmCylinderFillingRecord::getFillingRecordId, tmCylinderFillingRecord.getFillingRecordId()),
entity -> new MultiFieldKey(entity.getAppId(), entity.getSequenceCode(), entity.getFillingRecordId()),
"appId",
"sequenceCode",
"fillingRecordId"
);
} }
@DS("tzs") @DS("tzs")
...@@ -79,12 +81,6 @@ public class TmCylinderFillingRecordService extends BaseService<TmCylinderFillin ...@@ -79,12 +81,6 @@ public class TmCylinderFillingRecordService extends BaseService<TmCylinderFillin
syncCylinderDataService.createCylinderFillingRecord(models); syncCylinderDataService.createCylinderFillingRecord(models);
} }
private String getAppId() {
String tokenKey = Redis.genKey(Constant.TOKEN_PREFIX,RequestContext.getToken());
BizTokenModel bizTokenModel = (BizTokenModel) redisTemplate.opsForValue().get(tokenKey);
return bizTokenModel.getAppId();
}
public List<String> getDateList() { public List<String> getDateList() {
return baseMapper.getDateList(); return baseMapper.getDateList();
} }
......
package com.yeejoin.amos.api.openapi.face.service; package com.yeejoin.amos.api.openapi.face.service;
import java.util.Date;
import java.util.List;
import com.baomidou.dynamic.datasource.annotation.DSTransactional; import com.baomidou.dynamic.datasource.annotation.DSTransactional;
import com.yeejoin.amos.api.openapi.face.model.TmCylinderUnitModel; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.yeejoin.amos.boot.module.cylinder.flc.api.dto.CylinderFillingDto; import com.yeejoin.amos.api.openapi.face.model.TmCylinderFillingModel;
import com.yeejoin.amos.boot.module.cylinder.flc.api.dto.CylinderInfoDto; import com.yeejoin.amos.api.openapi.face.orm.dao.TmCylinderFillingMapper;
import com.yeejoin.amos.boot.module.cylinder.flc.api.dto.CylinderUnitDto; import com.yeejoin.amos.api.openapi.face.orm.entity.TmCylinderFilling;
import com.yeejoin.amos.api.openapi.service.MyBaseServiceImpl;
import com.yeejoin.amos.api.openapi.util.MultiFieldKey;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.typroject.tyboot.component.cache.Redis;
import org.typroject.tyboot.core.foundation.context.RequestContext;
import org.typroject.tyboot.core.foundation.utils.Bean; import org.typroject.tyboot.core.foundation.utils.Bean;
import org.typroject.tyboot.core.rdbms.service.BaseService;
import com.yeejoin.amos.api.openapi.constant.Constant; import java.util.Date;
import com.yeejoin.amos.api.openapi.face.model.BizTokenModel; import java.util.List;
import com.yeejoin.amos.api.openapi.face.model.TmCylinderFillingModel;
import com.yeejoin.amos.api.openapi.face.orm.dao.TmCylinderFillingMapper;
import com.yeejoin.amos.api.openapi.face.orm.entity.TmCylinderFilling;
/** /**
...@@ -35,36 +27,36 @@ import com.yeejoin.amos.api.openapi.face.orm.entity.TmCylinderFilling; ...@@ -35,36 +27,36 @@ import com.yeejoin.amos.api.openapi.face.orm.entity.TmCylinderFilling;
* @version $Id: ElevatorService.java, v 0.1 2021年9月30日 下午3:28:55 gwb Exp $ * @version $Id: ElevatorService.java, v 0.1 2021年9月30日 下午3:28:55 gwb Exp $
*/ */
@Component @Component
public class TmCylinderFillingService extends BaseService<TmCylinderFillingModel, TmCylinderFilling, TmCylinderFillingMapper> { public class TmCylinderFillingService extends MyBaseServiceImpl<TmCylinderFillingModel, TmCylinderFilling, TmCylinderFillingMapper> {
@Autowired
private RedisTemplate redisTemplate;
@Autowired @Autowired
private SyncCylinderDataService syncCylinderDataService; private SyncCylinderDataService syncCylinderDataService;
@DSTransactional @DSTransactional
public String createCylinderFillingBefore(List<TmCylinderFillingModel> model) { @Transactional(rollbackFor = {java.lang.Exception.class})
// TODO Auto-generated method stub public void createCylinderFillingBefore(List<TmCylinderFillingModel> model) {
// if (ValidationUtil.isEmpty(model)) Date now = new Date();
// throw new BadRequest("气瓶标签信息为空."); String appId = getAppId();
syncCylinderFillingBefore(model);
for (TmCylinderFillingModel cylinderFillingModel : model) { for (TmCylinderFillingModel cylinderFillingModel : model) {
cylinderFillingModel.setRecDate(new Date()); cylinderFillingModel.setSequenceNbr(null);
cylinderFillingModel.setAppId(getAppId()); cylinderFillingModel.setRecDate(now);
this.createWithModel(cylinderFillingModel); cylinderFillingModel.setAppId(appId);
} }
return "OK"; List<TmCylinderFilling> tmCylinderFillingList = Bean.toModels(model, TmCylinderFilling.class);
// 同步至气瓶业务库
syncCylinderFillingBefore(model);
this.saveOrUpdateBatchByUniqueFields(
tmCylinderFillingList,
tmCylinderFilling -> new LambdaQueryWrapper<TmCylinderFilling>()
.eq(TmCylinderFilling::getAppId, tmCylinderFilling.getAppId())
.eq(TmCylinderFilling::getSequenceCode, tmCylinderFilling.getSequenceCode())
.eq(TmCylinderFilling::getFillingBeforeId, tmCylinderFilling.getFillingBeforeId()),
entity -> new MultiFieldKey(entity.getAppId(), entity.getSequenceCode(), entity.getFillingBeforeId()),
"appId", "sequenceCode", "fillingBeforeId");
} }
private void syncCylinderFillingBefore(List<TmCylinderFillingModel> model) { private void syncCylinderFillingBefore(List<TmCylinderFillingModel> model) {
syncCylinderDataService.syncCylinderFillingBefore(model); syncCylinderDataService.syncCylinderFillingBefore(model);
} }
}
private String getAppId() {
String tokenKey = Redis.genKey(Constant.TOKEN_PREFIX,RequestContext.getToken());
BizTokenModel bizTokenModel = (BizTokenModel) redisTemplate.opsForValue().get(tokenKey);
return bizTokenModel.getAppId();
}
}
package com.yeejoin.amos.api.openapi.face.service; package com.yeejoin.amos.api.openapi.face.service;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import com.baomidou.dynamic.datasource.annotation.DSTransactional; import com.baomidou.dynamic.datasource.annotation.DSTransactional;
import com.google.common.collect.Lists; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.yeejoin.amos.api.openapi.face.model.TmCylinderUnitModel; import com.yeejoin.amos.api.openapi.face.model.TmCylinderInfoModel;
import com.yeejoin.amos.api.openapi.face.orm.dao.ESCylinderInfoRepository; import com.yeejoin.amos.api.openapi.face.orm.dao.ESCylinderInfoRepository;
import com.yeejoin.amos.boot.biz.common.utils.DateUtils; import com.yeejoin.amos.api.openapi.face.orm.dao.TmCylinderInfoMapper;
import com.yeejoin.amos.boot.module.cylinder.api.entity.ESCylinderInfoDto; import com.yeejoin.amos.api.openapi.face.orm.entity.TmCylinderInfo;
import com.yeejoin.amos.boot.module.cylinder.flc.api.dto.CylinderInfoDto; import com.yeejoin.amos.api.openapi.service.MyBaseServiceImpl;
import com.yeejoin.amos.boot.module.cylinder.flc.api.dto.CylinderUnitDto; import com.yeejoin.amos.api.openapi.util.MultiFieldKey;
import com.yeejoin.amos.boot.module.cylinder.flc.api.mapper.CylinderInfoMapper; import com.yeejoin.amos.boot.module.cylinder.flc.api.mapper.CylinderInfoMapper;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
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;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.ObjectUtils;
import org.springframework.util.StopWatch;
import org.typroject.tyboot.component.cache.Redis;
import org.typroject.tyboot.core.foundation.context.RequestContext;
import org.typroject.tyboot.core.foundation.utils.Bean; import org.typroject.tyboot.core.foundation.utils.Bean;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil; import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import org.typroject.tyboot.core.rdbms.service.BaseService;
import org.typroject.tyboot.core.restful.exception.instance.BadRequest; import org.typroject.tyboot.core.restful.exception.instance.BadRequest;
import com.yeejoin.amos.api.openapi.constant.Constant; import java.util.Date;
import com.yeejoin.amos.api.openapi.face.model.BizTokenModel; import java.util.List;
import com.yeejoin.amos.api.openapi.face.model.TmCylinderInfoModel;
import com.yeejoin.amos.api.openapi.face.orm.dao.TmCylinderInfoMapper;
import com.yeejoin.amos.api.openapi.face.orm.entity.TmCylinderInfo;
/** /**
*
* <pre> * <pre>
*气瓶基本信息 服务类 * 气瓶基本信息 服务类
* </pre> * </pre>
* *
* @author gwb * @author gwb
...@@ -48,43 +33,50 @@ import com.yeejoin.amos.api.openapi.face.orm.entity.TmCylinderInfo; ...@@ -48,43 +33,50 @@ import com.yeejoin.amos.api.openapi.face.orm.entity.TmCylinderInfo;
*/ */
@Component @Component
@Slf4j @Slf4j
public class TmCylinderInfoService extends BaseService<TmCylinderInfoModel, TmCylinderInfo, TmCylinderInfoMapper> { public class TmCylinderInfoService extends MyBaseServiceImpl<TmCylinderInfoModel, TmCylinderInfo, TmCylinderInfoMapper> {
@Autowired @Autowired
private RedisTemplate redisTemplate; private RedisTemplate redisTemplate;
@Autowired @Autowired
CylinderInfoMapper cylinderInfoMapper; CylinderInfoMapper cylinderInfoMapper;
@Autowired @Autowired
private SyncCylinderDataService syncCylinderDataService; private SyncCylinderDataService syncCylinderDataService;
@Autowired @Autowired
ESCylinderInfoRepository esCylinderInfoRepository; ESCylinderInfoRepository esCylinderInfoRepository;
@DSTransactional
public String createCylinderInfo(List<TmCylinderInfoModel> model) {
// TODO Auto-generated method stub
if (ValidationUtil.isEmpty(model))
throw new BadRequest("气瓶基本信息数据为空.");
syncCylinderInfo(model);
for (TmCylinderInfoModel cylinderInfoModel : model) {
cylinderInfoModel.setRecDate(new Date());
cylinderInfoModel.setAppId(getAppId());
syncCylinderDataService.createCylinderInfo2ES(cylinderInfoModel);
this.createWithModel(cylinderInfoModel);
}
return "OK";
}
private void syncCylinderInfo(List<TmCylinderInfoModel> model ) {
syncCylinderDataService.syncCylinderInfo(model);
}
private String getAppId() {
String tokenKey = Redis.genKey(Constant.TOKEN_PREFIX,RequestContext.getToken());
BizTokenModel bizTokenModel = (BizTokenModel) redisTemplate.opsForValue().get(tokenKey);
return bizTokenModel.getAppId();
}
@DSTransactional
@Transactional(rollbackFor = {java.lang.Exception.class})
public String createCylinderInfo(List<TmCylinderInfoModel> model) {
if (ValidationUtil.isEmpty(model))
throw new BadRequest("气瓶基本信息数据为空.");
String appId = getAppId();
Date now = new Date();
for (TmCylinderInfoModel cylinderInfoModel : model) {
cylinderInfoModel.setSequenceNbr(null);
cylinderInfoModel.setRecDate(now);
cylinderInfoModel.setAppId(appId);
}
// 同步至企业业务库
syncCylinderInfo(model);
// 保存至气瓶对接服务库
List<TmCylinderInfo> tmCylinderInfoList = Bean.toModels(model, TmCylinderInfo.class);
this.saveOrUpdateBatchByUniqueFields(
tmCylinderInfoList,
tmCylinderInfo -> new LambdaQueryWrapper<TmCylinderInfo>()
.eq(TmCylinderInfo::getSequenceCode, tmCylinderInfo.getSequenceCode())
.eq(TmCylinderInfo::getAppId, tmCylinderInfo.getAppId()),
entity -> new MultiFieldKey(entity.getAppId(), entity.getSequenceCode()),
"appId", "sequenceCode");
syncCylinderDataService.createCylinderInfo2ES(model);
return "OK";
}
/**
* 同步气瓶信息至气瓶服务
*
* @param model
*/
private void syncCylinderInfo(List<TmCylinderInfoModel> model) {
syncCylinderDataService.syncCylinderInfo(model);
}
} }
package com.yeejoin.amos.api.openapi.face.service; package com.yeejoin.amos.api.openapi.face.service;
import java.util.Date;
import java.util.List;
import com.baomidou.dynamic.datasource.annotation.DSTransactional; import com.baomidou.dynamic.datasource.annotation.DSTransactional;
import com.yeejoin.amos.boot.module.cylinder.flc.api.dto.CylinderInspectionDto; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.yeejoin.amos.boot.module.cylinder.flc.api.dto.CylinderUnitDto; import com.yeejoin.amos.api.openapi.face.model.TmCylinderInspectionModel;
import com.yeejoin.amos.api.openapi.face.orm.dao.TmCylinderInspectionMapper;
import com.yeejoin.amos.api.openapi.face.orm.entity.TmCylinderInspection;
import com.yeejoin.amos.api.openapi.service.MyBaseServiceImpl;
import com.yeejoin.amos.api.openapi.util.MultiFieldKey;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.typroject.tyboot.component.cache.Redis;
import org.typroject.tyboot.core.foundation.context.RequestContext;
import org.typroject.tyboot.core.foundation.utils.Bean; import org.typroject.tyboot.core.foundation.utils.Bean;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil; import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import org.typroject.tyboot.core.rdbms.service.BaseService;
import org.typroject.tyboot.core.restful.exception.instance.BadRequest; import org.typroject.tyboot.core.restful.exception.instance.BadRequest;
import com.yeejoin.amos.api.openapi.constant.Constant; import java.util.Date;
import com.yeejoin.amos.api.openapi.face.model.BizTokenModel; import java.util.List;
import com.yeejoin.amos.api.openapi.face.model.TmCylinderInspectionModel;
import com.yeejoin.amos.api.openapi.face.orm.dao.TmCylinderInspectionMapper;
import com.yeejoin.amos.api.openapi.face.orm.entity.TmCylinderInspection;
/** /**
*
* <pre> * <pre>
* 气瓶检验信息 服务类 * 气瓶检验信息 服务类
* </pre> * </pre>
...@@ -35,32 +27,43 @@ import com.yeejoin.amos.api.openapi.face.orm.entity.TmCylinderInspection; ...@@ -35,32 +27,43 @@ import com.yeejoin.amos.api.openapi.face.orm.entity.TmCylinderInspection;
* @version $Id: ElevatorService.java, v 0.1 2021年9月30日 下午3:28:55 gwb Exp $ * @version $Id: ElevatorService.java, v 0.1 2021年9月30日 下午3:28:55 gwb Exp $
*/ */
@Component @Component
public class TmCylinderInspectionService extends BaseService<TmCylinderInspectionModel, TmCylinderInspection, TmCylinderInspectionMapper> { public class TmCylinderInspectionService extends MyBaseServiceImpl<TmCylinderInspectionModel, TmCylinderInspection, TmCylinderInspectionMapper> {
@Autowired @Autowired
private RedisTemplate redisTemplate; private SyncCylinderDataService syncCylinderDataService;
@Autowired
private SyncCylinderDataService syncCylinderDataService; @DSTransactional
@Transactional(rollbackFor = {java.lang.Exception.class})
public String createCylinderInspection(List<TmCylinderInspectionModel> model) {
if (ValidationUtil.isEmpty(model)) throw new BadRequest("气瓶检验信息为空.");
String appId = getAppId();
Date now = new Date();
for (TmCylinderInspectionModel cylinderInspectionModel : model) {
cylinderInspectionModel.setSequenceNbr(null);
cylinderInspectionModel.setRecDate(now);
cylinderInspectionModel.setAppId(appId);
}
List<TmCylinderInspection> tmCylinderInspectionList = Bean.toModels(model, TmCylinderInspection.class);
@DSTransactional syncCylinderInspectionModel(model);
public String createCylinderInspection(List<TmCylinderInspectionModel> model) {
if (ValidationUtil.isEmpty(model))
throw new BadRequest("气瓶检验信息为空.");
syncCylinderInspectionModel(model);
for (TmCylinderInspectionModel cylinderInspectionModel : model) {
cylinderInspectionModel.setRecDate(new Date());
cylinderInspectionModel.setAppId(getAppId());
this.createWithModel(cylinderInspectionModel);
}
return "OK";
}
private void syncCylinderInspectionModel(List<TmCylinderInspectionModel> model) { this.saveOrUpdateBatchByUniqueFields(
syncCylinderDataService.syncCylinderInspection(model); tmCylinderInspectionList,
} entity -> new LambdaQueryWrapper<TmCylinderInspection>()
.eq(TmCylinderInspection::getAppId, entity.getAppId())
.eq(TmCylinderInspection::getSequenceCode, entity.getSequenceCode())
.eq(TmCylinderInspection::getInspectionDate, entity.getInspectionDate()),
entity -> new MultiFieldKey(entity.getAppId(), entity.getSequenceCode(), entity.getInspectionDate()),
"appId", "sequenceCode", "inspectionDate");
return "OK";
}
private String getAppId() { /**
String tokenKey = Redis.genKey(Constant.TOKEN_PREFIX,RequestContext.getToken()); * 同步气瓶检验信息至气瓶服务
BizTokenModel bizTokenModel = (BizTokenModel) redisTemplate.opsForValue().get(tokenKey); *
return bizTokenModel.getAppId(); * @param model
} */
private void syncCylinderInspectionModel(List<TmCylinderInspectionModel> model) {
syncCylinderDataService.syncCylinderInspection(model);
}
} }
package com.yeejoin.amos.api.openapi.face.service; package com.yeejoin.amos.api.openapi.face.service;
import java.util.Date;
import java.util.List;
import com.baomidou.dynamic.datasource.annotation.DSTransactional; import com.baomidou.dynamic.datasource.annotation.DSTransactional;
import com.yeejoin.amos.boot.module.cylinder.flc.api.dto.CylinderInspectionDto; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.yeejoin.amos.boot.module.cylinder.flc.api.dto.CylinderTagsDto; import com.yeejoin.amos.api.openapi.face.model.TmCylinderTagsModel;
import com.yeejoin.amos.api.openapi.face.orm.dao.TmCylinderTagsMapper;
import com.yeejoin.amos.api.openapi.face.orm.entity.TmCylinderTags;
import com.yeejoin.amos.api.openapi.service.MyBaseServiceImpl;
import com.yeejoin.amos.api.openapi.util.MultiFieldKey;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.typroject.tyboot.component.cache.Redis;
import org.typroject.tyboot.core.foundation.context.RequestContext;
import org.typroject.tyboot.core.foundation.utils.Bean; import org.typroject.tyboot.core.foundation.utils.Bean;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil; import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import org.typroject.tyboot.core.rdbms.service.BaseService;
import org.typroject.tyboot.core.restful.exception.instance.BadRequest; import org.typroject.tyboot.core.restful.exception.instance.BadRequest;
import com.yeejoin.amos.api.openapi.constant.Constant; import java.util.Date;
import com.yeejoin.amos.api.openapi.face.model.BizTokenModel; import java.util.List;
import com.yeejoin.amos.api.openapi.face.model.TmCylinderTagsModel;
import com.yeejoin.amos.api.openapi.face.orm.dao.TmCylinderTagsMapper;
import com.yeejoin.amos.api.openapi.face.orm.entity.TmCylinderTags;
/** /**
...@@ -32,36 +26,45 @@ import com.yeejoin.amos.api.openapi.face.orm.entity.TmCylinderTags; ...@@ -32,36 +26,45 @@ import com.yeejoin.amos.api.openapi.face.orm.entity.TmCylinderTags;
* </pre> * </pre>
* *
* @author gwb * @author gwb
* @version $Id: ElevatorService.java, v 0.1 2021年9月30日 下午3:28:55 gwb Exp $ * @version $Id: TmCylinderTagsService.java, v 0.1 2021年9月30日 下午3:28:55 gwb Exp $
*/ */
@Component @Component
public class TmCylinderTagsService extends BaseService<TmCylinderTagsModel, TmCylinderTags, TmCylinderTagsMapper> { public class TmCylinderTagsService extends MyBaseServiceImpl<TmCylinderTagsModel, TmCylinderTags, TmCylinderTagsMapper> {
@Autowired
private RedisTemplate redisTemplate;
@Autowired @Autowired
private SyncCylinderDataService syncCylinderDataService; private SyncCylinderDataService syncCylinderDataService;
@Transactional(rollbackFor = {java.lang.Exception.class})
@DSTransactional @DSTransactional
public String createCylinderTag(List<TmCylinderTagsModel> model) { public String createCylinderTag(List<TmCylinderTagsModel> model) {
// TODO Auto-generated method stub
if (ValidationUtil.isEmpty(model)) if (ValidationUtil.isEmpty(model))
throw new BadRequest("气瓶标签信息为空."); throw new BadRequest("气瓶标签信息为空.");
syncCylinderTag(model); String appId = getAppId();
Date now = new Date();
for (TmCylinderTagsModel cylinderTagsModel : model) { for (TmCylinderTagsModel cylinderTagsModel : model) {
cylinderTagsModel.setRecDate(new Date()); cylinderTagsModel.setSequenceNbr(null);
cylinderTagsModel.setAppId(getAppId()); cylinderTagsModel.setRecDate(now);
this.createWithModel(cylinderTagsModel); cylinderTagsModel.setAppId(appId);
} }
// 同步至气瓶业务库
syncCylinderTag(model);
List<TmCylinderTags> tmCylinderTagsList = Bean.toModels(model, TmCylinderTags.class);
this.saveOrUpdateBatchByUniqueFields(
tmCylinderTagsList,
tmCylinderTags -> new LambdaQueryWrapper<TmCylinderTags>()
.eq(TmCylinderTags::getAppId, tmCylinderTags.getAppId())
.eq(TmCylinderTags::getSequenceCode, tmCylinderTags.getSequenceCode()),
entity -> new MultiFieldKey(entity.getAppId(), entity.getSequenceCode()),
"appId", "sequenceCode"
);
return "OK"; return "OK";
} }
/**
* 同步气瓶标签信息至气瓶服务
* @param model
*/
private void syncCylinderTag(List<TmCylinderTagsModel> model) { private void syncCylinderTag(List<TmCylinderTagsModel> model) {
syncCylinderDataService.syncCylinderTag(model); syncCylinderDataService.syncCylinderTag(model);
} }
private String getAppId() {
String tokenKey = Redis.genKey(Constant.TOKEN_PREFIX,RequestContext.getToken());
BizTokenModel bizTokenModel = (BizTokenModel) redisTemplate.opsForValue().get(tokenKey);
return bizTokenModel.getAppId();
}
} }
package com.yeejoin.amos.api.openapi.face.service; package com.yeejoin.amos.api.openapi.face.service;
import java.util.Date;
import java.util.List;
import com.baomidou.dynamic.datasource.annotation.DSTransactional; import com.baomidou.dynamic.datasource.annotation.DSTransactional;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.yeejoin.amos.api.openapi.face.model.TmCylinderUnitModel;
import com.yeejoin.amos.api.openapi.face.orm.dao.TmCylinderUnitMapper;
import com.yeejoin.amos.api.openapi.face.orm.entity.TmCylinderUnit;
import com.yeejoin.amos.api.openapi.listener.event.FileToBeDeleteEvent;
import com.yeejoin.amos.api.openapi.publisher.EventPublisher;
import com.yeejoin.amos.api.openapi.service.MyBaseServiceImpl;
import com.yeejoin.amos.api.openapi.util.FileDeleteUtil;
import com.yeejoin.amos.api.openapi.util.MultiFieldKey;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.compress.utils.Lists;
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;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.typroject.tyboot.component.cache.Redis;
import org.typroject.tyboot.core.foundation.context.RequestContext;
import org.typroject.tyboot.core.foundation.utils.Bean; import org.typroject.tyboot.core.foundation.utils.Bean;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil; import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import org.typroject.tyboot.core.rdbms.service.BaseService;
import org.typroject.tyboot.core.restful.exception.instance.BadRequest; import org.typroject.tyboot.core.restful.exception.instance.BadRequest;
import com.yeejoin.amos.api.openapi.constant.Constant; import java.util.Arrays;
import com.yeejoin.amos.api.openapi.face.model.BizTokenModel; import java.util.Date;
import com.yeejoin.amos.api.openapi.face.model.TmCylinderUnitModel; import java.util.List;
import com.yeejoin.amos.api.openapi.face.orm.dao.TmCylinderUnitMapper; import java.util.stream.Collectors;
//import com.yeejoin.amos.boot.module.cylinder.flc.api.entity.CylinderUnit;
import com.yeejoin.amos.api.openapi.face.orm.entity.TmCylinderUnit;
import com.yeejoin.amos.boot.module.cylinder.flc.api.dto.CylinderUnitDto;
/** /**
*
* <pre> * <pre>
* 气瓶企业信息 服务类 * 气瓶企业信息 服务类
* </pre> * </pre>
...@@ -35,31 +36,77 @@ import com.yeejoin.amos.boot.module.cylinder.flc.api.dto.CylinderUnitDto; ...@@ -35,31 +36,77 @@ import com.yeejoin.amos.boot.module.cylinder.flc.api.dto.CylinderUnitDto;
* @version $Id: ElevatorService.java, v 0.1 2021年9月30日 下午3:28:55 gwb Exp $ * @version $Id: ElevatorService.java, v 0.1 2021年9月30日 下午3:28:55 gwb Exp $
*/ */
@Component @Component
public class TmCylinderUnitService extends BaseService<TmCylinderUnitModel, TmCylinderUnit, TmCylinderUnitMapper> { @Slf4j
public class TmCylinderUnitService extends MyBaseServiceImpl<TmCylinderUnitModel, TmCylinderUnit, TmCylinderUnitMapper> {
@Autowired @Autowired
private RedisTemplate redisTemplate; private RedisTemplate redisTemplate;
@Autowired
private SyncCylinderDataService syncCylinderDataService;
@DSTransactional @Autowired
public String createCylinderUnit(List<TmCylinderUnitModel> model) { private SyncCylinderDataService syncCylinderDataService;
if (ValidationUtil.isEmpty(model))
throw new BadRequest("气瓶企业信息数据为空."); @Autowired
syncCylinderUnitModel(model); private EventPublisher eventPublisher;
for (TmCylinderUnitModel cylinderUnitModel : model) {
cylinderUnitModel.setRecDate(new Date()); @DSTransactional
cylinderUnitModel.setAppId(getAppId()); @Transactional(rollbackFor = {java.lang.Exception.class})
this.createWithModel(cylinderUnitModel); public String createCylinderUnit(List<TmCylinderUnitModel> model) {
} if (ValidationUtil.isEmpty(model))
return "OK"; throw new BadRequest("气瓶企业信息数据为空.");
} String appId = getAppId();
private void syncCylinderUnitModel(List<TmCylinderUnitModel> model ) { Date now = new Date();
syncCylinderDataService.syncCylinderUnit(model); for (TmCylinderUnitModel cylinderUnitModel : model) {
} cylinderUnitModel.setSequenceNbr(null);
private String getAppId() { cylinderUnitModel.setRecDate(now);
String tokenKey = Redis.genKey(Constant.TOKEN_PREFIX,RequestContext.getToken()); cylinderUnitModel.setAppId(appId);
BizTokenModel bizTokenModel = (BizTokenModel) redisTemplate.opsForValue().get(tokenKey); }
return bizTokenModel.getAppId(); // 同步到业务库
} syncCylinderUnitModel(model);
List<TmCylinderUnit> tmCylinderUnitList = Bean.toModels(model, TmCylinderUnit.class);
this.saveOrUpdateBatchByUniqueFields(
tmCylinderUnitList,
tmCylinderUnit -> new LambdaQueryWrapper<TmCylinderUnit>()
.eq(TmCylinderUnit::getAppId, tmCylinderUnit.getAppId()),
entity -> new MultiFieldKey(entity.getAppId()),
"appId");
// 从数据库查询tmCylinderUnitList对应企业信息
LambdaQueryWrapper<TmCylinderUnit> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.in(TmCylinderUnit::getAppId, tmCylinderUnitList.stream().map(TmCylinderUnit::getAppId).collect(Collectors.toList()));
List<TmCylinderUnit> oldList = this.baseMapper.selectList(queryWrapper);
deleteOldFile(oldList);
return "OK";
}
/**
* 删除旧的附件
* @param oldList 旧附件列表
*/
private void deleteOldFile(List<TmCylinderUnit> oldList) {
if (!ValidationUtil.isEmpty(oldList)) {
List<String> fileUrlList = Lists.newArrayList();
oldList.forEach(old -> {
if (old.getQualificationFile() != null) {
fileUrlList.addAll(Arrays.asList(ValidationUtil.isEmpty(old.getQualificationFile()) ? new String[0] : old.getQualificationFile().split(",")));
}
if (old.getDeviceSummaryFile() != null) {
fileUrlList.addAll(Arrays.asList(ValidationUtil.isEmpty(old.getDeviceSummaryFile()) ? new String[0] : old.getDeviceSummaryFile().split(",")));
}
if (old.getUseRegisterFile() != null) {
fileUrlList.addAll(Arrays.asList(ValidationUtil.isEmpty(old.getUseRegisterFile()) ? new String[0] : old.getUseRegisterFile().split(",")));
}
});
eventPublisher.publish(new FileToBeDeleteEvent(this, FileDeleteUtil.extractFileNames(fileUrlList)));
}
}
/**
* 同步气站信息至气瓶服务
* @param model
*/
private void syncCylinderUnitModel(List<TmCylinderUnitModel> model) {
syncCylinderDataService.syncCylinderUnit(model);
}
} }
package com.yeejoin.amos.api.openapi.listener;
import com.alibaba.fastjson.JSONObject;
import com.yeejoin.amos.OpenapiApplication;
import com.yeejoin.amos.api.openapi.listener.event.FileToBeDeleteEvent;
import com.yeejoin.amos.api.openapi.service.StartPlatformTokenService;
import com.yeejoin.amos.component.robot.AmosRequestContext;
import com.yeejoin.amos.feign.systemctl.Systemctl;
import lombok.extern.slf4j.Slf4j;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.ApplicationListener;
import org.springframework.stereotype.Component;
import org.typroject.tyboot.core.foundation.context.RequestContext;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import java.util.List;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.LinkedBlockingQueue;
/**
* @author Administrator
*/
@Component
@Slf4j
public class FileToBeDeleteEventListener implements ApplicationListener<FileToBeDeleteEvent> {
private static final Logger logger = LogManager.getLogger(FileToBeDeleteEventListener.class);
@Value("${file.delete.thread.number:3}")
private int threadNumber;
private final BlockingQueue<List<String>> blockingQueue = new LinkedBlockingQueue<>();
private ExecutorService executorService;
@Autowired
StartPlatformTokenService startPlatformTokenService;
@Override
public void onApplicationEvent(FileToBeDeleteEvent event) {
log.info("收到资源文件删除消息:{}", JSONObject.toJSONString(event.getFileUrlList()));
blockingQueue.add(event.getFileUrlList());
}
@PostConstruct
public void init() {
executorService = Executors.newFixedThreadPool(threadNumber);
for (int i = 0; i < threadNumber; i++) {
executorService.execute(() -> {
while (true) {
try {
startPlatformTokenService.getToken();
List<String> fileList = blockingQueue.take();
logger.info("删除文件开始:{}", JSONObject.toJSONString(fileList));
Systemctl.fileStorageClient.deleteFile(fileList.toArray(new String[0]));
log.info("删除文件完成");
} catch (Exception e) {
log.error(e.getMessage(), e);
}
}
});
}
}
@PreDestroy
public void shutdown() {
if (executorService != null) {
log.info("开始关闭executorService:{}", executorService);
executorService.shutdown();
}
}
}
package com.yeejoin.amos.api.openapi.listener.event;
import lombok.Getter;
import org.springframework.context.ApplicationEvent;
import java.util.List;
/**
* @author Administrator
*/
@Getter
public class FileToBeDeleteEvent extends ApplicationEvent {
private final List<String> fileUrlList;
/**
* Create a new {@code ApplicationEvent}.
*
* @param source the object on which the event initially occurred or with
* which the event is associated (never {@code null})
*/
public FileToBeDeleteEvent(Object source, List<String> fileUrlList) {
super(source);
this.fileUrlList = fileUrlList;
}
}
package com.yeejoin.amos.api.openapi.publisher;
import org.springframework.context.ApplicationEvent;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
/**
* @author Administrator
*/
@Component
public class EventPublisher {
private final ApplicationEventPublisher publisher;
public EventPublisher(ApplicationEventPublisher publisher) {
this.publisher = publisher;
}
@Async
public void publish(ApplicationEvent event) {
publisher.publishEvent(event);
}
}
\ No newline at end of file
package com.yeejoin.amos.api.openapi.service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.enums.SqlMethod;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.TableInfo;
import com.baomidou.mybatisplus.core.metadata.TableInfoHelper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.core.toolkit.ReflectionKit;
import com.google.common.collect.Maps;
import com.yeejoin.amos.api.openapi.constant.Constant;
import com.yeejoin.amos.api.openapi.face.builder.UniqueFieldsQueryBuilder;
import com.yeejoin.amos.api.openapi.face.model.BizTokenModel;
import com.yeejoin.amos.api.openapi.util.MultiFieldKey;
import org.apache.ibatis.session.SqlSession;
import org.hibernate.service.spi.ServiceException;
import org.jetbrains.annotations.Contract;
import org.jetbrains.annotations.NotNull;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.Assert;
import org.typroject.tyboot.component.cache.Redis;
import org.typroject.tyboot.core.foundation.context.RequestContext;
import org.typroject.tyboot.core.rdbms.service.BaseService;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.function.Function;
import static org.springframework.jdbc.object.BatchSqlUpdate.DEFAULT_BATCH_SIZE;
public class MyBaseServiceImpl<V, T, M extends BaseMapper<T>> extends BaseService<V, T, M> {
@Autowired
private RedisTemplate redisTemplate;
/**
* 根据指定唯一键批量保存或更新
* @param entityList 需要保存或更新实体列表
* @param lambdaQueryFunction 唯一值更新时函数
* @param uniqueFieldFunction 取唯一值的函数
* @param fieldNames 需要作为唯一值的字段
* @return 执行成功返回true
*/
@Transactional(rollbackFor = Exception.class)
public boolean saveOrUpdateBatchByUniqueFields(
List<T> entityList,
Function<T, LambdaQueryWrapper<T>> lambdaQueryFunction,
Function<T, MultiFieldKey> uniqueFieldFunction,
String... fieldNames) {
Assert.notEmpty(entityList, "error: entityList must not be empty");
Assert.notEmpty(fieldNames, "error: fieldNames must not be empty");
Class<?> cls = currentModelClass();
TableInfo tableInfo = TableInfoHelper.getTableInfo(cls);
Assert.notNull(tableInfo, "error: can not execute. because can not find cache of TableInfo for entity!");
try (SqlSession batchSqlSession = sqlSessionBatch()) {
// 构建一个Map,用于存储已存在的实体,键为MultiFieldKey,值为实体本身
Map<MultiFieldKey, T> existingEntityMap = new HashMap<>();
// List<String> fieldNameList = Arrays.asList(fieldNames);
// Map<String, Integer> fieldNameIndexMap = IntStream.range(0, fieldNames.length)
// .boxed()
// .collect(Collectors.toMap(fieldNameList::get, Function.identity()));
// 构建查询条件,根据fieldNames动态生成
// for (String fieldName : fieldNames) {
// int index = fieldNameIndexMap.get(fieldName);
// queryWrapper.in(fieldName, entityList.stream()
// .map(entity -> uniqueFieldFunction.apply(entity).getField(index))
// .collect(Collectors.toList()));
// }
QueryWrapper<T> queryWrapper = new QueryWrapper<>();
// 构建查询条件-根据传入entityList取出所有唯一字段作为查询条件
new UniqueFieldsQueryBuilder().buildQueryWrapper(queryWrapper, entityList);
// 预先查询所有可能存在的实体
List<T> existingEntities = baseMapper.selectList(queryWrapper);
for (T existingEntity : existingEntities) {
MultiFieldKey key = createKeyFromEntity(existingEntity, fieldNames);
existingEntityMap.put(key, existingEntity);
}
int i = 0;
for (T entity : entityList) {
MultiFieldKey uniqueKey = uniqueFieldFunction.apply(entity);
T target = existingEntityMap.get(uniqueKey);
if (Objects.isNull(target)) {
batchSqlSession.insert(sqlStatement(SqlMethod.INSERT_ONE), entity);
} else {
Map<String, Object> param = Maps.newHashMap();
param.put(Constants.WRAPPER, lambdaQueryFunction.apply(entity));
param.put(Constants.ENTITY, entity);
// 更新操作
batchSqlSession.update(sqlStatement(SqlMethod.UPDATE), param);
}
if (++i % DEFAULT_BATCH_SIZE == 0) {
batchSqlSession.flushStatements();
}
}
batchSqlSession.flushStatements();
} catch (Exception e) {
log.error("Error during batch save or update", e);
throw new ServiceException("Error during batch save or update", e);
}
return true;
}
// 辅助方法,从实体中根据字段名创建MultiFieldKey
@Contract("_, _ -> new")
private @NotNull MultiFieldKey createKeyFromEntity(T entity, String[] fieldNames) {
Object[] values = new Object[fieldNames.length];
for (int i = 0; i < fieldNames.length; i++) {
values[i] = ReflectionKit.getMethodValue(entity.getClass(), entity, fieldNames[i]);
}
return new MultiFieldKey(values);
}
public String getAppId() {
String tokenKey = Redis.genKey(Constant.TOKEN_PREFIX, RequestContext.getToken());
BizTokenModel bizTokenModel = (BizTokenModel) redisTemplate.opsForValue().get(tokenKey);
return bizTokenModel.getAppId();
}
}
package com.yeejoin.amos.api.openapi.service;
import com.yeejoin.amos.component.robot.AmosRequestContext;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.typroject.tyboot.core.foundation.context.RequestContext;
@Service
public class StartPlatformTokenService {
@Autowired
AmosRequestContext amosRequestContext;
public void getToken() {
RequestContext.setProduct(amosRequestContext.getProduct());
RequestContext.setAppKey(amosRequestContext.getAppKey());
RequestContext.setToken(amosRequestContext.getToken());
}
}
package com.yeejoin.amos.api.openapi.util;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.compress.utils.Lists;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import java.util.ArrayList;
import java.util.List;
@Slf4j
public class FileDeleteUtil {
public static List<String> extractFileNames(List<String> fileUrls) {
if (fileUrls == null || fileUrls.isEmpty()) {
return Lists.newArrayList();
}
List<String> allFileNames = new ArrayList<>();
for (String url : fileUrls) {
if (url != null) {
List<String> fileNames = extractFileNamesFromJsonStr(url);
allFileNames.addAll(fileNames);
}
}
return allFileNames;
}
// 解析JSON字符串,添加文件名到集合中
public static List<String> extractFileNamesFromJsonStr(String jsonStr) {
List<String> fileUrls = Lists.newArrayList();
if (!ValidationUtil.isEmpty(jsonStr)) {
try {
Object json = JSONObject.parse(jsonStr);
if (json instanceof JSONArray) {
JSONArray jsonArray = JSONObject.parseArray(jsonStr);
if (jsonArray != null) {
jsonArray.forEach(fileInfo -> {
if (fileInfo instanceof JSONObject) {
try {
String fileName = ((JSONObject) fileInfo).get("fileUrl").toString();
fileUrls.add(fileName);
} catch (Exception e) {
log.info("Error parsing file URL: {}", fileInfo);
}
}
});
}
} else if (json instanceof JSONObject) {
try {
String fileName = ((JSONObject) json).getString("fileUrl");
if (fileName != null) fileUrls.add(fileName);
} catch (Exception e) {
log.info("Error parsing file URL: {}", json);
}
}
return fileUrls;
} catch (Exception e) {
log.info("Error parsing JSON: {}", jsonStr);
System.err.println("Error parsing JSON: " + e.getMessage());
}
}
return fileUrls;
}
}
package com.yeejoin.amos.api.openapi.util;
import java.util.Arrays;
public class MultiFieldKey {
private final Object[] fields;
public MultiFieldKey(Object... fields) {
this.fields = fields.clone();
}
public Object getField(int index) {
return fields[index];
}
// 可能需要重写equals和hashCode方法来确保正确的比较行为
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
MultiFieldKey that = (MultiFieldKey) o;
return Arrays.equals(fields, that.fields);
}
@Override
public int hashCode() {
return Arrays.hashCode(fields);
}
}
package com.yeejoin.amos.boot.module.cylinder.api.entity; package com.yeejoin.amos.boot.module.cylinder.api.entity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import org.springframework.data.annotation.Id; import org.springframework.data.annotation.Id;
...@@ -21,7 +22,7 @@ public class ESCylinderInfoDto { ...@@ -21,7 +22,7 @@ public class ESCylinderInfoDto {
private String unitName; private String unitName;
//出厂编号 //出厂编号
@Field(type = FieldType.Text) @Field(type = FieldType.Keyword)
private String factoryNum; private String factoryNum;
//气瓶品种code //气瓶品种code
...@@ -68,6 +69,10 @@ public class ESCylinderInfoDto { ...@@ -68,6 +69,10 @@ public class ESCylinderInfoDto {
@Field(type = FieldType.Text) @Field(type = FieldType.Text)
private String manufacturingUnit; private String manufacturingUnit;
//制造单位统一信用代码
@Field(type = FieldType.Keyword)
private String manufacturingUnitCreditCode;
//检验日期 //检验日期
@Field(type = FieldType.Text) @Field(type = FieldType.Text)
private String inspectionDate; private String inspectionDate;
...@@ -77,7 +82,7 @@ public class ESCylinderInfoDto { ...@@ -77,7 +82,7 @@ public class ESCylinderInfoDto {
private Long inspectionDateMs; private Long inspectionDateMs;
//气瓶唯一标识 //气瓶唯一标识
@Field(type = FieldType.Text) @Field(type = FieldType.Keyword)
private String sequenceCode; private String sequenceCode;
//单位内部编号 //单位内部编号
...@@ -85,13 +90,13 @@ public class ESCylinderInfoDto { ...@@ -85,13 +90,13 @@ public class ESCylinderInfoDto {
private String unitInnerCode; private String unitInnerCode;
//appid //appid
@Field(type = FieldType.Text) @Field(type = FieldType.Keyword)
private String appId; private String appId;
//统一社会信用代码 //统一社会信用代码
@Field(type = FieldType.Text) @Field(type = FieldType.Keyword)
private String creditCode; private String creditCode;
@Field(type = FieldType.Text) @Field(type = FieldType.Keyword)
private String regionCode; private String regionCode;
} }
package com.yeejoin.amos.boot.module.cylinder.api.enums; package com.yeejoin.amos.boot.module.cylinder.api.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.HashMap;
import java.util.Map;
/** /**
* <pre> * <pre>
* 气瓶字典枚举 * 气瓶字典枚举
...@@ -16,85 +10,86 @@ import java.util.Map; ...@@ -16,85 +10,86 @@ import java.util.Map;
*/ */
public enum CylDictEnum { public enum CylDictEnum {
isValid_0(3125,0,"isValid"), isValid_0(3125, 0, "isValid"),
isValid_1(3126,1,"isValid"), isValid_1(3126, 1, "isValid"),
same_0(3127,0,"same"), same_0(3127, 0, "same"),
same_1(3128,1,"same"), same_1(3128, 1, "same"),
SecurityDocuments_0(3137,0,"SecurityDocuments"), SecurityDocuments_0(3137, 0, "SecurityDocuments"),
SecurityDocuments_1(3138,1,"SecurityDocuments"), SecurityDocuments_1(3138, 1, "SecurityDocuments"),
isComplete_0(3135,0,"isComplete"), isComplete_0(3135, 0, "isComplete"),
isComplete_1(3136,1,"isComplete"), isComplete_1(3136, 1, "isComplete"),
haveStillPressure_0(3133,0,"haveStillPressure"), haveStillPressure_0(3133, 0, "haveStillPressure"),
haveStillPressure_1(3134,1,"haveStillPressure"), haveStillPressure_1(3134, 1, "haveStillPressure"),
isComplianceWithGBT_0(3131,0,"isComplianceWithGBT"), isComplianceWithGBT_0(3131, 0, "isComplianceWithGBT"),
isComplianceWithGBT_1(3132,1,"isComplianceWithGBT"), isComplianceWithGBT_1(3132, 1, "isComplianceWithGBT"),
isRegulations_0(3129,0,"isRegulations"), isRegulations_0(3129, 0, "isRegulations"),
isRegulations_1(3130,1,"isRegulations"), isRegulations_1(3130, 1, "isRegulations"),
withinScope_0 (3141,0, "withinScope"), withinScope_0(3141, 0, "withinScope"),
withinScope_1 (3142,1, "withinScope"), withinScope_1(3142, 1, "withinScope"),
sealedState_0 (3143,0, "sealedState"), sealedState_0(3143, 0, "sealedState"),
sealedState_1 (3144,1, "sealedState"), sealedState_1(3144, 1, "sealedState"),
defective_0 (3145,0, "defective"), defective_0(3145, 0, "defective"),
defective_1 (3146,1, "defective"), defective_1(3146, 1, "defective"),
abnormaLTemperature_0 (3147,0, "abnormaLTemperature"), abnormalTemperature_0(3147, 0, "abnormalTemperature"),
abnormaLTemperature_1 (3148,1, "abnormaLTemperature"), abnormalTemperature_1(3148, 1, "abnormalTemperature"),
warningSign_0 (3149,0, "warningSign"), warningSign_0(3149, 0, "warningSign"),
warningSign_1 (3150,1, "warningSign"), warningSign_1(3150, 1, "warningSign"),
cylinder_Status_0 (3114,0, "cylinder_Status"), cylinder_Status_0(3114, 0, "cylinder_Status"),
cylinder_Status_1 (3115,1, "cylinder_Status"), cylinder_Status_1(3115, 1, "cylinder_Status"),
cylinder_Status_2 (3116,2, "cylinder_Status"), cylinder_Status_2(3116, 2, "cylinder_Status"),
cylinder_Status_3 (3117,3, "cylinder_Status"), cylinder_Status_3(3117, 3, "cylinder_Status"),
cylinder_Variety_1 (3145,1, "cylinder_Variety"), cylinder_Variety_1(3118, 1, "cylinder_Variety"),
cylinder_Variety_2 (3146,2, "cylinder_Variety"), cylinder_Variety_2(3119, 2, "cylinder_Variety"),
cylinder_Variety_3 (3147,3, "cylinder_Variety"), cylinder_Variety_3(3120, 3, "cylinder_Variety"),
cylinder_Variety_4 (3148,4, "cylinder_Variety"), cylinder_Variety_4(3121, 4, "cylinder_Variety"),
cylinder_Variety_5 (3149,5, "cylinder_Variety"); cylinder_Variety_5(3122, 5, "cylinder_Variety"),
inspection_Result_0(3124, 0, "inspection_Result"),
inspection_Result_1(3123, 1, "inspection_Result"),
abnormal_0(3139, 0, "abnormal"),
abnormal_1(3140, 1, "abnormal");
/**
* 主键
*/
private final Integer seqNbr;
/** /**
* 主键 * 编码
*/ */
private Integer seqNbr; private final Integer code;
/** /**
* 编码 * key
*/ */
private Integer code; private final String key;
/** // 构造方法
* key CylDictEnum(Integer seqNbr, Integer code, String key) {
*/ this.seqNbr = seqNbr;
private String key; this.code = code;
this.key = key;
}
// 构造方法 public Integer getSeqNbr() {
CylDictEnum(Integer seqNbr, Integer code, String key) { return seqNbr;
this.seqNbr = seqNbr; }
this.code = code;
this.key = key;
}
public Integer getSeqNbr() { public Integer getCode() {
return seqNbr; return code;
} }
public Integer getCode() public String getKey() {
{ return key;
return code; }
}
public String getKey() public static CylDictEnum getEnum(Integer code, String key) {
{ for (CylDictEnum cylDictEnum : CylDictEnum.values()) {
return key; if (cylDictEnum.getCode().equals(code) && cylDictEnum.getKey().equals(key)) {
} return cylDictEnum;
}
public static CylDictEnum getEnum(Integer code, String key) }
{ return null;
for (CylDictEnum cylDictEnum : CylDictEnum.values()) }
{
if (cylDictEnum.getCode().equals(code) && cylDictEnum.getKey().equals(key))
{
return cylDictEnum;
}
}
return null;
}
} }
...@@ -47,6 +47,9 @@ public class CylinderInfoDto extends BaseDto { ...@@ -47,6 +47,9 @@ public class CylinderInfoDto extends BaseDto {
@ApiModelProperty(value = "制造单位") @ApiModelProperty(value = "制造单位")
private String manufacturingUnit; private String manufacturingUnit;
@ApiModelProperty(value = "制造单位统一信用代码")
private String manufacturingUnitCreditCode;
@ApiModelProperty(value = "单位内部编号") @ApiModelProperty(value = "单位内部编号")
private String unitInnerCode; private String unitInnerCode;
......
package com.yeejoin.amos.boot.module.cylinder.flc.api.entity; package com.yeejoin.amos.boot.module.cylinder.flc.api.entity;
import java.util.Date; import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import com.baomidou.mybatisplus.annotation.TableName;
import org.typroject.tyboot.core.rdbms.orm.entity.BaseEntity; import org.typroject.tyboot.core.rdbms.orm.entity.BaseEntity;
import java.util.Date;
/** /**
* 液化气体气瓶充装信息审核 * 液化气体气瓶充装信息审核
* *
...@@ -37,8 +38,6 @@ public class CylinderFillingExamine extends BaseEntity { ...@@ -37,8 +38,6 @@ public class CylinderFillingExamine extends BaseEntity {
@ApiModelProperty(value = "充装审核报表附件名称") @ApiModelProperty(value = "充装审核报表附件名称")
private String fillingAuditName; private String fillingAuditName;
@ApiModelProperty(value = "同步时间 yyyy-MM-dd HH24:mi:ss") @ApiModelProperty(value = "同步时间 yyyy-MM-dd HH24:mi:ss")
private Date syncDate; private Date syncDate;
...@@ -50,4 +49,8 @@ public class CylinderFillingExamine extends BaseEntity { ...@@ -50,4 +49,8 @@ public class CylinderFillingExamine extends BaseEntity {
@ApiModelProperty(value = "数据完整度") @ApiModelProperty(value = "数据完整度")
private Double integrity; private Double integrity;
@ApiModelProperty(value = "气瓶唯一标识")
private String sequenceCode;
} }
...@@ -26,10 +26,6 @@ public class CylinderFillingRecord extends BaseEntity { ...@@ -26,10 +26,6 @@ public class CylinderFillingRecord extends BaseEntity {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "充装记录Id") @ApiModelProperty(value = "充装记录Id")
private String fillingRecordId; private String fillingRecordId;
...@@ -53,8 +49,6 @@ public class CylinderFillingRecord extends BaseEntity { ...@@ -53,8 +49,6 @@ public class CylinderFillingRecord extends BaseEntity {
@ApiModelProperty(value = "异常情况") @ApiModelProperty(value = "异常情况")
private Integer abnormal; private Integer abnormal;
@ApiModelProperty(value = "同步时间 yyyy-MM-dd HH24:mi:ss") @ApiModelProperty(value = "同步时间 yyyy-MM-dd HH24:mi:ss")
private Date syncDate; private Date syncDate;
...@@ -82,4 +76,6 @@ public class CylinderFillingRecord extends BaseEntity { ...@@ -82,4 +76,6 @@ public class CylinderFillingRecord extends BaseEntity {
@ApiModelProperty(value = "是否保存到es(1标识已经保存过)") @ApiModelProperty(value = "是否保存到es(1标识已经保存过)")
private String isNotEs; private String isNotEs;
@ApiModelProperty(value = "气瓶唯一标识码")
private String sequenceCode;
} }
...@@ -25,9 +25,6 @@ public class CylinderInfo extends BaseEntity { ...@@ -25,9 +25,6 @@ public class CylinderInfo extends BaseEntity {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "产权单位名称") @ApiModelProperty(value = "产权单位名称")
private String unitName; private String unitName;
...@@ -64,8 +61,6 @@ public class CylinderInfo extends BaseEntity { ...@@ -64,8 +61,6 @@ public class CylinderInfo extends BaseEntity {
@ApiModelProperty(value = "????վ??ʹ???û????") @ApiModelProperty(value = "????վ??ʹ???û????")
private String endCustomCode; private String endCustomCode;
@ApiModelProperty(value = "同步时间 yyyy-MM-dd HH24:mi:ss") @ApiModelProperty(value = "同步时间 yyyy-MM-dd HH24:mi:ss")
private Date syncDate; private Date syncDate;
...@@ -126,4 +121,6 @@ public class CylinderInfo extends BaseEntity { ...@@ -126,4 +121,6 @@ public class CylinderInfo extends BaseEntity {
@ApiModelProperty(value = "最新检验一条数据") @ApiModelProperty(value = "最新检验一条数据")
private String lastInspectionId; private String lastInspectionId;
@ApiModelProperty(value = "制造单位统一信用代码")
private String manufacturingUnitCreditCode;
} }
...@@ -80,4 +80,13 @@ public class CylinderUnit extends BaseEntity { ...@@ -80,4 +80,13 @@ public class CylinderUnit extends BaseEntity {
@ApiModelProperty(value = "技术服务商") @ApiModelProperty(value = "技术服务商")
private String developerAgency; private String developerAgency;
@ApiModelProperty(value = "企业资质附件")
private String qualificationFile;
@ApiModelProperty(value = "使用登记证附件")
private String useRegisterFile;
@ApiModelProperty(value = "设备汇总表附件")
private String deviceSummaryFile;
} }
...@@ -119,5 +119,7 @@ public interface CylinderInfoMapper extends BaseMapper<CylinderInfo> { ...@@ -119,5 +119,7 @@ public interface CylinderInfoMapper extends BaseMapper<CylinderInfo> {
List<Map<String, Object>> countFillingTimesAndQuantityByCity(); List<Map<String, Object>> countFillingTimesAndQuantityByCity();
String getAttachmentByUnitCode (@Param("appId") String appId); String getAttachmentByUnitCode (@Param("appId") String appId);
void updateCylinderInfoEsStatusBySeqCodes(String appId, List<String> seqCodeList);
} }
...@@ -142,7 +142,7 @@ ...@@ -142,7 +142,7 @@
LIMIT 1000 LIMIT 1000
</select> </select>
<insert id="saveAndBatchInsert" parameterType="com.yeejoin.amos.boot.module.cylinder.flc.api.entity.CylinderFillingRecord"> <insert id="saveAndBatchInsert" parameterType="com.yeejoin.amos.boot.module.cylinder.flc.api.entity.CylinderFillingRecord">
INSERT INTO tz_cylinder_filling( sequence_nbr, INSERT INTO "amos_tzs_biz".tz_cylinder_filling( sequence_nbr,
filling_before_id, filling_before_id,
filling_unit_name, filling_unit_name,
sequence_code, sequence_code,
...@@ -172,7 +172,7 @@ ...@@ -172,7 +172,7 @@
#{item.fillingBeforeId}, #{item.fillingBeforeId},
#{item.fillingUnitName}, #{item.fillingUnitName},
#{item.sequenceCode}, #{item.sequenceCode},
#{item.isValid}, #{item.isValid},
#{item.same}, #{item.same},
#{item.isRegulations}, #{item.isRegulations},
#{item.isComplianceWithgbt}, #{item.isComplianceWithgbt},
...@@ -241,7 +241,7 @@ ...@@ -241,7 +241,7 @@
<insert id="batchInsertOrUpdate" > <insert id="batchInsertOrUpdate" >
INSERT INTO tz_cylinder_filling_record (sequence_nbr, INSERT INTO "amos_tzs_biz".tz_cylinder_filling_record (sequence_nbr,
filling_record_id, filling_record_id,
filling_starttime, filling_starttime,
filling_endtime, filling_endtime,
...@@ -259,7 +259,8 @@ ...@@ -259,7 +259,8 @@
filling_before_id, filling_before_id,
filling_check_id, filling_check_id,
filling_examine_id, filling_examine_id,
is_not_es) is_not_es,
sequence_code)
VALUES VALUES
<foreach collection ="list" item="item" index= "index" separator =","> <foreach collection ="list" item="item" index= "index" separator =",">
(#{item.sequenceNbr}, (#{item.sequenceNbr},
...@@ -280,10 +281,10 @@ ...@@ -280,10 +281,10 @@
#{item.fillingBeforeId}, #{item.fillingBeforeId},
#{item.fillingCheckId}, #{item.fillingCheckId},
#{item.fillingExamineId}, #{item.fillingExamineId},
#{item.sequenceCode},
null) null)
</foreach> </foreach>
on conflict (app_id, sequence_code, filling_record_id) do update set
on conflict (app_id, filling_record_id) do update set
sequence_nbr = EXCLUDED.sequence_nbr, sequence_nbr = EXCLUDED.sequence_nbr,
filling_record_id = EXCLUDED.filling_record_id, filling_record_id = EXCLUDED.filling_record_id,
filling_starttime = EXCLUDED.filling_starttime, filling_starttime = EXCLUDED.filling_starttime,
...@@ -302,10 +303,8 @@ ...@@ -302,10 +303,8 @@
filling_before_id = EXCLUDED.filling_before_id, filling_before_id = EXCLUDED.filling_before_id,
filling_check_id = EXCLUDED.filling_check_id, filling_check_id = EXCLUDED.filling_check_id,
filling_examine_id = EXCLUDED.filling_examine_id, filling_examine_id = EXCLUDED.filling_examine_id,
is_not_es = null is_not_es = null,
sequence_code = EXCLUDED.sequence_code
</insert> </insert>
<update id="updateSyncState"> <update id="updateSyncState">
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yeejoin.amos.boot.module.cylinder.flc.api.mapper.CylinderFillingCheckMapper"> <mapper namespace="com.yeejoin.amos.boot.module.cylinder.flc.api.mapper.CylinderFillingCheckMapper">
<insert id="saveOrUpdateByCondition"> <insert id="saveOrUpdateByCondition">
INSERT INTO "tz_cylinder_filling_check" ( INSERT INTO "amos_tzs_biz".""tz_cylinder_filling_check" (
"sequence_nbr", "sequence_nbr",
"filling_check_id", "filling_check_id",
"within_scope", "within_scope",
...@@ -20,7 +20,8 @@ ...@@ -20,7 +20,8 @@
"app_id", "app_id",
"integrity", "integrity",
"check_results", "check_results",
"nonconformances" "nonconformances",
"sequence_code"
) )
VALUES VALUES
<foreach collection ="list" item="item" index= "index" separator =","> <foreach collection ="list" item="item" index= "index" separator =",">
...@@ -42,10 +43,11 @@ ...@@ -42,10 +43,11 @@
#{item.appId}, #{item.appId},
#{item.integrity}, #{item.integrity},
#{item.checkResults}, #{item.checkResults},
#{item.nonconformances} #{item.nonconformances},
#{item.sequenceCode}
) )
</foreach> </foreach>
ON conflict (app_id, filling_check_id) DO ON conflict (app_id, sequence_code, filling_check_id) DO
UPDATE UPDATE
SET "sequence_nbr" = EXCLUDED."sequence_nbr", SET "sequence_nbr" = EXCLUDED."sequence_nbr",
"filling_check_id" = EXCLUDED."filling_check_id", "filling_check_id" = EXCLUDED."filling_check_id",
...@@ -64,7 +66,8 @@ ...@@ -64,7 +66,8 @@
"app_id" = EXCLUDED."app_id", "app_id" = EXCLUDED."app_id",
"integrity" = EXCLUDED."integrity", "integrity" = EXCLUDED."integrity",
"check_results" = EXCLUDED."check_results", "check_results" = EXCLUDED."check_results",
"nonconformances" = EXCLUDED."nonconformances" "nonconformances" = EXCLUDED."nonconformances",
"sequence_code" = EXCLUDED."sequence_code"
</insert> </insert>
<select id="queryIntegirtyByAppId" resultType="java.lang.Double"> <select id="queryIntegirtyByAppId" resultType="java.lang.Double">
......
...@@ -2,29 +2,32 @@ ...@@ -2,29 +2,32 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yeejoin.amos.boot.module.cylinder.flc.api.mapper.CylinderFillingExamineMapper"> <mapper namespace="com.yeejoin.amos.boot.module.cylinder.flc.api.mapper.CylinderFillingExamineMapper">
<insert id="saveOrUpdateBatch" parameterType="com.yeejoin.amos.boot.module.cylinder.flc.api.entity.CylinderFillingExamine"> <insert id="saveOrUpdateBatch" parameterType="com.yeejoin.amos.boot.module.cylinder.flc.api.entity.CylinderFillingExamine">
INSERT INTO "tz_cylinder_filling_examine"(sequence_nbr,filling_examine_id,filling_audit_date,filling_audit_url,filling_audit_name,rec_date,rec_user_id,sync_date,sync_state,app_id) INSERT INTO
VALUES "amos_tzs_biz".""tz_cylinder_filling_examine"(sequence_nbr,filling_examine_id,filling_audit_date,filling_audit_url,filling_audit_name,rec_date,rec_user_id,sync_date,sync_state,app_id,sequence_code)
<foreach collection="list" item="item" index="index" separator=","> VALUES
(#{item.sequenceNbr}, <foreach collection="list" item="item" index="index" separator=",">
#{item.fillingExamineId}, (#{item.sequenceNbr},
#{item.fillingAuditDate}, #{item.fillingExamineId},
#{item.fillingAuditUrl}, #{item.fillingAuditDate},
#{item.fillingAuditName}, #{item.fillingAuditUrl},
#{item.recDate}, #{item.fillingAuditName},
#{item.recUserId}, #{item.recDate},
#{item.syncDate}, #{item.recUserId},
#{item.syncState}, #{item.syncDate},
#{item.appId}) #{item.syncState},
</foreach> #{item.appId},
on conflict (app_id,filling_examine_id) do update set #{item.sequenceCode})
"filling_examine_id" = EXCLUDED."filling_examine_id", </foreach>
"filling_audit_date" = EXCLUDED."filling_audit_date", on conflict (app_id, sequence_code,filling_examine_id) do update set
"filling_audit_url" = EXCLUDED."filling_audit_url", "filling_examine_id" = EXCLUDED."filling_examine_id",
"filling_audit_name" = EXCLUDED."filling_audit_name", "filling_audit_date" = EXCLUDED."filling_audit_date",
"rec_date" = EXCLUDED."rec_date", "filling_audit_url" = EXCLUDED."filling_audit_url",
"rec_user_id" = EXCLUDED."rec_user_id", "filling_audit_name" = EXCLUDED."filling_audit_name",
"sync_date" = EXCLUDED."sync_date", "rec_date" = EXCLUDED."rec_date",
"sync_state" = EXCLUDED."sync_state", "rec_user_id" = EXCLUDED."rec_user_id",
"app_id" = EXCLUDED."app_id" "sync_date" = EXCLUDED."sync_date",
"sync_state" = EXCLUDED."sync_state",
"app_id" = EXCLUDED."app_id",
"sequence_code" = EXCLUDED."sequence_code"
</insert> </insert>
</mapper> </mapper>
...@@ -498,7 +498,7 @@ ...@@ -498,7 +498,7 @@
</update> </update>
<insert id="saveOrUpdateBatch" parameterType="com.yeejoin.amos.boot.module.cylinder.flc.api.entity.CylinderInfo"> <insert id="saveOrUpdateBatch" parameterType="com.yeejoin.amos.boot.module.cylinder.flc.api.entity.CylinderInfo">
INSERT INTO "tz_cylinder_info" ("sequence_nbr","unit_name","factory_num","cylinder_status","cylinder_variety","volume","manufacturing_date","manufacturing_unit","unit_inner_code","sequence_code","early_warning_level","early_warning_level_cal_date","end_custom_code","rec_date","rec_user_id","sync_date","sync_state","app_id","integrity","longitude","latitude","credit_code","filling_media","product_name","product_qualified","proof_quality","supervision_inspec","type_experiments","valve_manufactur_unit","nominal_work_pressure","cylinder_variety_name","filling_media_name","is_not_es") INSERT INTO "amos_tzs_biz"."tz_cylinder_info" ("sequence_nbr","unit_name","factory_num","cylinder_status","cylinder_variety","volume","manufacturing_date","manufacturing_unit","unit_inner_code","sequence_code","early_warning_level","early_warning_level_cal_date","end_custom_code","rec_date","rec_user_id","sync_date","sync_state","app_id","integrity","longitude","latitude","credit_code","filling_media","product_name","product_qualified","proof_quality","supervision_inspec","type_experiments","valve_manufactur_unit","nominal_work_pressure","cylinder_variety_name","filling_media_name","is_not_es","manufacturing_unit_credit_code")
VALUES VALUES
<foreach collection="list" item="item" index="index" separator=","> <foreach collection="list" item="item" index="index" separator=",">
(#{item.sequenceNbr}, (#{item.sequenceNbr},
...@@ -533,7 +533,8 @@ ...@@ -533,7 +533,8 @@
#{item.nominalWorkPressure}, #{item.nominalWorkPressure},
#{item.cylinderVarietyName}, #{item.cylinderVarietyName},
#{item.fillingMediaName}, #{item.fillingMediaName},
null) null,
#{item.manufacturingUnitCreditCode})
</foreach> </foreach>
on conflict (app_id,sequence_code) do update set on conflict (app_id,sequence_code) do update set
"unit_name" = EXCLUDED."unit_name", "unit_name" = EXCLUDED."unit_name",
...@@ -566,6 +567,14 @@ ...@@ -566,6 +567,14 @@
"valve_manufactur_unit" = EXCLUDED."valve_manufactur_unit", "valve_manufactur_unit" = EXCLUDED."valve_manufactur_unit",
"nominal_work_pressure" = EXCLUDED."nominal_work_pressure", "nominal_work_pressure" = EXCLUDED."nominal_work_pressure",
"cylinder_variety_name" = EXCLUDED."cylinder_variety_name", "cylinder_variety_name" = EXCLUDED."cylinder_variety_name",
"filling_media_name" = EXCLUDED."filling_media_name" "filling_media_name" = EXCLUDED."filling_media_name",
"manufacturing_unit_credit_code" = EXCLUDED."manufacturing_unit_credit_code"
</insert> </insert>
<update id="updateCylinderInfoEsStatusBySeqCodes">
UPDATE "amos_tzs_biz".tz_cylinder_info SET "is_not_es" = 1 WHERE "app_id" = #{appId} and "sequence_code" IN
<foreach collection="seqCodeList" separator="," item="seqCode" open="(" close=")">
#{seqCode}
</foreach>
</update>
</mapper> </mapper>
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
</select> </select>
<insert id="saveOrUpdateBatch" parameterType="com.yeejoin.amos.boot.module.cylinder.flc.api.entity.CylinderInspection"> <insert id="saveOrUpdateBatch" parameterType="com.yeejoin.amos.boot.module.cylinder.flc.api.entity.CylinderInspection">
INSERT INTO "tz_cylinder_inspection"(sequence_nbr,inspection_unit,sequence_code,inspection_date,next_inspection_date,inspection_result,rec_date,rec_user_id,sync_date,sync_state,app_id,scrap_quantity) INSERT INTO "amos_tzs_biz"."tz_cylinder_inspection"(sequence_nbr,inspection_unit,sequence_code,inspection_date,next_inspection_date,inspection_result,rec_date,rec_user_id,sync_date,sync_state,app_id,scrap_quantity)
VALUES VALUES
<foreach collection="list" item="item" index="index" separator=","> <foreach collection="list" item="item" index="index" separator=",">
(#{item.sequenceNbr}, (#{item.sequenceNbr},
...@@ -29,7 +29,7 @@ ...@@ -29,7 +29,7 @@
#{item.appId}, #{item.appId},
#{item.scrapQuantity}) #{item.scrapQuantity})
</foreach> </foreach>
on conflict (app_id,sequence_code) do update set on conflict (app_id,sequence_code,inspection_date) do update set
"inspection_unit" = EXCLUDED."inspection_unit", "inspection_unit" = EXCLUDED."inspection_unit",
"sequence_code" = EXCLUDED."sequence_code", "sequence_code" = EXCLUDED."sequence_code",
"inspection_date" = EXCLUDED."inspection_date", "inspection_date" = EXCLUDED."inspection_date",
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
<insert id="saveOrUpdateBatch" parameterType="com.yeejoin.amos.boot.module.cylinder.flc.api.entity.CylinderTags"> <insert id="saveOrUpdateBatch" parameterType="com.yeejoin.amos.boot.module.cylinder.flc.api.entity.CylinderTags">
INSERT INTO "tz_cylinder_tags"( INSERT INTO "amos_tzs_biz"."tz_cylinder_tags"(
sequence_nbr, sequence_nbr,
sequence_code, sequence_code,
qrcode, qrcode,
......
...@@ -93,7 +93,7 @@ ...@@ -93,7 +93,7 @@
and not EXISTS (select 1 from tz_cylinder_question_info q where u.sequence_nbr = q.question_object_id and q.question_type = #{questionType} ) and not EXISTS (select 1 from tz_cylinder_question_info q where u.sequence_nbr = q.question_object_id and q.question_type = #{questionType} )
</select> </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 "amos_tzs_biz"."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","qualification_file", "use_register_file", "device_summary_file")
VALUES VALUES
<foreach collection="list" item="item" index="index" separator=","> <foreach collection="list" item="item" index="index" separator=",">
(#{item.sequenceNbr}, (#{item.sequenceNbr},
...@@ -113,7 +113,10 @@ ...@@ -113,7 +113,10 @@
#{item.appId}, #{item.appId},
#{item.securityAdm}, #{item.securityAdm},
#{item.securityAdmPhone}, #{item.securityAdmPhone},
#{item.regionName}) #{item.regionName},
#{item.qualificationFile},
#{item.useRegisterFile},
#{item.deviceSummaryFile})
</foreach> </foreach>
on conflict (app_id) do update set on conflict (app_id) do update set
"unit_id" = EXCLUDED."unit_id", "unit_id" = EXCLUDED."unit_id",
...@@ -132,6 +135,9 @@ ...@@ -132,6 +135,9 @@
"app_id" = EXCLUDED."app_id", "app_id" = EXCLUDED."app_id",
"security_adm" = EXCLUDED."security_adm", "security_adm" = EXCLUDED."security_adm",
"security_adm_phone" = EXCLUDED."security_adm_phone", "security_adm_phone" = EXCLUDED."security_adm_phone",
"region_name" = EXCLUDED."region_name" "region_name" = EXCLUDED."region_name",
"qualification_file" = EXCLUDED."qualification_file",
"use_register_file" = EXCLUDED."use_register_file",
"device_summary_file" = EXCLUDED."device_summary_file"
</insert> </insert>
</mapper> </mapper>
package com.yeejoin.amos.boot.module.cylinder.flc.biz.service.impl; package com.yeejoin.amos.boot.module.cylinder.flc.biz.service.impl;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets; import com.google.common.collect.Sets;
import com.yeejoin.amos.boot.module.cylinder.api.enums.CylDictEnum; import com.yeejoin.amos.boot.module.cylinder.api.enums.CylDictEnum;
import com.yeejoin.amos.boot.module.cylinder.flc.api.entity.CylinderFilling; import com.yeejoin.amos.boot.module.cylinder.flc.api.entity.CylinderFilling;
...@@ -13,7 +12,6 @@ import com.yeejoin.amos.boot.module.cylinder.flc.api.mapper.CylinderFillingCheck ...@@ -13,7 +12,6 @@ import com.yeejoin.amos.boot.module.cylinder.flc.api.mapper.CylinderFillingCheck
import com.yeejoin.amos.boot.module.cylinder.flc.api.mapper.CylinderInfoMapper; import com.yeejoin.amos.boot.module.cylinder.flc.api.mapper.CylinderInfoMapper;
import net.javacrumbs.shedlock.spring.annotation.SchedulerLock; import net.javacrumbs.shedlock.spring.annotation.SchedulerLock;
import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.ObjectUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled; import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -67,22 +65,22 @@ public class CylSyncServiceImpl { ...@@ -67,22 +65,22 @@ public class CylSyncServiceImpl {
HashSet<String> fillingCheckIdList = Sets.newHashSet(); HashSet<String> fillingCheckIdList = Sets.newHashSet();
HashSet<String> appIdList = Sets.newHashSet(); HashSet<String> appIdList = Sets.newHashSet();
fillingChecks.forEach(e -> { fillingChecks.forEach(e -> {
e.setAbnormalTemperature(Objects.requireNonNull(Objects.requireNonNull(CylDictEnum.getEnum(e.getAbnormalTemperature(), e.setAbnormalTemperature(Objects.requireNonNull(CylDictEnum.getEnum(e.getAbnormalTemperature(),
CylDictEnum.abnormaLTemperature_0.getKey()))).getSeqNbr()); CylDictEnum.abnormalTemperature_0.getKey())).getSeqNbr());
e.setWithinScope(Objects.requireNonNull(Objects.requireNonNull(CylDictEnum.getEnum(e.getWithinScope(), e.setWithinScope(Objects.requireNonNull(CylDictEnum.getEnum(e.getWithinScope(),
CylDictEnum.withinScope_0.getKey()))).getSeqNbr()); CylDictEnum.withinScope_0.getKey())).getSeqNbr());
e.setWarningSign(Objects.requireNonNull(Objects.requireNonNull(CylDictEnum.getEnum(e.getWarningSign(), e.setWarningSign(Objects.requireNonNull(CylDictEnum.getEnum(e.getWarningSign(),
CylDictEnum.warningSign_0.getKey()))).getSeqNbr()); CylDictEnum.warningSign_0.getKey())).getSeqNbr());
e.setSealedState(Objects.requireNonNull(Objects.requireNonNull(CylDictEnum.getEnum(e.getSealedState(), e.setSealedState(Objects.requireNonNull(CylDictEnum.getEnum(e.getSealedState(),
CylDictEnum.sealedState_0.getKey()))).getSeqNbr()); CylDictEnum.sealedState_0.getKey())).getSeqNbr());
e.setDefective(Objects.requireNonNull(Objects.requireNonNull(CylDictEnum.getEnum(e.getDefective(), e.setDefective(Objects.requireNonNull(CylDictEnum.getEnum(e.getDefective(),
CylDictEnum.defective_0.getKey()))).getSeqNbr()); CylDictEnum.defective_0.getKey())).getSeqNbr());
fillingCheckIdList.add(e.getFillingCheckId()); fillingCheckIdList.add(e.getFillingCheckId());
appIdList.add(e.getAppId()); appIdList.add(e.getAppId());
}); });
// List<CylinderFillingCheck> clearList = Lists.newArrayList(); // List<CylinderFillingCheck> clearList = Lists.newArrayList();
// fillingChecks.stream().collect(Collectors.groupingBy(item -> item.getAppId() + "-" + item.getFillingCheckId(), Collectors.maxBy(Comparator.comparing(CylinderFillingCheck::getSyncDate)))).forEach((k,v) -> { // fillingChecks.stream().collect(Collectors.groupingBy(item -> item.getAppId() + "-" + item.getFillingCheckId(), Collectors.maxBy(Comparator.comparing(CylinderFillingCheck::getSyncDate))).forEach((k,v) -> {
// clearList.add(v.get()); // clearList.add(v.get());
// }); // });
//1.更新或插入业务表 //1.更新或插入业务表
...@@ -118,10 +116,10 @@ public class CylSyncServiceImpl { ...@@ -118,10 +116,10 @@ public class CylSyncServiceImpl {
List<CylinderInfo> cylinderInfoList = sourceFillingCheckServiceImpl.getCylinderInfoList(); List<CylinderInfo> cylinderInfoList = sourceFillingCheckServiceImpl.getCylinderInfoList();
if (!ObjectUtils.isEmpty(cylinderInfoList)) { if (!ObjectUtils.isEmpty(cylinderInfoList)) {
for (CylinderInfo cylinderInfo : cylinderInfoList) { for (CylinderInfo cylinderInfo : cylinderInfoList) {
cylinderInfo.setCylinderStatus(Objects.requireNonNull(Objects.requireNonNull(CylDictEnum.getEnum(cylinderInfo.getCylinderStatus(), cylinderInfo.setCylinderStatus(Objects.requireNonNull(CylDictEnum.getEnum(cylinderInfo.getCylinderStatus(),
CylDictEnum.cylinder_Status_0.getKey()))).getSeqNbr()); CylDictEnum.cylinder_Status_0.getKey())).getSeqNbr());
cylinderInfo.setCylinderVariety(Objects.requireNonNull(Objects.requireNonNull(CylDictEnum.getEnum(cylinderInfo.getCylinderVariety(), cylinderInfo.setCylinderVariety(Objects.requireNonNull(CylDictEnum.getEnum(cylinderInfo.getCylinderVariety(),
CylDictEnum.cylinder_Variety_1.getKey()))).getSeqNbr()); CylDictEnum.cylinder_Variety_1.getKey())).getSeqNbr());
} }
cylinderInfoMapper.saveOrUpdateBatch(cylinderInfoList); cylinderInfoMapper.saveOrUpdateBatch(cylinderInfoList);
List<Long> sequenceNbrS = cylinderInfoList.stream().map(CylinderInfo::getSequenceNbr).collect(Collectors.toList()); List<Long> sequenceNbrS = cylinderInfoList.stream().map(CylinderInfo::getSequenceNbr).collect(Collectors.toList());
...@@ -164,7 +162,7 @@ public class CylSyncServiceImpl { ...@@ -164,7 +162,7 @@ public class CylSyncServiceImpl {
// sequenceCodes.add(e.getSequenceCode()); // sequenceCodes.add(e.getSequenceCode());
String isValid = e.getIsValid(); String isValid = e.getIsValid();
if (!ObjectUtil.isEmpty(isValid) && ("1".equals(isValid) || "0".equals(isValid))) { if (!ObjectUtil.isEmpty(isValid) && ("1".equals(isValid) || "0".equals(isValid))) {
CylDictEnum cylDictEnum = CylDictEnum.getEnum(Integer.valueOf(isValid), "isValid"); CylDictEnum cylDictEnum = CylDictEnum.getEnum(Integer.valueOf(isValid), CylDictEnum.isValid_0.getKey());
if (cylDictEnum != null) { if (cylDictEnum != null) {
e.setIsValid(cylDictEnum.getSeqNbr().toString()); e.setIsValid(cylDictEnum.getSeqNbr().toString());
} }
...@@ -172,7 +170,7 @@ public class CylSyncServiceImpl { ...@@ -172,7 +170,7 @@ public class CylSyncServiceImpl {
Integer same = e.getSame(); Integer same = e.getSame();
if (!ObjectUtil.isEmpty(same) && (1 == same || 0 == same)) { if (!ObjectUtil.isEmpty(same) && (1 == same || 0 == same)) {
CylDictEnum cylDictEnum = CylDictEnum.getEnum(same, "same"); CylDictEnum cylDictEnum = CylDictEnum.getEnum(same, CylDictEnum.same_0.getKey());
if (cylDictEnum != null) { if (cylDictEnum != null) {
e.setSame(cylDictEnum.getSeqNbr()); e.setSame(cylDictEnum.getSeqNbr());
} }
...@@ -180,7 +178,7 @@ public class CylSyncServiceImpl { ...@@ -180,7 +178,7 @@ public class CylSyncServiceImpl {
Integer isRegulations = e.getIsRegulations(); Integer isRegulations = e.getIsRegulations();
if (!ObjectUtil.isEmpty(isRegulations) && (1 == isRegulations || 0 == isRegulations)) { if (!ObjectUtil.isEmpty(isRegulations) && (1 == isRegulations || 0 == isRegulations)) {
CylDictEnum cylDictEnum = CylDictEnum.getEnum(isRegulations, "isRegulations"); CylDictEnum cylDictEnum = CylDictEnum.getEnum(isRegulations, CylDictEnum.isRegulations_0.getKey());
if (cylDictEnum != null) { if (cylDictEnum != null) {
e.setIsRegulations(cylDictEnum.getSeqNbr()); e.setIsRegulations(cylDictEnum.getSeqNbr());
} }
...@@ -188,7 +186,7 @@ public class CylSyncServiceImpl { ...@@ -188,7 +186,7 @@ public class CylSyncServiceImpl {
Integer isComplianceWithgbt = e.getIsComplianceWithgbt(); Integer isComplianceWithgbt = e.getIsComplianceWithgbt();
if (!ObjectUtil.isEmpty(isComplianceWithgbt) && (1 == isComplianceWithgbt || 0 == isComplianceWithgbt)) { if (!ObjectUtil.isEmpty(isComplianceWithgbt) && (1 == isComplianceWithgbt || 0 == isComplianceWithgbt)) {
CylDictEnum cylDictEnum = CylDictEnum.getEnum(isComplianceWithgbt, "isComplianceWithGBT"); CylDictEnum cylDictEnum = CylDictEnum.getEnum(isComplianceWithgbt, CylDictEnum.isComplianceWithGBT_0.getKey());
if (cylDictEnum != null) { if (cylDictEnum != null) {
e.setIsComplianceWithgbt(cylDictEnum.getSeqNbr()); e.setIsComplianceWithgbt(cylDictEnum.getSeqNbr());
} }
...@@ -196,7 +194,7 @@ public class CylSyncServiceImpl { ...@@ -196,7 +194,7 @@ public class CylSyncServiceImpl {
Integer haveStillPressure = e.getHaveStillPressure(); Integer haveStillPressure = e.getHaveStillPressure();
if (!ObjectUtil.isEmpty(haveStillPressure) && (1 == haveStillPressure || 0 == haveStillPressure)) { if (!ObjectUtil.isEmpty(haveStillPressure) && (1 == haveStillPressure || 0 == haveStillPressure)) {
CylDictEnum cylDictEnum = CylDictEnum.getEnum(haveStillPressure, "haveStillPressure"); CylDictEnum cylDictEnum = CylDictEnum.getEnum(haveStillPressure, CylDictEnum.haveStillPressure_0.getKey());
if (cylDictEnum != null) { if (cylDictEnum != null) {
e.setHaveStillPressure(cylDictEnum.getSeqNbr()); e.setHaveStillPressure(cylDictEnum.getSeqNbr());
} }
...@@ -204,7 +202,7 @@ public class CylSyncServiceImpl { ...@@ -204,7 +202,7 @@ public class CylSyncServiceImpl {
Integer isComplete = e.getIsComplete(); Integer isComplete = e.getIsComplete();
if (!ObjectUtil.isEmpty(isComplete) && (1 == isComplete || 0 == isComplete)) { if (!ObjectUtil.isEmpty(isComplete) && (1 == isComplete || 0 == isComplete)) {
CylDictEnum cylDictEnum = CylDictEnum.getEnum(isComplete, "isComplete"); CylDictEnum cylDictEnum = CylDictEnum.getEnum(isComplete, CylDictEnum.isComplete_0.getKey());
if (cylDictEnum != null) { if (cylDictEnum != null) {
e.setIsComplete(cylDictEnum.getSeqNbr()); e.setIsComplete(cylDictEnum.getSeqNbr());
} }
...@@ -212,7 +210,7 @@ public class CylSyncServiceImpl { ...@@ -212,7 +210,7 @@ public class CylSyncServiceImpl {
Integer haveSecurityDocuments = e.getHaveSecurityDocuments(); Integer haveSecurityDocuments = e.getHaveSecurityDocuments();
if (!ObjectUtil.isEmpty(haveSecurityDocuments) && (1 == haveSecurityDocuments || 0 == haveSecurityDocuments)) { if (!ObjectUtil.isEmpty(haveSecurityDocuments) && (1 == haveSecurityDocuments || 0 == haveSecurityDocuments)) {
CylDictEnum cylDictEnum = CylDictEnum.getEnum(haveSecurityDocuments, "SecurityDocuments"); CylDictEnum cylDictEnum = CylDictEnum.getEnum(haveSecurityDocuments, CylDictEnum.SecurityDocuments_0.getKey());
if (cylDictEnum != null) { if (cylDictEnum != null) {
e.setHaveSecurityDocuments(cylDictEnum.getSeqNbr()); e.setHaveSecurityDocuments(cylDictEnum.getSeqNbr());
} }
......
...@@ -27,6 +27,7 @@ import org.typroject.tyboot.component.emq.EmqxListener; ...@@ -27,6 +27,7 @@ import org.typroject.tyboot.component.emq.EmqxListener;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil; import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import javax.annotation.PostConstruct; import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
...@@ -70,10 +71,12 @@ public class SafetyProblemTopicMessage extends EmqxListener { ...@@ -70,10 +71,12 @@ public class SafetyProblemTopicMessage extends EmqxListener {
private final BlockingQueue<SafetyProblemEvent> blockingQueue = new LinkedBlockingQueue<>(); private final BlockingQueue<SafetyProblemEvent> blockingQueue = new LinkedBlockingQueue<>();
private ExecutorService executorService;
@PostConstruct @PostConstruct
void init() throws Exception { void init() throws Exception {
emqKeeper.subscript(buildTopic(problemEventTopic), 2, this); emqKeeper.subscript(buildTopic(problemEventTopic), 2, this);
ExecutorService executorService = Executors.newFixedThreadPool(threadNumber); executorService = Executors.newFixedThreadPool(threadNumber);
for (int i = 0; i < threadNumber; i++) { for (int i = 0; i < threadNumber; i++) {
executorService.execute(() -> { executorService.execute(() -> {
try { try {
...@@ -152,4 +155,11 @@ public class SafetyProblemTopicMessage extends EmqxListener { ...@@ -152,4 +155,11 @@ public class SafetyProblemTopicMessage extends EmqxListener {
String topicPrefix = "$share/" + applicationName; String topicPrefix = "$share/" + applicationName;
return String.format("%s/%s", topicPrefix, topic); return String.format("%s/%s", topicPrefix, topic);
} }
@PreDestroy
public void shutdown() {
if (executorService != null) {
executorService.shutdown();
}
}
} }
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