由内向外同步

master
wj 2 years ago
parent 8469fa56e3
commit 70481518ad

@ -8,7 +8,7 @@ import lombok.Getter;
@Getter
public enum ResultEnum {
SUCCESS(0, "success"),
SUCCESS(20000, "success"),
NOT_NETWORK(1, "系统繁忙,请稍后再试。"),
LOGIN_VERIFY_FALL(2, "登录失效"),
PARAM_VERIFY_FALL(3, "参数验证错误"),

@ -0,0 +1,38 @@
package com.glxp.api.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import java.util.concurrent.ThreadPoolExecutor;
/**
* 线
*/
@Configuration
@EnableAsync
public class TaskPoolConfig {
@Bean(name = "taskExecutor")
public ThreadPoolTaskExecutor taskExecutor() {
// 获取当前主机的cpu核心数
int threadCount = Runtime.getRuntime().availableProcessors();
ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor();
//核心池的大小
taskExecutor.setCorePoolSize(threadCount);
//线程池最大线程数
taskExecutor.setMaxPoolSize(threadCount * 2);
//队列最大长度
taskExecutor.setQueueCapacity(200);
//线程空闲时间
taskExecutor.setKeepAliveSeconds(60);
//配置线程前缀
taskExecutor.setThreadNamePrefix("custom_executor");
//配置拒绝策略
taskExecutor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
//执行初始化
taskExecutor.initialize();
return taskExecutor;
}
}

@ -4,6 +4,9 @@ import com.baomidou.mybatisplus.annotation.EnumValue;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* task
*/
@Getter
@AllArgsConstructor
public enum BasicExportStatusEnum {

@ -5,6 +5,9 @@ import lombok.AllArgsConstructor;
import lombok.Getter;
import org.springframework.beans.factory.annotation.Value;
/**
* taskkey
*/
@Getter
@AllArgsConstructor
public enum BasicExportStatusTimeEnum {

@ -4,6 +4,9 @@ import com.baomidou.mybatisplus.annotation.EnumValue;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
*
*/
@Getter
@AllArgsConstructor
public enum BasicExportTypeEnum {
@ -18,6 +21,11 @@ public enum BasicExportTypeEnum {
*/
COUNTRY_DI_DATA("country_di_data", "国家库DI数据"),
/**
*
*/
DOCUMENT_TYPE("document_type", "单据类型"),
/**
*
*/

@ -1,32 +1,28 @@
package com.glxp.api.controller.sync;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.lang.Dict;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.glxp.api.annotation.AuthRuleAnnotation;
import com.glxp.api.common.enums.ResultEnum;
import com.glxp.api.common.res.BaseResponse;
import com.glxp.api.common.util.ResultVOUtils;
import com.glxp.api.constant.*;
import com.glxp.api.controller.purchase.PurOrderController;
import com.glxp.api.constant.BasicExportStatusEnum;
import com.glxp.api.constant.BasicExportTypeEnum;
import com.glxp.api.constant.BasicProcessStatus;
import com.glxp.api.constant.ConstantStatus;
import com.glxp.api.dao.BaseMapperPlus;
import com.glxp.api.dao.auth.*;
import com.glxp.api.dao.basic.BasicBusTypeChangeDao;
import com.glxp.api.dao.basic.BasicBusTypePreDao;
import com.glxp.api.dao.basic.BasicBussinessTypeDao;
import com.glxp.api.dao.basic.EntrustReceDao;
import com.glxp.api.dao.basic.*;
import com.glxp.api.dao.inout.*;
import com.glxp.api.dao.purchase.*;
import com.glxp.api.dao.schedule.SystemParamConfigDao;
import com.glxp.api.dao.system.*;
import com.glxp.api.dao.thrsys.*;
import com.glxp.api.entity.auth.*;
import com.glxp.api.entity.basic.BasicBusTypeChangeEntity;
import com.glxp.api.entity.basic.BasicBusTypePreEntity;
import com.glxp.api.entity.basic.BasicBussinessTypeEntity;
import com.glxp.api.entity.basic.EntrustReceEntity;
import com.glxp.api.entity.basic.*;
import com.glxp.api.entity.inout.*;
import com.glxp.api.entity.purchase.*;
@ -35,7 +31,9 @@ import com.glxp.api.entity.sync.BasicExportStatusEntity;
import com.glxp.api.entity.system.*;
import com.glxp.api.entity.thrsys.*;
import com.glxp.api.req.sync.SpsSyncDataRequest;
import com.glxp.api.req.sync.SyncUpLoadRequest;
import com.glxp.api.res.sync.*;
import com.glxp.api.service.basic.IBasicBussinessTypeService;
import com.glxp.api.service.inout.IoAddInoutService;
import com.glxp.api.service.inout.IoCheckInoutService;
import com.glxp.api.service.inout.IoOrderService;
@ -45,10 +43,10 @@ import com.glxp.api.service.sync.BasicDownloadService;
import com.glxp.api.service.sync.BasicExportService;
import com.glxp.api.service.sync.SpsSyncDownloadService;
import com.glxp.api.util.CustomUtil;
import com.glxp.api.util.DateUtil;
import com.glxp.api.util.JsonUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.apache.ibatis.session.ExecutorType;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
@ -64,10 +62,12 @@ import javax.validation.Valid;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.*;
import java.util.Date;
import java.util.List;
@RestController
@Api(tags = "同步下载相关")
@RequiredArgsConstructor
public class SpsSyncDownloadController {
@Resource
@ -321,6 +321,134 @@ public class SpsSyncDownloadController {
return baseResponse;
}
@ApiOperation("上传同步数据")
@PostMapping("sps/sync/upload/data")
public Object uploadData(@RequestBody SyncUpLoadRequest upLoadRequest) {
try {
JSONObject obj = JSONUtil.parseObj(upLoadRequest.getData());
switch (upLoadRequest.getExportType()) {
case BASIC_DATA:
saveUploadBasicData(JSONUtil.toBean(obj, SpsSyncBasicDataResponse.class));
break;
case OTHER_DATA:
saveUploadOtherData(JSONUtil.toBean(obj, SpsSyncOtherDataResponse.class));
break;
case DOCUMENT_TYPE:
saveUploadDocumentTypeData(JSONUtil.toBean(obj, SpsSyncBusResponse.class));
break;
case COUNTRY_DI_DATA:
}
String taskId = obj.getStr("taskId");
BasicDownloadStatusEntity downloadStatus = BasicDownloadStatusEntity.builder()
.id(taskId)
.taskId(taskId)
.startTime(new Date())
.endTime(new Date())
.updateTime(new Date())
.type(upLoadRequest.getExportType().getRemark())
.idDatas(upLoadRequest.getExportType().getKey())
.scheduleType(1)
.build();
basicDownloadService.insertDownloadStatus(downloadStatus);
return ResultVOUtils.success();
} catch (Exception e) {
e.printStackTrace();
return ResultVOUtils.error(ResultEnum.NOT_NETWORK, e.getMessage());
}
}
private final BasicBussinessTypeDao basicBussinessTypeDao;
private final BasicBusTypeChangeDao busTypeChangeDao;
private final ThrBusTypeOriginDao thrBusTypeOriginDao;
/**
*
*
* @param bean
*/
private void saveUploadDocumentTypeData(SpsSyncBusResponse bean) {
if (CollectionUtil.isNotEmpty(bean.getBussinessTypeEntities())) {
basicBussinessTypeDao.insertOrUpdateBatch(bean.getBussinessTypeEntities());
}
if (CollectionUtil.isNotEmpty(bean.getBusTypeChangeEntities())) {
busTypeChangeDao.insertOrUpdateBatch(bean.getBusTypeChangeEntities());
}
if (CollectionUtil.isNotEmpty(bean.getThrBusTypeOriginEntities())) {
thrBusTypeOriginDao.insertOrUpdateBatch(bean.getThrBusTypeOriginEntities());
}
}
private final IoCodeLostMapper ioCodeLostMapper;
private final IoCodeRelMapper ioCodeRelMapper;
/**
*
*
* @param bean
*/
private void saveUploadOtherData(SpsSyncOtherDataResponse bean) {
if (CollectionUtil.isNotEmpty(bean.getIoCodeLostList())) {
ioCodeLostMapper.insertOrUpdateBatch(bean.getIoCodeLostList());
}
if (CollectionUtil.isNotEmpty(bean.getIoCodeRelList())) {
ioCodeRelMapper.insertOrUpdateBatch(bean.getIoCodeRelList());
}
}
private final BasicHospTypeDao basicHospTypeDao;
private final UdiRelevanceDao udiRelevanceDao;
private final BasicProductsDao basicProductsDao;
private final CompanyProductRelevanceDao relevanceDao;
private final BasicCorpDao corpDao;
private final SupCertDao supCertDao;
private final SupCertSetDao supCertSetDao;
private final SupCompanyDao supCompanyDao;
private final SupManufacturerDao supManufacturerDao;
private final SupProductDao supProductDao;
/**
*
*
* @param bean
*/
private void saveUploadBasicData(SpsSyncBasicDataResponse bean) {
if (CollectionUtil.isNotEmpty(bean.getHospTypeList())) {
basicHospTypeDao.insertOrUpdateBatch(bean.getHospTypeList());
}
if (CollectionUtil.isNotEmpty(bean.getUdiRelevanceList())) {
udiRelevanceDao.insertOrUpdateBatch(bean.getUdiRelevanceList());
}
if (CollectionUtil.isNotEmpty(bean.getProductsList())) {
basicProductsDao.insertOrUpdateBatch(bean.getProductsList());
}
if (CollectionUtil.isNotEmpty(bean.getRelevanceList())) {
relevanceDao.insertOrUpdateBatch(bean.getRelevanceList());
}
if (CollectionUtil.isNotEmpty(bean.getCorpList())) {
corpDao.insertOrUpdateBatch(bean.getCorpList());
}
if (CollectionUtil.isNotEmpty(bean.getSupCertList())) {
supCertDao.insertOrUpdateBatch(bean.getSupCertList());
}
if (CollectionUtil.isNotEmpty(bean.getSupCertSetList())) {
supCertSetDao.insertOrUpdateBatch(bean.getSupCertSetList());
}
if (CollectionUtil.isNotEmpty(bean.getSupCompanyList())) {
supCompanyDao.insertOrUpdateBatch(bean.getSupCompanyList());
}
if (CollectionUtil.isNotEmpty(bean.getSupManufacturerList())) {
supManufacturerDao.insertOrUpdateBatch(bean.getSupManufacturerList());
}
if (CollectionUtil.isNotEmpty(bean.getSupProductList())) {
supProductDao.insertOrUpdateBatch(bean.getSupProductList());
}
}
//接收中继服务、UDI管理系统上传单据
@AuthRuleAnnotation("sps/sync/order/upload")
@PostMapping("/sps/sync/order/upload")

@ -2,6 +2,7 @@ package com.glxp.api.dao.basic;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.glxp.api.dao.BaseMapperPlus;
import com.glxp.api.entity.basic.BasicCorpEntity;
import com.glxp.api.req.basic.BasicUnitMaintainFilterRequest;
import com.glxp.api.res.thrsys.ThrUnitMaintainResponse;
@ -11,7 +12,7 @@ import org.apache.ibatis.annotations.Param;
import java.util.List;
@Mapper
public interface BasicCorpDao extends BaseMapper<BasicCorpEntity> {
public interface BasicCorpDao extends BaseMapperPlus<BasicCorpDao, BasicCorpEntity, BasicCorpEntity> {
List<BasicCorpEntity> filterList(BasicUnitMaintainFilterRequest basicUnitMaintainFilterRequest);
boolean insertBasicUnitMaintain(BasicCorpEntity basicUnitMaintainEntity);

@ -1,14 +1,17 @@
package com.glxp.api.dao.basic;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.glxp.api.dao.BaseMapperPlus;
import com.glxp.api.entity.basic.BasicHospTypeEntity;
import java.util.List;
import com.glxp.api.res.basic.BasicHospTypeResponse;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@Mapper
public interface BasicHospTypeDao extends BaseMapper<BasicHospTypeEntity> {
public interface BasicHospTypeDao extends BaseMapperPlus<BasicHospTypeDao, BasicHospTypeEntity, BasicHospTypeEntity> {
List<BasicHospTypeResponse> getTreeList();

@ -2,6 +2,7 @@ package com.glxp.api.dao.basic;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.glxp.api.dao.BaseMapperPlus;
import com.glxp.api.entity.basic.BasicProductSetEntity;
import com.glxp.api.entity.basic.BasicProductsEntity;
import com.glxp.api.req.basic.FilterBasicProductSetrequest;
@ -10,7 +11,7 @@ import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface BasicProductsDao extends BaseMapper<BasicProductsEntity> {
public interface BasicProductsDao extends BaseMapperPlus<BasicProductsDao, BasicProductsEntity,BasicProductsEntity> {
}

@ -1,6 +1,7 @@
package com.glxp.api.dao.inout;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.glxp.api.dao.BaseMapperPlus;
import com.glxp.api.entity.inout.IoCodeRelEntity;
import com.glxp.api.req.inout.IoOrderRelRequest;
import com.glxp.api.res.inout.IoCodeRelResponse;
@ -9,7 +10,7 @@ import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface IoCodeRelMapper extends BaseMapper<IoCodeRelEntity> {
public interface IoCodeRelMapper extends BaseMapperPlus<IoCodeRelMapper, IoCodeRelEntity, IoCodeRelEntity> {
List<IoCodeRelResponse> selectIoCodeRelList(IoOrderRelRequest ioOrderRelRequest);

@ -2,6 +2,7 @@ package com.glxp.api.dao.purchase;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.glxp.api.dao.BaseMapperPlus;
import com.glxp.api.entity.purchase.SupCertEntity;
import com.glxp.api.req.purchase.FilterSupCertRequest;
import com.glxp.api.req.purchase.purPlanPrintRequest;
@ -11,7 +12,7 @@ import org.apache.ibatis.annotations.Param;
import java.util.List;
@Mapper
public interface SupCertDao extends BaseMapper<SupCertEntity> {
public interface SupCertDao extends BaseMapperPlus<SupCertDao, SupCertEntity, SupCertEntity> {
List<SupCertEntity> filterCompanyCert(FilterSupCertRequest filterSupCertRequest);

@ -2,6 +2,7 @@ package com.glxp.api.dao.purchase;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.glxp.api.dao.BaseMapperPlus;
import com.glxp.api.entity.purchase.SupCertSetEntity;
import com.glxp.api.req.purchase.FilterCertSetsRequest;
import org.apache.ibatis.annotations.Mapper;
@ -9,7 +10,7 @@ import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface SupCertSetDao extends BaseMapper<SupCertSetEntity> {
public interface SupCertSetDao extends BaseMapperPlus<SupCertSetDao, SupCertSetEntity, SupCertSetEntity> {
List<SupCertSetEntity> filterCertSets(FilterCertSetsRequest filterCertSetsRequest);
boolean insertCertSet(SupCertSetEntity supCertSetEntity);

@ -2,6 +2,8 @@ package com.glxp.api.dao.purchase;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.glxp.api.dao.BaseMapperPlus;
import com.glxp.api.entity.purchase.SupCertSetEntity;
import com.glxp.api.entity.purchase.SupCompanyEntity;
import com.glxp.api.req.purchase.FilterSupCompanyRequest;
import org.apache.ibatis.annotations.Mapper;
@ -9,7 +11,7 @@ import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface SupCompanyDao extends BaseMapper<SupCompanyEntity> {
public interface SupCompanyDao extends BaseMapperPlus<SupCompanyDao, SupCompanyEntity, SupCompanyEntity> {
SupCompanyEntity findCompany(String CustomerId);

@ -2,6 +2,7 @@ package com.glxp.api.dao.purchase;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.glxp.api.dao.BaseMapperPlus;
import com.glxp.api.entity.purchase.SupManufacturerEntity;
import com.glxp.api.req.purchase.FilterSupManufacturerRequest;
import org.apache.ibatis.annotations.Mapper;
@ -10,7 +11,7 @@ import org.apache.ibatis.annotations.Param;
import java.util.List;
@Mapper
public interface SupManufacturerDao extends BaseMapper<SupManufacturerEntity> {
public interface SupManufacturerDao extends BaseMapperPlus<SupManufacturerDao, SupManufacturerEntity, SupManufacturerEntity> {
SupManufacturerEntity findCompany(Long id);

@ -2,6 +2,7 @@ package com.glxp.api.dao.purchase;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.glxp.api.dao.BaseMapperPlus;
import com.glxp.api.entity.purchase.PurDeliveryDetailEntity;
import com.glxp.api.entity.purchase.SupProductEntity;
import com.glxp.api.req.purchase.FilterPoductRequest;
@ -12,7 +13,7 @@ import org.apache.ibatis.annotations.Param;
import java.util.List;
@Mapper
public interface SupProductDao extends BaseMapper<SupProductEntity> {
public interface SupProductDao extends BaseMapperPlus<SupProductDao, SupProductEntity, SupProductEntity> {
SupProductEntity findRegistration(Long id);

@ -1,10 +1,16 @@
package com.glxp.api.entity.sync;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class BasicDownloadStatusEntity {
/**

@ -0,0 +1,22 @@
package com.glxp.api.req.sync;
import com.glxp.api.constant.BasicExportTypeEnum;
import io.swagger.annotations.ApiParam;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class SyncUpLoadRequest {
@ApiParam("数据类型")
private BasicExportTypeEnum exportType;
@ApiParam("数据内容")
private Object data;
}

@ -1,5 +1,6 @@
package com.glxp.api.service.basic;
import com.baomidou.mybatisplus.extension.service.IService;
import com.glxp.api.entity.basic.BasicBussinessTypeEntity;
import com.glxp.api.req.basic.FilterBussinessTypeRequest;
import com.glxp.api.res.basic.BasicBussinessTypeResponse;
@ -9,7 +10,7 @@ import java.util.List;
/**
* Service
*/
public interface IBasicBussinessTypeService {
public interface IBasicBussinessTypeService extends IService<BasicBussinessTypeEntity> {
/**
*

@ -3,6 +3,7 @@ package com.glxp.api.service.basic.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.pagehelper.PageHelper;
import com.glxp.api.constant.Constant;
import com.glxp.api.constant.ConstantStatus;
@ -27,7 +28,7 @@ import java.util.stream.Collectors;
@Slf4j
@Service
@Transactional(rollbackFor = Exception.class)
public class BasicBussinessTypeServiceImpl implements IBasicBussinessTypeService {
public class BasicBussinessTypeServiceImpl extends ServiceImpl<BasicBussinessTypeDao,BasicBussinessTypeEntity> implements IBasicBussinessTypeService {
@Resource
private CustomerService customerService;

@ -266,6 +266,7 @@ public class SpsSyncDownloadService {
exportStatus = BasicExportStatusEntity.builder()
.id(CustomUtil.getId())
.status(BasicExportStatusEnum.WAIT_TRIGGERED.getCode())
.idDatas(BasicExportTypeEnum.BASIC_DATA.getKey())
.type(BasicExportTypeEnum.BASIC_DATA.getRemark())
.scheduleType(0)
.updateTime(cn.hutool.core.date.DateUtil.date())
@ -291,7 +292,7 @@ public class SpsSyncDownloadService {
Map<BasicExportStatusTimeEnum, Map<String, Object>> totalTimeMap = new WeakHashMap<>(10);
try {
//确认有开启物资字典由外向内同步
if (info.getBasicProducts() == 2) {
if (needExec(info.getBasicProducts())) {
Map<String, Object> map = basicExportStatusTimeInfo(now, BasicExportStatusTimeEnum.BASIC_PRODUCTS, createFile);
totalTimeMap.put(BasicExportStatusTimeEnum.BASIC_PRODUCTS, map);
List<BasicHospTypeEntity> hospTypeList = hospTypeService.list(Wrappers.lambdaQuery(BasicHospTypeEntity.class)
@ -328,7 +329,7 @@ public class SpsSyncDownloadService {
}
}
//确认有开启往来单位字典同步
if (info.getBasicCorp() == 2) {
if (needExec(info.getBasicCorp())) {
Map<String, Object> map = basicExportStatusTimeInfo(now, BasicExportStatusTimeEnum.BASIC_CORP, createFile);
totalTimeMap.put(BasicExportStatusTimeEnum.BASIC_CORP, map);
List<BasicCorpEntity> corpList = corpService.list(Wrappers.lambdaQuery(BasicCorpEntity.class)
@ -342,7 +343,7 @@ public class SpsSyncDownloadService {
}
//确认有开启首营资质同步
if (info.getSupCert() == 2) {
if (needExec(info.getSupCert())) {
Map<String, Object> map = basicExportStatusTimeInfo(now, BasicExportStatusTimeEnum.SUP_CERT, createFile);
totalTimeMap.put(BasicExportStatusTimeEnum.SUP_CERT, map);
List<SupCertEntity> supCertList = supCertService.list(Wrappers.lambdaQuery(SupCertEntity.class)

Loading…
Cancel
Save