Browse Source

同步用户客户表触发逻辑修改

contract
Yen 2 years ago
parent
commit
b76801438b
  1. 8
      src/main/java/com/qs/serve/common/model/consts/RedisCacheKeys.java
  2. 1
      src/main/java/com/qs/serve/common/model/enums/BizType.java
  3. 1
      src/main/java/com/qs/serve/modules/bms/controller/BmsRegionUserController.java
  4. 23
      src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierController.java
  5. 25
      src/main/java/com/qs/serve/modules/bms/entity/BmsSupplier.java
  6. 32
      src/main/java/com/qs/serve/modules/check/common/DataSupplierSo.java
  7. 101
      src/main/java/com/qs/serve/modules/check/controller/DateCheckApplyController.java
  8. 58
      src/main/java/com/qs/serve/modules/check/entity/DataCheckApplyDetailInfo.java
  9. 71
      src/main/java/com/qs/serve/modules/check/entity/DataCheckApplyDetailItem.java
  10. 2
      src/main/java/com/qs/serve/modules/check/entity/DataCheckApplyMainInfo.java
  11. 11
      src/main/java/com/qs/serve/modules/his/controller/HistTestController.java
  12. 134
      src/main/java/com/qs/serve/modules/his/entity/HisUserSupplierTemp.java
  13. 22
      src/main/java/com/qs/serve/modules/his/mapper/HisUserSupplierTempMapper.java
  14. 2
      src/main/java/com/qs/serve/modules/his/service/HisUserSupplierService.java
  15. 21
      src/main/java/com/qs/serve/modules/his/service/HisUserSupplierTempService.java
  16. 40
      src/main/java/com/qs/serve/modules/his/service/impl/HisUserSupplierServiceImpl.java
  17. 143
      src/main/java/com/qs/serve/modules/his/service/impl/HisUserSupplierTempServiceImpl.java
  18. 58
      src/main/java/com/qs/serve/task/HisTask.java
  19. 1
      src/main/java/com/qs/serve/task/TbsTask.java

8
src/main/java/com/qs/serve/common/model/consts/RedisCacheKeys.java

@ -22,4 +22,12 @@ public class RedisCacheKeys {
/** 手机号验证吗 */
public final static String PHONE_KEY = "phone_code_:";
/**
* 0-无需操作
* 1-未处理
* 2-同步中
* 3-同步完成但未更新表
*/
public final static String HIS_UPDATE = "update_his_flag:";
}

1
src/main/java/com/qs/serve/common/model/enums/BizType.java

@ -44,6 +44,7 @@ public enum BizType {
QUERY("查询"),
LEAVE("离职"),
EXPORT("导出"),
RESET("重置");

1
src/main/java/com/qs/serve/modules/bms/controller/BmsRegionUserController.java

@ -57,6 +57,7 @@ public class BmsRegionUserController {
private HisUserSupplierService hisUserSupplierService;
/**
* 列表
* @param param

23
src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierController.java

@ -26,6 +26,7 @@ import com.qs.serve.modules.sys.entity.SysUser;
import com.qs.serve.modules.sys.entity.bo.SysRelateSuppliersParam;
import com.qs.serve.modules.sys.entity.bo.SysRelateSuppliersParam2;
import com.qs.serve.modules.sys.entity.dto.SysUserSimpleVo;
import com.qs.serve.modules.sys.entity.dto.SysUserVo;
import com.qs.serve.modules.sys.service.SysPostUserService;
import com.qs.serve.modules.sys.service.SysUserService;
import com.qs.serve.modules.tbs.common.TbsCenterType;
@ -362,6 +363,28 @@ public class BmsSupplierController {
return R.ok();
}
/**
* 获取负责人接口(用于后续成本中心)
* @param supplierId
* @return
*/
@GetMapping("/getMgrUser")
public R<List<SysUserVo>> getMgrUser(Long supplierId){
BmsSupplier supplier = bmsSupplierService.getById(supplierId);
List<String> userIds = new ArrayList<>();
if(CollectionUtil.isNotEmpty(supplier.getOtherUserIds())){
userIds = Arrays.asList(supplier.getOtherUserIds());
}
if(supplier.getUserId()==null){
return R.ok();
}
Set<String> otherUserIdSet = new HashSet<>(userIds);
otherUserIdSet.add(supplier.getUserId());
List<SysUser> userList = sysUserService.listByIds(otherUserIdSet);
List<SysUserVo> sysUsers = userList.stream().map(SysUser::toSysUserVo).collect(Collectors.toList());
return R.ok(sysUsers);
}
/**
* 根据ID查询
* @param id

25
src/main/java/com/qs/serve/modules/bms/entity/BmsSupplier.java

@ -12,6 +12,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.qs.serve.common.framework.mybatis.handler.meta.SplitStringTypeHandler;
import com.qs.serve.modules.his.entity.HisUserSupplier;
import com.qs.serve.modules.his.entity.HisUserSupplierTemp;
import com.qs.serve.modules.sys.entity.dto.SysUserVo;
import lombok.Data;
import org.apache.ibatis.type.JdbcType;
@ -298,5 +299,29 @@ public class BmsSupplier implements Serializable {
return userSupplier;
}
public HisUserSupplierTemp toHisUserSupplierTemp(String userId, Integer type){
HisUserSupplierTemp userSupplier = new HisUserSupplierTemp();
userSupplier.setUserId(userId);
if(this.getUserId()!=null){
userSupplier.setSupplierId(Long.parseLong(this.getId()));
}
if(this.getId()!=null){
userSupplier.setSupplierId(Long.parseLong(this.getId()));
}
userSupplier.setSupplierName(this.getName());
userSupplier.setSupplierCode(this.getCode());
userSupplier.setSaleRegionFirst(this.getRegionFirst());
userSupplier.setSaleRegionSecond(this.getRegionSecond());
userSupplier.setSaleRegionThird(this.getRegionThird());
userSupplier.setSaleRegionFourthly(this.getRegionFourthly());
userSupplier.setBizRegionFirst(this.getRegion2First());
userSupplier.setBizRegionSecond(this.getRegion2Second());
userSupplier.setBizRegionThird(this.getRegion2Third());
userSupplier.setBizRegionFourthly(this.getRegion2Fourthly());
userSupplier.setType(type);
userSupplier.setCostFlag(this.costFlag);
return userSupplier;
}
}

32
src/main/java/com/qs/serve/modules/check/common/DataSupplierSo.java

@ -0,0 +1,32 @@
package com.qs.serve.modules.check.common;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDate;
/**
* @author YenHex
* @since 2023/5/31
*/
@Data
public class DataSupplierSo {
/**
* 供应商id
*/
private String supplierId;
/**
* 开始时间
*/
@DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDate startDate;
/**
* 结束时间
*/
@DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDate endDate;
}

101
src/main/java/com/qs/serve/modules/check/controller/DateCheckApplyController.java

@ -0,0 +1,101 @@
package com.qs.serve.modules.check.controller;
import com.qs.serve.common.model.annotation.RepeatSubmit;
import com.qs.serve.common.model.annotation.SysLog;
import com.qs.serve.common.model.dto.R;
import com.qs.serve.common.model.enums.BizType;
import com.qs.serve.common.model.enums.SystemModule;
import com.qs.serve.modules.bms.mapper.BmsSupplierMapper;
import com.qs.serve.modules.check.common.DataSupplierSo;
import com.qs.serve.modules.check.entity.DataCheckApplyDetailInfo;
import com.qs.serve.modules.check.entity.DataCheckApplyDetailItem;
import com.qs.serve.modules.check.entity.DataCheckApplyMainInfo;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;
/**
* 数据 对账单
* @author YenHex
* @since 2023/5/31
*/
@Slf4j
@AllArgsConstructor
@RestController
@RequestMapping("data/checkApply")
public class DateCheckApplyController {
private BmsSupplierMapper supplierMapper;
/**
* 汇总账单
* @return
*/
@RepeatSubmit
@GetMapping("/summary")
@SysLog(module = SystemModule.Verification, title = "客户汇总账单", biz = BizType.EXPORT)
public R<DataCheckApplyMainInfo> getSummary(DataSupplierSo param){
param.getSupplierId();
DataCheckApplyMainInfo info = new DataCheckApplyMainInfo();
info.setCostApplyAmt(BigDecimal.ONE);
info.setCheckedAmt(BigDecimal.ONE);
info.setCheckingAmt(BigDecimal.ONE);
info.setNotCheckAmt(BigDecimal.ONE);
info.setDontCheckAmt(BigDecimal.ONE);
info.setPayAmt(BigDecimal.ONE);
info.setUnPayAmt(BigDecimal.ONE);
info.setNotPayAmt(BigDecimal.ONE);
info.setCusName("测试一同胡");
info.setCusAddress("辽宁省-本溪市-本溪满族自治县-ABKDJFflJKLSDF");
info.setCusCode("465465465");
info.setContactUser("测试人");
info.setContactMobile("13200000000");
info.setStartDate(LocalDate.now());
info.setEndDate(LocalDate.now());
return R.ok();
}
/**
* 明细帐
* @return
*/
@RepeatSubmit
@GetMapping("/itemized")
@SysLog(module = SystemModule.Verification, title = "客户明细帐", biz = BizType.EXPORT)
public R<DataCheckApplyDetailInfo> getItemized(DataSupplierSo param){
DataCheckApplyDetailInfo info = new DataCheckApplyDetailInfo();
info.setCusName("测试一同胡");
info.setCusAddress("辽宁省-本溪市-本溪满族自治县-ABKDJFflJKLSDF");
info.setCusCode("465465465");
info.setContactUser("测试人");
info.setContactMobile("13200000000");
info.setStartDate(LocalDate.now());
info.setEndDate(LocalDate.now());
List<DataCheckApplyDetailItem> detailItemList = new ArrayList<>();
for (int i = 1; i < 31; i++) {
DataCheckApplyDetailItem item = new DataCheckApplyDetailItem();
item.setActivityCode(System.currentTimeMillis()+"");
item.setActivityDate("2023-12-"+i);
item.setActivityTheme("2023年12月"+i+"日 375g果乐活动档期补差:0.8/包*12000=9600元");
item.setCostApplyAmt(BigDecimal.ONE);
item.setCheckedAmt(BigDecimal.ONE);
item.setCheckingAmt(BigDecimal.ONE);
item.setNotCheckAmt(BigDecimal.ONE);
item.setDontCheckAmt(BigDecimal.ONE);
item.setPayAmt(BigDecimal.ONE);
item.setUnPayAmt(BigDecimal.ONE);
item.setNotPayAmt(BigDecimal.ONE);
detailItemList.add(item);
}
info.setDetailList(detailItemList);
return R.ok(info);
}
}

58
src/main/java/com/qs/serve/modules/check/entity/DataCheckApplyDetailInfo.java

@ -0,0 +1,58 @@
package com.qs.serve.modules.check.entity;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.List;
/**
* 对账单
* @author YenHex
* @since 2023/5/30
*/
@Data
public class DataCheckApplyDetailInfo {
/**
* 客户名
*/
private String cusName;
/**
* 客户地址
*/
private String cusAddress;
/**
* 客户编码
*/
private String cusCode;
/**
* 联系人用户
*/
private String contactUser;
/**
* 联系人
*/
private String contactMobile;
/**
* 起始日期
*/
private LocalDate startDate;
/**
* 截止日期
*/
private LocalDate endDate;
/**
* 明细列表
*/
private List<DataCheckApplyDetailItem> detailList;
}

71
src/main/java/com/qs/serve/modules/check/entity/DataCheckApplyDetailItem.java

@ -0,0 +1,71 @@
package com.qs.serve.modules.check.entity;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDate;
/**
* 对账单
* @author YenHex
* @since 2023/5/30
*/
@Data
public class DataCheckApplyDetailItem {
/**
* 活动编号
*/
private String activityCode;
/**
* 申请时间
*/
private String activityDate;
/**
* 活动主题
*/
private String activityTheme;
/**
* 已批准(费用申请)
*/
private BigDecimal costApplyAmt;
/**
* 已核销
*/
private BigDecimal checkedAmt;
/**
* 申请中
*/
private BigDecimal checkingAmt;
/**
* 未申请
*/
private BigDecimal notCheckAmt;
/**
* 不予核销
*/
private BigDecimal dontCheckAmt;
/**
* 已支付
*/
private BigDecimal payAmt;
/**
* 待支付
*/
private BigDecimal unPayAmt;
/**
* 不再支付
*/
private BigDecimal notPayAmt;
}

2
src/main/java/com/qs/serve/modules/check/entity/ExcelCheckApplyMain.java → src/main/java/com/qs/serve/modules/check/entity/DataCheckApplyMainInfo.java

@ -11,7 +11,7 @@ import java.time.LocalDate;
* @since 2023/5/30
*/
@Data
public class ExcelCheckApplyMain {
public class DataCheckApplyMainInfo {
/**
* 已批准(费用申请)

11
src/main/java/com/qs/serve/modules/his/controller/HistTestController.java

@ -7,6 +7,7 @@ import com.qs.serve.common.model.dto.R;
import com.qs.serve.common.util.PageUtil;
import com.qs.serve.modules.his.service.HisUserChannelPointService;
import com.qs.serve.modules.oms.entity.OmsOrder;
import com.qs.serve.task.HisTask;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.security.access.prepost.PreAuthorize;
@ -27,6 +28,16 @@ import java.util.List;
public class HistTestController {
HisUserChannelPointService hisUserChannelPointService;
HisTask hisTask;
@GetMapping("/initSupplier")
public R<?> initSupplier(){
if(DevEnvironmentConfig.isDev()){
hisTask.buildTempTable();
}
return R.ok();
}
/**
*

134
src/main/java/com/qs/serve/modules/his/entity/HisUserSupplierTemp.java

@ -0,0 +1,134 @@
package com.qs.serve.modules.his.entity;
import java.time.LocalDate;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.NotBlank;
/**
* 供应商负责人 实体类
* @author YenHex
* @since 2023-05-31
*/
@Data
@TableName("his_user_supplier_temp")
public class HisUserSupplierTemp implements Serializable {
private static final long serialVersionUID = 1L;
/** id */
@TableId(type = IdType.AUTO)
private Long id;
/** 用户id */
@NotBlank(message = "用户id不能为空")
@Length(max = 32,message = "用户id长度不能超过32字")
private String userId;
/** 供应商id */
@NotNull(message = "供应商id不能为空")
private Long supplierId;
/** 供应商名称 */
@Length(max = 50,message = "供应商名称长度不能超过50字")
private String supplierName;
/** 供应商编码 */
@Length(max = 30,message = "供应商编码长度不能超过30字")
private String supplierCode;
/** 类型:0=销售区域;1=行政区域;2-供应商负责人;9-无相关数据 */
private Integer type;
/** 区域id */
@Length(max = 32,message = "区域id长度不能超过32字")
private String regionId;
/** 销售区域1 */
@Length(max = 32,message = "销售区域1长度不能超过32字")
private String saleRegionFirst;
/** 销售区域2 */
@Length(max = 32,message = "销售区域2长度不能超过32字")
private String saleRegionSecond;
/** 销售区域3 */
@Length(max = 32,message = "销售区域3长度不能超过32字")
private String saleRegionThird;
/** 销售区域4 */
@Length(max = 32,message = "销售区域4长度不能超过32字")
private String saleRegionFourthly;
/** 主要负责人 */
@NotNull(message = "主要负责人不能为空")
private Integer masterFlag;
/** 创建时间 */
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;
/** 行政区域1 */
@Length(max = 32,message = "行政区域1长度不能超过32字")
private String bizRegionFirst;
/** 行政区域2 */
@Length(max = 32,message = "行政区域2长度不能超过32字")
private String bizRegionSecond;
/** 行政区域3 */
@Length(max = 32,message = "行政区域3长度不能超过32字")
private String bizRegionThird;
/** 行政区域4 */
@Length(max = 32,message = "行政区域4长度不能超过32字")
private String bizRegionFourthly;
/** */
@JsonIgnore
@JsonProperty
private String tenantId;
/** */
private Integer costFlag;
public static HisUserSupplierTemp toNewObject(HisUserSupplierTemp source){
HisUserSupplierTemp userSupplierTemp = new HisUserSupplierTemp();
userSupplierTemp.setId(source.getId());
userSupplierTemp.setUserId(source.getUserId());
userSupplierTemp.setSupplierId(source.getSupplierId());
userSupplierTemp.setSupplierName(source.getSupplierName());
userSupplierTemp.setSupplierCode(source.getSupplierCode());
userSupplierTemp.setType(source.getType());
userSupplierTemp.setRegionId(source.getRegionId());
userSupplierTemp.setSaleRegionFirst(source.getSaleRegionFirst());
userSupplierTemp.setSaleRegionSecond(source.getSaleRegionSecond());
userSupplierTemp.setSaleRegionThird(source.getSaleRegionThird());
userSupplierTemp.setSaleRegionFourthly(source.getSaleRegionFourthly());
userSupplierTemp.setMasterFlag(source.getMasterFlag());
userSupplierTemp.setCreateTime(source.getCreateTime());
userSupplierTemp.setBizRegionFirst(source.getBizRegionFirst());
userSupplierTemp.setBizRegionSecond(source.getBizRegionSecond());
userSupplierTemp.setBizRegionThird(source.getBizRegionThird());
userSupplierTemp.setBizRegionFourthly(source.getBizRegionFourthly());
userSupplierTemp.setTenantId(source.getTenantId());
userSupplierTemp.setCostFlag(source.getCostFlag());
return userSupplierTemp;
}
}

22
src/main/java/com/qs/serve/modules/his/mapper/HisUserSupplierTempMapper.java

@ -0,0 +1,22 @@
package com.qs.serve.modules.his.mapper;
import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qs.serve.modules.his.entity.HisUserSupplierTemp;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Select;
/**
* 供应商负责人 Mapper
* @author YenHex
* @date 2023-05-31
*/
public interface HisUserSupplierTempMapper extends BaseMapper<HisUserSupplierTemp> {
@InterceptorIgnore(tenantLine = "1")
//@Select("SELECT * INTO his_user_supplier FROM his_user_supplier_temp")
@Insert("INSERT INTO his_user_supplier SELECT * FROM his_user_supplier_temp")
int selectIntoHis();
}

2
src/main/java/com/qs/serve/modules/his/service/HisUserSupplierService.java

@ -35,7 +35,7 @@ public interface HisUserSupplierService extends IService<HisUserSupplier> {
/**
* 删除
* 更新标识取消删除操作
* @return
*/
void cleanTable();

21
src/main/java/com/qs/serve/modules/his/service/HisUserSupplierTempService.java

@ -0,0 +1,21 @@
package com.qs.serve.modules.his.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.qs.serve.modules.his.entity.HisUserSupplierTemp;
/**
* 供应商负责人 服务接口
* @author YenHex
* @date 2023-05-31
*/
public interface HisUserSupplierTempService extends IService<HisUserSupplierTemp> {
/**
* 重新创建表数据
*/
void reloadHis();
void selectInfoHis();
}

40
src/main/java/com/qs/serve/modules/his/service/impl/HisUserSupplierServiceImpl.java

@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.pagehelper.PageHelper;
import com.qs.serve.common.framework.redis.RedisService;
import com.qs.serve.common.model.consts.RedisCacheKeys;
import com.qs.serve.common.model.dto.PageVo;
import com.qs.serve.common.model.dto.R;
import com.qs.serve.common.util.AuthContextUtils;
@ -45,6 +47,7 @@ public class HisUserSupplierServiceImpl extends ServiceImpl<HisUserSupplierMappe
private BmsRegion2Mapper bmsRegion2Mapper;
private BmsRegionUserService regionUserService;
private SysPostUserService sysPostUserService;
private RedisService redisService;
@Override
public List<HisUserSupplier> selectHisSupplier(BmsSupplier param, boolean usePage) {
@ -108,20 +111,12 @@ public class HisUserSupplierServiceImpl extends ServiceImpl<HisUserSupplierMappe
}
@Override
public boolean initByUserId(String userId, boolean hasCheck, boolean nextChilds) {
List<String> existUserIds = new ArrayList<>();
if(nextChilds) {
List<String> childUserList = sysPostUserService.listByChildIds(userId);
for (String childUserId : childUserList) {
this.initByUserId(childUserId, false, existUserIds);
}
}
return initByUserId(userId, hasCheck,existUserIds);
}
@Deprecated
@Override
public boolean initByUserId(String userId,boolean hasCheck, List<String> existUserIds) {
if(1==1){
return true;
}
if(!hasCheck){
if(existUserIds==null){
existUserIds = new ArrayList<>();
@ -187,6 +182,22 @@ public class HisUserSupplierServiceImpl extends ServiceImpl<HisUserSupplierMappe
return false;
}
@Deprecated
@Override
public boolean initByUserId(String userId, boolean hasCheck, boolean nextChilds) {
if(1==1){
return true;
}
List<String> existUserIds = new ArrayList<>();
if(nextChilds) {
List<String> childUserList = sysPostUserService.listByChildIds(userId);
for (String childUserId : childUserList) {
this.initByUserId(childUserId, false, existUserIds);
}
}
return initByUserId(userId, hasCheck,existUserIds);
}
private void toHisUserSupplier(List<HisUserSupplier> userSuppliers,Integer type,List<String> regionIds,Integer level,String userId){
if(regionIds.size()>0){
@ -200,7 +211,10 @@ public class HisUserSupplierServiceImpl extends ServiceImpl<HisUserSupplierMappe
@Override
public void cleanTable() {
this.remove(new QueryWrapper<>());
Integer opt = redisService.getInteger(RedisCacheKeys.HIS_UPDATE);
if(opt==null||opt.equals(0)){
redisService.set(RedisCacheKeys.HIS_UPDATE,1);
}
}
}

143
src/main/java/com/qs/serve/modules/his/service/impl/HisUserSupplierTempServiceImpl.java

@ -0,0 +1,143 @@
package com.qs.serve.modules.his.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.qs.serve.common.framework.redis.RedisService;
import com.qs.serve.modules.bms.entity.BmsRegion;
import com.qs.serve.modules.bms.entity.BmsRegion2;
import com.qs.serve.modules.bms.entity.BmsRegionUser;
import com.qs.serve.modules.bms.entity.BmsSupplier;
import com.qs.serve.modules.bms.mapper.BmsRegion2Mapper;
import com.qs.serve.modules.bms.mapper.BmsRegionMapper;
import com.qs.serve.modules.bms.service.BmsRegionUserService;
import com.qs.serve.modules.bms.service.BmsSupplierService;
import com.qs.serve.modules.his.entity.HisUserSupplier;
import com.qs.serve.modules.his.mapper.HisUserSupplierMapper;
import com.qs.serve.modules.sys.entity.SysUser;
import com.qs.serve.modules.sys.mapper.SysUserMapper;
import com.qs.serve.modules.sys.service.SysPostUserService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import com.qs.serve.modules.his.entity.HisUserSupplierTemp;
import com.qs.serve.modules.his.service.HisUserSupplierTempService;
import com.qs.serve.modules.his.mapper.HisUserSupplierTempMapper;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 供应商负责人 服务实现类
* @author YenHex
* @since 2023-05-31
*/
@Slf4j
@Service
@AllArgsConstructor
public class HisUserSupplierTempServiceImpl extends ServiceImpl<HisUserSupplierTempMapper,HisUserSupplierTemp> implements HisUserSupplierTempService {
private final SysUserMapper sysUserMapper;
private final SysPostUserService sysPostUserService;
private final BmsSupplierService bmsSupplierService;
private BmsRegionMapper saleRegionMapper;
private BmsRegion2Mapper bmsRegion2Mapper;
private BmsRegionUserService regionUserService;
private RedisService redisService;
private HisUserSupplierMapper hisUserSupplierMapper;
@Override
public void selectInfoHis() {
hisUserSupplierMapper.delete(new QueryWrapper<>());
baseMapper.selectIntoHis();
}
@Override
public void reloadHis() {
//移除所有历史
this.remove(new QueryWrapper<>());
//加载所有用户
List<SysUser> sysUser = sysUserMapper.selectList(new QueryWrapper<>());
List<String> userIds = sysUser.stream().map(a->a.getId()).collect(Collectors.toList());
//初始化
for (String userId : userIds) {
this.initByUserId(userId,null);
}
}
void initByUserId(String userId,List<String> existUserIds){
if(existUserIds==null){
existUserIds = new ArrayList<>();
}
if(existUserIds.contains(userId)){
return;
}else {
existUserIds.add(userId);
}
List<String> childUserIds = sysPostUserService.listByChildIds(userId);
for (String childUserId : childUserIds) {
this.initByUserId(childUserId, existUserIds);
}
BmsSupplier param = new BmsSupplier();
param.setCurrUserId(userId);
List<BmsSupplier> list = bmsSupplierService.selectSupplierList(param);
List<HisUserSupplierTemp> userSuppliers = new ArrayList<>();
for (BmsSupplier supplier : list) {
HisUserSupplierTemp userSupplier = supplier.toHisUserSupplierTemp(userId,3);
userSuppliers.add(userSupplier);
}
LambdaQueryWrapper<BmsRegionUser> regionUserLqw = new LambdaQueryWrapper<>();
regionUserLqw.eq(BmsRegionUser::getUserId,userId);
List<BmsRegionUser> regionUsers = regionUserService.list(regionUserLqw);
List<String> regionSaleIds = regionUsers.stream()
.filter(a->a.getType().equals(0))
.map(BmsRegionUser::getRegionId)
.collect(Collectors.toList());
if(regionSaleIds.size()>0){
List<BmsRegion> saleRegions = saleRegionMapper.selectBatchIds(regionSaleIds);
Map<Integer,List<BmsRegion>> saleRegionsMap = saleRegions.stream().collect(Collectors.groupingBy(BmsRegion::getLevel));
for (Integer level : saleRegionsMap.keySet()) {
List<BmsRegion> saleRegionListByLevel = saleRegionsMap.get(level);
List<String> regionIds = saleRegionListByLevel.stream().map(BmsRegion::getId).collect(Collectors.toList());
toHisUserSupplier(userSuppliers,0,regionIds,level,userId);
}
}
List<String> regionBizIds = regionUsers.stream()
.filter(a->a.getType().equals(1))
.map(BmsRegionUser::getRegionId)
.collect(Collectors.toList());
if(regionBizIds.size()>0){
List<BmsRegion2> bizRegions = bmsRegion2Mapper.selectBatchIds(regionBizIds);
Map<Integer,List<BmsRegion2>> saleRegionsMap = bizRegions.stream().collect(Collectors.groupingBy(BmsRegion2::getLevel));
for (Integer level : saleRegionsMap.keySet()) {
List<BmsRegion2> region2List = saleRegionsMap.get(level);
List<String> region2Ids = region2List.stream().map(BmsRegion2::getId).collect(Collectors.toList());
toHisUserSupplier(userSuppliers,1,region2Ids,level,userId);
}
}
if(userSuppliers.size()>0){
this.saveBatch(userSuppliers);
}else {
HisUserSupplierTemp userSupplier = new HisUserSupplierTemp();
userSupplier.setUserId(userId);
userSupplier.setSupplierId(0L);
userSupplier.setType(9);
this.save(userSupplier);
}
}
private void toHisUserSupplier(List<HisUserSupplierTemp> userSuppliers,Integer type,List<String> regionIds,Integer level,String userId){
if(regionIds.size()>0){
List<BmsSupplier> supplierList = bmsSupplierService.listByRegionIds(regionIds,level);
for (BmsSupplier supplier : supplierList) {
HisUserSupplierTemp userSupplier = supplier.toHisUserSupplierTemp(userId,type);
userSuppliers.add(userSupplier);
}
}
}
}

58
src/main/java/com/qs/serve/task/HisTask.java

@ -0,0 +1,58 @@
package com.qs.serve.task;
import com.qs.serve.common.framework.redis.RedisService;
import com.qs.serve.common.model.consts.RedisCacheKeys;
import com.qs.serve.common.util.AuthContextUtils;
import com.qs.serve.modules.his.service.HisUserSupplierTempService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.time.Duration;
import java.time.LocalDateTime;
import java.util.concurrent.TimeUnit;
/**
* @author YenHex
* @since 2023/5/31
*/
@Slf4j
@Component
@AllArgsConstructor
public class HisTask {
RedisService redisService;
HisUserSupplierTempService tempService;
/**
* 每隔半小时执行一次,串行
*/
@Scheduled(cron="0 0/30 * * * ?")
public void buildTempTable(){
AuthContextUtils.setTenant("001");
Integer opt = redisService.getInteger(RedisCacheKeys.HIS_UPDATE);
//设置默认值
if (opt==null){
redisService.set(RedisCacheKeys.HIS_UPDATE,0);
return;
}
//忽略状态
if (opt==1){
//执行同步
log.warn("======================执行同步======================");
LocalDateTime s1 = LocalDateTime.now();
//防卡死,加入超时
redisService.set(RedisCacheKeys.HIS_UPDATE,2,1, TimeUnit.HOURS);
tempService.reloadHis();
LocalDateTime s2 = LocalDateTime.now();
long diff = Duration.between(s1, s2).getSeconds();
tempService.selectInfoHis();
redisService.set(RedisCacheKeys.HIS_UPDATE,0);
log.warn("======================执行同步完成,耗时[ {} 秒]======================",diff);
}
}
}

1
src/main/java/com/qs/serve/task/TbsTask.java

@ -25,6 +25,7 @@ public class TbsTask {
private final TbsActivityService activityService;
private final TbsActivityTemplateService activityTemplateService;
//todo 每日更新过期的活动,过期则进行冻结
public void task1(){
AuthContextUtils.setTenant("001");

Loading…
Cancel
Save