Browse Source

发布费用活动

mssql
Yen 3 years ago
parent
commit
07bb195ac3
  1. 34
      src/main/java/com/qs/serve/common/util/StringUtils.java
  2. 57
      src/main/java/com/qs/serve/modules/bms/controller/BmsCostCenterController.java
  3. 23
      src/main/java/com/qs/serve/modules/bms/controller/BmsSubjectController.java
  4. 14
      src/main/java/com/qs/serve/modules/bms/entity/BmsCostCenter.java
  5. 2
      src/main/java/com/qs/serve/modules/bms/entity/BmsSubject.java
  6. 44
      src/main/java/com/qs/serve/modules/bms/entity/bo/BmsCostCenterBo.java
  7. 37
      src/main/java/com/qs/serve/modules/bms/entity/vo/BmsCostCenterTreeVo.java
  8. 17
      src/main/java/com/qs/serve/modules/tbs/entity/TbsActivityCenterGoods.java
  9. 38
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsActivityServiceImpl.java

34
src/main/java/com/qs/serve/common/util/StringUtils.java

@ -2,6 +2,7 @@ package com.qs.serve.common.util;
import lombok.experimental.UtilityClass; import lombok.experimental.UtilityClass;
import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.ZoneId; import java.time.ZoneId;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
@ -21,8 +22,10 @@ public class StringUtils extends org.springframework.util.StringUtils {
/** 订单号生成(NEW) **/ /** 订单号生成(NEW) **/
private static final AtomicInteger SEQ = new AtomicInteger(1000); private static final AtomicInteger SEQ = new AtomicInteger(1000);
private static final AtomicInteger SEQ2 = new AtomicInteger(10001);
private static final DateTimeFormatter DF_FMT_PREFIX = DateTimeFormatter.ofPattern("yyMMddHHmmssSS"); private static final DateTimeFormatter DF_FMT_PREFIX = DateTimeFormatter.ofPattern("yyMMddHHmmssSS");
private static ZoneId ZONE_ID = ZoneId.of("Asia/Shanghai"); private static ZoneId ZONE_ID = ZoneId.of("Asia/Shanghai");
public static String generateOrderNo(){ public static String generateOrderNo(){
LocalDateTime dataTime = LocalDateTime.now(ZONE_ID); LocalDateTime dataTime = LocalDateTime.now(ZONE_ID);
if(SEQ.intValue()>9990){ if(SEQ.intValue()>9990){
@ -31,6 +34,37 @@ public class StringUtils extends org.springframework.util.StringUtils {
return dataTime.format(DF_FMT_PREFIX)+SEQ.getAndIncrement(); return dataTime.format(DF_FMT_PREFIX)+SEQ.getAndIncrement();
} }
public static String genShortId() {
// 2 位 年份的后两位 22001 后五位走随机 每天清一次缓存 99999 10
StringBuilder idSb = new StringBuilder();
/// 年份后两位 和 一年中的第几天
LocalDate now = LocalDate.now();
String year = now.getYear() + "";
year = year.substring(2);
String day = now.getDayOfYear() + "";
/// 补0
if (day.length() < 3) {
StringBuilder sb = new StringBuilder();
for (int i = day.length(); i < 3; i++) {
sb.append("0");
}
day = sb.append(day).toString();
}
idSb.append(year).append(day);
/// 后五位补随机数
if(SEQ2.intValue()>99990){
SEQ2.getAndSet(10000);
}
idSb.append(SEQ2.getAndIncrement());
return idSb.toString();
}
public static void main(String[] args) {
for (int i = 0; i < 100; i++) {
System.out.println(genShortId());
}
}
/** 非空 */ /** 非空 */
public static boolean isNotEmpty(String str){ public static boolean isNotEmpty(String str){
return !isEmpty(str); return !isEmpty(str);

57
src/main/java/com/qs/serve/modules/bms/controller/BmsCostCenterController.java

@ -6,7 +6,12 @@ import com.qs.serve.common.model.dto.PageVo;
import com.qs.serve.common.model.dto.R; import com.qs.serve.common.model.dto.R;
import com.qs.serve.common.model.enums.BizType; import com.qs.serve.common.model.enums.BizType;
import com.qs.serve.common.model.enums.SystemModule; import com.qs.serve.common.model.enums.SystemModule;
import com.qs.serve.common.util.CopierUtil;
import com.qs.serve.common.util.PageUtil; import com.qs.serve.common.util.PageUtil;
import com.qs.serve.common.util.TreeUtil;
import com.qs.serve.modules.bms.entity.bo.BmsCostCenterBo;
import com.qs.serve.modules.bms.entity.vo.BmsCostCenterTreeVo;
import com.qs.serve.modules.bms.entity.vo.BmsSubjectTreeVo;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
@ -17,6 +22,7 @@ import com.qs.serve.modules.bms.service.BmsCostCenterService;
import javax.validation.Valid; import javax.validation.Valid;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
/** /**
* 基础档案 成本中心 * 基础档案 成本中心
@ -24,25 +30,30 @@ import java.util.List;
* @since 2022-10-13 * @since 2022-10-13
*/ */
@Slf4j @Slf4j
//@AllArgsConstructor @AllArgsConstructor
//@RestController @RestController
//@RequestMapping("bms/costCenter") @RequestMapping("bms/costCenter")
public class BmsCostCenterController { public class BmsCostCenterController {
private BmsCostCenterService bmsCostCenterService; private BmsCostCenterService bmsCostCenterService;
/** /**
* 翻页查询 * 树查询
* @param param
* @return * @return
*/ */
@GetMapping("/page") @GetMapping("/tree")
@PreAuthorize("hasRole('bms:costCenter:query')") @PreAuthorize("hasRole('bms:costCenter:query')")
public R<PageVo<BmsCostCenter>> getPage(BmsCostCenter param){ public R<List<BmsCostCenterTreeVo>> getTree(){
PageUtil.startPage(); List<BmsCostCenter> list = bmsCostCenterService.list();
LambdaQueryWrapper<BmsCostCenter> costCenterWrapper = new LambdaQueryWrapper<>(param); List<BmsCostCenterTreeVo> treeVoList = list.stream().map(obj->{
List<BmsCostCenter> list = bmsCostCenterService.list(costCenterWrapper); BmsCostCenterTreeVo treeNode = CopierUtil.copy(obj,new BmsCostCenterTreeVo());
return R.byPageHelperList(list); treeNode.setId(obj.getId().toString());
treeNode.setParentId(obj.getPid().toString());
treeNode.setSort(0);
return treeNode;
}).collect(Collectors.toList());
return R.ok(TreeUtil.buildByRecursive(treeVoList,TreeUtil.DEFAULT_PID_STRING));
} }
/** /**
@ -68,9 +79,21 @@ public class BmsCostCenterController {
@PostMapping("/updateById") @PostMapping("/updateById")
@SysLog(module = SystemModule.BASE, title = "成本中心", biz = BizType.UPDATE) @SysLog(module = SystemModule.BASE, title = "成本中心", biz = BizType.UPDATE)
@PreAuthorize("hasRole('bms:costCenter:update')") @PreAuthorize("hasRole('bms:costCenter:update')")
public R<?> updateById(@RequestBody @Valid BmsCostCenter param){ public R<?> updateById(@RequestBody @Valid BmsCostCenterBo param){
boolean result = bmsCostCenterService.updateById(param); commonEdit(param);
return R.isTrue(result); return R.ok();
}
private void commonEdit(BmsCostCenterBo param){
BmsCostCenter costCenter = CopierUtil.copy(param,new BmsCostCenter());
if(costCenter.getPid()==null||costCenter.getPid().equals(0L)){
costCenter.setPid(0L);
costCenter.setLevel(1);
}else {
BmsCostCenter parent = bmsCostCenterService.getById(costCenter.getPid());
costCenter.setLevel(parent.getLevel()+1);
}
bmsCostCenterService.saveOrUpdate(costCenter);
} }
/** /**
@ -81,9 +104,9 @@ public class BmsCostCenterController {
@PostMapping("/save") @PostMapping("/save")
@SysLog(module = SystemModule.BASE, title = "成本中心", biz = BizType.INSERT) @SysLog(module = SystemModule.BASE, title = "成本中心", biz = BizType.INSERT)
@PreAuthorize("hasRole('bms:costCenter:insert')") @PreAuthorize("hasRole('bms:costCenter:insert')")
public R<?> save(@RequestBody @Valid BmsCostCenter param){ public R<?> save(@RequestBody @Valid BmsCostCenterBo param){
boolean result = bmsCostCenterService.save(param); commonEdit(param);
return R.isTrue(result); return R.ok();
} }
/** /**

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

@ -9,6 +9,8 @@ import com.qs.serve.common.model.enums.SystemModule;
import com.qs.serve.common.util.CopierUtil; import com.qs.serve.common.util.CopierUtil;
import com.qs.serve.common.util.PageUtil; import com.qs.serve.common.util.PageUtil;
import com.qs.serve.common.util.TreeUtil; import com.qs.serve.common.util.TreeUtil;
import com.qs.serve.modules.bms.entity.BmsCostCenter;
import com.qs.serve.modules.bms.entity.bo.BmsCostCenterBo;
import com.qs.serve.modules.bms.entity.vo.BmsRegionTreeVo; import com.qs.serve.modules.bms.entity.vo.BmsRegionTreeVo;
import com.qs.serve.modules.bms.entity.vo.BmsSubjectTreeVo; import com.qs.serve.modules.bms.entity.vo.BmsSubjectTreeVo;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
@ -37,7 +39,7 @@ public class BmsSubjectController {
private BmsSubjectService bmsSubjectService; private BmsSubjectService bmsSubjectService;
/** /**
* 翻页 * 树查询
* @param param * @param param
* @return * @return
*/ */
@ -78,8 +80,8 @@ public class BmsSubjectController {
@SysLog(module = SystemModule.BASE, title = "科目", biz = BizType.UPDATE) @SysLog(module = SystemModule.BASE, title = "科目", biz = BizType.UPDATE)
@PreAuthorize("hasRole('bms:subject:update')") @PreAuthorize("hasRole('bms:subject:update')")
public R<?> updateById(@RequestBody @Valid BmsSubject param){ public R<?> updateById(@RequestBody @Valid BmsSubject param){
boolean result = bmsSubjectService.updateById(param); commonEdit(param);
return R.isTrue(result); return R.ok();
} }
/** /**
@ -91,8 +93,19 @@ public class BmsSubjectController {
@SysLog(module = SystemModule.BASE, title = "科目", biz = BizType.INSERT) @SysLog(module = SystemModule.BASE, title = "科目", biz = BizType.INSERT)
@PreAuthorize("hasRole('bms:subject:insert')") @PreAuthorize("hasRole('bms:subject:insert')")
public R<?> save(@RequestBody @Valid BmsSubject param){ public R<?> save(@RequestBody @Valid BmsSubject param){
boolean result = bmsSubjectService.save(param); commonEdit(param);
return R.isTrue(result); return R.ok();
}
private void commonEdit(BmsSubject subject){
if(subject.getPid()==null||subject.getPid().equals(0L)){
subject.setPid(0L);
subject.setLevel(1);
}else {
BmsSubject parent = bmsSubjectService.getById(subject.getPid());
subject.setLevel(parent.getLevel()+1);
}
bmsSubjectService.saveOrUpdate(subject);
} }
/** /**

14
src/main/java/com/qs/serve/modules/bms/entity/BmsCostCenter.java

@ -1,7 +1,9 @@
package com.qs.serve.modules.bms.entity; package com.qs.serve.modules.bms.entity;
import java.time.LocalDateTime; import java.time.LocalDate;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
@ -17,7 +19,7 @@ import javax.validation.constraints.NotBlank;
/** /**
* 成本中心 实体类 * 成本中心 实体类
* @author YenHex * @author YenHex
* @since 2022-10-13 * @since 2022-11-11
*/ */
@Data @Data
@TableName("bms_cost_center") @TableName("bms_cost_center")
@ -39,6 +41,14 @@ public class BmsCostCenter implements Serializable {
@Length(max = 20,message = "名称长度不能超过20字") @Length(max = 20,message = "名称长度不能超过20字")
private String name; private String name;
/** 层级 */
@NotNull(message = "层级不能为空")
private Integer level;
/** 父级节点 */
@NotNull(message = "父级节点不能为空")
private Long pid;
/** 备注 */ /** 备注 */
@Length(max = 255,message = "备注长度不能超过255字") @Length(max = 255,message = "备注长度不能超过255字")
private String remark; private String remark;

2
src/main/java/com/qs/serve/modules/bms/entity/BmsSubject.java

@ -43,6 +43,8 @@ public class BmsSubject implements Serializable {
@NotNull(message = "父级id不能为空") @NotNull(message = "父级id不能为空")
private Long pid; private Long pid;
private Integer level;
/** 备注 */ /** 备注 */
@Length(max = 255,message = "备注长度不能超过255字") @Length(max = 255,message = "备注长度不能超过255字")
private String remark; private String remark;

44
src/main/java/com/qs/serve/modules/bms/entity/bo/BmsCostCenterBo.java

@ -0,0 +1,44 @@
package com.qs.serve.modules.bms.entity.bo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
/**
* @author YenHex
* @since 2022/11/11
*/
@Data
public class BmsCostCenterBo {
/** id */
@TableId(type = IdType.AUTO)
private Long id;
/** 编码 */
@NotBlank(message = "编码不能为空")
@Length(max = 20,message = "编码长度不能超过20字")
private String code;
/** 名称 */
@NotBlank(message = "名称不能为空")
@Length(max = 20,message = "名称长度不能超过20字")
private String name;
/** 层级 */
@NotNull(message = "层级不能为空")
private Integer level;
/** 父级节点 */
@NotNull(message = "父级节点不能为空")
private Long pid;
/** 备注 */
@Length(max = 255,message = "备注长度不能超过255字")
private String remark;
}

37
src/main/java/com/qs/serve/modules/bms/entity/vo/BmsCostCenterTreeVo.java

@ -0,0 +1,37 @@
package com.qs.serve.modules.bms.entity.vo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.qs.serve.common.model.dto.TreeNode;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
/**
* @author YenHex
* @since 2022/11/11
*/
@Data
public class BmsCostCenterTreeVo extends TreeNode {
/** 科目名称 */
@NotBlank(message = "科目名称不能为空")
@Length(max = 50,message = "科目名称长度不能超过50字")
private String subjectName;
/** 科目编码 */
@NotBlank(message = "科目编码不能为空")
@Length(max = 50,message = "科目编码长度不能超过50字")
private String subjectCode;
/** 父级id */
@NotNull(message = "父级id不能为空")
private Long pid;
/** 备注 */
@Length(max = 255,message = "备注长度不能超过255字")
private String remark;
}

17
src/main/java/com/qs/serve/modules/tbs/entity/TbsActivityCenterGoods.java

@ -100,20 +100,13 @@ public class TbsActivityCenterGoods implements Serializable {
@Length(max = 30,message = "目标名称长度不能超过30字") @Length(max = 30,message = "目标名称长度不能超过30字")
private String targetName; private String targetName;
/** 目标父级id */ /** 目标等级id路径 */
private Long targetParentId; @Length(max = 600,message = "目标等级路径长度不能超过600字")
private String targetLevelPathIds;
/** 目标父级编码 */
@Length(max = 30,message = "目标父级编码长度不能超过30字")
private String targetParentCode;
/** 目标父级名称 */
@Length(max = 20,message = "目标父级名称长度不能超过20字")
private String targetParentName;
/** 目标等级路径 */ /** 目标等级名称路径 */
@Length(max = 600,message = "目标等级路径长度不能超过600字") @Length(max = 600,message = "目标等级路径长度不能超过600字")
private String targetLevelPath; private String targetLevelPathNames;
/** 备注 */ /** 备注 */
@Length(max = 255,message = "备注长度不能超过255字") @Length(max = 255,message = "备注长度不能超过255字")

38
src/main/java/com/qs/serve/modules/tbs/service/impl/TbsActivityServiceImpl.java

@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.qs.serve.common.util.Assert; import com.qs.serve.common.util.Assert;
import com.qs.serve.common.util.CollectionUtil; import com.qs.serve.common.util.CollectionUtil;
import com.qs.serve.common.util.CopierUtil; import com.qs.serve.common.util.CopierUtil;
import com.qs.serve.common.util.StringUtils;
import com.qs.serve.modules.bms.entity.*; import com.qs.serve.modules.bms.entity.*;
import com.qs.serve.modules.bms.service.*; import com.qs.serve.modules.bms.service.*;
import com.qs.serve.modules.goods.entity.GoodsCategory; import com.qs.serve.modules.goods.entity.GoodsCategory;
@ -79,6 +80,7 @@ public class TbsActivityServiceImpl extends ServiceImpl<TbsActivityMapper,TbsAct
} }
}else { }else {
activity = CopierUtil.copy(activityBo,new TbsActivity()); activity = CopierUtil.copy(activityBo,new TbsActivity());
activity.setSupplierCode("G"+ StringUtils.genShortId());
} }
activity.setSupplierId(Long.parseLong(supplier.getId())); activity.setSupplierId(Long.parseLong(supplier.getId()));
activity.setSupplierCode(supplier.getCode()); activity.setSupplierCode(supplier.getCode());
@ -94,6 +96,7 @@ public class TbsActivityServiceImpl extends ServiceImpl<TbsActivityMapper,TbsAct
Map<Long,BmsSubject> subjectMap = new HashMap<>(); Map<Long,BmsSubject> subjectMap = new HashMap<>();
List<TbsActivitySubject> activitySubjects = new ArrayList<>(); List<TbsActivitySubject> activitySubjects = new ArrayList<>();
List<TbsActivityCenter> activityCenterList = new ArrayList<>(); List<TbsActivityCenter> activityCenterList = new ArrayList<>();
Map<String,TbsCenterDto> centerDtoMap = new HashMap<>();
for (TbsActivitySubjectBo subjectBo : activityBo.getActivitySubjectList()) { for (TbsActivitySubjectBo subjectBo : activityBo.getActivitySubjectList()) {
BmsSubject subject = subjectService.getById(subjectBo.getSubjectId()); BmsSubject subject = subjectService.getById(subjectBo.getSubjectId());
subjectMap.put(subject.getId(),subject); subjectMap.put(subject.getId(),subject);
@ -111,7 +114,12 @@ public class TbsActivityServiceImpl extends ServiceImpl<TbsActivityMapper,TbsAct
for (TbsActivitySubjectBo.ActivityCenterBo centerBo : subjectBo.getCenterList()) { for (TbsActivitySubjectBo.ActivityCenterBo centerBo : subjectBo.getCenterList()) {
String centerType = centerBo.getCenterType(); String centerType = centerBo.getCenterType();
String centerId = centerBo.getCenterId(); String centerId = centerBo.getCenterId();
TbsCenterDto tbsCenterDto = getCenterDto(centerType,centerId); String key = centerType+":"+centerId;
TbsCenterDto tbsCenterDto = centerDtoMap.get(key);
if(tbsCenterDto==null){
tbsCenterDto = getCenterDto(centerType,centerId);
centerDtoMap.put(key,tbsCenterDto);
}
TbsActivityCenter activityCenter = new TbsActivityCenter(); TbsActivityCenter activityCenter = new TbsActivityCenter();
activityCenter.setCostApplyId(costApply.getId()); activityCenter.setCostApplyId(costApply.getId());
activityCenter.setActivityId(activity.getId()); activityCenter.setActivityId(activity.getId());
@ -137,11 +145,33 @@ public class TbsActivityServiceImpl extends ServiceImpl<TbsActivityMapper,TbsAct
centerGoods.setSubjectName(subject.getSubjectName()); centerGoods.setSubjectName(subject.getSubjectName());
centerGoods.setCenterGoodsAmount(centerGoodsBo.getCenterGoodsAmount()); centerGoods.setCenterGoodsAmount(centerGoodsBo.getCenterGoodsAmount());
centerGoods.setCenterGoodsRate(centerGoodsBo.getCenterGoodsRate()); centerGoods.setCenterGoodsRate(centerGoodsBo.getCenterGoodsRate());
//todo 设置成本中心 //设置成本中心
String key = centerGoodsBo.getCenterType()+":"+centerGoodsBo.getCenterId();
TbsCenterDto tbsCenterDto = centerDtoMap.get(key);
centerGoods.setCenterId(centerGoodsBo.getCenterId());
centerGoods.setCenterCode(tbsCenterDto.getCenterCode());
centerGoods.setCenterName(tbsCenterDto.getCenterName());
//设置商品 //设置商品
Long cenTarId = centerGoodsBo.getTargetId();
String cenTarType = centerGoodsBo.getTargetType();
for (TbsActivityGoods activityGoods : activityGoodsList) {
Long actTarId = activityGoods.getTargetId();
String actTarType = activityGoods.getTargetType();
if(actTarId.equals(cenTarId)&&cenTarType.equals(actTarType)){
centerGoods.setTargetCode(activityGoods.getTargetCode());
centerGoods.setTargetName(activityGoods.getTargetName());
centerGoods.setTargetLevelPathIds(activityGoods.getTargetLevelPathIds());
centerGoods.setTargetLevelPathNames(activityGoods.getTargetLevelPathNames());
break;
}
}
if(StringUtils.hasEmpty(centerGoods.getTargetLevelPathIds())){
Assert.throwEx("商品数据无法匹配");
}
} }
//客户详情 //客户详情
} }
/** /**
@ -212,7 +242,7 @@ public class TbsActivityServiceImpl extends ServiceImpl<TbsActivityMapper,TbsAct
} }
/** /**
* todo 获取成本中心DTO * 获取成本中心DTO
* @param centerType * @param centerType
* @param centerId * @param centerId
* @return * @return

Loading…
Cancel
Save