Browse Source

Merge remote-tracking branch 'origin/v1.0' into v1.0

v1.0
15989082884@163.com 2 years ago
parent
commit
cbd462551e
  1. 19
      src/main/java/com/qs/serve/modules/baz/controller/BazVisitInstanceController.java
  2. 45
      src/main/java/com/qs/serve/modules/baz/controller/my/BazMyVisitInstanceController.java
  3. 3
      src/main/java/com/qs/serve/modules/baz/entity/BazVisitFlow.java
  4. 34
      src/main/java/com/qs/serve/modules/baz/entity/BazVisitInstance.java
  5. 4
      src/main/java/com/qs/serve/modules/baz/entity/BazVisitInstanceFlow.java
  6. 4
      src/main/java/com/qs/serve/modules/baz/entity/bo/BazVisitFlowBo.java
  7. 5
      src/main/java/com/qs/serve/modules/baz/mapper/BazVisitInstanceMapper.java
  8. 5
      src/main/java/com/qs/serve/modules/baz/service/BazVisitInstanceService.java
  9. 6
      src/main/java/com/qs/serve/modules/baz/service/impl/BazVisitInstanceServiceImpl.java
  10. 29
      src/main/java/com/qs/serve/modules/biz/controller/BizVisitController.java
  11. 14
      src/main/java/com/qs/serve/modules/biz/controller/my/BizVisitMyController.java
  12. 2
      src/main/java/com/qs/serve/modules/bms/entity/BmsSupplierAddress.java
  13. 23
      src/main/java/com/qs/serve/modules/oms/controller/api/OmsOrderApi.java
  14. 7
      src/main/java/com/qs/serve/modules/oms/entity/OmsOrderItem.java
  15. 184
      src/main/java/com/qs/serve/modules/oms/entity/OmsXltOrder.java
  16. 124
      src/main/java/com/qs/serve/modules/oms/entity/OmsXltOrderItem.java
  17. 14
      src/main/java/com/qs/serve/modules/oms/mapper/OmsXltOrderItemMapper.java
  18. 14
      src/main/java/com/qs/serve/modules/oms/mapper/OmsXltOrderMapper.java
  19. 163
      src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java
  20. 59
      src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetApplicationService.java
  21. 2
      src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetMatchApplication.java
  22. 1
      src/main/java/com/qs/serve/modules/third/service/PortalOfCostApplication.java
  23. 120
      src/main/resources/mapper/baz/BazVisitInstanceMapper.xml

19
src/main/java/com/qs/serve/modules/baz/controller/BazVisitInstanceController.java

@ -6,6 +6,7 @@ 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.AuthContextUtils;
import com.qs.serve.common.util.PageUtil; import com.qs.serve.common.util.PageUtil;
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.common.util.StringUtils;
@ -58,6 +59,24 @@ public class BazVisitInstanceController {
return R.byPageHelperList(list); return R.byPageHelperList(list);
} }
/**
* 列表
* @param param
* @return
*/
@GetMapping("/list")
public R<List<BazVisitInstance>> getList(BazVisitInstanceSo param){
BazVisitInstance query = CopierUtil.copy(param,new BazVisitInstance());
if(param.getQueryStartDate()!=null){
query.setQueryEndDate(param.getQueryStartDate().atStartOfDay());
}
if(param.getQueryEndDate()!=null){
query.setQueryEndDate(param.getQueryEndDate().atTime(23,59,59));
}
List<BazVisitInstance> list = bazVisitInstanceService.selectBazVisitInstanceList(query);
return R.ok(list);
}
/** /**
* ID查询 * ID查询
* @param id * @param id

45
src/main/java/com/qs/serve/modules/baz/controller/my/BazMyVisitInstanceController.java

@ -94,6 +94,51 @@ public class BazMyVisitInstanceController {
} }
/**
* 列表
* @param param
* @return
*/
@GetMapping("/list")
public R<List<BazVisitInstance>> getList(BazVisitInstanceSo param){
BazVisitInstance query = CopierUtil.copy(param,new BazVisitInstance());
if(param.getQueryStartDate()!=null){
query.setQueryEndDate(param.getQueryStartDate().atStartOfDay());
}
if(param.getQueryEndDate()!=null){
query.setQueryEndDate(param.getQueryEndDate().atTime(23,59,59));
}
param.setVisitorId(AuthContextUtils.getSysUserId());
List<BazVisitInstance> list = bazVisitInstanceService.selectBazVisitInstanceList(query);
return R.ok(list);
}
/**
* 列表(我的部下)
* @param param
* @return
*/
@GetMapping("/list4Under")
public R<List<BazVisitInstance>> list4Under(BazVisitInstanceSo param){
BazVisitInstance query = CopierUtil.copy(param,new BazVisitInstance());
if(param.getQueryStartDate()!=null){
query.setQueryEndDate(param.getQueryStartDate().atStartOfDay());
}
if(param.getQueryEndDate()!=null){
query.setQueryEndDate(param.getQueryEndDate().atTime(23,59,59));
}
List<String> userIds = postUserService.listByChildIds(AuthContextUtils.getSysUserId());
if(userIds.size()<1){
return R.ok();
}
String userId = AuthContextUtils.getSysUserId();
PageUtil.startPage();
query.setQueryUserIds(userIds);
query.setIgnoreUserId(userId);
List<BazVisitInstance> list = bazVisitInstanceService.selectBazVisitInstanceList(query);
return R.ok(list);
}
/** /**
* 获取用户未完成拜访数量 * 获取用户未完成拜访数量
* @param visitId 拜访id * @param visitId 拜访id

3
src/main/java/com/qs/serve/modules/baz/entity/BazVisitFlow.java

@ -52,6 +52,9 @@ public class BazVisitFlow implements Serializable {
/** 排序 */ /** 排序 */
private Integer flowSort; private Integer flowSort;
/** 业务类型:0-普通;1->签到;2-签退;3->小结 */
private Integer flowBizType;
/** 是否可忽略 */ /** 是否可忽略 */
@NotNull(message = "是否可忽略不能为空") @NotNull(message = "是否可忽略不能为空")
private Integer ignoreFlag; private Integer ignoreFlag;

34
src/main/java/com/qs/serve/modules/baz/entity/BazVisitInstance.java

@ -139,6 +139,40 @@ public class BazVisitInstance implements Serializable {
@TableField(exist = false) @TableField(exist = false)
private List<?> flowList; private List<?> flowList;
/** 拜访小结 */
@TableField(exist = false)
private String summary;
/** 签到时间 */
@TableField(exist = false)
@JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
private LocalDateTime signTime;
/** 签退时间 */
@TableField(exist = false)
@JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
private LocalDateTime outTime;
/** 查询开始时间 */
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
@TableField(exist = false)
private LocalDateTime queryStartDate;
/** 查询结束时间 */
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
@TableField(exist = false)
private LocalDateTime queryEndDate;
/** 查询用户ID */
@TableField(exist = false)
private List<String> queryUserIds;
/** 忽略的用户ID */
@TableField(exist = false)
private String ignoreUserId;
public static BazVisitInstance toNewObject(BazVisit source, TargetDTO targetDTO, SysUser sysUser){ public static BazVisitInstance toNewObject(BazVisit source, TargetDTO targetDTO, SysUser sysUser){
BazVisitInstance visitInstance = new BazVisitInstance(); BazVisitInstance visitInstance = new BazVisitInstance();
//visitInstance.setTitle(source.getTitle()); //visitInstance.setTitle(source.getTitle());

4
src/main/java/com/qs/serve/modules/baz/entity/BazVisitInstanceFlow.java

@ -72,6 +72,9 @@ public class BazVisitInstanceFlow implements Serializable {
@Length(max = 255,message = "流程名称长度不能超过255字") @Length(max = 255,message = "流程名称长度不能超过255字")
private String flowTitle; private String flowTitle;
/** 业务类型:0-普通;1->签到;2-签退;3->小结 */
private Integer flowBizType;
/** 排序 */ /** 排序 */
private Integer flowSort; private Integer flowSort;
@ -181,6 +184,7 @@ public class BazVisitInstanceFlow implements Serializable {
visitInstanceFlow.setTargetCode(targetDTO.getTargetCode()); visitInstanceFlow.setTargetCode(targetDTO.getTargetCode());
visitInstanceFlow.setTargetName(targetDTO.getTargetName()); visitInstanceFlow.setTargetName(targetDTO.getTargetName());
visitInstanceFlow.setFlowTitle(source.getFlowTitle()); visitInstanceFlow.setFlowTitle(source.getFlowTitle());
visitInstanceFlow.setFlowBizType(source.getFlowBizType());
visitInstanceFlow.setFlowSort(source.getFlowSort()); visitInstanceFlow.setFlowSort(source.getFlowSort());
visitInstanceFlow.setIgnoreFlag(source.getIgnoreFlag()); visitInstanceFlow.setIgnoreFlag(source.getIgnoreFlag());
visitInstanceFlow.setPositionState(source.getPositionState()); visitInstanceFlow.setPositionState(source.getPositionState());

4
src/main/java/com/qs/serve/modules/baz/entity/bo/BazVisitFlowBo.java

@ -41,6 +41,10 @@ public class BazVisitFlowBo implements Serializable {
@NotNull(message = "排序不能为空") @NotNull(message = "排序不能为空")
private Integer flowSort; private Integer flowSort;
/** 业务类型:0-普通;1->签到;2-签退;3->小结 */
@NotNull(message = "排序不能为空")
private Integer flowBizType;
/** 是否可忽略 */ /** 是否可忽略 */
@NotNull(message = "是否可忽略不能为空") @NotNull(message = "是否可忽略不能为空")
private Integer ignoreFlag; private Integer ignoreFlag;

5
src/main/java/com/qs/serve/modules/baz/mapper/BazVisitInstanceMapper.java

@ -2,6 +2,9 @@ package com.qs.serve.modules.baz.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qs.serve.modules.baz.entity.BazVisitInstance; import com.qs.serve.modules.baz.entity.BazVisitInstance;
import com.qs.serve.modules.baz.entity.so.BazVisitInstanceSo;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/** /**
* 拜访实例 Mapper * 拜访实例 Mapper
@ -10,5 +13,7 @@ import com.qs.serve.modules.baz.entity.BazVisitInstance;
*/ */
public interface BazVisitInstanceMapper extends BaseMapper<BazVisitInstance> { public interface BazVisitInstanceMapper extends BaseMapper<BazVisitInstance> {
List<BazVisitInstance> selectBazVisitInstanceList(@Param("query") BazVisitInstance param);
} }

5
src/main/java/com/qs/serve/modules/baz/service/BazVisitInstanceService.java

@ -4,6 +4,10 @@ import com.baomidou.mybatisplus.extension.service.IService;
import com.qs.serve.modules.baz.entity.BazVisitInstance; import com.qs.serve.modules.baz.entity.BazVisitInstance;
import com.qs.serve.modules.baz.entity.bo.BazCreateVisitInstanceBo; import com.qs.serve.modules.baz.entity.bo.BazCreateVisitInstanceBo;
import com.qs.serve.modules.baz.entity.bo.BazVisitInstanceFlowBo; import com.qs.serve.modules.baz.entity.bo.BazVisitInstanceFlowBo;
import com.qs.serve.modules.baz.entity.so.BazVisitInstanceSo;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/** /**
* 拜访实例 服务接口 * 拜访实例 服务接口
@ -18,5 +22,6 @@ public interface BazVisitInstanceService extends IService<BazVisitInstance> {
void finished(Long id); void finished(Long id);
List<BazVisitInstance> selectBazVisitInstanceList( BazVisitInstance param);
} }

6
src/main/java/com/qs/serve/modules/baz/service/impl/BazVisitInstanceServiceImpl.java

@ -11,6 +11,7 @@ import com.qs.serve.modules.baz.common.BazTargetTypeConsts;
import com.qs.serve.modules.baz.entity.*; import com.qs.serve.modules.baz.entity.*;
import com.qs.serve.modules.baz.entity.bo.BazCreateVisitInstanceBo; import com.qs.serve.modules.baz.entity.bo.BazCreateVisitInstanceBo;
import com.qs.serve.modules.baz.entity.bo.BazVisitInstanceFlowBo; import com.qs.serve.modules.baz.entity.bo.BazVisitInstanceFlowBo;
import com.qs.serve.modules.baz.entity.so.BazVisitInstanceSo;
import com.qs.serve.modules.baz.mapper.BazVisitFlowMapper; import com.qs.serve.modules.baz.mapper.BazVisitFlowMapper;
import com.qs.serve.modules.baz.mapper.BazVisitInstanceFlowMapper; import com.qs.serve.modules.baz.mapper.BazVisitInstanceFlowMapper;
import com.qs.serve.modules.baz.mapper.BazVisitMapper; import com.qs.serve.modules.baz.mapper.BazVisitMapper;
@ -253,5 +254,10 @@ public class BazVisitInstanceServiceImpl extends ServiceImpl<BazVisitInstanceMap
this.updateById(visitInstance); this.updateById(visitInstance);
} }
} }
@Override
public List<BazVisitInstance> selectBazVisitInstanceList(BazVisitInstance param) {
return super.baseMapper.selectBazVisitInstanceList(param);
}
} }

29
src/main/java/com/qs/serve/modules/biz/controller/BizVisitController.java

@ -69,6 +69,35 @@ public class BizVisitController {
return R.byPageHelperList(list); return R.byPageHelperList(list);
} }
/**
* 列表我的下属拜访记录
* @param param
* @return
*/
@GetMapping("/list4Under")
public R<List<BizVisit>> list4Under(BizVisit param){
List<String> userIds = postUserService.listByChildIds(AuthContextUtils.getSysUserId());
if(userIds.size()<1){
return R.ok();
}
LambdaQueryWrapper<BizVisit> visitWrapper = this.getBizVisitLambdaQueryWrapper(param);
visitWrapper.in(BizVisit::getVisitorId,userIds);
List<BizVisit> list = bizVisitService.list(visitWrapper);
return R.ok(list);
}
/**
* 列表
* @param param
* @return
*/
@GetMapping("/list")
public R<List<BizVisit>> getList(BizVisit param){
LambdaQueryWrapper<BizVisit> visitWrapper = this.getBizVisitLambdaQueryWrapper(param);
List<BizVisit> list = bizVisitService.list(visitWrapper);
return R.ok(list);
}
@NotNull @NotNull
private LambdaQueryWrapper<BizVisit> getBizVisitLambdaQueryWrapper(BizVisit param) { private LambdaQueryWrapper<BizVisit> getBizVisitLambdaQueryWrapper(BizVisit param) {
LambdaQueryWrapper<BizVisit> visitWrapper = new LambdaQueryWrapper<>(param); LambdaQueryWrapper<BizVisit> visitWrapper = new LambdaQueryWrapper<>(param);

14
src/main/java/com/qs/serve/modules/biz/controller/my/BizVisitMyController.java

@ -37,6 +37,20 @@ public class BizVisitMyController {
private SysUserService sysUserService; private SysUserService sysUserService;
private SysPostUserService postUserService; private SysPostUserService postUserService;
/**
* 翻页
* @param param
* @return
*/
@GetMapping("/list")
public R<List<BizVisit>> getList(BizVisit param){
String userId = AuthContextUtils.getSysUserId();
param.setVisitorId(userId);
LambdaQueryWrapper<BizVisit> visitWrapper = this.getBizVisitLambdaQueryWrapper(param);
List<BizVisit> list = bizVisitService.list(visitWrapper);
return R.ok(list);
}
/** /**
* 翻页 * 翻页
* @param param * @param param

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

@ -71,7 +71,7 @@ public class BmsSupplierAddress implements Serializable {
/** 手机号 */ /** 手机号 */
@NotBlank(message = "手机号不能为空") @NotBlank(message = "手机号不能为空")
@Length(max = 30,message = "手机号长度不能超过30字") @Length(max = 250,message = "手机号长度不能超过30字")
private String phone; private String phone;
/** 收件人 */ /** 收件人 */

23
src/main/java/com/qs/serve/modules/oms/controller/api/OmsOrderApi.java

@ -11,7 +11,11 @@ import com.qs.serve.common.util.PageUtil;
import com.qs.serve.modules.bms.entity.BmsSupplier; import com.qs.serve.modules.bms.entity.BmsSupplier;
import com.qs.serve.modules.bms.entity.BmsSupplierAddress; import com.qs.serve.modules.bms.entity.BmsSupplierAddress;
import com.qs.serve.modules.bms.service.BmsSupplierAddressService; import com.qs.serve.modules.bms.service.BmsSupplierAddressService;
import com.qs.serve.modules.goods.entity.GoodsCategory;
import com.qs.serve.modules.goods.entity.GoodsSpu;
import com.qs.serve.modules.goods.service.GoodsCategoryRuleService; import com.qs.serve.modules.goods.service.GoodsCategoryRuleService;
import com.qs.serve.modules.goods.service.GoodsCategoryService;
import com.qs.serve.modules.goods.service.GoodsSpuService;
import com.qs.serve.modules.oms.entity.OmsOrder; import com.qs.serve.modules.oms.entity.OmsOrder;
import com.qs.serve.modules.oms.entity.OmsOrderItem; import com.qs.serve.modules.oms.entity.OmsOrderItem;
import com.qs.serve.modules.oms.entity.bo.OmsCancelOrder; import com.qs.serve.modules.oms.entity.bo.OmsCancelOrder;
@ -46,6 +50,8 @@ public class OmsOrderApi {
private BmsSupplierAddressService bmsSupplierAddressService; private BmsSupplierAddressService bmsSupplierAddressService;
private SysUserService sysUserService; private SysUserService sysUserService;
private GoodsCategoryRuleService goodsCategoryRuleService; private GoodsCategoryRuleService goodsCategoryRuleService;
private GoodsSpuService goodsSpuService;
private GoodsCategoryService goodsCategoryService;
/** /**
* 确认订单 * 确认订单
@ -157,6 +163,12 @@ public class OmsOrderApi {
LambdaQueryWrapper<OmsOrderItem> lqw = new LambdaQueryWrapper<>(); LambdaQueryWrapper<OmsOrderItem> lqw = new LambdaQueryWrapper<>();
lqw.eq(OmsOrderItem::getOrderId,id); lqw.eq(OmsOrderItem::getOrderId,id);
List<OmsOrderItem> list = omsOrderItemService.list(lqw); List<OmsOrderItem> list = omsOrderItemService.list(lqw);
for (OmsOrderItem orderItem : list) {
GoodsSpu goodsSpu = goodsSpuService.getById(orderItem.getSpuId());
GoodsCategory goodsCategory = goodsCategoryService.getById(goodsSpu.getCategoryLast());
orderItem.setCategoryInfo(goodsCategory);
orderItem.setSpuInfo(goodsSpu);
}
omsOrder.setOrderItems(list); omsOrder.setOrderItems(list);
return R.ok(omsOrder); return R.ok(omsOrder);
} }
@ -186,16 +198,11 @@ public class OmsOrderApi {
* @param id * @param id
* @return * @return
*/ */
@PostMapping("/buildPriceOrder") @PostMapping("/buildPriceOrder/{id}")
@SysLog(module = SystemModule.BASE, title = "订单", biz = BizType.DELETE) @SysLog(module = SystemModule.BASE, title = "订单", biz = BizType.DELETE)
public R<?> buildPriceOrder(@PathVariable("id") String id){ public R<?> buildPriceOrder(@PathVariable("id") String id){
OmsOrder omsOrder = omsOrderService.getById(id); omsOrderService.buildPriceOrder(id);
String userId = AuthContextUtils.getSysUserId(); return R.ok();
if(omsOrder==null || !omsOrder.getUserId().equals(userId)){
return R.error("订单不存在或被移除");
}
return R.error();
} }

7
src/main/java/com/qs/serve/modules/oms/entity/OmsOrderItem.java

@ -118,5 +118,12 @@ public class OmsOrderItem implements Serializable {
@TableField(exist = false) @TableField(exist = false)
private List<?> assessInfoList; private List<?> assessInfoList;
/** Spu */
@TableField(exist = false)
private Object spuInfo;
/** 分类 */
@TableField(exist = false)
private Object categoryInfo;
} }

184
src/main/java/com/qs/serve/modules/oms/entity/OmsXltOrder.java

@ -0,0 +1,184 @@
package com.qs.serve.modules.oms.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-10-09
*/
@Data
@TableName("oms_xlt_order")
public class OmsXltOrder implements Serializable {
private static final long serialVersionUID = 1L;
/** id */
@TableId(type = IdType.ASSIGN_UUID)
private String id;
/** 订单号 */
@NotBlank(message = "订单号不能为空")
@Length(max = 100,message = "订单号长度不能超过100字")
@TableField("dingDanHao")
private String dingDanHao;
/** 申请日期 */
@Length(max = 0,message = "申请日期长度不能超过0字")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
@TableField("shenQingRiQi")
private LocalDateTime shenQingRiQi;
/** 客户编号 */
@NotBlank(message = "客户编号不能为空")
@Length(max = 100,message = "客户编号长度不能超过100字")
@TableField("keHuBianHao")
private String keHuBianHao;
/** 收货地址 */
@Length(max = 100,message = "收货地址长度不能超过100字")
@TableField("shouHuoDiZhi")
private String shouHuoDiZhi;
/** 人员编号 */
@Length(max = 100,message = "人员编号长度不能超过100字")
@TableField("renYuanBianHao")
private String renYuanBianHao;
/** 注意事项 */
@TableField("zhuYiShiXian")
private String zhuYiShiXian;
/** 写入时间 */
@NotNull(message = "写入时间不能为空")
@Length(max = 0,message = "写入时间长度不能超过0字")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
@TableField("xieRuShiJian")
private LocalDateTime xieRuShiJian;
/** 处理时间 */
@Length(max = 0,message = "处理时间长度不能超过0字")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
@TableField("chuLiShiJian")
private LocalDateTime chuLiShiJian;
/** 状态 */
@TableField("zhuangTai")
private Integer zhuangTai;
/** 行创建日期 */
@Length(max = 0,message = "行创建日期长度不能超过0字")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
@TableField("rowCreateDate")
private LocalDateTime rowCreateDate;
/** 人员姓名 */
@Length(max = 100,message = "人员姓名长度不能超过100字")
@TableField("renYuanXingMing")
private String renYuanXingMing;
/** 人员电话 */
@Length(max = 100,message = "人员电话长度不能超过100字")
@TableField("renYuanDianHua")
private String renYuanDianHua;
/** 限制纬度 */
@Length(max = 100,message = "限制纬度长度不能超过100字")
@TableField("xianZhiWeiDu")
private String xianZhiWeiDu;
/** 限制纬度名称 */
@Length(max = 100,message = "限制纬度名称长度不能超过100字")
@TableField("xianZhiWeiDuMingChen")
private String xianZhiWeiDuMingChen;
/** 状态:0未使用;1报价单;2销售订单 */
private Integer status;
/**
* 人员名称
*/
@TableField("empName")
private String empName;
/**
* 客户编码
*/
@TableField("cusCode")
private String cusCode;
/**
* 客户名称
*/
@TableField("cusName")
private String cusName;
/**
* 城市
*/
@TableField("dealerCity")
private String dealerCity;
/**
* 省份
*/
@TableField("dealerProvince")
private String dealerProvince;
/**
* 区域
*/
@TableField("dealerArea")
private String dealerArea;
/** 创建时间 */
@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;
/** 创建人 */
@TableField(fill = FieldFill.INSERT)
private String createBy;
/** 更新时间 */
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
@TableField(fill = FieldFill.UPDATE)
private LocalDateTime updateTime;
/** 更新人 */
@TableField(fill = FieldFill.UPDATE)
private String updateBy;
/** 租户id */
@JsonIgnore
@JsonProperty
private String tenantId;
/** 删除标识 */
@JsonIgnore
@JsonProperty
private Boolean delFlag;
}

124
src/main/java/com/qs/serve/modules/oms/entity/OmsXltOrderItem.java

@ -0,0 +1,124 @@
package com.qs.serve.modules.oms.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-10-09
*/
@Data
@TableName("oms_xlt_order_item")
public class OmsXltOrderItem implements Serializable {
private static final long serialVersionUID = 1L;
/** id */
@TableId(type = IdType.ASSIGN_ID)
private String id;
/** 订单id */
@NotBlank(message = "订单id不能为空")
@Length(max = 100,message = "订单id长度不能超过100字")
@TableField("dingDanID")
private String dingDanID;
/** 产品编号 */
@Length(max = 100,message = "产品编号长度不能超过100字")
@TableField("chanPinBianHao")
private String chanPinBianHao;
/** 产品单位 */
@Length(max = 100,message = "产品单位长度不能超过100字")
@TableField("chanPinDanWei")
private String chanPinDanWei;
/** 订货数量 */
@TableField("dingHuoShuLiang")
private Integer dingHuoShuLiang;
/** 搭赠数量 */
@TableField("daZengShuLiang")
private BigDecimal daZengShuLiang;
/** 产品原件 */
@TableField("chanPinYuanJia")
private BigDecimal chanPinYuanJia;
/** 产品现价 */
@TableField("chanPinXianJia")
private BigDecimal chanPinXianJia;
/** 写入时间 */
@NotNull(message = "写入时间不能为空")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
@TableField("xieRuShiJian")
private LocalDateTime xieRuShiJian;
/** 处理时间 */
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
@TableField("chuLiShiJian")
private LocalDateTime chuLiShiJian;
/** 状态 */
@TableField("zhuangTai")
private Integer zhuangTai;
/** 行创建时间 */
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
@TableField("rowCreateDate")
private LocalDateTime rowCreateDate;
/** 备注 */
@TableField("beiZhu")
private String beiZhu;
/** 创建时间 */
@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;
/** 创建人 */
@TableField(fill = FieldFill.INSERT)
private String createBy;
/** 更新时间 */
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
@TableField(fill = FieldFill.UPDATE)
private LocalDateTime updateTime;
/** 更新人 */
@TableField(fill = FieldFill.UPDATE)
private String updateBy;
/** 租户id */
@JsonIgnore
@JsonProperty
private String tenantId;
/** 删除标识 */
@JsonIgnore
@JsonProperty
private Boolean delFlag;
}

14
src/main/java/com/qs/serve/modules/oms/mapper/OmsXltOrderItemMapper.java

@ -0,0 +1,14 @@
package com.qs.serve.modules.oms.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qs.serve.modules.oms.entity.OmsXltOrderItem;
/**
* 销路通订单明细 Mapper
* @author YenHex
* @date 2023-10-09
*/
public interface OmsXltOrderItemMapper extends BaseMapper<OmsXltOrderItem> {
}

14
src/main/java/com/qs/serve/modules/oms/mapper/OmsXltOrderMapper.java

@ -0,0 +1,14 @@
package com.qs.serve.modules.oms.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qs.serve.modules.oms.entity.OmsXltOrder;
/**
* 销路通订单 Mapper
* @author YenHex
* @date 2023-10-09
*/
public interface OmsXltOrderMapper extends BaseMapper<OmsXltOrder> {
}

163
src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java

@ -3,17 +3,20 @@ package com.qs.serve.modules.oms.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.qs.serve.common.util.*; import com.qs.serve.common.util.*;
import com.qs.serve.modules.bms.entity.BmsRegion;
import com.qs.serve.modules.bms.entity.BmsSupplier; import com.qs.serve.modules.bms.entity.BmsSupplier;
import com.qs.serve.modules.bms.entity.BmsSupplierAddress; import com.qs.serve.modules.bms.entity.BmsSupplierAddress;
import com.qs.serve.modules.bms.mapper.BmsRegionMapper;
import com.qs.serve.modules.bms.mapper.BmsSupplierMapper; import com.qs.serve.modules.bms.mapper.BmsSupplierMapper;
import com.qs.serve.modules.bms.service.BmsSupplierAddressService; import com.qs.serve.modules.bms.service.BmsSupplierAddressService;
import com.qs.serve.modules.goods.entity.GoodsCategoryRule;
import com.qs.serve.modules.goods.entity.GoodsSku; import com.qs.serve.modules.goods.entity.GoodsSku;
import com.qs.serve.modules.goods.entity.GoodsSpu; import com.qs.serve.modules.goods.entity.GoodsSpu;
import com.qs.serve.modules.goods.entity.vo.GoodSkuVo; import com.qs.serve.modules.goods.entity.vo.GoodSkuVo;
import com.qs.serve.modules.goods.mapper.GoodsCategoryRuleMapper;
import com.qs.serve.modules.goods.service.GoodsSkuService; import com.qs.serve.modules.goods.service.GoodsSkuService;
import com.qs.serve.modules.goods.service.GoodsSpuService; import com.qs.serve.modules.goods.service.GoodsSpuService;
import com.qs.serve.modules.oms.entity.OmsOrderItem; import com.qs.serve.modules.oms.entity.*;
import com.qs.serve.modules.oms.entity.OmsShoppingCart;
import com.qs.serve.modules.oms.entity.bo.*; import com.qs.serve.modules.oms.entity.bo.*;
import com.qs.serve.modules.oms.entity.dto.ErpOfferOrderParam; import com.qs.serve.modules.oms.entity.dto.ErpOfferOrderParam;
import com.qs.serve.modules.oms.entity.dto.OmsCalcAmount; import com.qs.serve.modules.oms.entity.dto.OmsCalcAmount;
@ -21,6 +24,8 @@ import com.qs.serve.modules.oms.entity.dto.OmsSpuToSkuKey;
import com.qs.serve.modules.oms.entity.dto.ShoppingCartsCheckResult; import com.qs.serve.modules.oms.entity.dto.ShoppingCartsCheckResult;
import com.qs.serve.modules.oms.entity.vo.OmsConfirmOrderResult; import com.qs.serve.modules.oms.entity.vo.OmsConfirmOrderResult;
import com.qs.serve.modules.oms.entity.vo.OmsSpuAssesInfo; import com.qs.serve.modules.oms.entity.vo.OmsSpuAssesInfo;
import com.qs.serve.modules.oms.mapper.OmsXltOrderItemMapper;
import com.qs.serve.modules.oms.mapper.OmsXltOrderMapper;
import com.qs.serve.modules.oms.service.OmsOrderItemService; import com.qs.serve.modules.oms.service.OmsOrderItemService;
import com.qs.serve.modules.oms.service.OmsShoppingCartService; import com.qs.serve.modules.oms.service.OmsShoppingCartService;
import com.qs.serve.modules.sale.entity.SalePlan; import com.qs.serve.modules.sale.entity.SalePlan;
@ -35,12 +40,12 @@ import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.qs.serve.modules.oms.entity.OmsOrder;
import com.qs.serve.modules.oms.service.OmsOrderService; import com.qs.serve.modules.oms.service.OmsOrderService;
import com.qs.serve.modules.oms.mapper.OmsOrderMapper; import com.qs.serve.modules.oms.mapper.OmsOrderMapper;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -54,17 +59,24 @@ import java.util.stream.Collectors;
@AllArgsConstructor @AllArgsConstructor
public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> implements OmsOrderService { public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> implements OmsOrderService {
private OmsShoppingCartService omsShoppingCartService;
private GoodsSkuService goodsSkuService; private GoodsSkuService goodsSkuService;
private GoodsSpuService goodsSpuService; private GoodsSpuService goodsSpuService;
private GoodsCategoryRuleMapper goodsCategoryRuleMapper;
private BmsSupplierMapper bmsSupplierMapper; private BmsSupplierMapper bmsSupplierMapper;
private BmsRegionMapper bmsRegionMapper;
private BmsSupplierAddressService bmsSupplierAddressService; private BmsSupplierAddressService bmsSupplierAddressService;
private SysUserService sysUserService; private SysUserService sysUserService;
private SysDeptService sysDeptService; private SysDeptService sysDeptService;
private OmsOrderItemService omsOrderItemService;
private SalePlanMapper salePlanMapper; private SalePlanMapper salePlanMapper;
private SalePlanGoodsMapper salePlanGoodsMapper; private SalePlanGoodsMapper salePlanGoodsMapper;
private OmsOrderItemService omsOrderItemService;
private OmsXltOrderMapper omsXltOrderMapper;
private OmsXltOrderItemMapper omsXltOrderItemMapper;
private OmsShoppingCartService omsShoppingCartService;
@Override @Override
public OmsConfirmOrderResult confirmOrder(OmsOrderBo confirmOrder) { public OmsConfirmOrderResult confirmOrder(OmsOrderBo confirmOrder) {
@ -170,8 +182,8 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void modifyOrder(OmsOrderModifyParam param) { public void modifyOrder(OmsOrderModifyParam param) {
OmsOrder order = super.getById(param.getUserId()); OmsOrder order = super.getById(param.getId());
if(order.getStatus().equals(0)){ if(!order.getStatus().equals(0)){
Assert.throwEx("非草稿状态订单无法修改"); Assert.throwEx("非草稿状态订单无法修改");
} }
order.setId(param.getId()); order.setId(param.getId());
@ -214,16 +226,20 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
orderItem.setSpuId(goodsSpu.getId()); orderItem.setSpuId(goodsSpu.getId());
orderItem.setSpuCode(goodsSpu.getSpuCode()); orderItem.setSpuCode(goodsSpu.getSpuCode());
orderItem.setSpuTitle(goodsSpu.getName()); orderItem.setSpuTitle(goodsSpu.getName());
if(goodsSku==null){ if(goodsSku!=null){
orderItem.setSkuId(goodsSku.getId()); orderItem.setSkuId(goodsSku.getId());
orderItem.setSkuCode(goodsSku.getSkuCode()); orderItem.setSkuCode(goodsSku.getSkuCode());
orderItem.setSpecValues(goodsSku.getSpecInfos()); orderItem.setSpecValues(goodsSku.getSpecInfos());
orderItem.setSkuUnit(null); orderItem.setSkuUnit(goodsSku.getUnitName());
orderItem.setSkuImg(null); orderItem.setSkuImg(goodsSku.getPicUrl());
orderItem.setSalesPrice(goodsSku.getSalesPrice()); orderItem.setSalesPrice(goodsSku.getSalesPrice());
orderItem.setCusPrice(goodsSku.getSalesPrice()); orderItem.setCusPrice(goodsSku.getSalesPrice());
orderItem.setMarketPrice(goodsSku.getMarketPrice()); orderItem.setMarketPrice(goodsSku.getMarketPrice());
}else { }else {
orderItem.setSkuId(0L);
orderItem.setSkuCode("");
orderItem.setSkuUnit("");
orderItem.setSkuImg(null);
orderItem.setSpecValues(goodsSpu.getName()); orderItem.setSpecValues(goodsSpu.getName());
orderItem.setSalesPrice(BigDecimal.ZERO); orderItem.setSalesPrice(BigDecimal.ZERO);
orderItem.setCusPrice(BigDecimal.ZERO); orderItem.setCusPrice(BigDecimal.ZERO);
@ -374,22 +390,20 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
public void buildPriceOrder(String id) { public void buildPriceOrder(String id) {
OmsOrder omsOrder = super.getById(id); OmsOrder omsOrder = super.getById(id);
String userId = AuthContextUtils.getSysUserId(); String userId = AuthContextUtils.getSysUserId();
SysUser sysUser = sysUserService.getById(userId); // if(omsOrder==null || !omsOrder.getUserId().equals(userId)){
SysDept dept = sysDeptService.getById(sysUser.getDeptId()); // Assert.throwEx("订单不存在或被移除");
if(omsOrder==null || !omsOrder.getUserId().equals(userId)){ // }
Assert.throwEx("订单不存在或被移除");
}
LambdaQueryWrapper<OmsOrderItem> iteLqw = new LambdaQueryWrapper<>(); LambdaQueryWrapper<OmsOrderItem> iteLqw = new LambdaQueryWrapper<>();
iteLqw.eq(OmsOrderItem::getOrderId,id); iteLqw.eq(OmsOrderItem::getOrderId,id);
List<OmsOrderItem> list = omsOrderItemService.list(iteLqw); List<OmsOrderItem> orderItemList = omsOrderItemService.list(iteLqw);
List<Long> spuIds = list.stream().map(OmsOrderItem::getSpuId).collect(Collectors.toList()); List<Long> spuIds = orderItemList.stream().map(OmsOrderItem::getSpuId).collect(Collectors.toList());
//TODO 通过当前函数获取当前账套对于的skuID //通过当前函数获取当前账套对于的skuID,默认全部转化为开平的sku
List<OmsSpuToSkuKey> spuToSkuKeys = this.getSpuToSkuInfo("",spuIds); List<OmsSpuToSkuKey> spuToSkuKeys = this.getSpuToSkuInfo("001",spuIds);
for (OmsOrderItem orderItem : list) { for (OmsOrderItem orderItem : orderItemList) {
if( orderItem.getSkuId()!=null && !orderItem.getSkuId().equals(0L) ){ if( orderItem.getSkuId()!=null && !orderItem.getSkuId().equals(0L) ){
continue; continue;
} }
@ -413,8 +427,80 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
} }
} }
//更新设置sku后的信息 //更新设置sku后的信息
omsOrderItemService.updateBatchById(list); omsOrderItemService.updateBatchById(orderItemList);
//直接调用U8接口生成
//SysUser sysUser = sysUserService.getById(userId);
//SysDept dept = sysDeptService.getById(sysUser.getDeptId());
//this.toU8Api(omsOrder, sysUser, dept, orderItemList);
//加载关联数据
BmsSupplierAddress supplierAddress = bmsSupplierAddressService.getById(omsOrder.getSupplierAddrId());
GoodsCategoryRule categoryRule = goodsCategoryRuleMapper.selectById(omsOrder.getBrandRuleId());
String brands = Arrays.stream(categoryRule.getBrandNames()).collect(Collectors.joining(","));
BmsSupplier supplier = bmsSupplierMapper.selectById(omsOrder.getSupplierId());
String lastRegionId = supplier.getRegionLast();
BmsRegion bmsRegion = bmsRegionMapper.selectById(lastRegionId);
//保存到临时表-主表
LocalDateTime nowTime = LocalDateTime.now();
OmsXltOrder xltOrder = new OmsXltOrder();
xltOrder.setId(IdUtil.getSnowFlakeId()+"");
xltOrder.setDingDanHao(omsOrder.getOrderSn());
xltOrder.setShenQingRiQi(nowTime);
xltOrder.setKeHuBianHao(omsOrder.getSupplierCode());
xltOrder.setShouHuoDiZhi(supplierAddress.getDetail());
xltOrder.setRenYuanBianHao(omsOrder.getUserCode());
xltOrder.setZhuYiShiXian(omsOrder.getRemark());
xltOrder.setXieRuShiJian(nowTime);
xltOrder.setChuLiShiJian(null);
xltOrder.setRowCreateDate(nowTime);
xltOrder.setRenYuanXingMing(omsOrder.getUserName());
xltOrder.setRenYuanDianHua(omsOrder.getUserPhone());
xltOrder.setXianZhiWeiDu("品牌");
xltOrder.setXianZhiWeiDuMingChen(brands);
xltOrder.setZhuangTai(0);
//状态:0未使用;1报价单;2销售订单
xltOrder.setStatus(0);
xltOrder.setEmpName(omsOrder.getUserName());
xltOrder.setCusCode(omsOrder.getSupplierCode());
xltOrder.setCusName(omsOrder.getSupplierName());
String[] regions = bmsRegion.getPathNames().split("_");
if(regions.length>1){
xltOrder.setDealerProvince(regions[1]);
}
if(regions.length>0){
xltOrder.setDealerCity(regions[0]);
}
xltOrder.setDealerArea(bmsRegion.getPathNames());
omsXltOrderMapper.insert(xltOrder);
//保存到临时表-明细表
for (OmsOrderItem orderItem : orderItemList) {
OmsXltOrderItem xltOrderItem = new OmsXltOrderItem();
xltOrderItem.setDingDanID(xltOrder.getId());
xltOrderItem.setChanPinBianHao(orderItem.getSkuCode());
xltOrderItem.setChanPinDanWei(orderItem.getSkuUnit());
xltOrderItem.setDingHuoShuLiang(orderItem.getQuantity());
xltOrderItem.setDaZengShuLiang(BigDecimal.ZERO);
xltOrderItem.setChanPinYuanJia(orderItem.getMarketPrice());
xltOrderItem.setChanPinXianJia(orderItem.getSalesPrice());
xltOrderItem.setXieRuShiJian(nowTime);
xltOrderItem.setChuLiShiJian(null);
xltOrderItem.setRowCreateDate(nowTime);
xltOrderItem.setBeiZhu(null);
xltOrderItem.setZhuangTai(0);
omsXltOrderItemMapper.insert(xltOrderItem);
}
//更新订单
omsOrder.setStatus(1);
this.updateById(omsOrder);
}
private void toU8Api(OmsOrder omsOrder, SysUser sysUser, SysDept dept, List<OmsOrderItem> list) {
List<ErpOfferOrderParam.InventoryItem> inventoryItemList = new ArrayList<>(); List<ErpOfferOrderParam.InventoryItem> inventoryItemList = new ArrayList<>();
for (OmsOrderItem orderItem : list) { for (OmsOrderItem orderItem : list) {
ErpOfferOrderParam.InventoryItem inventoryItem = new ErpOfferOrderParam.InventoryItem(); ErpOfferOrderParam.InventoryItem inventoryItem = new ErpOfferOrderParam.InventoryItem();
@ -447,19 +533,40 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
offerOrder.setInventoryItemList(inventoryItemList); offerOrder.setInventoryItemList(inventoryItemList);
offerOrder.setCusName(omsOrder.getSupplierName()); offerOrder.setCusName(omsOrder.getSupplierName());
offerOrder.setMakerName(sysUser.getName()); offerOrder.setMakerName(sysUser.getName());
} }
/** /**
* TODO: 根据账套获取spuId对应的skuId * TODO: 根据账套获取spuId对应的skuId
* @param book * @param book 账套
* @param spuIds * @param spuIds 嘉士利的SKU-CODE
* @return * @return 嘉士利的invCode
*/ */
public List<OmsSpuToSkuKey> getSpuToSkuInfo(String book, List<Long> spuIds){ public List<OmsSpuToSkuKey> getSpuToSkuInfo(String book, List<Long> spuIds){
return null; //TODO 测试数据
List<OmsSpuToSkuKey> rs = new ArrayList<>();
Long[] skuIds = {2315912284L,
2315912286L,
2315912287L,
2315912288L,
2315912289L,
2315912290L,
2315912291L,
2315912292L,
2315912293L,
2315912294L,
2315912295L,
2315912296L,
2315912297L,
2315912298L,
2315912300L,};
for (int i = 0; i < spuIds.size(); i++) {
OmsSpuToSkuKey skuKey = new OmsSpuToSkuKey();
skuKey.setSpuId(spuIds.get(i));
skuKey.setSkuId(skuIds[i]);
rs.add(skuKey);
}
return rs;
} }
} }

59
src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetApplicationService.java

@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.qs.serve.common.model.consts.SysConfigKey; import com.qs.serve.common.model.consts.SysConfigKey;
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.JsonUtil;
import com.qs.serve.common.util.StringUtils; import com.qs.serve.common.util.StringUtils;
import com.qs.serve.modules.sys.service.SysConfigService; import com.qs.serve.modules.sys.service.SysConfigService;
import com.qs.serve.modules.tbs.common.TbsGoodsType; import com.qs.serve.modules.tbs.common.TbsGoodsType;
@ -21,6 +22,7 @@ import com.qs.serve.modules.tbs.mapper.TbsBudgetMapper;
import com.qs.serve.modules.tbs.mapper.TbsScheduleItemBudgetMapper; import com.qs.serve.modules.tbs.mapper.TbsScheduleItemBudgetMapper;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -200,6 +202,17 @@ public class TbsBudgetApplicationService {
List<TbsScheduleItemBudget> scheduleItemList = this.loadScheduleBudgetAndSetting(activityList, budgetIds, noBudgetActivityIds,costSortWrapper); List<TbsScheduleItemBudget> scheduleItemList = this.loadScheduleBudgetAndSetting(activityList, budgetIds, noBudgetActivityIds,costSortWrapper);
List<String> centerIds = activityCenterList.stream().map(TbsActivityCenter::getCenterId).collect(Collectors.toList()); List<String> centerIds = activityCenterList.stream().map(TbsActivityCenter::getCenterId).collect(Collectors.toList());
List<Long> subjectIds = activitySubjects.stream().map(TbsActivitySubject::getSubjectId).collect(Collectors.toList()); List<Long> subjectIds = activitySubjects.stream().map(TbsActivitySubject::getSubjectId).collect(Collectors.toList());
//通过模板限制,选中指定的预算
List<Long> limitBudgetIds = new ArrayList<>();
for (TbsActivity activity : activityList) {
if(StringUtils.hasText(activity.getTemplateBudgetIds())){
List<Long> budgetIdsList = Arrays.stream(activity.getTemplateBudgetIds().split(",")).map(Long::parseLong)
.collect(Collectors.toList());
limitBudgetIds.addAll(budgetIdsList);
}
}
// budgetIds交集
budgetIds = (List<Long>) CollectionUtils.intersection(budgetIds, limitBudgetIds);
// 加载所有条件 // 加载所有条件
List<TbsBudget> budgetList; List<TbsBudget> budgetList;
if(budgetIds.size()>0){ if(budgetIds.size()>0){
@ -232,6 +245,7 @@ public class TbsBudgetApplicationService {
List<TbsBudget> noConditionBudgetList = new ArrayList<>(); List<TbsBudget> noConditionBudgetList = new ArrayList<>();
boolean budgetNoCondition = this.loadConditionByBudgetsAndMatch(budgetList, noConditionBudgetList); boolean budgetNoCondition = this.loadConditionByBudgetsAndMatch(budgetList, noConditionBudgetList);
//预算条件需包含活动条件, Map结构:活动id->满足的预算id列表 //预算条件需包含活动条件, Map结构:活动id->满足的预算id列表
//非严谨过滤,后续调用 this.filterMatchGoodsCondition(...) 过滤
Map<Long,List<Long>> activityAllowBudgetIdMap = this.buildActivityBudgetMap(activityList, budgetList, noConditionBudgetList); Map<Long,List<Long>> activityAllowBudgetIdMap = this.buildActivityBudgetMap(activityList, budgetList, noConditionBudgetList);
costSortWrapper.setActivityAllowBudgetId(activityAllowBudgetIdMap); costSortWrapper.setActivityAllowBudgetId(activityAllowBudgetIdMap);
//活动拦截 //活动拦截
@ -347,21 +361,16 @@ public class TbsBudgetApplicationService {
for (TbsBudget budget : budgetList) { for (TbsBudget budget : budgetList) {
if(budget.getConditionFlag().equals(1)){ if(budget.getConditionFlag().equals(1)){
List<TbsBudgetCondition> budgetConditionList = budget.getBudgetConditionList(); List<TbsBudgetCondition> budgetConditionList = budget.getBudgetConditionList();
boolean hasNoMatch = false;
for (TbsActivityGoods activityGoods : activityGoodsList) {
boolean matchGoods = false; boolean matchGoods = false;
for (TbsActivityGoods activityGoods : activityGoodsList) {
for (TbsBudgetCondition budgetCondition : budgetConditionList) { for (TbsBudgetCondition budgetCondition : budgetConditionList) {
if(activityGoods.getTargetLevelPathIds().contains(budgetCondition.getTargetLevelPathIds())){ if(activityGoods.getTargetLevelPathIds().contains(budgetCondition.getTargetLevelPathIds())){
matchGoods = true; matchGoods = true;
break; break;
} }
} }
if(!matchGoods){
hasNoMatch = true;
break;
}
} }
if(!hasNoMatch){ if(matchGoods){
List<Long> budgetIds = activityAllowBudgetIdMap.get(activity.getId()); List<Long> budgetIds = activityAllowBudgetIdMap.get(activity.getId());
if(budgetIds==null){ if(budgetIds==null){
budgetIds = new ArrayList<>(); budgetIds = new ArrayList<>();
@ -370,6 +379,36 @@ public class TbsBudgetApplicationService {
budgetIds.addAll(budgetIdsOfActivity); budgetIds.addAll(budgetIdsOfActivity);
activityAllowBudgetIdMap.put(activity.getId(),budgetIds); activityAllowBudgetIdMap.put(activity.getId(),budgetIds);
} }
else {
log.warn("无法匹配条件预算[{}],\n条件:{},\n活动商品数据:{}",
budget.getBudgetCode(),
JsonUtil.objectToJson(budgetConditionList),
JsonUtil.objectToJson(activityGoodsList));
}
// for (TbsActivityGoods activityGoods : activityGoodsList) {
// boolean matchGoods = false;
// for (TbsBudgetCondition budgetCondition : budgetConditionList) {
// if(activityGoods.getTargetLevelPathIds().contains(budgetCondition.getTargetLevelPathIds())){
// matchGoods = true;
// break;
// }
// }
// if(!matchGoods){
// hasNoMatch = true;
// break;
// }
// }
// if(!hasNoMatch){
// List<Long> budgetIds = activityAllowBudgetIdMap.get(activity.getId());
// if(budgetIds==null){
// budgetIds = new ArrayList<>();
// }
// budgetIds.add(budget.getId());
// budgetIds.addAll(budgetIdsOfActivity);
// activityAllowBudgetIdMap.put(activity.getId(),budgetIds);
// }
}else { }else {
List<Long> budgetIds = activityAllowBudgetIdMap.get(activity.getId()); List<Long> budgetIds = activityAllowBudgetIdMap.get(activity.getId());
if(budgetIds==null){ if(budgetIds==null){
@ -510,6 +549,8 @@ public class TbsBudgetApplicationService {
//过滤满全条件的预算 //过滤满全条件的预算
List<Long> allowBudgetIds = activityAllowBudgetIdMap.get(activityCostItem.getActivityId()); List<Long> allowBudgetIds = activityAllowBudgetIdMap.get(activityCostItem.getActivityId());
if(CollectionUtil.isEmpty(allowBudgetIds)){ if(CollectionUtil.isEmpty(allowBudgetIds)){
log.warn("[{}]{} 无预算,成本中心:{},科目:{}",activityCostItem.getTargetCode()
,activityCostItem.getTargetName(),activityCostItem.getCenterName(),activityCostItem.getSubjectName());
//添加到预算超支表 //添加到预算超支表
activityCostItem.setBudgetId(0L); activityCostItem.setBudgetId(0L);
activityCostItem.setScheduleId(0L); activityCostItem.setScheduleId(0L);
@ -603,6 +644,8 @@ public class TbsBudgetApplicationService {
if (throwEx){ if (throwEx){
Assert.throwEx("品类["+ activityCostItem.getTargetName()+"]预算不足"); Assert.throwEx("品类["+ activityCostItem.getTargetName()+"]预算不足");
} }
log.warn("[{}]{} 预算不足,成本中心:{},科目:{}",activityCostItem.getTargetCode()
,activityCostItem.getTargetName(),activityCostItem.getCenterName(),activityCostItem.getSubjectName());
if(overspend){ if(overspend){
TbsScheduleItemBudget itemBudget = currentScheduleItemBudgets.get(0); TbsScheduleItemBudget itemBudget = currentScheduleItemBudgets.get(0);
activityCostItem.setBudgetId(itemBudget.getBudgetId()); activityCostItem.setBudgetId(itemBudget.getBudgetId());
@ -632,6 +675,8 @@ public class TbsBudgetApplicationService {
if(throwEx){ if(throwEx){
Assert.throwEx("品类["+ activityCostItem.getTargetName()+"]无可用预算"); Assert.throwEx("品类["+ activityCostItem.getTargetName()+"]无可用预算");
} }
log.warn("[{}]{} 未命中考核期,成本中心:{},科目:{}",activityCostItem.getTargetCode()
,activityCostItem.getTargetName(),activityCostItem.getCenterName(),activityCostItem.getSubjectName());
//添加到预算超支表 //添加到预算超支表
activityCostItem.setBudgetId(0L); activityCostItem.setBudgetId(0L);
activityCostItem.setScheduleId(0L); activityCostItem.setScheduleId(0L);

2
src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetMatchApplication.java

@ -2,6 +2,7 @@ package com.qs.serve.modules.tbs.service;
import com.qs.serve.common.model.AmountDTO; import com.qs.serve.common.model.AmountDTO;
import com.qs.serve.common.util.CollectionUtil; import com.qs.serve.common.util.CollectionUtil;
import com.qs.serve.common.util.StringUtils;
import com.qs.serve.modules.tbs.common.TbsGoodsType; import com.qs.serve.modules.tbs.common.TbsGoodsType;
import com.qs.serve.modules.tbs.common.util.CostSort2WrapperUtil; import com.qs.serve.modules.tbs.common.util.CostSort2WrapperUtil;
import com.qs.serve.modules.tbs.entity.TbsActivity; import com.qs.serve.modules.tbs.entity.TbsActivity;
@ -36,6 +37,7 @@ public class TbsBudgetMatchApplication {
public TbsBudgetTableResultVo getMatchResult(Long costApplyId,boolean buildTable){ public TbsBudgetTableResultVo getMatchResult(Long costApplyId,boolean buildTable){
List<TbsActivity> activityList = activityService.listByCostApplyId(costApplyId); List<TbsActivity> activityList = activityService.listByCostApplyId(costApplyId);
Map<Long,TbsActivity> activityMap = new HashMap<>(activityList.size()); Map<Long,TbsActivity> activityMap = new HashMap<>(activityList.size());
for (TbsActivity activity : activityList) { for (TbsActivity activity : activityList) {
activityMap.put(activity.getId(),activity); activityMap.put(activity.getId(),activity);

1
src/main/java/com/qs/serve/modules/third/service/PortalOfCostApplication.java

@ -907,6 +907,7 @@ public class PortalOfCostApplication {
payPayment.setSupplierCode(supplier.getCode()); payPayment.setSupplierCode(supplier.getCode());
payPayment.setSupplierName(supplier.getName()); payPayment.setSupplierName(supplier.getName());
payPayment.setPayAmount(totalAmount); payPayment.setPayAmount(totalAmount);
payPayment.setCostApplyId(costApply.getId());
payPayment.setUserId(user.getId()); payPayment.setUserId(user.getId());
payPayment.setUserCode(user.getCode()); payPayment.setUserCode(user.getCode());
payPayment.setUserName(user.getName()); payPayment.setUserName(user.getName());

120
src/main/resources/mapper/baz/BazVisitInstanceMapper.xml

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.qs.serve.modules.baz.mapper.BazVisitInstanceMapper">
<resultMap id="bazVisitInstanceMap" type="com.qs.serve.modules.baz.entity.BazVisitInstance" >
<result property="id" column="id"/>
<result property="title" column="title"/>
<result property="visitId" column="visit_id"/>
<result property="targetType" column="target_type"/>
<result property="visitState" column="visit_state"/>
<result property="visitorId" column="visitor_id"/>
<result property="visitorCode" column="visitor_code"/>
<result property="visitorName" column="visitor_name"/>
<result property="targetId" column="target_id"/>
<result property="targetCode" column="target_code"/>
<result property="targetName" column="target_name"/>
<result property="targetLocalX" column="target_local_x"/>
<result property="targetLocalY" column="target_local_y"/>
<result property="targetAddress" column="target_address"/>
<result property="targetMapAddress" column="target_map_address"/>
<result property="finishedTime" column="finished_time"/>
<result property="missLocalFlag" column="miss_local_flag"/>
<result property="remark" column="remark"/>
<result property="positionStatusContent" column="position_status_content"/>
<result property="positionStatus" column="position_status"/>
<result property="createTime" column="create_time"/>
<result property="updateTime" column="update_time"/>
<result property="tenantId" column="tenant_id"/>
<result property="delFlag" column="del_flag"/>
<result property="createBy" column="create_by"/>
<result property="updateBy" column="update_by"/>
</resultMap>
<sql id="bazVisitInstanceSql">
baz_visit_instance.`id`,
baz_visit_instance.`title`,
baz_visit_instance.`visit_id`,
baz_visit_instance.`target_type`,
baz_visit_instance.`visit_state`,
baz_visit_instance.`visitor_id`,
baz_visit_instance.`visitor_code`,
baz_visit_instance.`visitor_name`,
baz_visit_instance.`target_id`,
baz_visit_instance.`target_code`,
baz_visit_instance.`target_name`,
baz_visit_instance.`target_local_x`,
baz_visit_instance.`target_local_y`,
baz_visit_instance.`target_address`,
baz_visit_instance.`target_map_address`,
baz_visit_instance.`finished_time`,
baz_visit_instance.`miss_local_flag`,
baz_visit_instance.`remark`,
baz_visit_instance.`position_status_content`,
baz_visit_instance.`position_status`,
baz_visit_instance.`create_time`,
baz_visit_instance.`update_time`,
baz_visit_instance.`tenant_id`,
baz_visit_instance.`del_flag`,
baz_visit_instance.`create_by`,
baz_visit_instance.`update_by` </sql>
<select id="selectBazVisitInstanceList" parameterType="com.qs.serve.modules.baz.entity.BazVisitInstance" resultMap="bazVisitInstanceMap">
SELECT
ins_flow.remark as summary,
ins_flow2.create_time as sign_time,
ins_flow3.create_time as out_time,
<include refid="bazVisitInstanceSql"/>
FROM `baz_visit_instance` `baz_visit_instance`
left join (
select baz_visit_instance_flow.remark,baz_visit_instance_flow.visit_instance_id from baz_visit_instance_flow where flow_biz_type = '3'
) ins_flow on ins_flow.visit_instance_id = baz_visit_instance.id
left join (
select baz_visit_instance_flow.create_time,baz_visit_instance_flow.visit_instance_id from baz_visit_instance_flow where flow_biz_type = '1'
) ins_flow2 on ins_flow2.visit_instance_id = baz_visit_instance.id
left join (
select baz_visit_instance_flow.create_time,baz_visit_instance_flow.visit_instance_id from baz_visit_instance_flow where flow_biz_type = '2'
) ins_flow3 on ins_flow3.visit_instance_id = baz_visit_instance.id
<where>
<if test="query.id != null"> and `baz_visit_instance`.`id` = #{query.id}</if>
<if test="query.title != null and query.title != ''"> and `baz_visit_instance`.`title` = #{query.title}</if>
<if test="query.visitId != null"> and `baz_visit_instance`.`visit_id` = #{query.visitId}</if>
<if test="query.targetType != null and query.targetType != ''"> and `baz_visit_instance`.`target_type` = #{query.targetType}</if>
<if test="query.visitState != null"> and `baz_visit_instance`.`visit_state` = #{query.visitState}</if>
<if test="query.visitorId != null and query.visitorId != ''"> and `baz_visit_instance`.`visitor_id` = #{query.visitorId}</if>
<if test="query.visitorCode != null and query.visitorCode != ''"> and `baz_visit_instance`.`visitor_code` = #{query.visitorCode}</if>
<if test="query.visitorName != null and query.visitorName != ''"> and `baz_visit_instance`.`visitor_name` = #{query.visitorName}</if>
<if test="query.targetId != null and query.targetId != ''"> and `baz_visit_instance`.`target_id` = #{query.targetId}</if>
<if test="query.targetCode != null and query.targetCode != ''"> and `baz_visit_instance`.`target_code` = #{query.targetCode}</if>
<if test="query.targetName != null and query.targetName != ''"> and `baz_visit_instance`.`target_name` = #{query.targetName}</if>
<if test="query.targetLocalX != null and query.targetLocalX != ''"> and `baz_visit_instance`.`target_local_x` = #{query.targetLocalX}</if>
<if test="query.targetLocalY != null and query.targetLocalY != ''"> and `baz_visit_instance`.`target_local_y` = #{query.targetLocalY}</if>
<if test="query.targetAddress != null and query.targetAddress != ''"> and `baz_visit_instance`.`target_address` = #{query.targetAddress}</if>
<if test="query.targetMapAddress != null and query.targetMapAddress != ''"> and `baz_visit_instance`.`target_map_address` = #{query.targetMapAddress}</if>
<if test="query.finishedTime != null"> and `baz_visit_instance`.`finished_time` = #{query.finishedTime}</if>
<if test="query.missLocalFlag != null"> and `baz_visit_instance`.`miss_local_flag` = #{query.missLocalFlag}</if>
<if test="query.remark != null and query.remark != ''"> and `baz_visit_instance`.`remark` = #{query.remark}</if>
<if test="query.positionStatus != null and query.positionStatus != ''"> and `baz_visit_instance`.`position_status` = #{query.positionStatus}</if>
<if test="query.createTime != null"> and `baz_visit_instance`.`create_time` = #{query.createTime}</if>
<if test="query.updateTime != null"> and `baz_visit_instance`.`update_time` = #{query.updateTime}</if>
<if test="query.tenantId != null and query.tenantId != ''"> and `baz_visit_instance`.`tenant_id` = #{query.tenantId}</if>
<if test="query.delFlag != null and query.delFlag != ''"> and `baz_visit_instance`.`del_flag` = #{query.delFlag}</if>
<if test="query.createBy != null and query.createBy != ''"> and `baz_visit_instance`.`create_by` = #{query.createBy}</if>
<if test="query.updateBy != null and query.updateBy != ''"> and `baz_visit_instance`.`update_by` = #{query.updateBy}</if>
<if test="query.queryUserIds!=null and query.queryUserIds.size > 0">
and `baz_visit_instance`.`visitor_id` in
<foreach collection="query.queryUserIds" item ="selectId" index="i" open="(" close=")" separator=",">
#{selectId}
</foreach>
</if>
<if test="query.ignoreUserId != null and query.ignoreUserId != ''"> and `baz_visit_instance`.`visitor_id` != #{query.ignoreUserId}</if>
<if test="query.queryStartDate != null"> and `baz_visit_instance`.`create_time` &gt;= #{query.queryStartDate}</if>
<if test="query.queryEndDate != null"> and `baz_visit_instance`.`create_time` &lt;= #{query.queryEndDate}</if>
</where>
order by `baz_visit_instance`.`create_time` desc
</select>
</mapper>
Loading…
Cancel
Save