Browse Source

feat: 添加报表辅助表,调整赠品单逻辑

muti_db
Yen 4 months ago
parent
commit
77cbc1f862
  1. 25
      src/main/java/com/qs/serve/modules/baz/service/impl/BazVisitInstanceServiceImpl.java
  2. 13
      src/main/java/com/qs/serve/modules/bms/controller/BmsRegion2Controller.java
  3. 1
      src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierController.java
  4. 5
      src/main/java/com/qs/serve/modules/bms/entity/BmsChannelPoint.java
  5. 44
      src/main/java/com/qs/serve/modules/bms/entity/BmsChannelPointExt.java
  6. 4
      src/main/java/com/qs/serve/modules/bms/entity/BmsSupplier.java
  7. 3
      src/main/java/com/qs/serve/modules/bms/entity/bo/BmsChannelPointBo.java
  8. 3
      src/main/java/com/qs/serve/modules/bms/entity/bo/BmsSupplierBo.java
  9. 4
      src/main/java/com/qs/serve/modules/bms/entity/bo/BmsSupplierExcelBo.java
  10. 2
      src/main/java/com/qs/serve/modules/bms/entity/so/BmsPointVisitSo.java
  11. 15
      src/main/java/com/qs/serve/modules/bms/mapper/BmsChannelPointExtMapper.java
  12. 13
      src/main/java/com/qs/serve/modules/goods/controller/GoodsSpuController.java
  13. 2
      src/main/java/com/qs/serve/modules/oms/controller/OmsOrderController.java
  14. 13
      src/main/java/com/qs/serve/modules/oms/controller/OmsSaleOrderController.java
  15. 5
      src/main/java/com/qs/serve/modules/oms/controller/api/OmsSaleOrderApi.java
  16. 11
      src/main/java/com/qs/serve/modules/oms/entity/OmsSaleOrder.java
  17. 60
      src/main/java/com/qs/serve/modules/oms/entity/OmsSeaTank.java
  18. 61
      src/main/java/com/qs/serve/modules/oms/entity/OmsTransport.java
  19. 80
      src/main/java/com/qs/serve/modules/oms/entity/OmsVerSaleDelivery.java
  20. 5
      src/main/java/com/qs/serve/modules/oms/entity/bo/CreateOrderParam.java
  21. 5
      src/main/java/com/qs/serve/modules/oms/entity/bo/OmsOrderModifyParam.java
  22. 6
      src/main/java/com/qs/serve/modules/oms/entity/vo/OmsConfirmOrderResult.java
  23. 11
      src/main/java/com/qs/serve/modules/oms/mapper/OmsSeaTankMapper.java
  24. 12
      src/main/java/com/qs/serve/modules/oms/mapper/OmsTransportMapper.java
  25. 15
      src/main/java/com/qs/serve/modules/oms/mapper/OmsVerSaleDeliveryMapper.java
  26. 2
      src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderOptionsServiceImpl.java
  27. 53
      src/main/java/com/qs/serve/modules/oms/service/impl/OmsSaleOrderServiceImpl.java
  28. 49
      src/main/java/com/qs/serve/modules/other/controller/ZbiReportController.java
  29. 96
      src/main/java/com/qs/serve/modules/other/entity/ZbiReport.java
  30. 92
      src/main/java/com/qs/serve/modules/other/entity/ZbiUserReport.java
  31. 16
      src/main/java/com/qs/serve/modules/other/mapper/ZbiReportMapper.java
  32. 19
      src/main/java/com/qs/serve/modules/other/mapper/ZbiUserReportMapper.java
  33. 14
      src/main/java/com/qs/serve/modules/other/service/ZbiReportService.java
  34. 14
      src/main/java/com/qs/serve/modules/other/service/ZbiUserReportService.java
  35. 22
      src/main/java/com/qs/serve/modules/other/service/impl/ZbiReportServiceImpl.java
  36. 22
      src/main/java/com/qs/serve/modules/other/service/impl/ZbiUserReportServiceImpl.java
  37. 2
      src/main/java/com/qs/serve/modules/sys/service/SysDeleteLogService.java
  38. 42
      src/main/java/com/qs/serve/modules/sys/service/impl/SysDeleteLogServiceImpl.java
  39. 4
      src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityController.java
  40. 13
      src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyController.java
  41. 4
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeServiceImpl.java
  42. 4
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetServiceImpl.java
  43. 70
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java
  44. 5
      src/main/java/com/qs/serve/modules/third/entity/ProcessCreateCostApplyBo.java
  45. 1
      src/main/java/com/qs/serve/modules/third/entity/ProcessCreatePolicyCostBo.java
  46. 98
      src/main/java/com/qs/serve/modules/third/service/PortalOfCostApplication.java
  47. 5
      src/main/java/com/qs/serve/modules/tzc/service/impl/TzcPolicyApplicationServiceImpl.java
  48. 2
      src/main/java/com/qs/serve/modules/vtb/controller/VtbVerificationController.java
  49. 6
      src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java
  50. 2
      src/main/resources/mapper/bms/BmsChannelPointMapper.xml
  51. 16
      src/main/resources/mapper/other/ZbiUserReportMapper.xml

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

@ -53,6 +53,7 @@ public class BazVisitInstanceServiceImpl extends ServiceImpl<BazVisitInstanceMap
BazVisitFlowMapper flowMapper;
BazVisitMapper visitMapper;
private BazVisitInfoService bazVisitInfoService;
BmsChannelPointExtMapper pointExtMapper;
@Override
@Transactional(rollbackFor = Exception.class)
@ -85,6 +86,30 @@ public class BazVisitInstanceServiceImpl extends ServiceImpl<BazVisitInstanceMap
targetDTO.setLocalY(point.getLocalY());
targetDTO.setAddress(point.getAddress());
targetDTO.setMapAddress(point.getMapAddress());
// 保存相关信息在拓展表
try {
if(StringUtils.hasText(flowBo.getMapAddress())&&StringUtils.hasText(flowBo.getExtProvince())){
BmsChannelPointExt pointExtDb = pointExtMapper.selectById(point.getId());
BmsChannelPointExt pointExt = new BmsChannelPointExt();
pointExt.setPointId(point.getId()+"");
pointExt.setExtProvince(flowBo.getExtProvince());
pointExt.setExtCity(flowBo.getExtCity());
pointExt.setExtRegionArea(flowBo.getExtRegionArea());
pointExt.setExtTownship(flowBo.getExtTownship());
pointExt.setExtStreet(flowBo.getExtStreet());
pointExt.setExtStreetNumber(flowBo.getExtStreetNumber());
pointExt.setLocalX(flowBo.getValLocalX());
pointExt.setLocalY(flowBo.getValLocalY());
pointExt.setAddress(flowBo.getMapAddress());
if(pointExtDb==null){
pointExtMapper.insert(pointExt);
}else {
pointExtMapper.updateById(pointExt);
}
}
} catch (Exception e) {
log.error("PointExt异常:{}",e.getMessage());
}
}
//多少天内只能拜访次数(一天一次)

13
src/main/java/com/qs/serve/modules/bms/controller/BmsRegion2Controller.java

@ -330,6 +330,13 @@ public class BmsRegion2Controller {
@SysLog(module = SystemModule.BASE, title = "区域档案", biz = BizType.UPDATE)
@PreAuthorize("hasRole('bms:region:update')")
public R<?> updateById(@RequestBody @Valid BmsRegionBatchBo.BmsRegionBo regionBo){
long count = bmsRegion2Service.count(new LambdaQueryWrapper<BmsRegion2>()
.ne(BmsRegion2::getId,regionBo.getId())
.eq(BmsRegion2::getName,regionBo.getName())
);
if(count>0){
return R.isTrue(false,"名称重复");
}
BmsRegion2 param = new BmsRegion2();
param.setId(regionBo.getId());
param.setName(regionBo.getName());
@ -366,6 +373,12 @@ public class BmsRegion2Controller {
@SysLog(module = SystemModule.BASE, title = "区域档案", biz = BizType.INSERT)
@PreAuthorize("hasRole('bms:region:insert')")
public R<?> save(@RequestBody @Valid BmsRegionBatchBo.BmsRegionBo regionBo){
long count = bmsRegion2Service.count(new LambdaQueryWrapper<BmsRegion2>()
.eq(BmsRegion2::getName,regionBo.getName())
);
if(count>0){
return R.isTrue(false,"名称重复");
}
BmsRegion2 param = CopierUtil.copy(regionBo,new BmsRegion2());
if(param.getId()==null){
param.setId("B"+IdUtil.getSnowFlakeId());

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

@ -1270,6 +1270,7 @@ public class BmsSupplierController {
supplier.setSupplierLicenseImg(a.getSupplierLicenseImg());
supplier.setSupplierUser(a.getSupplierUser());
supplier.setSupplierTaxNumber(a.getSupplierTaxNumber());
supplier.setTransportVisible(a.getTransportVisible());
if(StringUtils.hasText(a.getMainHeadCode())){
SysUser sysUser = sysUserMap.get(a.getMainHeadCode());
supplier.setUserId(sysUser.getId());

5
src/main/java/com/qs/serve/modules/bms/entity/BmsChannelPoint.java

@ -150,9 +150,12 @@ public class BmsChannelPoint implements Serializable {
@JsonProperty
private String delFlag;
/** 可投放费用标识 */
/** 可投放费用标识,默认=1 */
private Integer costFlag;
/** 可拜访网点,默认=1 */
private Integer visitFlag;
/** 创建人 */
@TableField(fill = FieldFill.INSERT)
private String createBy;

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

@ -0,0 +1,44 @@
package com.qs.serve.modules.bms.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
/**
* @author YenHex
* @since 2025/3/11
*/
@Data
@TableName("bms_channel_point_ext")
public class BmsChannelPointExt {
@TableId
private String pointId;
/** 省 */
private String extProvince;
/** 城市 */
private String extCity;
/** 区 */
private String extRegionArea;
/** 乡镇 */
private String extTownship;
/** 街道 */
private String extStreet;
/** 街道编号 */
private String extStreetNumber;
/** 纬度 */
private String localX;
/** 经度 */
private String localY;
private String address;
}

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

@ -216,10 +216,14 @@ public class BmsSupplier implements Serializable {
/** 线下下单 */
private Integer orderOfflineFlag;
/** 运输方式是否可见 */
private Integer transportVisible;
/** 统计维护的地址数量 */
@TableField(exist = false)
private Integer countAddr;
/**
* 查询维护的地址
* countAddrFlag=0 表示未维护的收货地址

3
src/main/java/com/qs/serve/modules/bms/entity/bo/BmsChannelPointBo.java

@ -65,6 +65,9 @@ public class BmsChannelPointBo {
/** 可投放费用标识 */
private Integer costFlag;
/** 可拜访网点 */
private Integer visitFlag;
/** 纬度 */
@Length(max = 255,message = "纬度长度不能超过255字")
private String localX;

3
src/main/java/com/qs/serve/modules/bms/entity/bo/BmsSupplierBo.java

@ -107,6 +107,9 @@ public class BmsSupplierBo {
*/
private Integer cdOrderFlag;
/** 运输方式是否可见 */
private Integer transportVisible;
/** 开始户时间 */
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")

4
src/main/java/com/qs/serve/modules/bms/entity/bo/BmsSupplierExcelBo.java

@ -74,6 +74,9 @@ public class BmsSupplierExcelBo {
*/
private Integer cdOrderFlag;
/** 运输方式是否可见 */
private Integer transportVisible;
// 闭户日期
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
@ -122,6 +125,7 @@ public class BmsSupplierExcelBo {
bo.setSupplierUser(bmsSupplier.getSupplierUser());
bo.setSupplierLicenseImg(bmsSupplier.getSupplierLicenseImg());
bo.setCdOrderFlag(bmsSupplier.getCdOrderFlag());
bo.setTransportVisible(bmsSupplier.getTransportVisible()==null?0:bmsSupplier.getTransportVisible());
if(bmsSupplier.getRegionFirstInfo()!=null) {
BmsRegion firstRegion = (BmsRegion)bmsSupplier.getRegionFirstInfo();
bo.setFirstLevelSalesRegionName(firstRegion.getName());

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

@ -23,4 +23,6 @@ public class BmsPointVisitSo {
/** 忽略这个参数,后端设值 */
String tenantId;
Integer visitFlag;
}

15
src/main/java/com/qs/serve/modules/bms/mapper/BmsChannelPointExtMapper.java

@ -0,0 +1,15 @@
package com.qs.serve.modules.bms.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qs.serve.modules.bms.entity.BmsCenterRegion;
import com.qs.serve.modules.bms.entity.BmsChannelPointExt;
/**
* Mapper
* @author YenHex
* @date 2023-07-20
*/
public interface BmsChannelPointExtMapper extends BaseMapper<BmsChannelPointExt> {
}

13
src/main/java/com/qs/serve/modules/goods/controller/GoodsSpuController.java

@ -196,7 +196,18 @@ public class GoodsSpuController {
if(CollUtil.isEmpty(param.getSelectNotIntCateIds())){
param.setSelectNotIntCateIds(ruleItemDTO.getNotInCategoryIds());
}else{
param.getSelectNotIntCateIds().addAll(ruleItemDTO.getNotInCategoryIds());
// 原方法报错
//param.getSelectNotIntCateIds().addAll(ruleItemDTO.getNotInCategoryIds());
// 新的方法
List<String> tmp = new ArrayList<>();
for (String id : param.getSelectNotIntCateIds()) {
tmp.add(id);
}
for (String id : ruleItemDTO.getNotInCategoryIds()) {
tmp.add(id);
}
param.setSelectNotIntCateIds(tmp);
}
}

2
src/main/java/com/qs/serve/modules/oms/controller/OmsOrderController.java

@ -21,6 +21,7 @@ import com.qs.serve.modules.oms.entity.bo.OmsUrgentParam;
import com.qs.serve.modules.oms.entity.bo.OrderRelateQuery;
import com.qs.serve.modules.oms.entity.vo.OmsSpuAssesInfo;
import com.qs.serve.modules.oms.mapper.OmsOrderMapper;
import com.qs.serve.modules.oms.mapper.OmsSeaTankMapper;
import com.qs.serve.modules.oms.service.OmsOrderItemService;
import com.qs.serve.modules.oms.service.OmsOrderOptionsService;
import com.qs.serve.modules.seeyon.service.impl.SeeYonRequestBaseService;
@ -65,6 +66,7 @@ public class OmsOrderController {
private BmsSupplierMapper bmsSupplierMapper;
private SeeYonRequestBaseService seeYonRequestBaseService;
/**
* 获取ERP订单信息
* @param query

13
src/main/java/com/qs/serve/modules/oms/controller/OmsSaleOrderController.java

@ -19,6 +19,8 @@ import com.qs.serve.modules.oms.entity.*;
import com.qs.serve.modules.oms.entity.bo.*;
import com.qs.serve.modules.oms.entity.vo.OmsPlanResult;
import com.qs.serve.modules.oms.entity.vo.OmsSpuAssesInfo;
import com.qs.serve.modules.oms.mapper.OmsSeaTankMapper;
import com.qs.serve.modules.oms.mapper.OmsTransportMapper;
import com.qs.serve.modules.oms.service.*;
import com.qs.serve.modules.seeyon.service.impl.SeeYonRequestBaseService;
import com.qs.serve.modules.sys.entity.SysUser;
@ -56,7 +58,18 @@ public class OmsSaleOrderController {
private BmsSupplierMapper bmsSupplierMapper;
private SeeYonRequestBaseService seeYonRequestBaseService;
private OmsVerSaleOrderService omsVerSaleOrderService;
private OmsSeaTankMapper omsSeaTankMapper;
private OmsTransportMapper omsTransportMapper;
@GetMapping("/getSeaTanks")
public R<?> getSeaTanks(){
return R.ok(omsSeaTankMapper.selectList(null));
}
@GetMapping("/getTransports")
public R<?> getTransports(){
return R.ok(omsTransportMapper.selectList(null));
}
/**
* 查看排产预估计划
* @param param

5
src/main/java/com/qs/serve/modules/oms/controller/api/OmsSaleOrderApi.java

@ -344,6 +344,11 @@ public class OmsSaleOrderApi {
return R.byPageHelperList(list);
}
/**
* 提交到调度的订单退回草稿
* @param id
* @return
*/
@GetMapping("/cancelUncheckOrder")
public R<?> cancelOrder(String id){
omsSaleOrderService.cancelErpOrder(id);

11
src/main/java/com/qs/serve/modules/oms/entity/OmsSaleOrder.java

@ -195,6 +195,15 @@ public class OmsSaleOrder implements Serializable {
/** 业务确认人 */
private String confirmUserCode;
/** 货运方式id */
private String transportId;
/** 货运方式 */
private String transport;
/** 海柜id */
private String tankId;
/** 海柜名称 */
private String tankName;
/**
* 拓展查询条件
*/
@ -305,7 +314,7 @@ public class OmsSaleOrder implements Serializable {
private Integer satisfyPayFlag;
/**
* 费用过单状态0-1-部分2-全部
* 费用过单状态0-1-部分2-全部-1 代表不选
*/
private Integer overbillStatus;

60
src/main/java/com/qs/serve/modules/oms/entity/OmsSeaTank.java

@ -0,0 +1,60 @@
package com.qs.serve.modules.oms.entity;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
* @author YenHex
* @since 2025/3/13
*/
@Data
public class OmsSeaTank {
@TableId
private String id;
private String label;
private BigDecimal minSquare;
private BigDecimal maxSquare;
/** 创建时间 */
@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;
}

61
src/main/java/com/qs/serve/modules/oms/entity/OmsTransport.java

@ -0,0 +1,61 @@
package com.qs.serve.modules.oms.entity;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
* @author YenHex
* @since 2025/3/13
*/
@Data
public class OmsTransport {
@TableId
private String id;
private String label;
/**
* 显示海柜
*/
private Integer showTankFlag;
/** 创建时间 */
@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;
}

80
src/main/java/com/qs/serve/modules/oms/entity/OmsVerSaleDelivery.java

@ -0,0 +1,80 @@
package com.qs.serve.modules.oms.entity;
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.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* 订单 实体类
* @author YenHex
* @since 2022-10-14
*/
@Data
@TableName("oms_ver_sale_delivery")
public class OmsVerSaleDelivery implements Serializable {
private static final long serialVersionUID = 1L;
/** id */
@TableId(type = IdType.AUTO)
private Long id;
private String orderSn;
private String erpId;
private String operatorName;
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private LocalDateTime operationTime;
private String source;
private LocalDateTime deliveryDate;
private String currentVersion;
private String lastVersion;
private Integer sort;
/** 备注 */
private String remark;
/** 创建时间 */
@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;
}

5
src/main/java/com/qs/serve/modules/oms/entity/bo/CreateOrderParam.java

@ -5,6 +5,11 @@ import lombok.Data;
@Data
public class CreateOrderParam{
/** 货运方式id */
private String transportId;
/** 海柜id */
private String tankId;
/** CD单据备注 */
private String cdOrderRemark;

5
src/main/java/com/qs/serve/modules/oms/entity/bo/OmsOrderModifyParam.java

@ -63,6 +63,11 @@ public class OmsOrderModifyParam {
*/
private Integer overbillStatus;
/** 货运方式id */
private String transportId;
/** 海柜id */
private String tankId;
/**
* 明细
*/

6
src/main/java/com/qs/serve/modules/oms/entity/vo/OmsConfirmOrderResult.java

@ -54,4 +54,10 @@ public class OmsConfirmOrderResult {
* 费用过单状态0-1-部分2-全部
*/
private Integer overbillStatus;
/** 货运方式id */
private String transportId;
/** 海柜id */
private String tankId;
}

11
src/main/java/com/qs/serve/modules/oms/mapper/OmsSeaTankMapper.java

@ -0,0 +1,11 @@
package com.qs.serve.modules.oms.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qs.serve.modules.oms.entity.OmsSeaTank;
/**
* @author YenHex
* @since 2025/3/13
*/
public interface OmsSeaTankMapper extends BaseMapper<OmsSeaTank> {
}

12
src/main/java/com/qs/serve/modules/oms/mapper/OmsTransportMapper.java

@ -0,0 +1,12 @@
package com.qs.serve.modules.oms.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qs.serve.modules.oms.entity.OmsSeaTank;
import com.qs.serve.modules.oms.entity.OmsTransport;
/**
* @author YenHex
* @since 2025/3/13
*/
public interface OmsTransportMapper extends BaseMapper<OmsTransport> {
}

15
src/main/java/com/qs/serve/modules/oms/mapper/OmsVerSaleDeliveryMapper.java

@ -0,0 +1,15 @@
package com.qs.serve.modules.oms.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qs.serve.modules.oms.entity.OmsVerSaleDelivery;
import org.apache.ibatis.annotations.Select;
/**
* 订单 Mapper
* @author YenHex
* @date 2022-10-14
*/
public interface OmsVerSaleDeliveryMapper extends BaseMapper<OmsVerSaleDelivery> {
}

2
src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderOptionsServiceImpl.java

@ -367,6 +367,8 @@ public class OmsOrderOptionsServiceImpl implements OmsOrderOptionsService {
);
// 申请时的折扣率(跟ext1一样传oaid)
data.put("ext3",omsOrder.getOaRateId());
// 新增折扣率
data.put("ext4",omsOrder.getDiscountRate());
return data;
}

53
src/main/java/com/qs/serve/modules/oms/service/impl/OmsSaleOrderServiceImpl.java

@ -39,6 +39,8 @@ import com.qs.serve.modules.oms.entity.vo.OmsPlanResult;
import com.qs.serve.modules.oms.entity.vo.OmsSpuAssesInfo;
import com.qs.serve.modules.oms.event.OrderCreateCacheEvent;
import com.qs.serve.modules.oms.mapper.OmsSaleOrderMapper;
import com.qs.serve.modules.oms.mapper.OmsSeaTankMapper;
import com.qs.serve.modules.oms.mapper.OmsTransportMapper;
import com.qs.serve.modules.oms.mapper.OmsVerSaleOrderMapper;
import com.qs.serve.modules.oms.service.*;
import com.qs.serve.modules.oms.utils.OmsOrderUtil;
@ -103,6 +105,8 @@ public class OmsSaleOrderServiceImpl extends ServiceImpl<OmsSaleOrderMapper, Oms
private RedisService redisService;
private ApplicationEventPublisher applicationEventPublisher;
private OmsVerSaleOrderMapper omsVerSaleOrderMapper;
private OmsSeaTankMapper omsSeaTankMapper;
private OmsTransportMapper omsTransportMapper;
@Override
public OmsPlanResult getPlanList(OmsPlanParam param) {
@ -247,6 +251,7 @@ public class OmsSaleOrderServiceImpl extends ServiceImpl<OmsSaleOrderMapper, Oms
confirmOrderResult.setDefaultAddress(supplierAddress);
confirmOrderResult.setAmountInfo(calcAmount);
confirmOrderResult.setCartsCheckResult(cartsCheckResult);
return confirmOrderResult;
}
@ -381,6 +386,10 @@ public class OmsSaleOrderServiceImpl extends ServiceImpl<OmsSaleOrderMapper, Oms
order.setSatisfyPayFlag(param.getSatisfyPayFlag());
order.setOverbillStatus(param.getOverbillStatus());
String transportId = param.getTransportId();
String tankId = param.getTankId();
this.assignTransportInfo(order, transportId, tankId);
//通过当前函数获取当前账套对于的skuID,默认全部转化为开平(001)的sku
List<Long> spuIds = param.getOrderItems().stream().map(OmsOrderModifyParam.OmsOrderItemModifyBo::getSpuId).collect(Collectors.toList());
spuIds.add(0L);//兼容空订单,防止空指针
@ -698,13 +707,15 @@ public class OmsSaleOrderServiceImpl extends ServiceImpl<OmsSaleOrderMapper, Oms
order.setUserPhone(user.getMobile());
order.setVersion("cms");
String transportId = confirmOrder.getTransportId();
String tankId = confirmOrder.getTankId();
this.assignTransportInfo(order, transportId, tankId);
this.appendCusRegion(supplier, order);
if (createOrderParam != null) {
order.setBillType(createOrderParam.getBillType());
order.setUrgentFlag(createOrderParam.getUrgentFlag());
order.setRemark(createOrderParam.getRemark());
}
order.setBillType(createOrderParam.getBillType());
order.setUrgentFlag(createOrderParam.getUrgentFlag());
order.setRemark(createOrderParam.getRemark());
this.save(order);
//兼容转换
@ -832,6 +843,33 @@ public class OmsSaleOrderServiceImpl extends ServiceImpl<OmsSaleOrderMapper, Oms
return order;
}
private void assignTransportInfo(OmsSaleOrder order, String transportId, String tankId) {
if(StringUtil.isNotEmpty(transportId)){
OmsTransport transport = omsTransportMapper.selectById(transportId);
if(transport!=null){
order.setTransportId(transport.getId());
order.setTransport(transport.getLabel());
if(transport.getShowTankFlag().equals(1)){
if(StringUtil.isNotEmpty(tankId)){
OmsSeaTank seaTank = omsSeaTankMapper.selectById(tankId);
if(seaTank!=null){
order.setTankId(seaTank.getId());
order.setTankName(seaTank.getLabel());
}
}
}else {
order.setTankId("0");
order.setTankName("");
}
}
}else {
order.setTransportId("0");
order.setTransport("");
order.setTankId("0");
order.setTankName("");
}
}
/**
* 根据商品SPU ID列表补充订单的品牌类别信息
* 此方法旨在通过SPU ID获取对应的顶级分类ID并进一步获取分类名称最终将这些信息汇总到订单对象中
@ -877,6 +915,7 @@ public class OmsSaleOrderServiceImpl extends ServiceImpl<OmsSaleOrderMapper, Oms
order.setCusSaleRegion2(regionVo.getSalRegionName2());
order.setCusSaleRegion3(regionVo.getSalRegionName3());
order.setCusSaleRegionAll(appendRegions(regionVo.getSalRegionName(), regionVo.getSalRegionName2(), regionVo.getSalRegionName3()));
order.setCusSaleRegionAll(order.getCusSaleRegionAll().replaceAll("_null",""));
order.setCusSaleRegionCodes(appendCodes(regionVo.getSalRegionCode(), regionVo.getSalRegionCode2(), regionVo.getSalRegionCode3()));
// 设置业务区域信息
@ -885,6 +924,7 @@ public class OmsSaleOrderServiceImpl extends ServiceImpl<OmsSaleOrderMapper, Oms
order.setCusCity(regionVo.getBizRegionName2());
order.setCusArea(regionVo.getBizRegionName3());
order.setCusBizRegionAll(appendRegions(regionVo.getBizRegionName(), regionVo.getBizRegionName2(), regionVo.getBizRegionName3()));
order.setCusBizRegionAll(order.getCusBizRegionAll().replaceAll("_null",""));
order.setCusBizRegionCodes(appendCodes(regionVo.getBizRegionCode(), regionVo.getBizRegionCode2(), regionVo.getBizRegionCode3()));
} catch (Exception e) {
@ -1378,6 +1418,9 @@ public class OmsSaleOrderServiceImpl extends ServiceImpl<OmsSaleOrderMapper, Oms
@Override
public void cancelErpOrder(String orderId) {
OmsSaleOrder saleOrder = this.getById(orderId);
if(saleOrder.getOrderErpId()!=null){
Assert.throwEx("订单已存在ERP");
}
if(saleOrder.getStatus().equals(2)&&saleOrder.getOrderStatusCombo().equals(0)){
OmsSaleOrder upd = new OmsSaleOrder();
upd.setId(saleOrder.getId());

49
src/main/java/com/qs/serve/modules/other/controller/ZbiReportController.java

@ -0,0 +1,49 @@
package com.qs.serve.modules.other.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.qs.serve.common.model.annotation.SysLog;
import com.qs.serve.common.model.dto.PageVo;
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.common.util.PageUtil;
import com.qs.serve.common.util.CopierUtil;
import com.qs.serve.common.util.StringUtils;
import com.qs.serve.modules.other.mapper.ZbiUserReportMapper;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import com.qs.serve.modules.other.entity.ZbiReport;
import com.qs.serve.modules.other.service.ZbiReportService;
import javax.validation.Valid;
import java.util.List;
/**
* 报表
* @author YenHex
* @since 2025-03-20
*/
@Slf4j
@AllArgsConstructor
@RestController
@RequestMapping("zbi/report")
public class ZbiReportController {
private ZbiUserReportMapper zbiUserReportMapper;
/**
* 列表
* @param userCode
* @return
*/
@GetMapping("/listByUserCode/{userCode}")
public R<List<ZbiReport>> getList(@PathVariable("userCode") String userCode){
List<ZbiReport> reportList = zbiUserReportMapper.getReportList(userCode);
return R.ok(reportList);
}
}

96
src/main/java/com/qs/serve/modules/other/entity/ZbiReport.java

@ -0,0 +1,96 @@
package com.qs.serve.modules.other.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 2025-03-20
*/
@Data
@TableName("zbi_report")
public class ZbiReport implements Serializable {
private static final long serialVersionUID = 1L;
/** id */
@TableId(type = IdType.AUTO)
private Long id;
/** 报表值 */
@Length(max = 255,message = "报表值长度不能超过255字")
private String reportValue;
/** 停用:0-正常;1-停用 */
private Integer stopFlag;
/** 显示状态:0-用户关联;1-共有的 */
private Integer showState;
/** 备注 */
@Length(max = 255,message = "备注长度不能超过255字")
private String remark;
/** 创建时间 */
@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;
public static ZbiReport toNewObject(ZbiReport source){
ZbiReport report = new ZbiReport();
report.setId(source.getId());
report.setReportValue(source.getReportValue());
report.setStopFlag(source.getStopFlag());
report.setShowState(source.getShowState());
report.setRemark(source.getRemark());
report.setCreateTime(source.getCreateTime());
report.setCreateBy(source.getCreateBy());
report.setUpdateTime(source.getUpdateTime());
report.setUpdateBy(source.getUpdateBy());
report.setTenantId(source.getTenantId());
report.setDelFlag(source.getDelFlag());
return report;
}
}

92
src/main/java/com/qs/serve/modules/other/entity/ZbiUserReport.java

@ -0,0 +1,92 @@
package com.qs.serve.modules.other.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 2025-03-20
*/
@Data
@TableName("zbi_user_report")
public class ZbiUserReport implements Serializable {
private static final long serialVersionUID = 1L;
/** id */
@TableId(type = IdType.AUTO)
private Long id;
/** 员工号 */
@Length(max = 64,message = "员工号长度不能超过64字")
private String userCode;
/** 报表id */
private Long reportId;
/** 备注 */
@Length(max = 255,message = "备注长度不能超过255字")
private String remark;
/** 创建时间 */
@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;
public static ZbiUserReport toNewObject(ZbiUserReport source){
ZbiUserReport userReport = new ZbiUserReport();
userReport.setId(source.getId());
userReport.setUserCode(source.getUserCode());
userReport.setReportId(source.getReportId());
userReport.setRemark(source.getRemark());
userReport.setCreateTime(source.getCreateTime());
userReport.setCreateBy(source.getCreateBy());
userReport.setUpdateTime(source.getUpdateTime());
userReport.setUpdateBy(source.getUpdateBy());
userReport.setTenantId(source.getTenantId());
userReport.setDelFlag(source.getDelFlag());
return userReport;
}
}

16
src/main/java/com/qs/serve/modules/other/mapper/ZbiReportMapper.java

@ -0,0 +1,16 @@
package com.qs.serve.modules.other.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qs.serve.modules.other.entity.ZbiReport;
/**
* Mapper
* @author YenHex
* @date 2025-03-20
*/
public interface ZbiReportMapper extends BaseMapper<ZbiReport> {
}

19
src/main/java/com/qs/serve/modules/other/mapper/ZbiUserReportMapper.java

@ -0,0 +1,19 @@
package com.qs.serve.modules.other.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qs.serve.modules.other.entity.ZbiReport;
import com.qs.serve.modules.other.entity.ZbiUserReport;
import java.util.List;
/**
* Mapper
* @author YenHex
* @date 2025-03-20
*/
public interface ZbiUserReportMapper extends BaseMapper<ZbiUserReport> {
List<ZbiReport> getReportList(String userCode);
}

14
src/main/java/com/qs/serve/modules/other/service/ZbiReportService.java

@ -0,0 +1,14 @@
package com.qs.serve.modules.other.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.qs.serve.modules.other.entity.ZbiReport;
/**
* 服务接口
* @author YenHex
* @date 2025-03-20
*/
public interface ZbiReportService extends IService<ZbiReport> {
}

14
src/main/java/com/qs/serve/modules/other/service/ZbiUserReportService.java

@ -0,0 +1,14 @@
package com.qs.serve.modules.other.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.qs.serve.modules.other.entity.ZbiUserReport;
/**
* 服务接口
* @author YenHex
* @date 2025-03-20
*/
public interface ZbiUserReportService extends IService<ZbiUserReport> {
}

22
src/main/java/com/qs/serve/modules/other/service/impl/ZbiReportServiceImpl.java

@ -0,0 +1,22 @@
package com.qs.serve.modules.other.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import com.qs.serve.modules.other.entity.ZbiReport;
import com.qs.serve.modules.other.service.ZbiReportService;
import com.qs.serve.modules.other.mapper.ZbiReportMapper;
/**
* 服务实现类
* @author YenHex
* @since 2025-03-20
*/
@Slf4j
@Service
@AllArgsConstructor
public class ZbiReportServiceImpl extends ServiceImpl<ZbiReportMapper,ZbiReport> implements ZbiReportService {
}

22
src/main/java/com/qs/serve/modules/other/service/impl/ZbiUserReportServiceImpl.java

@ -0,0 +1,22 @@
package com.qs.serve.modules.other.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import com.qs.serve.modules.other.entity.ZbiUserReport;
import com.qs.serve.modules.other.service.ZbiUserReportService;
import com.qs.serve.modules.other.mapper.ZbiUserReportMapper;
/**
* 服务实现类
* @author YenHex
* @since 2025-03-20
*/
@Slf4j
@Service
@AllArgsConstructor
public class ZbiUserReportServiceImpl extends ServiceImpl<ZbiUserReportMapper,ZbiUserReport> implements ZbiUserReportService {
}

2
src/main/java/com/qs/serve/modules/sys/service/SysDeleteLogService.java

@ -14,8 +14,10 @@ public interface SysDeleteLogService extends IService<SysDeleteLog> {
* 删除费用申请相关所有数据
* @param costApplyId
* @param remark
* @param skipPayFlag 跳过审批
*/
void deleteCostApply(Long costApplyId,String remark);
void deleteCostApply(Long costApplyId,String remark,boolean skipPayFlag);
}

42
src/main/java/com/qs/serve/modules/sys/service/impl/SysDeleteLogServiceImpl.java

@ -51,7 +51,7 @@ public class SysDeleteLogServiceImpl extends ServiceImpl<SysDeleteLogMapper,SysD
@Override
@Transactional(rollbackFor = Exception.class)
public void deleteCostApply(Long costApplyId,String remark) {
public void deleteCostApply(Long costApplyId, String remark, boolean skipPayFlag) {
SysUser sysUser = sysUserService.getById(AuthContextUtils.getSysUserId());
@ -64,13 +64,14 @@ public class SysDeleteLogServiceImpl extends ServiceImpl<SysDeleteLogMapper,SysD
String batchCode = System.currentTimeMillis()+"";
List<SysDeleteLog> deleteLogList = new ArrayList<>();
String skipMsg = skipPayFlag?"(跳过删除支付)":"";
if(costApply!=null){
SysDeleteLog deleteLog = new SysDeleteLog();
deleteLog.setBatchCode(batchCode);
deleteLog.setTargetTable("tbs_cost_apply");
deleteLog.setTargetId(costApply.getId()+"");
deleteLog.setTargetCode(costApply.getCode());
deleteLog.setRemark(remark);
deleteLog.setRemark(remark+skipMsg);
deleteLogList.add(deleteLog);
}
@ -81,20 +82,27 @@ public class SysDeleteLogServiceImpl extends ServiceImpl<SysDeleteLogMapper,SysD
}
}
//远程删除ERP
String url = "http://59.37.164.96:2505/api/cms/cost/deletion";
CostDeletion costDeletion = new CostDeletion();
costDeletion.setEmpNo(sysUser.getCode());
String bookCode = ThirtyVerification.getInitBookCode(supplier.getBookCode(),supplier.getCode());
costDeletion.setCacc(bookCode);
costDeletion.setVerificationCode(costApply.getCode());
String rs = HttpUtil.doPost(url, JsonUtil.objectToJson(costDeletion),null);
R rsObj = JsonUtil.jsonToPojo(rs, R.class);
log.warn("【请求删除ERP费用】{},返回结果:{}",costApplyId,rs);
if(rsObj==null||!rsObj.getStatus().equals(200)){
Assert.throwEx("远程删除失败:"+rs);
if (!skipPayFlag){
// 远程删除ERP
String url = "http://59.37.164.96:2505/api/cms/cost/deletion";
// 试吃品删除逻辑
if(costApply.getCode().contains("SHX")){
url = "http://59.37.164.96:2505/api/cms/cost/shxDelete";
}
CostDeletion costDeletion = new CostDeletion();
costDeletion.setEmpNo(sysUser.getCode());
String bookCode = ThirtyVerification.getInitBookCode(supplier.getBookCode(),supplier.getCode());
costDeletion.setCacc(bookCode);
costDeletion.setVerificationCode(costApply.getCode());
String rs = HttpUtil.doPost(url, JsonUtil.objectToJson(costDeletion),null);
R rsObj = JsonUtil.jsonToPojo(rs, R.class);
log.warn("【请求删除ERP费用】{},返回结果:{}",costApplyId,rs);
if(rsObj==null||!rsObj.getStatus().equals(200)){
Assert.throwEx("远程删除失败:"+rs);
}
}
tbsCostApplyRemoveMapper.tbs_cost_apply(costApplyId);
tbsCostApplyRemoveMapper.tbs_activity(costApplyId);
@ -155,9 +163,13 @@ public class SysDeleteLogServiceImpl extends ServiceImpl<SysDeleteLogMapper,SysD
}
tbsCostApplyRemoveMapper.tbs_cost_todo(costApplyId);
this.saveBatch(deleteLogList);
BirActivityCenterGoodsUtil.buildBir(costApplyId);
}
@Override
public void deleteCostApply(Long costApplyId,String remark) {
this.deleteCostApply(costApplyId, remark,false);
}
}

4
src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityController.java

@ -86,9 +86,9 @@ public class TbsActivityController {
@GetMapping("/reset/{id}")
public R<?> reset(@PathVariable("id") Long id){
tbsActivityDebugApplicationService.reset(id);
String msg = tbsActivityDebugApplicationService.reset(id);
TbsActivity activity = tbsActivityService.getById(id);
return R.ok(activity.getActivityCode()+"=="+activity.getActTitle());
return R.ok(msg);
}
@GetMapping("/resetList")

13
src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyController.java

@ -587,6 +587,19 @@ public class TbsCostApplyController {
return R.ok(resultInfoList);
}
@GetMapping("removeDhxCost")
public R<?> removeDhxCost(String code,String remark,Integer skipPayFlag){
if(!code.contains("DHX")){
return R.error("非DHX费用,不支持删除");
}
TbsCostApply costApply = tbsCostApplyMapper.selectList(new LambdaQueryWrapper<TbsCostApply>()
.eq(TbsCostApply::getCode,code)).get(0);
Long costApplyId = costApply.getId();
deleteLogService.deleteCostApply(costApplyId,remark,skipPayFlag!=null&&skipPayFlag.equals(1));
BirActivityCenterGoodsUtil.buildBir(costApplyId);
return R.ok();
}
/**
* 移除费用申请
* @param costCode

4
src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeServiceImpl.java

@ -204,6 +204,10 @@ public class TbsBudgetChangeServiceImpl extends ServiceImpl<TbsBudgetChangeMappe
if(formIdResult.getStatus()==200){
formId = formIdResult.getData();
}
if(formId==null){
log.error("[预算创建失败]={}",flowIdResult);
Assert.throwEx("获取表单ID失败");
}
budgetChange.setSubmitTime(LocalDateTime.now());
budgetChange.setBudgetCheckState(TbsCommonCheckState.State_1_apply);
budgetChange.setSyFormId(formId);

4
src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetServiceImpl.java

@ -131,6 +131,10 @@ public class TbsBudgetServiceImpl extends ServiceImpl<TbsBudgetMapper,TbsBudget>
if(formIdResult.getStatus()==200){
formId = formIdResult.getData();
}
if(formId==null){
log.error("[预算创建失败]={}",flowIdResult);
Assert.throwEx("获取表单ID失败");
}
tbsBudget.setSubmitTime(LocalDateTime.now());
tbsBudget.setBudgetCheckState(TbsCommonCheckState.State_1_apply);
tbsBudget.setSyFormId(formId);

70
src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java

@ -101,6 +101,7 @@ import java.util.stream.Collectors;
public class TbsCostApplyServiceImpl extends ServiceImpl<TbsCostApplyMapper,TbsCostApply> implements TbsCostApplyService {
private RedisService redisService;
private TbsActivityChannelMapper tbsActivityChannelMapper;
private TbsActivityChannelPointMapper tbsActivityChannelPointMapper;
private TbsActivityTemplateRegionMapper tbsActivityTemplateRegionMapper;
private TbsActivityTemplateMapper tbsActivityTemplateMapper;
@ -657,12 +658,8 @@ public class TbsCostApplyServiceImpl extends ServiceImpl<TbsCostApplyMapper,TbsC
List<BmsSubject> subjectList = subjectService.listByIds(
activitySubjects.stream().map(TbsActivitySubject::getSubjectId).collect(Collectors.toList()));
if(tbsCostApply.getContractFlag()!=null&&tbsCostApply.getContractFlag().equals(2)){
if (activityList.size()>1){
Assert.throwEx("进场费类型只能有一个活动");
}
if(subjectList.stream().anyMatch(s->s.getSlottingFlag().equals(0))){
Assert.throwEx("当前申请含非进场费类型科目");
}
// 拦截进场费的历史记录和规则
this.vaildEnterTypeCostHistoryAndRule(tbsCostApply, activityList, subjectList);
}
//模板拦截
boolean isIgnoreSubject = false;
@ -1058,6 +1055,67 @@ public class TbsCostApplyServiceImpl extends ServiceImpl<TbsCostApplyMapper,TbsC
}
/**
* 拦截进场费的历史记录和规则
* @param tbsCostApply
* @param activityList
* @param subjectList
*/
private void vaildEnterTypeCostHistoryAndRule(TbsCostApply tbsCostApply, List<TbsActivity> activityList, List<BmsSubject> subjectList) {
if (activityList.size()>1){
Assert.throwEx("进场费类型只能有一个活动");
}
if(subjectList.stream().anyMatch(s->s.getSlottingFlag().equals(0))){
Assert.throwEx("当前申请含非进场费类型科目");
}
// 判断是否已有历史进场费
LambdaQueryWrapper<TbsCostApply> costApplyLqw = new LambdaQueryWrapper<>();
costApplyLqw.eq(TbsCostApply::getSupplierId, tbsCostApply.getSupplierId());
costApplyLqw.eq(TbsCostApply::getContractFlag,2);
// 生效的费用申请
costApplyLqw.in(TbsCostApply::getChargeState,1,2,3,7);
costApplyLqw.select(TbsCostApply::getId);
List<TbsCostApply> costApplyList = tbsCostApplyMapper.selectList(costApplyLqw);
List<Long> enterIds = costApplyList.stream().map(TbsCostApply::getId).collect(Collectors.toList());
if(CollUtil.isNotEmpty(enterIds)){
Set<Long> pointIds = new HashSet<>();
Set<Long> channelIds = new HashSet<>();
List<TbsActivityChannel> activityChannelList = tbsActivityChannelMapper.selectList(
new LambdaQueryWrapper<TbsActivityChannel>()
.select(TbsActivityChannel::getChannelId)
.in(TbsActivityChannel::getCostApplyId,enterIds));
for (TbsActivityChannel channel : activityChannelList) {
channelIds.add(channel.getChannelId());
}
List<TbsActivityChannelPoint> activityChannelPointList = tbsActivityChannelPointMapper.selectList(
new LambdaQueryWrapper<TbsActivityChannelPoint>()
.select(TbsActivityChannelPoint::getPointId,
TbsActivityChannelPoint::getChannelId)
.in(TbsActivityChannelPoint::getCostApplyId,enterIds));
for (TbsActivityChannelPoint point : activityChannelPointList) {
pointIds.add(point.getPointId());
}
if(CollUtil.isNotEmpty(channelIds)){
long count = tbsActivityChannelMapper.selectCount(new LambdaQueryWrapper<TbsActivityChannel>()
.in(TbsActivityChannel::getChannelId,channelIds)
.eq(TbsActivityChannel::getCostApplyId, tbsCostApply.getId())
);
if(count>0){
Assert.throwEx("当前申请含网点,且已有历史进场费申请");
}
}
if(CollUtil.isNotEmpty(pointIds)){
long count = tbsActivityChannelPointMapper.selectCount(new LambdaQueryWrapper<TbsActivityChannelPoint>()
.in(TbsActivityChannelPoint::getPointId,pointIds)
.eq(TbsActivityChannelPoint::getCostApplyId, tbsCostApply.getId())
);
if(count>0){
Assert.throwEx("当前申请含网点,且已有历史进场费申请");
}
}
}
}
/**
* 校验活动商品的有效性
* 此方法旨在确保参与活动的商品或类别处于有效状态包括检查是否已下架和是否已启用费用

5
src/main/java/com/qs/serve/modules/third/entity/ProcessCreateCostApplyBo.java

@ -68,4 +68,9 @@ public class ProcessCreateCostApplyBo {
private LocalDate endDate;
private String remark;
/**
* 不进行支付目前只支持赠品类费用
*/
private Integer ignorePayFlag;
}

1
src/main/java/com/qs/serve/modules/third/entity/ProcessCreatePolicyCostBo.java

@ -68,4 +68,5 @@ public class ProcessCreatePolicyCostBo {
*/
@DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDate initTime;
}

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

@ -900,51 +900,13 @@ public class PortalOfCostApplication {
//保存支付信息(DHX赠品)
if(costCode.indexOf("DHX")==0||costCode.contains("YX06")) {
//发货单的
String json = ThirtyVerificationUtil.buildJson(supplier, subject, totalAmount, activity, verification);
String COST_TO_PAY_API = projectApisProperties.getCostToPay();
log.info("COST_TO_PAY_API 支付单信息:{} 数据:{}", verification.getVerificationCode(), json);
String rs = HttpUtil.doPost(COST_TO_PAY_API, json, null);
SysSyncLog syncLog = new SysSyncLog();
syncLog.setFromPlat("to支付请求");
syncLog.setUrl(COST_TO_PAY_API);
syncLog.setRequestJson(json);
if(rs==null||!rs.contains("200")){
log.error("COST_TO_PAY_API \n 请求参数:{},\n 支付单信息:{},\n 结果:{}", json, verification.getVerificationCode(),rs);
syncLog.setEntityClass("ThirtyVerification");
syncLog.setFailReason(rs);
syncLog.setRemark("支付失败:["+ verification.getVerificationCode()+"]");
}else {
syncLog.setSuccessStatus(1);
syncLog.setRemark("支付完成:["+ verification.getVerificationCode()+"]");
}
sysSyncLogService.save(syncLog);
if (rs == null || !rs.contains("200")) {
log.error("COST_TO_PAY_API \n 请求参数:{},\n 支付单信息:{},\n 结果:{}", json, verification.getVerificationCode(), rs);
//核销调度接口事务补偿
costApplyService.removeById(costApply.getId());
activityService.removeById(activity.getId());
activitySubjectService.removeById(activitySubject.getId());
activityCenterService.removeById(activityCenter.getId());
List<Long> goodIds = activityGoodsList.stream().map(TbsActivityGoods::getId).collect(Collectors.toList());
if (goodIds.size() > 0) {
activityGoodsService.removeBatchByIds(goodIds);
}
List<Long> good2Ids = activityCenterGoodsList.stream().map(TbsActivityCenterGoods::getId).collect(Collectors.toList());
if (good2Ids.size() > 0) {
activityCenterGoodsService.removeBatchByIds(good2Ids);
}
List<Long> logIds = budgetLogList.stream().map(TbsBudgetLog::getId).collect(Collectors.toList());
if (logIds.size() > 0) {
budgetLogService.removeBatchByIds(logIds);
}
verificationService.removeById(verification.getId());
verificationSubjectService.removeById(verificationSubject.getId());
Assert.throwEx("请求支付失败");
// 赠品支持忽略参数
boolean ignoreDhxPay = costCode.indexOf("DHX")==0&&createBo.getIgnorePayFlag()!=null&&createBo.getIgnorePayFlag()==1;
if(!ignoreDhxPay){
this.payToErpAPI(supplier, subject, totalAmount, costApply, activity, activitySubject,
activityCenter, activityGoodsList, activityCenterGoodsList,
budgetLogList, verification, verificationSubject);
}
log.info("COST_TO_PAY_API 支付单信息:{},结果:{}", verification.getVerificationCode(), rs);
}
//保存支付(SHX试吃品)
// if(costCode.indexOf("SHX")==0) {
@ -991,6 +953,54 @@ public class PortalOfCostApplication {
}
private void payToErpAPI(BmsSupplier supplier, BmsSubject subject, BigDecimal totalAmount, TbsCostApply costApply, TbsActivity activity, TbsActivitySubject activitySubject, TbsActivityCenter activityCenter, List<TbsActivityGoods> activityGoodsList, List<TbsActivityCenterGoods> activityCenterGoodsList, List<TbsBudgetLog> budgetLogList, VtbVerification verification, VtbVerificationSubject verificationSubject) {
//发货单的
String json = ThirtyVerificationUtil.buildJson(supplier, subject, totalAmount, activity, verification);
String COST_TO_PAY_API = projectApisProperties.getCostToPay();
log.info("COST_TO_PAY_API 支付单信息:{} 数据:{}", verification.getVerificationCode(), json);
String rs = HttpUtil.doPost(COST_TO_PAY_API, json, null);
SysSyncLog syncLog = new SysSyncLog();
syncLog.setFromPlat("to支付请求");
syncLog.setUrl(COST_TO_PAY_API);
syncLog.setRequestJson(json);
if(rs==null||!rs.contains("200")){
log.error("COST_TO_PAY_API \n 请求参数:{},\n 支付单信息:{},\n 结果:{}", json, verification.getVerificationCode(),rs);
syncLog.setEntityClass("ThirtyVerification");
syncLog.setFailReason(rs);
syncLog.setRemark("支付失败:["+ verification.getVerificationCode()+"]");
}else {
syncLog.setSuccessStatus(1);
syncLog.setRemark("支付完成:["+ verification.getVerificationCode()+"]");
}
sysSyncLogService.save(syncLog);
if (rs == null || !rs.contains("200")) {
log.error("COST_TO_PAY_API \n 请求参数:{},\n 支付单信息:{},\n 结果:{}", json, verification.getVerificationCode(), rs);
//核销调度接口事务补偿
costApplyService.removeById(costApply.getId());
activityService.removeById(activity.getId());
activitySubjectService.removeById(activitySubject.getId());
activityCenterService.removeById(activityCenter.getId());
List<Long> goodIds = activityGoodsList.stream().map(TbsActivityGoods::getId).collect(Collectors.toList());
if (goodIds.size() > 0) {
activityGoodsService.removeBatchByIds(goodIds);
}
List<Long> good2Ids = activityCenterGoodsList.stream().map(TbsActivityCenterGoods::getId).collect(Collectors.toList());
if (good2Ids.size() > 0) {
activityCenterGoodsService.removeBatchByIds(good2Ids);
}
List<Long> logIds = budgetLogList.stream().map(TbsBudgetLog::getId).collect(Collectors.toList());
if (logIds.size() > 0) {
budgetLogService.removeBatchByIds(logIds);
}
verificationService.removeById(verification.getId());
verificationSubjectService.removeById(verificationSubject.getId());
Assert.throwEx("请求支付失败");
}
log.info("COST_TO_PAY_API 支付单信息:{},结果:{}", verification.getVerificationCode(), rs);
}
@NotNull
private List<GoodsSku> filterRepSku(List<String> invCodeList, List<GoodsSku> skuList) {
if (skuList.size() > invCodeList.size()){

5
src/main/java/com/qs/serve/modules/tzc/service/impl/TzcPolicyApplicationServiceImpl.java

@ -463,8 +463,11 @@ public class TzcPolicyApplicationServiceImpl implements TzcPolicyApplicationServ
Assert.throwEx(flowIdResult.getMsg());
}
String flowId = flowIdResult.getData();
if(!StringUtils.hasText(flowId)){
Assert.throwEx("获取不到流程ID:"+flowIdResult.getMsg());
}
//这里错误时会抛出json数据
if(flowId!=null&&flowId.length()>60){
if(flowId.length()>60){
Assert.throwEx("远程调用异常:"+flowId);
}
String formId = null;

2
src/main/java/com/qs/serve/modules/vtb/controller/VtbVerificationController.java

@ -251,7 +251,7 @@ public class VtbVerificationController {
@PostMapping("/commitWithChange")
@SysLog(module = SystemModule.Verification, title = "核销", biz = BizType.UPDATE)
public R<?> commit(@RequestBody @Valid VtbVerificationCenterCommitBo commitBo){
seeYonService.testConnection();
//seeYonService.testConnection();
VtbVerificationBo param = CopierUtil.copy(commitBo,new VtbVerificationBo());
vtbVerificationService.commit(param);
return R.ok();

6
src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java

@ -873,7 +873,13 @@ public class VtbVerificationServiceImpl extends ServiceImpl<VtbVerificationMappe
}else if (CollectionUtil.isNotEmpty(pointBoList)){
for (VtbVerificationChannelPointBo channelPointBo : pointBoList) {
BmsChannelPoint channelPoint = channelPointService.getById(channelPointBo.getPointId());
if (channelPoint==null){
Assert.throwEx("网点不存在");
}
BmsChannel channel = channelService.getById(channelPoint.getChannelId());
if (channel==null){
Assert.throwEx("渠道不存在");
}
VtbVerificationChannelPoint channelPoint1 = new VtbVerificationChannelPoint();
channelPoint1.setCostApplyId(costApply.getId());
channelPoint1.setActivityId(activity.getId());

2
src/main/resources/mapper/bms/BmsChannelPointMapper.xml

@ -145,6 +145,7 @@
left join bms_channel_point ON `tmp`.channel_id = bms_channel_point.`channel_id`
<where>
and `bms_channel_point`.`del_flag` = 0
<if test="query.visitFlag != null"> and `bms_channel_point`.`visit_flag` = #{query.visitFlag} </if>
<if test="query.pointCode != null and query.pointCode != ''"> and `bms_channel_point`.`point_code` like concat('%',#{query.pointCode},'%') </if>
<if test="query.pointName != null and query.pointName != ''"> and `bms_channel_point`.`point_name` like concat('%',#{query.pointName},'%') </if>
</where>
@ -178,6 +179,7 @@
left join bms_channel_point ON `tmp`.channel_id = bms_channel_point.`channel_id`
<where>
and `bms_channel_point`.`del_flag` = 0
<if test="query.visitFlag != null"> and `bms_channel_point`.`visit_flag` = #{query.visitFlag} </if>
<if test="query.pointCode != null and query.pointCode != ''"> and `bms_channel_point`.`point_code` like concat('%',#{query.pointCode},'%') </if>
<if test="query.pointName != null and query.pointName != ''"> and `bms_channel_point`.`point_name` like concat('%',#{query.pointName},'%') </if>
</where>

16
src/main/resources/mapper/other/ZbiUserReportMapper.xml

@ -0,0 +1,16 @@
<?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.other.mapper.ZbiUserReportMapper">
<select id="getReportList" resultType="com.qs.serve.modules.other.entity.ZbiReport">
SELECT t2.* FROM zbi_report t2
left join `zbi_user_report` t1 on t1.report_id = t2.id
where
t2.del_flag = 0
and t2.stop_flag = 0
and ((t1.del_flag = 0 and t1.user_code = #{userCode}) or t2.show_state = 1)
</select>
</mapper>
Loading…
Cancel
Save