diff --git a/src/main/java/com/glxp/api/constant/BasicExportStatusEnum.java b/src/main/java/com/glxp/api/constant/BasicExportStatusEnum.java new file mode 100644 index 00000000..6f3aad8d --- /dev/null +++ b/src/main/java/com/glxp/api/constant/BasicExportStatusEnum.java @@ -0,0 +1,35 @@ +package com.glxp.api.constant; + +import com.baomidou.mybatisplus.annotation.EnumValue; +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@AllArgsConstructor +public enum BasicExportStatusEnum { + + /** + * 任务待触发 + */ + WAIT_TRIGGERED(1, "任务待触发"), + + /** + * 文件待生成 + */ + WAIT_BUILT(2, "文件待生成"), + + /** + * 文件待同步 + */ + WAIT_SYNC(3, "文件待同步"), + + /** + * 任务完成 + */ + COMPLETED(4, "任务完成"), + ; + @EnumValue + private Integer code; + + private String remark; +} diff --git a/src/main/java/com/glxp/api/constant/BasicExportStatusTimeEnum.java b/src/main/java/com/glxp/api/constant/BasicExportStatusTimeEnum.java new file mode 100644 index 00000000..a4117719 --- /dev/null +++ b/src/main/java/com/glxp/api/constant/BasicExportStatusTimeEnum.java @@ -0,0 +1,36 @@ +package com.glxp.api.constant; + +import com.baomidou.mybatisplus.annotation.EnumValue; +import lombok.AllArgsConstructor; +import lombok.Getter; +import org.springframework.beans.factory.annotation.Value; + +@Getter +@AllArgsConstructor +public enum BasicExportStatusTimeEnum { + + /** + * 耗材字典 + */ + BASIC_PRODUCTS("basic_products", "耗材字典"), + + /** + * 往来单位字典 + */ + BASIC_CORP("basic_corp", "往来单位字典"), + + /** + * 国家库DI数据 + */ + DB_DI_PRODUCTS("db_di_products", "国家库DI数据"), + + /** + * 首营资质 + */ + SUP_CERT("sup_cert", "首营资质"), + ; + @EnumValue + private String key; + + private String remark; +} diff --git a/src/main/java/com/glxp/api/constant/BasicExportTypeEnum.java b/src/main/java/com/glxp/api/constant/BasicExportTypeEnum.java new file mode 100644 index 00000000..a45e38a7 --- /dev/null +++ b/src/main/java/com/glxp/api/constant/BasicExportTypeEnum.java @@ -0,0 +1,20 @@ +package com.glxp.api.constant; + +import com.baomidou.mybatisplus.annotation.EnumValue; +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@AllArgsConstructor +public enum BasicExportTypeEnum { + + /** + * 基础数据 + */ + BASIC_DATA("basic_data", "基础数据"), + ; + @EnumValue + private String key; + + private String remark; +} diff --git a/src/main/java/com/glxp/api/controller/sync/SpsSyncDownloadController.java b/src/main/java/com/glxp/api/controller/sync/SpsSyncDownloadController.java index f1a65170..456d4650 100644 --- a/src/main/java/com/glxp/api/controller/sync/SpsSyncDownloadController.java +++ b/src/main/java/com/glxp/api/controller/sync/SpsSyncDownloadController.java @@ -1,9 +1,13 @@ package com.glxp.api.controller.sync; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.lang.Dict; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.glxp.api.annotation.AuthRuleAnnotation; 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.BasicProcessStatus; import com.glxp.api.constant.ConstantStatus; import com.glxp.api.dao.auth.*; @@ -14,11 +18,9 @@ import com.glxp.api.dao.thrsys.ThrBusTypeOriginDao; import com.glxp.api.dao.thrsys.ThrDeptDao; import com.glxp.api.dao.thrsys.ThrInvWarehouseDao; import com.glxp.api.entity.auth.*; -import com.glxp.api.entity.basic.BasicBusTypeChangeEntity; -import com.glxp.api.entity.basic.BasicBussinessTypeEntity; +import com.glxp.api.entity.basic.*; import com.glxp.api.entity.inout.*; -import com.glxp.api.entity.purchase.PurOrderDetailEntity; -import com.glxp.api.entity.purchase.PurOrderEntity; +import com.glxp.api.entity.purchase.*; import com.glxp.api.entity.sync.BasicDownloadStatusEntity; import com.glxp.api.entity.sync.BasicExportStatusEntity; import com.glxp.api.entity.thrsys.ThrBusTypeOriginEntity; @@ -35,6 +37,8 @@ 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 org.apache.ibatis.session.ExecutorType; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; @@ -47,8 +51,13 @@ import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import javax.validation.Valid; +import java.io.FileNotFoundException; +import java.io.FileReader; +import java.io.IOException; +import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.Map; @RestController public class SpsSyncDownloadController { @@ -135,6 +144,67 @@ public class SpsSyncDownloadController { } + // 下发基础数据 ,供给中继服务,UDI管理系统下载 + @AuthRuleAnnotation("") + @GetMapping("sps/sync/basicData") + public BaseResponse getBasicData() { + BaseResponse baseResponse = new BaseResponse<>(); + SpsSyncBasicDataResponse spsSyncBasicDataResponse = new SpsSyncBasicDataResponse(); + BasicExportStatusEntity one = basicExportService.getOne(Wrappers.lambdaQuery(BasicExportStatusEntity.class) + .eq(BasicExportStatusEntity::getType, BasicExportTypeEnum.BASIC_DATA) + .orderByDesc(BasicExportStatusEntity::getStartTime) + .last("limit 1") + ); + if (one != null) { + if (BasicExportStatusEnum.WAIT_TRIGGERED.getCode().equals(one.getStatus())) { + basicExportService.update(Wrappers.lambdaUpdate(BasicExportStatusEntity.class) + .set(BasicExportStatusEntity::getStatus, BasicExportStatusEnum.WAIT_BUILT.getCode()) + .set(BasicExportStatusEntity::getUpdateTime, new Date()) + .eq(BasicExportStatusEntity::getStatus, BasicExportStatusEnum.WAIT_TRIGGERED.getCode()) + .eq(BasicExportStatusEntity::getId, one.getId()) + ); + } else if (BasicExportStatusEnum.WAIT_SYNC.getCode().equals(one.getStatus())) { + // 读取文件数据 + try { + FileReader reader = new FileReader(one.getCacheFilePath()); + StringBuilder str = new StringBuilder(); + int data; + while ((data = reader.read()) != -1) { + str.append(data); + } + reader.close(); + Dict map = JsonUtils.parseMap(str.toString()); + // 组装返回数据 + spsSyncBasicDataResponse.setTaskId(one.getId()); + spsSyncBasicDataResponse.setHospTypeList((List) map.get(BasicHospTypeEntity.class.getName())); + spsSyncBasicDataResponse.setUdiRelevanceList((List) map.get(UdiRelevanceEntity.class.getName())); + spsSyncBasicDataResponse.setProductsList((List) map.get(BasicProductsEntity.class.getName())); + spsSyncBasicDataResponse.setRelevanceList((List) map.get(CompanyProductRelevanceEntity.class.getName())); + spsSyncBasicDataResponse.setCorpList((List) map.get(BasicCorpEntity.class.getName())); + spsSyncBasicDataResponse.setSupCertList((List) map.get(SupCertEntity.class.getName())); + spsSyncBasicDataResponse.setSupCertSetList((List) map.get(SupCertSetEntity.class.getName())); + spsSyncBasicDataResponse.setSupCompanyList((List) map.get(SupCompanyEntity.class.getName())); + spsSyncBasicDataResponse.setSupManufacturerList((List) map.get(SupManufacturerEntity.class.getName())); + spsSyncBasicDataResponse.setSupProductList((List) map.get(SupProductEntity.class.getName())); + } catch (FileNotFoundException e) { + throw new RuntimeException("系统异常,未找到对应数据文件"); + } catch (IOException e) { + throw new RuntimeException(e); + } + // 修改任务状态 +// basicExportService.update(Wrappers.lambdaUpdate(BasicExportStatusEntity.class) +// .set(BasicExportStatusEntity::getStatus, BasicExportStatusEnum.COMPLETED.getCode()) +// .set(BasicExportStatusEntity::getUpdateTime, new Date()) +// .set(BasicExportStatusEntity::getEndTime, new Date()) +// .eq(BasicExportStatusEntity::getStatus, BasicExportStatusEnum.WAIT_SYNC.getCode()) +// .eq(BasicExportStatusEntity::getId, one.getId()) +// ); + } + } + baseResponse.setData(spsSyncBasicDataResponse); + return baseResponse; + } + //接收中继服务、UDI管理系统上传单据 @AuthRuleAnnotation("sps/sync/order/upload") @PostMapping("/sps/sync/order/upload") diff --git a/src/main/java/com/glxp/api/dao/basic/BasicCorpDao.java b/src/main/java/com/glxp/api/dao/basic/BasicCorpDao.java index 9f0a685d..62293dcb 100644 --- a/src/main/java/com/glxp/api/dao/basic/BasicCorpDao.java +++ b/src/main/java/com/glxp/api/dao/basic/BasicCorpDao.java @@ -1,9 +1,9 @@ package com.glxp.api.dao.basic; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.glxp.api.entity.basic.BasicCorpEntity; import com.glxp.api.req.basic.BasicUnitMaintainFilterRequest; -import com.glxp.api.res.thrsys.ThrCorpsResponse; import com.glxp.api.res.thrsys.ThrUnitMaintainResponse; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -11,16 +11,16 @@ import org.apache.ibatis.annotations.Param; import java.util.List; @Mapper -public interface BasicCorpDao { +public interface BasicCorpDao extends BaseMapper { List filterList(BasicUnitMaintainFilterRequest basicUnitMaintainFilterRequest); boolean insertBasicUnitMaintain(BasicCorpEntity basicUnitMaintainEntity); boolean insertThrUnitMaintainignore(ThrUnitMaintainResponse thrUnitMaintainResponse); - boolean insert(BasicCorpEntity basicUnitMaintainEntity); + int insert(BasicCorpEntity basicUnitMaintainEntity); - boolean updateById(BasicCorpEntity basicUnitMaintainSaveRequest); + int updateById(BasicCorpEntity basicUnitMaintainSaveRequest); BasicCorpEntity selectByThirdId(BasicUnitMaintainFilterRequest basicUnitMaintainFilterRequest); diff --git a/src/main/java/com/glxp/api/dao/basic/BasicProductsDao.java b/src/main/java/com/glxp/api/dao/basic/BasicProductsDao.java new file mode 100644 index 00000000..0239553d --- /dev/null +++ b/src/main/java/com/glxp/api/dao/basic/BasicProductsDao.java @@ -0,0 +1,16 @@ +package com.glxp.api.dao.basic; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.glxp.api.entity.basic.BasicProductSetEntity; +import com.glxp.api.entity.basic.BasicProductsEntity; +import com.glxp.api.req.basic.FilterBasicProductSetrequest; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +@Mapper +public interface BasicProductsDao extends BaseMapper { + + +} diff --git a/src/main/java/com/glxp/api/dao/purchase/SupCertSetDao.java b/src/main/java/com/glxp/api/dao/purchase/SupCertSetDao.java index 3e9d9ffc..9f9dcdd3 100644 --- a/src/main/java/com/glxp/api/dao/purchase/SupCertSetDao.java +++ b/src/main/java/com/glxp/api/dao/purchase/SupCertSetDao.java @@ -1,6 +1,7 @@ package com.glxp.api.dao.purchase; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.glxp.api.entity.purchase.SupCertSetEntity; import com.glxp.api.req.purchase.FilterCertSetsRequest; import org.apache.ibatis.annotations.Mapper; @@ -8,7 +9,7 @@ import org.apache.ibatis.annotations.Mapper; import java.util.List; @Mapper -public interface SupCertSetDao { +public interface SupCertSetDao extends BaseMapper { List filterCertSets(FilterCertSetsRequest filterCertSetsRequest); boolean insertCertSet(SupCertSetEntity supCertSetEntity); diff --git a/src/main/java/com/glxp/api/dao/purchase/SupCompanyDao.java b/src/main/java/com/glxp/api/dao/purchase/SupCompanyDao.java index d0b65f8e..0ddded8a 100644 --- a/src/main/java/com/glxp/api/dao/purchase/SupCompanyDao.java +++ b/src/main/java/com/glxp/api/dao/purchase/SupCompanyDao.java @@ -1,6 +1,7 @@ package com.glxp.api.dao.purchase; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.glxp.api.entity.purchase.SupCompanyEntity; import com.glxp.api.req.purchase.FilterSupCompanyRequest; import org.apache.ibatis.annotations.Mapper; @@ -8,7 +9,7 @@ import org.apache.ibatis.annotations.Mapper; import java.util.List; @Mapper -public interface SupCompanyDao { +public interface SupCompanyDao extends BaseMapper { SupCompanyEntity findCompany(String CustomerId); diff --git a/src/main/java/com/glxp/api/dao/purchase/SupManufacturerDao.java b/src/main/java/com/glxp/api/dao/purchase/SupManufacturerDao.java index 261c8a43..3d5e4858 100644 --- a/src/main/java/com/glxp/api/dao/purchase/SupManufacturerDao.java +++ b/src/main/java/com/glxp/api/dao/purchase/SupManufacturerDao.java @@ -1,6 +1,7 @@ package com.glxp.api.dao.purchase; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.glxp.api.entity.purchase.SupManufacturerEntity; import com.glxp.api.req.purchase.FilterSupManufacturerRequest; import org.apache.ibatis.annotations.Mapper; @@ -9,7 +10,7 @@ import org.apache.ibatis.annotations.Param; import java.util.List; @Mapper -public interface SupManufacturerDao { +public interface SupManufacturerDao extends BaseMapper { SupManufacturerEntity findCompany(Long id); diff --git a/src/main/java/com/glxp/api/dao/sync/BasicExportDao.java b/src/main/java/com/glxp/api/dao/sync/BasicExportDao.java index 0ff63900..4cb3a2de 100644 --- a/src/main/java/com/glxp/api/dao/sync/BasicExportDao.java +++ b/src/main/java/com/glxp/api/dao/sync/BasicExportDao.java @@ -1,5 +1,6 @@ package com.glxp.api.dao.sync; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.glxp.api.entity.sync.BasicExportStatusEntity; import com.glxp.api.req.sync.BasicExportStatusRequest; import org.apache.ibatis.annotations.Mapper; @@ -8,7 +9,7 @@ import org.apache.ibatis.annotations.Param; import java.util.List; @Mapper -public interface BasicExportDao { +public interface BasicExportDao extends BaseMapper { List filterExportStatus(BasicExportStatusRequest basicExportStatusRequest); diff --git a/src/main/java/com/glxp/api/dao/sync/BasicExportTimeDao.java b/src/main/java/com/glxp/api/dao/sync/BasicExportTimeDao.java index aa615cca..c281ff6f 100644 --- a/src/main/java/com/glxp/api/dao/sync/BasicExportTimeDao.java +++ b/src/main/java/com/glxp/api/dao/sync/BasicExportTimeDao.java @@ -1,5 +1,6 @@ package com.glxp.api.dao.sync; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.glxp.api.entity.sync.BasicExportStatusTimeEntity; import com.glxp.api.req.sync.BasicExportTimeRequest; import org.apache.ibatis.annotations.Mapper; @@ -7,7 +8,7 @@ import org.apache.ibatis.annotations.Mapper; import java.util.List; @Mapper -public interface BasicExportTimeDao { +public interface BasicExportTimeDao extends BaseMapper { List filterExportStatus(BasicExportTimeRequest basicExportStatusRequest); diff --git a/src/main/java/com/glxp/api/entity/basic/BasicProductSetEntity.java b/src/main/java/com/glxp/api/entity/basic/BasicProductSetEntity.java index 48ddcae4..8863866b 100644 --- a/src/main/java/com/glxp/api/entity/basic/BasicProductSetEntity.java +++ b/src/main/java/com/glxp/api/entity/basic/BasicProductSetEntity.java @@ -1,10 +1,15 @@ package com.glxp.api.entity.basic; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; @Data +@TableName(value = "basic_product_set") public class BasicProductSetEntity { + @TableId(type = IdType.AUTO) private Integer id; private String parmName; private String parmKey; @@ -17,6 +22,4 @@ public class BasicProductSetEntity { private Integer sort; - - } diff --git a/src/main/java/com/glxp/api/entity/sync/BasicExportStatusEntity.java b/src/main/java/com/glxp/api/entity/sync/BasicExportStatusEntity.java index 7a0e08a5..d86c32cd 100644 --- a/src/main/java/com/glxp/api/entity/sync/BasicExportStatusEntity.java +++ b/src/main/java/com/glxp/api/entity/sync/BasicExportStatusEntity.java @@ -2,20 +2,42 @@ package com.glxp.api.entity.sync; import java.util.Date; +import cn.hutool.core.date.DateUtil; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.AllArgsConstructor; +import lombok.Builder; import lombok.Data; +import lombok.NoArgsConstructor; +import org.apache.ibatis.type.JdbcType; @Data +@TableName("basic_export_status") +@Builder +@AllArgsConstructor +@NoArgsConstructor public class BasicExportStatusEntity { + @TableId(type = IdType.INPUT) private String id; + @TableField(value = "idDatas") private String idDatas; private Integer status; private String type; + @TableField(value = "updateTime") private Date updateTime; + @TableField(value = "scheduleType") private Integer scheduleType; + @TableField(value = "startTime") private Date startTime; + @TableField(value = "endTime") private Date endTime; private String remark; + @TableField(value = "receiveStatus") private String receiveStatus; + @TableField(value = "cacheFilePath") private String cacheFilePath; } diff --git a/src/main/java/com/glxp/api/entity/sync/BasicExportStatusTimeEntity.java b/src/main/java/com/glxp/api/entity/sync/BasicExportStatusTimeEntity.java index fc516426..724fe3ec 100644 --- a/src/main/java/com/glxp/api/entity/sync/BasicExportStatusTimeEntity.java +++ b/src/main/java/com/glxp/api/entity/sync/BasicExportStatusTimeEntity.java @@ -1,12 +1,27 @@ package com.glxp.api.entity.sync; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.AllArgsConstructor; +import lombok.Builder; import lombok.Data; +import lombok.NoArgsConstructor; +@Builder +@NoArgsConstructor +@AllArgsConstructor @Data +@TableName("basic_export_status_time") public class BasicExportStatusTimeEntity { + @TableId(value = "id", type = IdType.AUTO) private Integer id; + @TableField(value = "lastUpdateTime") private String lastUpdateTime; + + @TableField(value = "`key`") private String key; private String remark; diff --git a/src/main/java/com/glxp/api/res/sync/SpsSyncBasicDataResponse.java b/src/main/java/com/glxp/api/res/sync/SpsSyncBasicDataResponse.java new file mode 100644 index 00000000..8f3badf3 --- /dev/null +++ b/src/main/java/com/glxp/api/res/sync/SpsSyncBasicDataResponse.java @@ -0,0 +1,23 @@ +package com.glxp.api.res.sync; + +import com.glxp.api.entity.basic.*; +import com.glxp.api.entity.purchase.*; +import lombok.Data; + +import java.util.List; + +@Data +public class SpsSyncBasicDataResponse extends BaseSyncResponse { + + + List hospTypeList; + List udiRelevanceList; + List productsList; + List relevanceList; + List corpList; + List supCertList; + List supCertSetList; + List supCompanyList; + List supManufacturerList; + List supProductList; +} diff --git a/src/main/java/com/glxp/api/service/basic/BasicCorpService.java b/src/main/java/com/glxp/api/service/basic/BasicCorpService.java index d93396b7..82a432a4 100644 --- a/src/main/java/com/glxp/api/service/basic/BasicCorpService.java +++ b/src/main/java/com/glxp/api/service/basic/BasicCorpService.java @@ -1,6 +1,7 @@ package com.glxp.api.service.basic; +import com.baomidou.mybatisplus.extension.service.IService; import com.glxp.api.entity.basic.BasicCorpEntity; import com.glxp.api.req.basic.BasicUnitMaintainFilterRequest; import com.glxp.api.res.thrsys.ThrCorpsResponse; @@ -8,7 +9,7 @@ import com.glxp.api.res.thrsys.ThrUnitMaintainResponse; import java.util.List; -public interface BasicCorpService { +public interface BasicCorpService extends IService { List filterList(BasicUnitMaintainFilterRequest basicUnitMaintainFilterRequest); diff --git a/src/main/java/com/glxp/api/service/basic/BasicHospTypeService.java b/src/main/java/com/glxp/api/service/basic/BasicHospTypeService.java index 7a5854f5..a95866c0 100644 --- a/src/main/java/com/glxp/api/service/basic/BasicHospTypeService.java +++ b/src/main/java/com/glxp/api/service/basic/BasicHospTypeService.java @@ -1,5 +1,6 @@ package com.glxp.api.service.basic; +import com.baomidou.mybatisplus.extension.service.IService; import com.glxp.api.entity.basic.BasicHospTypeEntity; import com.glxp.api.req.basic.BasicHospTypeFilterRequest; import com.glxp.api.req.basic.BasicHospTypeRequest; @@ -10,7 +11,7 @@ import com.glxp.api.res.basic.UdiRelevanceResponse; import java.util.List; -public interface BasicHospTypeService { +public interface BasicHospTypeService extends IService { List filterHospTypeList(BasicHospTypeFilterRequest basicHospTypeFilterRequest); diff --git a/src/main/java/com/glxp/api/service/basic/CompanyProductRelevanceService.java b/src/main/java/com/glxp/api/service/basic/CompanyProductRelevanceService.java index 0e31f305..ce04e363 100644 --- a/src/main/java/com/glxp/api/service/basic/CompanyProductRelevanceService.java +++ b/src/main/java/com/glxp/api/service/basic/CompanyProductRelevanceService.java @@ -1,13 +1,14 @@ package com.glxp.api.service.basic; +import com.baomidou.mybatisplus.extension.service.IService; import com.glxp.api.entity.basic.CompanyProductRelevanceEntity; import com.glxp.api.req.basic.CompanyProductRelevanceRequest; import com.glxp.api.res.basic.CompanyProductRelevanceResponse; import java.util.List; -public interface CompanyProductRelevanceService { +public interface CompanyProductRelevanceService extends IService { List filterUdiGp(CompanyProductRelevanceRequest basicInstrumentMaintainRequest); diff --git a/src/main/java/com/glxp/api/service/basic/UdiRelevanceService.java b/src/main/java/com/glxp/api/service/basic/UdiRelevanceService.java index dad2f591..b89b809b 100644 --- a/src/main/java/com/glxp/api/service/basic/UdiRelevanceService.java +++ b/src/main/java/com/glxp/api/service/basic/UdiRelevanceService.java @@ -1,6 +1,7 @@ package com.glxp.api.service.basic; +import com.baomidou.mybatisplus.extension.service.IService; import com.glxp.api.entity.basic.UdiRelevanceEntity; import com.glxp.api.req.basic.FilterUdiRelRequest; import com.glxp.api.res.basic.UdiRelevanceResponse; @@ -10,7 +11,7 @@ import java.util.List; /** * 耗材字典关联 */ -public interface UdiRelevanceService { +public interface UdiRelevanceService extends IService { List filterUdiRelevance(FilterUdiRelRequest filterUdiRelRequest); diff --git a/src/main/java/com/glxp/api/service/basic/impl/BasicCorpServiceImpl.java b/src/main/java/com/glxp/api/service/basic/impl/BasicCorpServiceImpl.java index 3ecf7a8a..0aa2748b 100644 --- a/src/main/java/com/glxp/api/service/basic/impl/BasicCorpServiceImpl.java +++ b/src/main/java/com/glxp/api/service/basic/impl/BasicCorpServiceImpl.java @@ -1,6 +1,8 @@ package com.glxp.api.service.basic.impl; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.BooleanUtil; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.github.pagehelper.PageHelper; import com.glxp.api.dao.basic.BasicCorpDao; import com.glxp.api.entity.basic.BasicCorpEntity; @@ -18,7 +20,7 @@ import java.util.List; @Service @Transactional(rollbackFor = Exception.class) -public class BasicCorpServiceImpl implements BasicCorpService { +public class BasicCorpServiceImpl extends ServiceImpl implements BasicCorpService { @Resource BasicCorpDao basicCorpDao; @@ -50,13 +52,13 @@ public class BasicCorpServiceImpl implements BasicCorpService { @Override public boolean insert(BasicCorpEntity basicUnitMaintainEntity) { - return basicCorpDao.insert(basicUnitMaintainEntity); + return basicCorpDao.insert(basicUnitMaintainEntity) == 0 ? false : true; } @Override public boolean updateById(BasicCorpEntity basicUnitMaintainSaveRequest) { basicUnitMaintainSaveRequest.setUpdateTime(new Date()); - return basicCorpDao.updateById(basicUnitMaintainSaveRequest); + return basicCorpDao.updateById(basicUnitMaintainSaveRequest) == 0 ? false : true; } @Override diff --git a/src/main/java/com/glxp/api/service/basic/impl/BasicHospTypeServiceImpl.java b/src/main/java/com/glxp/api/service/basic/impl/BasicHospTypeServiceImpl.java index 4ebcd6b6..9f9a566e 100644 --- a/src/main/java/com/glxp/api/service/basic/impl/BasicHospTypeServiceImpl.java +++ b/src/main/java/com/glxp/api/service/basic/impl/BasicHospTypeServiceImpl.java @@ -2,6 +2,7 @@ package com.glxp.api.service.basic.impl; 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.dao.basic.BasicHospTypeDao; import com.glxp.api.dao.basic.UdiRelevanceDao; @@ -26,7 +27,7 @@ import java.util.List; @Service @Transactional(rollbackFor = Exception.class) -public class BasicHospTypeServiceImpl implements BasicHospTypeService { +public class BasicHospTypeServiceImpl extends ServiceImpl implements BasicHospTypeService { @Resource BasicHospTypeDao basicHospTypeDao; diff --git a/src/main/java/com/glxp/api/service/basic/impl/CompanyProductRelevanceServiceImpl.java b/src/main/java/com/glxp/api/service/basic/impl/CompanyProductRelevanceServiceImpl.java index 7528ab4e..e5a3192d 100644 --- a/src/main/java/com/glxp/api/service/basic/impl/CompanyProductRelevanceServiceImpl.java +++ b/src/main/java/com/glxp/api/service/basic/impl/CompanyProductRelevanceServiceImpl.java @@ -2,6 +2,7 @@ package com.glxp.api.service.basic.impl; 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.dao.basic.CompanyProductRelevanceDao; import com.glxp.api.entity.basic.CompanyProductRelevanceEntity; @@ -17,7 +18,8 @@ import java.util.List; @Service @Transactional(rollbackFor = Exception.class) -public class CompanyProductRelevanceServiceImpl implements CompanyProductRelevanceService { +public class CompanyProductRelevanceServiceImpl extends ServiceImpl + implements CompanyProductRelevanceService { @Resource CompanyProductRelevanceDao companyProductRelevanceDao; diff --git a/src/main/java/com/glxp/api/service/basic/impl/UdiRelevanceServiceImpl.java b/src/main/java/com/glxp/api/service/basic/impl/UdiRelevanceServiceImpl.java index 10e8db33..6f571bf0 100644 --- a/src/main/java/com/glxp/api/service/basic/impl/UdiRelevanceServiceImpl.java +++ b/src/main/java/com/glxp/api/service/basic/impl/UdiRelevanceServiceImpl.java @@ -2,6 +2,7 @@ package com.glxp.api.service.basic.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.github.pagehelper.PageHelper; import com.glxp.api.constant.ConstantStatus; import com.glxp.api.dao.basic.UdiRelevanceDao; @@ -22,7 +23,7 @@ import java.util.List; @Service @Transactional(rollbackFor = Exception.class) -public class UdiRelevanceServiceImpl implements UdiRelevanceService { +public class UdiRelevanceServiceImpl extends ServiceImpl implements UdiRelevanceService { @Resource UdiRelevanceDao udiRelevanceDao; @Resource diff --git a/src/main/java/com/glxp/api/service/purchase/SupCertService.java b/src/main/java/com/glxp/api/service/purchase/SupCertService.java index 693cfbba..ec2c80ce 100644 --- a/src/main/java/com/glxp/api/service/purchase/SupCertService.java +++ b/src/main/java/com/glxp/api/service/purchase/SupCertService.java @@ -3,13 +3,14 @@ package com.glxp.api.service.purchase; +import com.baomidou.mybatisplus.extension.service.IService; import com.glxp.api.entity.purchase.SupCertEntity; import com.glxp.api.req.purchase.FilterSupCertRequest; import com.glxp.api.req.purchase.purPlanPrintRequest; import java.util.List; -public interface SupCertService { +public interface SupCertService extends IService { List filterCompanyCert(FilterSupCertRequest filterSupCertRequest); diff --git a/src/main/java/com/glxp/api/service/purchase/SupCertSetService.java b/src/main/java/com/glxp/api/service/purchase/SupCertSetService.java index 30d345d3..b25a1ca8 100644 --- a/src/main/java/com/glxp/api/service/purchase/SupCertSetService.java +++ b/src/main/java/com/glxp/api/service/purchase/SupCertSetService.java @@ -1,14 +1,13 @@ package com.glxp.api.service.purchase; - - +import com.baomidou.mybatisplus.extension.service.IService; import com.glxp.api.entity.purchase.SupCertSetEntity; import com.glxp.api.req.purchase.FilterCertSetsRequest; import java.util.List; -public interface SupCertSetService { +public interface SupCertSetService extends IService { List filterCertSets(FilterCertSetsRequest filterCertSetsRequest); diff --git a/src/main/java/com/glxp/api/service/purchase/SupCompanyService.java b/src/main/java/com/glxp/api/service/purchase/SupCompanyService.java index 7f5ba1f5..a71f11f1 100644 --- a/src/main/java/com/glxp/api/service/purchase/SupCompanyService.java +++ b/src/main/java/com/glxp/api/service/purchase/SupCompanyService.java @@ -2,12 +2,13 @@ package com.glxp.api.service.purchase; +import com.baomidou.mybatisplus.extension.service.IService; import com.glxp.api.entity.purchase.SupCompanyEntity; import com.glxp.api.req.purchase.FilterSupCompanyRequest; import java.util.List; -public interface SupCompanyService { +public interface SupCompanyService extends IService { SupCompanyEntity findCompanyByUnitFk(String unitFk); diff --git a/src/main/java/com/glxp/api/service/purchase/SupManufacturerService.java b/src/main/java/com/glxp/api/service/purchase/SupManufacturerService.java index e868eb17..92565da4 100644 --- a/src/main/java/com/glxp/api/service/purchase/SupManufacturerService.java +++ b/src/main/java/com/glxp/api/service/purchase/SupManufacturerService.java @@ -1,14 +1,13 @@ package com.glxp.api.service.purchase; - - +import com.baomidou.mybatisplus.extension.service.IService; import com.glxp.api.entity.purchase.SupManufacturerEntity; import com.glxp.api.req.purchase.FilterSupManufacturerRequest; import java.util.List; -public interface SupManufacturerService { +public interface SupManufacturerService extends IService { SupManufacturerEntity findCompany(Long id); diff --git a/src/main/java/com/glxp/api/service/purchase/SupProductService.java b/src/main/java/com/glxp/api/service/purchase/SupProductService.java index 3cdcc6bc..d27a20df 100644 --- a/src/main/java/com/glxp/api/service/purchase/SupProductService.java +++ b/src/main/java/com/glxp/api/service/purchase/SupProductService.java @@ -1,6 +1,7 @@ package com.glxp.api.service.purchase; +import com.baomidou.mybatisplus.extension.service.IService; import com.glxp.api.entity.purchase.SupProductEntity; import com.glxp.api.req.purchase.FilterPoductRequest; import com.glxp.api.res.purchase.SupProductResponse; @@ -8,7 +9,7 @@ import org.apache.ibatis.annotations.Param; import java.util.List; -public interface SupProductService { +public interface SupProductService extends IService { SupProductEntity findRegistration(Long id); diff --git a/src/main/java/com/glxp/api/service/purchase/impl/SupCertServiceImpl.java b/src/main/java/com/glxp/api/service/purchase/impl/SupCertServiceImpl.java index a9447556..c11da807 100644 --- a/src/main/java/com/glxp/api/service/purchase/impl/SupCertServiceImpl.java +++ b/src/main/java/com/glxp/api/service/purchase/impl/SupCertServiceImpl.java @@ -1,6 +1,7 @@ package com.glxp.api.service.purchase.impl; import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.github.pagehelper.PageHelper; import com.glxp.api.constant.ConstantStatus; import com.glxp.api.dao.purchase.SupCertDao; @@ -17,7 +18,7 @@ import java.util.List; @Service @Transactional(rollbackFor = Exception.class) -public class SupCertServiceImpl implements SupCertService { +public class SupCertServiceImpl extends ServiceImpl implements SupCertService { @Resource SupCertDao supCertDao; @@ -33,6 +34,7 @@ public class SupCertServiceImpl implements SupCertService { } return supCertDao.filterCompanyCert(filterSupCertRequest); } + @Override public List selectCompanyCert(FilterSupCertRequest filterSupCertRequest) { if (filterSupCertRequest == null) { @@ -110,8 +112,8 @@ public class SupCertServiceImpl implements SupCertService { } @Override - public boolean updateCustomerId(String oldId, String newId,Integer auditStatus) { - return supCertDao.updateCustomerId(oldId, newId,auditStatus); + public boolean updateCustomerId(String oldId, String newId, Integer auditStatus) { + return supCertDao.updateCustomerId(oldId, newId, auditStatus); } @Override diff --git a/src/main/java/com/glxp/api/service/purchase/impl/SupCertSetServiceImpl.java b/src/main/java/com/glxp/api/service/purchase/impl/SupCertSetServiceImpl.java index 64e460b5..ce8be576 100644 --- a/src/main/java/com/glxp/api/service/purchase/impl/SupCertSetServiceImpl.java +++ b/src/main/java/com/glxp/api/service/purchase/impl/SupCertSetServiceImpl.java @@ -1,5 +1,6 @@ package com.glxp.api.service.purchase.impl; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.github.pagehelper.PageHelper; import com.glxp.api.dao.purchase.SupCertSetDao; import com.glxp.api.entity.purchase.SupCertSetEntity; @@ -14,7 +15,7 @@ import java.util.List; @Service @Transactional(rollbackFor = Exception.class) -public class SupCertSetServiceImpl implements SupCertSetService { +public class SupCertSetServiceImpl extends ServiceImpl implements SupCertSetService { @Resource SupCertSetDao supCertSetDao; diff --git a/src/main/java/com/glxp/api/service/purchase/impl/SupCompanyServiceImpl.java b/src/main/java/com/glxp/api/service/purchase/impl/SupCompanyServiceImpl.java index a53f54bb..d9554d6b 100644 --- a/src/main/java/com/glxp/api/service/purchase/impl/SupCompanyServiceImpl.java +++ b/src/main/java/com/glxp/api/service/purchase/impl/SupCompanyServiceImpl.java @@ -1,5 +1,6 @@ package com.glxp.api.service.purchase.impl; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.github.pagehelper.PageHelper; import com.glxp.api.dao.purchase.SupCompanyDao; import com.glxp.api.entity.purchase.SupCompanyEntity; @@ -14,7 +15,7 @@ import java.util.List; @Service @Transactional(rollbackFor = Exception.class) -public class SupCompanyServiceImpl implements SupCompanyService { +public class SupCompanyServiceImpl extends ServiceImpl implements SupCompanyService { @Resource SupCompanyDao supCompanyDao; diff --git a/src/main/java/com/glxp/api/service/purchase/impl/SupManufacturerServiceImpl.java b/src/main/java/com/glxp/api/service/purchase/impl/SupManufacturerServiceImpl.java index cd7d5dc1..d75d7b3c 100644 --- a/src/main/java/com/glxp/api/service/purchase/impl/SupManufacturerServiceImpl.java +++ b/src/main/java/com/glxp/api/service/purchase/impl/SupManufacturerServiceImpl.java @@ -2,6 +2,7 @@ package com.glxp.api.service.purchase.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.github.pagehelper.PageHelper; import com.glxp.api.dao.purchase.SupManufacturerDao; import com.glxp.api.entity.purchase.SupManufacturerEntity; @@ -16,7 +17,7 @@ import java.util.List; @Service @Transactional(rollbackFor = Exception.class) -public class SupManufacturerServiceImpl implements SupManufacturerService { +public class SupManufacturerServiceImpl extends ServiceImpl implements SupManufacturerService { @Resource SupManufacturerDao supManufacturerDao; diff --git a/src/main/java/com/glxp/api/service/purchase/impl/SupProductServiceImpl.java b/src/main/java/com/glxp/api/service/purchase/impl/SupProductServiceImpl.java index b46f88ad..8188e72d 100644 --- a/src/main/java/com/glxp/api/service/purchase/impl/SupProductServiceImpl.java +++ b/src/main/java/com/glxp/api/service/purchase/impl/SupProductServiceImpl.java @@ -3,6 +3,7 @@ package com.glxp.api.service.purchase.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.ConstantStatus; import com.glxp.api.dao.purchase.SupProductDao; @@ -19,7 +20,7 @@ import java.util.List; @Service @Transactional(rollbackFor = Exception.class) -public class SupProductServiceImpl implements SupProductService { +public class SupProductServiceImpl extends ServiceImpl implements SupProductService { @Resource SupProductDao supProductDao; @@ -82,17 +83,17 @@ public class SupProductServiceImpl implements SupProductService { } @Override - public SupProductEntity findByManufactury(String cpmctymc, String manufactory,String manufacturerIdFk) { + public SupProductEntity findByManufactury(String cpmctymc, String manufactory, String manufacturerIdFk) { - QueryWrapper ew=new QueryWrapper<>(); - if(StrUtil.isNotEmpty(manufactory)){ - ew.eq("manufactory",manufactory); + QueryWrapper ew = new QueryWrapper<>(); + if (StrUtil.isNotEmpty(manufactory)) { + ew.eq("manufactory", manufactory); } - if(StrUtil.isNotEmpty(cpmctymc)){ - ew.eq("recordProductName",cpmctymc); + if (StrUtil.isNotEmpty(cpmctymc)) { + ew.eq("recordProductName", cpmctymc); } - if(StrUtil.isNotEmpty(manufacturerIdFk)){ - ew.eq("manufacturerIdFk",manufacturerIdFk); + if (StrUtil.isNotEmpty(manufacturerIdFk)) { + ew.eq("manufacturerIdFk", manufacturerIdFk); } ew.last("limit 1"); List supProductEntities = supProductDao.selectList(ew); diff --git a/src/main/java/com/glxp/api/service/sync/BasicExportService.java b/src/main/java/com/glxp/api/service/sync/BasicExportService.java index 3ad25fc6..6d43f5a9 100644 --- a/src/main/java/com/glxp/api/service/sync/BasicExportService.java +++ b/src/main/java/com/glxp/api/service/sync/BasicExportService.java @@ -1,12 +1,14 @@ package com.glxp.api.service.sync; +import com.baomidou.mybatisplus.extension.service.IService; +import com.glxp.api.dao.sync.BasicExportDao; import com.glxp.api.entity.sync.BasicExportStatusEntity; import com.glxp.api.req.sync.BasicExportStatusRequest; import java.util.List; -public interface BasicExportService { +public interface BasicExportService extends IService { BasicExportStatusEntity findByData(String idDatas, Integer status); diff --git a/src/main/java/com/glxp/api/service/sync/BasicExportTimeService.java b/src/main/java/com/glxp/api/service/sync/BasicExportTimeService.java index 36d9a74f..ad59f442 100644 --- a/src/main/java/com/glxp/api/service/sync/BasicExportTimeService.java +++ b/src/main/java/com/glxp/api/service/sync/BasicExportTimeService.java @@ -1,12 +1,13 @@ package com.glxp.api.service.sync; +import com.baomidou.mybatisplus.extension.service.IService; import com.glxp.api.entity.sync.BasicExportStatusTimeEntity; import com.glxp.api.req.sync.BasicExportTimeRequest; import java.util.List; -public interface BasicExportTimeService { +public interface BasicExportTimeService extends IService { BasicExportStatusTimeEntity findByType(String type); diff --git a/src/main/java/com/glxp/api/service/sync/SpsSyncDownloadService.java b/src/main/java/com/glxp/api/service/sync/SpsSyncDownloadService.java index 2186961b..19c2dc20 100644 --- a/src/main/java/com/glxp/api/service/sync/SpsSyncDownloadService.java +++ b/src/main/java/com/glxp/api/service/sync/SpsSyncDownloadService.java @@ -1,14 +1,17 @@ package com.glxp.api.service.sync; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.glxp.api.common.res.BaseResponse; import com.glxp.api.common.util.ResultVOUtils; -import com.glxp.api.constant.BasicProcessStatus; -import com.glxp.api.constant.ConstantStatus; -import com.glxp.api.entity.basic.ProductInfoEntity; -import com.glxp.api.entity.basic.UdiCompanyEntity; +import com.glxp.api.constant.*; +import com.glxp.api.dao.basic.BasicProductsDao; +import com.glxp.api.entity.basic.*; import com.glxp.api.entity.inout.*; +import com.glxp.api.entity.purchase.*; import com.glxp.api.entity.sync.BasicExportStatusEntity; import com.glxp.api.entity.sync.BasicExportStatusTimeEntity; import com.glxp.api.entity.sync.SyncDataBustypeEntity; @@ -19,25 +22,39 @@ import com.glxp.api.req.sync.SpsSyncDataRequest; import com.glxp.api.res.sync.SpSyncUdiResponse; import com.glxp.api.res.sync.SpsSyncOrderResponse; import com.glxp.api.res.system.SyncDataSetResponse; -import com.glxp.api.service.basic.ProductInfoService; -import com.glxp.api.service.basic.UdiCompanyService; +import com.glxp.api.service.basic.*; import com.glxp.api.service.inout.*; +import com.glxp.api.service.purchase.*; import com.glxp.api.util.CustomUtil; import com.glxp.api.util.DateUtil; +import com.glxp.api.util.JsonUtils; +import com.glxp.api.util.RedisUtil; +import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import javax.annotation.Resource; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.util.*; +import java.util.function.Function; @Slf4j @Service +@RequiredArgsConstructor public class SpsSyncDownloadService { + private final Logger logger = LoggerFactory.getLogger(SpsSyncDownloadService.class); + + + private final RedisUtil redisUtil; + //已完成扫码单据 @Resource IoOrderService orderService; @@ -109,6 +126,353 @@ public class SpsSyncDownloadService { } + private final BasicHospTypeService hospTypeService; + + private final UdiRelevanceService udiRelevanceService; + + private final BasicProductsDao basicProductsDao; + + private final CompanyProductRelevanceService relevanceService; + + private final BasicCorpService corpService; + + private final SupCertService supCertService; + + private final SupCertSetService supCertSetService; + + private final SupCompanyService supCompanyService; + + private final SupManufacturerService supManufacturerService; + + private final SupProductService supProductService; + + @Value("${file_path}") + private String filePath; + + /** + * 同步基础数据模块 + * + * @param info 同步设置 + */ + public void syncBasicData(SyncDataSetResponse info) { + + Date now = new Date(); + //是否需要执行 + boolean needExec = info.getBasicProducts() == 2 || info.getBasicCorp() == 2 || info.getSupCert() == 2; + if (!needExec) { + return; + } + try { + basicExportInfoCreate(BasicExportTypeEnum.BASIC_DATA, now, this.getClass() + , x -> x.generateBasicDataFile(info, now, false) + , x -> x.generateBasicDataFile(info, now, true)); + } catch (Exception e) { + throw new RuntimeException(e); + } + + } + + /** + * 创建一个同步任务 + * + * @param exportEnum 任务类型枚举 + * @param hasDataMethod 判断时候有无数据方法 + * @param createFileMethod 执行文件生成方法 + * @return + * @throws Exception + */ + private void basicExportInfoCreate(BasicExportTypeEnum exportEnum, Date now + , Class clazz, Function hasDataMethod, Function createFileMethod) throws Exception { + //防止出现同时调用问题 + String redisKey = String.format("spsm-sync-create:%s", exportEnum.getKey()); + boolean result = redisUtil.setIfAbsent(redisKey, 1, 10); + if (!result) { + String errorMsg = String.format("syncIdcSps----process------------同步[%s]重复进入", exportEnum.getRemark()); +// logger.info(errorMsg); + throw new Exception(errorMsg); + } + BasicExportStatusEntity exportStatus = basicExportService.getOne(Wrappers.lambdaQuery(BasicExportStatusEntity.class) + .eq(BasicExportStatusEntity::getType, BasicExportTypeEnum.BASIC_DATA) + .orderByDesc(BasicExportStatusEntity::getStartTime) + .last("limit 1") + ); + + //首次任务or上次任务结束 + if (exportStatus == null || BasicExportStatusEnum.COMPLETED.getCode().equals(exportStatus.getStatus())) { + + //判断有无新数据 + Boolean hasData = hasDataMethod.apply(clazz.getConstructor().newInstance()); + if (Boolean.FALSE.equals(hasData)) { + return; + } + exportStatus = BasicExportStatusEntity.builder() + .id(CustomUtil.getId()) + .status(BasicExportStatusEnum.WAIT_TRIGGERED.getCode()) + .type(BasicExportTypeEnum.BASIC_DATA.getRemark()) + .scheduleType(0) + .updateTime(cn.hutool.core.date.DateUtil.date()) + .startTime(now) + .build(); + basicExportService.save(exportStatus); + } else if (exportStatus.getStatus().equals(BasicExportStatusEnum.WAIT_BUILT.getCode())) {//文件待生成 + createFileMethod.apply(clazz.getConstructor().newInstance()); + } + } + + /** + * 读取基础数据,创建文件 + * + * @param info 同步设置信息 + * @param now 当前时间 + * @param createFile 是否创建文件 + * @return 是否有数据 true/false 有新数据/无新数据 + */ + private boolean generateBasicDataFile(SyncDataSetResponse info, Date now, boolean createFile) { + //文件数据 + Map jsonMap = new WeakHashMap<>(4); + Map> totalTimeMap = new WeakHashMap<>(10); + try { + //确认有开启物资字典由外向内同步 + if (info.getBasicProducts() == 2) { + Map map = basicExportStatusTimeInfo(now, BasicExportStatusTimeEnum.BASIC_PRODUCTS, createFile); + totalTimeMap.put(BasicExportStatusTimeEnum.BASIC_PRODUCTS, map); + List hospTypeList = hospTypeService.list(Wrappers.lambdaQuery(BasicHospTypeEntity.class) + .le((boolean) map.get("isNew"), BasicHospTypeEntity::getUpdateTime, now) + .between((boolean) map.get("isNew"), BasicHospTypeEntity::getUpdateTime + , map.get("oldDate"), now) + ); + if (CollectionUtil.isNotEmpty(hospTypeList)) { + jsonMap.put(BasicExportStatusTimeEntity.class.getName(), hospTypeList); + } + List udiRelevanceList = udiRelevanceService.list(Wrappers.lambdaQuery(UdiRelevanceEntity.class) + .le((boolean) map.get("isNew"), UdiRelevanceEntity::getUpdateTime, now) + .between((boolean) map.get("isNew"), UdiRelevanceEntity::getUpdateTime + , map.get("oldDate"), now) + ); + if (CollectionUtil.isNotEmpty(udiRelevanceList)) { + jsonMap.put(UdiRelevanceEntity.class.getName(), udiRelevanceList); + } + List productsList = basicProductsDao.selectList(Wrappers.lambdaQuery(BasicProductsEntity.class) + .le((boolean) map.get("isNew"), BasicProductsEntity::getUpdateTime, now) + .between((boolean) map.get("isNew"), BasicProductsEntity::getUpdateTime + , map.get("oldDate"), now) + ); + if (CollectionUtil.isNotEmpty(productsList)) { + jsonMap.put(BasicProductsEntity.class.getName(), productsList); + } + List relevanceList = relevanceService.list(Wrappers.lambdaQuery(CompanyProductRelevanceEntity.class) + .le((boolean) map.get("isNew"), CompanyProductRelevanceEntity::getUpdateTime, now) + .between((boolean) map.get("isNew"), CompanyProductRelevanceEntity::getUpdateTime + , map.get("oldDate"), now) + ); + if (CollectionUtil.isNotEmpty(relevanceList)) { + jsonMap.put(CompanyProductRelevanceEntity.class.getName(), relevanceList); + } + } + //确认有开启往来单位字典同步 + if (info.getBasicCorp() == 2) { + Map map = basicExportStatusTimeInfo(now, BasicExportStatusTimeEnum.BASIC_CORP, createFile); + totalTimeMap.put(BasicExportStatusTimeEnum.BASIC_CORP, map); + List corpList = corpService.list(Wrappers.lambdaQuery(BasicCorpEntity.class) + .le((boolean) map.get("isNew"), BasicCorpEntity::getUpdateTime, now) + .between((boolean) map.get("isNew"), BasicCorpEntity::getUpdateTime + , map.get("oldDate"), now) + ); + if (CollectionUtil.isNotEmpty(corpList)) { + jsonMap.put(BasicCorpEntity.class.getName(), corpList); + } + } + + //确认有开启首营资质同步 + if (info.getSupCert() == 2) { + Map map = basicExportStatusTimeInfo(now, BasicExportStatusTimeEnum.SUP_CERT, createFile); + totalTimeMap.put(BasicExportStatusTimeEnum.SUP_CERT, map); + List supCertList = supCertService.list(Wrappers.lambdaQuery(SupCertEntity.class) + .le((boolean) map.get("isNew"), SupCertEntity::getUpdateTime, now) + .between((boolean) map.get("isNew"), SupCertEntity::getUpdateTime + , map.get("oldDate"), now) + ); + if (CollectionUtil.isNotEmpty(supCertList)) { + jsonMap.put(SupCertEntity.class.getName(), supCertList); + } + List supCertSetList = supCertSetService.list(Wrappers.lambdaQuery(SupCertSetEntity.class) + .le((boolean) map.get("isNew"), SupCertSetEntity::getUpdateTime, now) + .between((boolean) map.get("isNew"), SupCertSetEntity::getUpdateTime + , map.get("oldDate"), now) + ); + if (CollectionUtil.isNotEmpty(supCertSetList)) { + jsonMap.put(SupCertSetEntity.class.getName(), supCertSetList); + } + List supCompanyList = supCompanyService.list(Wrappers.lambdaQuery(SupCompanyEntity.class) + .le((boolean) map.get("isNew"), SupCompanyEntity::getUpdateTime, now) + .between((boolean) map.get("isNew"), SupCompanyEntity::getUpdateTime + , map.get("oldDate"), now) + ); + if (CollectionUtil.isNotEmpty(supCompanyList)) { + jsonMap.put(SupCompanyEntity.class.getName(), supCompanyList); + } + List supManufacturerList = supManufacturerService.list(Wrappers.lambdaQuery(SupManufacturerEntity.class) + .le((boolean) map.get("isNew"), SupManufacturerEntity::getUpdateTime, now) + .between((boolean) map.get("isNew"), SupManufacturerEntity::getUpdateTime + , map.get("oldDate"), now) + ); + if (CollectionUtil.isNotEmpty(supManufacturerList)) { + jsonMap.put(SupManufacturerEntity.class.getName(), supManufacturerList); + } + List supProductList = supProductService.list(Wrappers.lambdaQuery(SupProductEntity.class) + .le((boolean) map.get("isNew"), SupProductEntity::getUpdateTime, now) + .between((boolean) map.get("isNew"), SupProductEntity::getUpdateTime + , map.get("oldDate"), now) + ); + if (CollectionUtil.isNotEmpty(supProductList)) { + jsonMap.put(SupProductEntity.class.getName(), supProductList); + } + + } + + if (jsonMap.size() > 0) { + if (!createFile) { + return true; + } + try { + String fileFullPath = writeFile(filePath, BasicExportTypeEnum.BASIC_DATA.getRemark(), JsonUtils.toJsonString(jsonMap)); + //计算总数 + int total = 0; + for (List l : jsonMap.values()) { + total += l.size(); + } + try { + //插入一条任务数据 + boolean update = basicExportService.update(Wrappers.lambdaUpdate(BasicExportStatusEntity.class) + .set(BasicExportStatusEntity::getStatus, BasicExportStatusEnum.WAIT_SYNC.getCode()) + .set(BasicExportStatusEntity::getUpdateTime, new Date()) + .set(BasicExportStatusEntity::getCacheFilePath, fileFullPath) + .set(BasicExportStatusEntity::getRemark, String.format("%s: %s条", BasicExportStatusEnum.WAIT_SYNC.getRemark(), total)) + .eq(BasicExportStatusEntity::getType, BasicExportTypeEnum.BASIC_DATA.getRemark()) + .eq(BasicExportStatusEntity::getStatus, BasicExportStatusEnum.WAIT_BUILT.getCode()) + .isNull(BasicExportStatusEntity::getCacheFilePath) + ); + } catch (Exception e) { + // 异常回滚 + this.exportTimeRollback(totalTimeMap, BasicExportTypeEnum.BASIC_DATA, fileFullPath); + } + return true; + } catch (IOException e) { + logger.error(String.format("syncIdcSps----process------------生成[%s]文件及更改库操作异常,异常信息<%s>" + , BasicExportTypeEnum.BASIC_DATA.getRemark(), e.getMessage())); + // 异常回滚 + this.exportTimeRollback(totalTimeMap, BasicExportTypeEnum.BASIC_DATA, null); + } + } + return false; + } catch (Exception e) { + logger.error(e.getMessage()); + return false; + } + } + + /** + * 插入 basicExportStatusTime表 + * + * @param date 当前时间 + * @param exportStatusTimeEnum key枚举 + * @param createFile 是否需要创建文件,false时只做查询 + * @return 最后一次同步时间 返回值需与参数 date 比较,判断是否相等 + * @throws Exception + */ + private Map basicExportStatusTimeInfo(Date date, BasicExportStatusTimeEnum exportStatusTimeEnum, boolean createFile) throws Exception { + //防止出现同时调用问题 + String redisKey = String.format("spsm-sync-task:%s", exportStatusTimeEnum.getKey()); + boolean result = redisUtil.setIfAbsent(redisKey, 1, 10); + if (!result) { + String errorMsg = String.format("syncIdcSps----process------------同步[%s]重复进入", exportStatusTimeEnum.getRemark()); +// logger.info(errorMsg); + throw new Exception(errorMsg); + } + boolean isNew = true; + BasicExportStatusTimeEntity timeInfo = basicExportTimeService.getOne(Wrappers.lambdaQuery(BasicExportStatusTimeEntity.class) + .eq(BasicExportStatusTimeEntity::getKey, exportStatusTimeEnum.getKey())); + if (timeInfo == null) { + timeInfo = BasicExportStatusTimeEntity.builder() + .key(exportStatusTimeEnum.getKey()) + .lastUpdateTime(DateUtil.formatDateTime(date)) + .remark(exportStatusTimeEnum.getRemark()) + .build(); + if (createFile) { + basicExportTimeService.save(timeInfo); + } + } else { + if (StrUtil.isNotEmpty(timeInfo.getLastUpdateTime())) { + isNew = false; + } + if (createFile) { + basicExportTimeService.update(Wrappers.lambdaUpdate(BasicExportStatusTimeEntity.class) + .set(BasicExportStatusTimeEntity::getLastUpdateTime, DateUtil.formatDateTime(date)) + .eq(BasicExportStatusTimeEntity::getKey, exportStatusTimeEnum.getKey()) + ); + } + } + redisUtil.del(redisKey); + WeakHashMap returnMap = new WeakHashMap<>(10); + returnMap.put("isNew", isNew); + returnMap.put("oldDate", isNew ? null : timeInfo.getLastUpdateTime()); + returnMap.put("id", timeInfo.getId()); + + return returnMap; + } + + /** + * 异常回滚操作 + * + * @param totalTimeMap 总的exportTime数据回滚 + * @param delFilePath 需要删除的文件地址 + */ + private void exportTimeRollback(Map> totalTimeMap, BasicExportTypeEnum exportType, String delFilePath) { + for (Map.Entry> entry : totalTimeMap.entrySet()) { + //防止出现同时调用问题 + String redisKey = String.format("spsm-sync-rollback:%s", entry.getKey().getKey()); + boolean result = redisUtil.setIfAbsent(redisKey, 1, 10); + if (!result) { + String errorMsg = String.format("syncIdcSps----process------------同步回滚[%s]重复进入", entry.getKey().getRemark()); + logger.error(errorMsg); + } + if ((boolean) entry.getValue().get("isNew")) { + basicExportTimeService.deleteById(entry.getValue().get("id").toString()); + } else { + basicExportTimeService.update(Wrappers.lambdaUpdate(BasicExportStatusTimeEntity.class) + .set(BasicExportStatusTimeEntity::getLastUpdateTime, entry.getValue().get("oldDate")) + .eq(BasicExportStatusTimeEntity::getKey, entry.getKey().getKey()) + .eq(BasicExportStatusTimeEntity::getId, entry.getValue().get("id")) + ); + } + } + if (StrUtil.isNotBlank(delFilePath)) { + try { + File file = new File(delFilePath); + file.deleteOnExit(); + } catch (Exception e) { + String errorMsg = String.format("syncIdcSps----process------------同步回滚[%s]删除文件异常", exportType.getRemark()); + logger.error(errorMsg); + } + } + + } + + + private String writeFile(String filePath, String fileDesc, String content) throws IOException { + String fileFullPath = String.format("%s/%s/%s-%s.udi", filePath, DateUtil.getDate(), fileDesc, IdUtil.fastSimpleUUID()); + File file = new File(fileFullPath); + while (!file.createNewFile()) { + fileFullPath = String.format("%s/%s/%s-%s.udi", filePath, DateUtil.getDate(), fileDesc, IdUtil.fastSimpleUUID()); + file = new File(fileFullPath); + } + FileWriter fileWriter = new FileWriter(file); + fileWriter.write(content); + fileWriter.flush(); + fileWriter.close(); + return fileFullPath; + } + //获取需要同步信息 public BaseResponse findOrder(SpsSyncDataRequest spsSyncDataRequest) { SpsSyncOrderResponse syncOrderResponse = new SpsSyncOrderResponse(); @@ -229,4 +593,5 @@ public class SpsSyncDownloadService { spsSyncDataRequest.setLastUpdateTime(basicExportStatusTimeEntity.getLastUpdateTime()); return spsSyncDataRequest; } + } diff --git a/src/main/java/com/glxp/api/service/sync/impl/BasicExportServiceImpl.java b/src/main/java/com/glxp/api/service/sync/impl/BasicExportServiceImpl.java index a4a94d3a..632eaa16 100644 --- a/src/main/java/com/glxp/api/service/sync/impl/BasicExportServiceImpl.java +++ b/src/main/java/com/glxp/api/service/sync/impl/BasicExportServiceImpl.java @@ -1,6 +1,7 @@ package com.glxp.api.service.sync.impl; import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.github.pagehelper.PageHelper; import com.glxp.api.dao.sync.BasicExportDao; import com.glxp.api.entity.sync.BasicExportStatusEntity; @@ -15,7 +16,7 @@ import java.util.List; @Service @Transactional(rollbackFor = Exception.class) -public class BasicExportServiceImpl implements BasicExportService { +public class BasicExportServiceImpl extends ServiceImpl implements BasicExportService { @Resource BasicExportDao basicExportDao; diff --git a/src/main/java/com/glxp/api/service/sync/impl/BasicExportTimeServiceImpl.java b/src/main/java/com/glxp/api/service/sync/impl/BasicExportTimeServiceImpl.java index 8113f18e..58a5351e 100644 --- a/src/main/java/com/glxp/api/service/sync/impl/BasicExportTimeServiceImpl.java +++ b/src/main/java/com/glxp/api/service/sync/impl/BasicExportTimeServiceImpl.java @@ -1,6 +1,7 @@ package com.glxp.api.service.sync.impl; import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.glxp.api.dao.sync.BasicExportTimeDao; import com.glxp.api.entity.sync.BasicExportStatusTimeEntity; import com.glxp.api.req.sync.BasicExportTimeRequest; @@ -14,7 +15,7 @@ import java.util.List; @Service @Transactional(rollbackFor = Exception.class) -public class BasicExportTimeServiceImpl implements BasicExportTimeService { +public class BasicExportTimeServiceImpl extends ServiceImpl implements BasicExportTimeService { @Resource BasicExportTimeDao basicExportTimeDao; diff --git a/src/main/java/com/glxp/api/task/AsyncHeartTask.java b/src/main/java/com/glxp/api/task/AsyncHeartTask.java index 9680a655..cf02bcb2 100644 --- a/src/main/java/com/glxp/api/task/AsyncHeartTask.java +++ b/src/main/java/com/glxp/api/task/AsyncHeartTask.java @@ -67,7 +67,7 @@ public class AsyncHeartTask implements SchedulingConfigurer { if (curTime - lastTime > timeInterval) { spsSyncDownloadService.syncDiProductsTask(); // todo 生成任务都写在这 - + spsSyncDownloadService.syncBasicData(syncDataSetEntity); redisUtil.set("SPS_SYNC_GEN_DATA", curTime); } } diff --git a/src/main/resources/mybatis/mapper/auth/AuthAdminDao.xml b/src/main/resources/mybatis/mapper/auth/AuthAdminDao.xml index 2a3f13f7..cfa6f2ca 100644 --- a/src/main/resources/mybatis/mapper/auth/AuthAdminDao.xml +++ b/src/main/resources/mybatis/mapper/auth/AuthAdminDao.xml @@ -46,7 +46,7 @@ SELECT * FROM auth_user - userName = #{userName} + binary userName = #{userName} LIMIT 1