diff --git a/pom.xml b/pom.xml
index 27c79bf9..2dfc3a22 100644
--- a/pom.xml
+++ b/pom.xml
@@ -27,65 +27,10 @@
3.5.2
true
4.2.0
- D:\workspace-main\JiaShiLi\jsl-questionnaire-base\src\main\resources\lib\
-
-
- org.apache.cxf
- cxf-spring-boot-starter-jaxrs
- 3.2.0
-
-
- com.fasterxml.jackson.jaxrs
- jackson-jaxrs-json-provider
- 2.8.5
-
-
- org.glassfish.hk2
- hk2-api
- 3.0.1
-
-
- javax.inject
- javax.inject
- 1
-
-
-
-
-
- com.seeyon
- seeyon
- 1.0
- system
- ${lib.dir}/seeyon-ctp-core.jar
-
-
- com.jsersey
- jsersey-client
- 1.0
- system
- ${lib.dir}/jersey-client.jar
-
-
- com.jsersey
- jsersey-common
- 1.0
- system
- ${lib.dir}/jersey-common.jar
-
-
- com.jsersey
- jsersey-guava
- 1.0
- system
- ${lib.dir}/jersey-guava.jar
-
-
-
cn.hutool
hutool-all
diff --git a/src/main/java/com/qs/serve/common/config/properties/SeeYonProperties.java b/src/main/java/com/qs/serve/common/config/properties/SeeYonProperties.java
new file mode 100644
index 00000000..d47c058b
--- /dev/null
+++ b/src/main/java/com/qs/serve/common/config/properties/SeeYonProperties.java
@@ -0,0 +1,26 @@
+package com.qs.serve.common.config.properties;
+
+import lombok.Getter;
+import lombok.Setter;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @Author: YenHex
+ * @Date: 2021/3/3
+ * @Version: 1.0
+ **/
+@Getter
+@Setter
+@Component
+@ConfigurationProperties(prefix = "project.seeyon")
+public class SeeYonProperties {
+
+ private Boolean enable;
+
+ private String url;
+
+}
diff --git a/src/main/java/com/qs/serve/common/util/HttpUtil.java b/src/main/java/com/qs/serve/common/util/HttpUtil.java
new file mode 100644
index 00000000..e9f93f60
--- /dev/null
+++ b/src/main/java/com/qs/serve/common/util/HttpUtil.java
@@ -0,0 +1,130 @@
+package com.qs.serve.common.util;
+
+import com.alibaba.fastjson.JSONObject;
+import com.qs.serve.common.model.dto.R;
+import org.apache.http.HttpEntity;
+import org.apache.http.ParseException;
+import org.apache.http.client.ClientProtocolException;
+import org.apache.http.client.HttpClient;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.entity.StringEntity;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClientBuilder;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.http.protocol.HTTP;
+import org.apache.http.util.EntityUtils;
+
+import java.io.IOException;
+import java.util.HashMap;
+
+/**
+ * @author YenHex
+ * @since 2022/11/23
+ */
+public class HttpUtil {
+
+ private final static String CONTENT_TYPE = "application/json";
+ private final static String CHARSET = "UTF-8";
+ private final static String EN_CONING = "UTF-8";
+
+ public static String doPost(String url, String jsonStr, HashMap headers) {
+ CloseableHttpClient client = HttpClientBuilder.create().build();
+ CloseableHttpResponse response = null;
+ try {
+ //设post请求
+ HttpPost post = new HttpPost(url);
+ //创建请求实体传参
+ StringEntity postingString = new StringEntity(jsonStr,CHARSET);
+ postingString.setContentEncoding(EN_CONING);
+ //设置post请求参数
+ post.setEntity(postingString);
+ post.addHeader(HTTP.CONTENT_TYPE,CONTENT_TYPE);
+ if (headers != null) {
+ for (String key : headers.keySet()) {
+ post.addHeader(key,headers.get(key));
+ }
+ }
+ //执行post请求
+ response = client.execute(post);
+ //访问成功状态码为200
+ if (response.getStatusLine().getStatusCode() == 200) {
+ return EntityUtils.toString(response.getEntity());
+ }
+ } catch (IOException e) {
+ e.printStackTrace();
+ }finally {
+ try {
+ client.close();
+ if(response!=null){
+ response.close();
+ }
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ return null;
+ }
+
+ public static String doGet(String url, HashMap headers) {
+ CloseableHttpClient httpclient = HttpClients.createDefault();
+ try {
+ HttpGet httpget = new HttpGet(url);
+ httpget.addHeader(HTTP.CONTENT_TYPE,CONTENT_TYPE);
+ if (headers != null) {
+ for (String key : headers.keySet()) {
+ httpget.addHeader(key,headers.get(key));
+ }
+ }
+ CloseableHttpResponse response = httpclient.execute(httpget);
+ try {
+ if (response.getStatusLine().getStatusCode() == 200) {
+ return EntityUtils.toString(response.getEntity());
+ }
+ } finally {
+ response.close();
+ }
+ } catch (ClientProtocolException e) {
+ e.printStackTrace();
+ } catch (ParseException e) {
+ e.printStackTrace();
+ } catch (IOException e) {
+ e.printStackTrace();
+ } finally {
+ try {
+ httpclient.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ return null;
+ }
+
+ public static String createUrl(HashMap param){
+ StringBuilder sb = new StringBuilder();
+ for (String key : param.keySet()) {
+ sb.append("&"+key+"="+param.get(key));
+ }
+ return sb.toString();
+ }
+
+ public static R doGetResult(String url,HashMap headers){
+ String result = HttpUtil.doGet(url,headers);
+ JSONObject jsonObject = JSONObject.parseObject(result);
+ Integer status = jsonObject.getInteger("status");
+ String msg = jsonObject.getString("msg");
+ String data = jsonObject.getString("data");
+ return new R(status,msg,data);
+ }
+
+ public static R doPostResult(String url, String jsonStr, HashMap headers){
+ String result = HttpUtil.doPost(url,jsonStr,headers);
+ JSONObject jsonObject = JSONObject.parseObject(result);
+ Integer status = jsonObject.getInteger("status");
+ String msg = jsonObject.getString("msg");
+ String data = jsonObject.getString("data");
+ return new R(status,msg,data);
+ }
+
+}
diff --git a/src/main/java/com/qs/serve/common/util/SeeYonUtil.java b/src/main/java/com/qs/serve/common/util/SeeYonUtil.java
deleted file mode 100644
index 3e7f83ba..00000000
--- a/src/main/java/com/qs/serve/common/util/SeeYonUtil.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package com.qs.serve.common.util;
-
-import com.alibaba.fastjson.JSON;
-import com.seeyon.client.CTPRestClient;
-import com.seeyon.client.CTPServiceClientManager;
-import lombok.Getter;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.Scope;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * @Author JcYen
- * @Date 2021/5/21
- */
-@Slf4j
-@Configuration
-public class SeeYonUtil {
-
- public static String restUrl = "http://192.168.10.7";
-
- public static String userName = "kenpbtz";
-
- public static String password = "66da74b2-f141-4b01-ae58-ac6ce4cfcc47";
-
- /**
- * 致远客户端
- * 文献:http://open.seeyon.com/book/ctp/restjie-kou/restjie-kou-java-ke-hu-duan.html
- * @return
- */
- public static CTPRestClient getRestClient() {
- CTPServiceClientManager clientManager = CTPServiceClientManager.getInstance(restUrl);
- CTPRestClient client = null;
- try {
- client = clientManager.getRestClient();
- //登录校验,成功返回true,失败返回false,此过程并会把验证通过获取的token保存在缓存中
- //再请求访问其他资源时会自动把token放入请求header中。
- client.authenticate(userName, password);
- } catch (Exception e) {
- log.error("致远客户端获取异常:{}",e.getMessage(),e);
- }
- return client;
- }
-
-}
diff --git a/src/main/java/com/qs/serve/modules/tbs/common/TbsSeeYonConst.java b/src/main/java/com/qs/serve/modules/tbs/common/TbsSeeYonConst.java
new file mode 100644
index 00000000..2684833e
--- /dev/null
+++ b/src/main/java/com/qs/serve/modules/tbs/common/TbsSeeYonConst.java
@@ -0,0 +1,16 @@
+package com.qs.serve.modules.tbs.common;
+
+/**
+ * @author YenHex
+ * @since 2022/11/23
+ */
+public interface TbsSeeYonConst {
+
+ String COST_APPLY_FORM = "CostBill_Test";
+
+ String COST_APPLY_USER = "banzhang1";
+
+ String API_PROCESS_CREATE = "/process/create";
+ String API_GET_FORM_ID = "/process/getFormId";
+
+}
diff --git a/src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityController.java b/src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityController.java
index 1efc3cb4..73dd19fc 100644
--- a/src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityController.java
+++ b/src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityController.java
@@ -10,7 +10,9 @@ import com.qs.serve.common.model.enums.SystemModule;
import com.qs.serve.common.util.CopierUtil;
import com.qs.serve.common.util.PageUtil;
import com.qs.serve.modules.bms.service.BmsSupplierService;
+import com.qs.serve.modules.tbs.common.TbsGoodsType;
import com.qs.serve.modules.tbs.entity.*;
+import com.qs.serve.modules.tbs.entity.vo.TbsActivityCenterGoodsVo;
import com.qs.serve.modules.tbs.service.*;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@@ -21,6 +23,7 @@ import com.qs.serve.modules.tbs.entity.vo.TbsActivityVo;
import com.qs.serve.modules.tbs.entity.bo.TbsActivityBo;
import javax.validation.Valid;
+import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@@ -56,7 +59,6 @@ public class TbsActivityController {
public R> getList(TbsActivityVo param){
TbsActivity entity = CopierUtil.copy(param,new TbsActivity());
LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(entity);
- PageUtil.startPage();
List list = tbsActivityService.list(lqw);
for (TbsActivity activity : list) {
QueryWrapper qw = new QueryWrapper<>();
@@ -65,6 +67,17 @@ public class TbsActivityController {
if(goodsList.size()>0){
activity.setGoodsType(goodsList.get(0).getTargetType());
}
+ for (TbsActivityGoods goods : goodsList) {
+ if(goods.getTargetType().equals(TbsGoodsType.sku.name())){
+ try {
+ String[] names = goods.getTargetLevelPathNames().split("_");
+ goods.setSkuName(names[names.length-1]);
+ goods.setSpuName(names[names.length-2]);
+ } catch (Exception e) {
+ log.error("格式错误:{}",goods.getTargetLevelPathNames());
+ }
+ }
+ }
activity.setGoodsList(goodsList);
List activitySubjects = activitySubjectService.list(qw);
activity.setSubjectCenterList(activitySubjects);
@@ -87,6 +100,42 @@ public class TbsActivityController {
return R.byPageHelperList(list);
}
+ /**
+ * 费用详情列表
+ * @param id
+ * @return
+ */
+ @GetMapping("/getCostListById/{id}")
+ @SysLog(module = SystemModule.Budget, title = "费用活动", biz = BizType.QUERY)
+ @PreAuthorize("hasRole('tbs:activity:query')")
+ public R> getCostListById(@PathVariable("id") String id){
+ QueryWrapper qw = new QueryWrapper();
+ qw.eq("cost_apply_id",id);
+ List activityList = tbsActivityService.list(qw);
+ List centerGoodsList = activityCenterGoodsService.list(qw);
+ List voList = new ArrayList<>();
+ for (TbsActivityCenterGoods centerGoods : centerGoodsList) {
+ TbsActivityCenterGoodsVo goods = CopierUtil.copy(centerGoods,new TbsActivityCenterGoodsVo());
+ for (TbsActivity activity : activityList) {
+ if(goods.getActivityId().equals(activity.getId())){
+ goods.setActivityInfo(activity);
+ break;
+ }
+ }
+ if(goods.getTargetType().equals(TbsGoodsType.sku.name())){
+ try {
+ String[] names = goods.getTargetLevelPathNames().split("_");
+ goods.setSkuName(names[names.length-1]);
+ goods.setSpuName(names[names.length-2]);
+ } catch (Exception e) {
+ log.error("格式错误:{}",goods.getTargetLevelPathNames());
+ }
+ }
+ voList.add(goods);
+ }
+ return R.ok(voList);
+ }
+
/**
* ID查询
* @param id
@@ -102,6 +151,17 @@ public class TbsActivityController {
List goodsList = activityGoodsService.list(qw);
if(goodsList.size()>0){
activity.setGoodsType(goodsList.get(0).getTargetType());
+ goodsList.forEach(goods->{
+ if(goods.getTargetType().equals(TbsGoodsType.sku.name())){
+ try {
+ String[] names = goods.getTargetLevelPathNames().split("_");
+ goods.setSkuName(names[names.length-1]);
+ goods.setSpuName(names[names.length-2]);
+ } catch (Exception e) {
+ log.error("格式错误:{}",goods.getTargetLevelPathNames());
+ }
+ }
+ });
}
activity.setGoodsList(goodsList);
List activityChannels = activityChannelService.list(qw);
@@ -122,6 +182,17 @@ public class TbsActivityController {
}
activity.setSubjectCenterList(activitySubjects);
List activityCenterGoodsList = activityCenterGoodsService.list(qw);
+ activityCenterGoodsList.forEach(goods->{
+ if(goods.getTargetType().equals(TbsGoodsType.sku.name())){
+ try {
+ String[] names = goods.getTargetLevelPathNames().split("_");
+ goods.setSkuName(names[names.length-1]);
+ goods.setSpuName(names[names.length-2]);
+ } catch (Exception e) {
+ log.error("格式错误:{}",goods.getTargetLevelPathNames());
+ }
+ }
+ });
activity.setCenterGoodsList(activityCenterGoodsList);
return R.ok(activity);
}
diff --git a/src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyController.java b/src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyController.java
index 0ece2411..1cffc394 100644
--- a/src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyController.java
+++ b/src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyController.java
@@ -1,18 +1,20 @@
package com.qs.serve.modules.tbs.controller;
+import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.qs.serve.common.config.properties.SeeYonProperties;
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.AuthContextUtils;
-import com.qs.serve.common.util.PageUtil;
-import com.qs.serve.common.util.CopierUtil;
+import com.qs.serve.common.util.*;
+import com.qs.serve.common.util.model.DateFormatString;
import com.qs.serve.modules.bms.entity.BmsSupplier;
import com.qs.serve.modules.bms.service.BmsSupplierService;
import com.qs.serve.modules.sys.entity.SysUser;
import com.qs.serve.modules.sys.service.SysUserService;
+import com.qs.serve.modules.tbs.common.TbsSeeYonConst;
import com.qs.serve.modules.tbs.entity.TbsActivity;
import com.qs.serve.modules.tbs.service.TbsActivityService;
import lombok.AllArgsConstructor;
@@ -26,7 +28,10 @@ import com.qs.serve.modules.tbs.entity.TbsCostApply;
import com.qs.serve.modules.tbs.service.TbsCostApplyService;
import javax.validation.Valid;
+import java.time.LocalDateTime;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
/**
* 预算 费用申请
@@ -43,6 +48,7 @@ public class TbsCostApplyController {
private BmsSupplierService bmsSupplierService;
private SysUserService sysUserService;
private TbsActivityService tbsActivityService;
+ private SeeYonProperties seeYonProperties;
/**
* 列表
@@ -87,7 +93,54 @@ public class TbsCostApplyController {
return R.ok(tbsCostApply);
}
-
+ /**
+ * 提交费用申请
+ * @param id
+ * @return
+ */
+ @PostMapping("/commit/{id}")
+ @SysLog(module = SystemModule.Budget, title = "费用申请", biz = BizType.UPDATE)
+ @PreAuthorize("hasRole('tbs:costApply:update')")
+ public R> updateState(@PathVariable("id") String id){
+ if(!seeYonProperties.getEnable()){
+ return R.error("远程服务未开启");
+ }
+ String url = seeYonProperties.getUrl();
+ SysUser sysUser = sysUserService.getById(AuthContextUtils.getSysUserId());
+ TbsCostApply tbsCostApply = tbsCostApplyService.getById(id);
+ if(tbsCostApply.getChargeState().equals(0)){
+ Map data = new HashMap<>(10);
+ data.put("empId",sysUser.getCode());
+ data.put("applyTime",DateUtils.format(LocalDateTime.now(), DateFormatString.DATE_TIME));
+ data.put("money",tbsCostApply.getTotalActivityAmount());
+ data.put("costApplyCode",tbsCostApply.getId());
+ data.put("costApplyId",tbsCostApply.getId());
+ Map param = new HashMap<>(10);
+ param.put("templateCode", TbsSeeYonConst.COST_APPLY_FORM);
+ param.put("memberLoginName",TbsSeeYonConst.COST_APPLY_USER);
+ param.put("subjectTitle",tbsCostApply.getChargeTheme());
+ param.put("dataJson",JsonUtil.objectToJson(data));
+ R flowIdResult = HttpUtil.doPostResult(url+TbsSeeYonConst.API_PROCESS_CREATE, JsonUtil.objectToJson(param),null);
+ if(flowIdResult.getStatus()!=200){
+ return R.error("远程服务调用失败");
+ }
+ String flowId = flowIdResult.getData();
+ String formId = null;
+ R formIdResult = HttpUtil.doGetResult(url+TbsSeeYonConst.API_GET_FORM_ID,null);
+ if(formIdResult.getStatus()==200){
+ formId = formIdResult.getData();
+ }
+ TbsCostApply costApply = new TbsCostApply();
+ costApply.setId(tbsCostApply.getId());
+ costApply.setSyFlowId(flowId);
+ costApply.setSyFormId(formId);
+ tbsCostApplyService.updateById(costApply);
+ return R.ok();
+ }else if (tbsCostApply.getChargeState().equals(4)){
+ //todo 驳回重新申请
+ }
+ return R.error("当前状态不可申请");
+ }
/**
* 更新
@@ -102,8 +155,8 @@ public class TbsCostApplyController {
entity.setId(param.getId());
entity.setRemark(param.getRemark());
entity.setChargeTheme(param.getChargeTheme());
- boolean result = tbsCostApplyService.updateById(entity);
- return R.isTrue(result);
+ tbsCostApplyService.updateById(entity);
+ return R.ok();
}
/**
@@ -123,8 +176,8 @@ public class TbsCostApplyController {
entity.setUserId(sysUser.getId());
entity.setUserCode(sysUser.getCode());
entity.setUserName(sysUser.getName());
- boolean result = tbsCostApplyService.save(entity);
- return R.isTrue(result);
+ tbsCostApplyService.save(entity);
+ return R.ok(entity);
}
/**
diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/TbsActivity.java b/src/main/java/com/qs/serve/modules/tbs/entity/TbsActivity.java
index 68e2cbc6..a819b73e 100644
--- a/src/main/java/com/qs/serve/modules/tbs/entity/TbsActivity.java
+++ b/src/main/java/com/qs/serve/modules/tbs/entity/TbsActivity.java
@@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
+import com.qs.serve.modules.bms.entity.BmsSupplier;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import org.springframework.format.annotation.DateTimeFormat;
@@ -127,26 +128,26 @@ public class TbsActivity implements Serializable {
/** 产品详情 */
@TableField(exist = false)
- private List> goodsList;
+ private List goodsList;
/** 客户详情1(三选一) */
@TableField(exist = false)
- private List> customChannelList;
+ private List customChannelList;
/** 客户详情2 */
@TableField(exist = false)
- private List> customChannelPointList;
+ private List customChannelPointList;
/** 客户详情3 */
@TableField(exist = false)
- private Object customSupplier;
+ private BmsSupplier customSupplier;
/** 成本中心与商品配比列表 */
@TableField(exist = false)
- private List> centerGoodsList;
+ private List centerGoodsList;
/** 科目与成本中心 */
@TableField(exist = false)
- private List> subjectCenterList;
+ private List subjectCenterList;
}
diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/TbsActivityCenterGoods.java b/src/main/java/com/qs/serve/modules/tbs/entity/TbsActivityCenterGoods.java
index 42162eb3..0a8a7e6f 100644
--- a/src/main/java/com/qs/serve/modules/tbs/entity/TbsActivityCenterGoods.java
+++ b/src/main/java/com/qs/serve/modules/tbs/entity/TbsActivityCenterGoods.java
@@ -31,6 +31,8 @@ public class TbsActivityCenterGoods implements Serializable {
@TableId(type = IdType.AUTO)
private Long id;
+ private String centerGoodsCode;
+
/** 费用申请id */
@NotNull(message = "费用申请id不能为空")
private Long costApplyId;
@@ -61,6 +63,9 @@ public class TbsActivityCenterGoods implements Serializable {
@NotNull(message = "费用占比不能为空")
private BigDecimal centerGoodsRate;
+ /** 费用已用额度 */
+ private BigDecimal usedAmount;
+
/** 成本中心类型 */
@NotBlank(message = "成本中心类型不能为空")
@Length(max = 50,message = "成本中心类型长度不能超过50字")
@@ -142,5 +147,11 @@ public class TbsActivityCenterGoods implements Serializable {
@JsonProperty
private String delFlag;
+ @TableField(exist = false)
+ private String spuName;
+
+ @TableField(exist = false)
+ private String skuName;
+
}
diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/TbsActivityGoods.java b/src/main/java/com/qs/serve/modules/tbs/entity/TbsActivityGoods.java
index 02c045c9..06813e87 100644
--- a/src/main/java/com/qs/serve/modules/tbs/entity/TbsActivityGoods.java
+++ b/src/main/java/com/qs/serve/modules/tbs/entity/TbsActivityGoods.java
@@ -100,5 +100,11 @@ public class TbsActivityGoods implements Serializable {
@JsonProperty
private String delFlag;
+ @TableField(exist = false)
+ private String spuName;
+
+ @TableField(exist = false)
+ private String skuName;
+
}
diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/TbsCostApply.java b/src/main/java/com/qs/serve/modules/tbs/entity/TbsCostApply.java
index 6f61b41c..bac5b02a 100644
--- a/src/main/java/com/qs/serve/modules/tbs/entity/TbsCostApply.java
+++ b/src/main/java/com/qs/serve/modules/tbs/entity/TbsCostApply.java
@@ -50,8 +50,8 @@ public class TbsCostApply implements Serializable {
@Length(max = 30,message = "客户名称长度不能超过30字")
private String supplierName;
- /** 状态:0=未发布;1=待执行;2=待核销;完成; */
- @NotNull(message = "状态:0=未发布;1=待执行;2=待核销;完成;不能为空")
+ /** 状态:0=未发布;1=审批中;2=待执行;3=完成;4-被驳回 */
+ @NotNull(message = "状态不能为空")
private Integer chargeState;
/** 备注 */
@@ -63,14 +63,18 @@ public class TbsCostApply implements Serializable {
@Length(max = 32,message = "申请人长度不能超过32字")
private String userId;
- /** */
+ /** 用户编码 */
@Length(max = 32,message = "长度不能超过32字")
private String userCode;
- /** */
+ /** 用户名称 */
@Length(max = 32,message = "长度不能超过32字")
private String userName;
+ private String syFormId;
+
+ private String syFlowId;
+
/** 创建时间 */
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/vo/TbsActivityCenterGoodsVo.java b/src/main/java/com/qs/serve/modules/tbs/entity/vo/TbsActivityCenterGoodsVo.java
index ca14fbbd..ca0ade77 100644
--- a/src/main/java/com/qs/serve/modules/tbs/entity/vo/TbsActivityCenterGoodsVo.java
+++ b/src/main/java/com/qs/serve/modules/tbs/entity/vo/TbsActivityCenterGoodsVo.java
@@ -5,9 +5,14 @@ import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.IdType;
+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 com.qs.serve.modules.tbs.entity.TbsActivity;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import org.springframework.format.annotation.DateTimeFormat;
@@ -28,6 +33,8 @@ public class TbsActivityCenterGoodsVo implements Serializable {
/** id */
private Long id;
+ private String centerGoodsCode;
+
/** 费用申请id */
private Long costApplyId;
@@ -44,73 +51,70 @@ public class TbsActivityCenterGoodsVo implements Serializable {
private String subjectName;
/** 费用额度 */
- private BigDecimal amount;
+ private BigDecimal centerGoodsAmount;
+
+ /** 费用占比 */
+ private BigDecimal centerGoodsRate;
+
+ /** 费用已用额度 */
+ private BigDecimal usedAmount;
/** 成本中心类型 */
private String centerType;
/** 成本中心id */
- private Long centerId;
+ private String centerId;
/** 成本中心编码 */
+ @NotBlank(message = "成本中心编码不能为空")
+ @Length(max = 50,message = "成本中心编码长度不能超过50字")
private String centerCode;
/** 成本中心名称 */
+ @NotBlank(message = "成本中心名称不能为空")
+ @Length(max = 50,message = "成本中心名称长度不能超过50字")
private String centerName;
- /** 费用占比 */
- private BigDecimal centerGoodsRate;
/** 目标类型(brand、category、series、spu、sku) */
+ @NotBlank(message = "目标类型(brand、category、series、spu、sku)不能为空")
+ @Length(max = 30,message = "目标类型(brand、category、series、spu、sku)长度不能超过30字")
private String targetType;
/** 目标id */
+ @NotNull(message = "目标id不能为空")
private Long targetId;
/** 目标编码 */
+ @NotBlank(message = "目标编码不能为空")
+ @Length(max = 30,message = "目标编码长度不能超过30字")
private String targetCode;
/** 目标名称 */
+ @NotBlank(message = "目标名称不能为空")
+ @Length(max = 30,message = "目标名称长度不能超过30字")
private String targetName;
- /** 目标父级id */
- private Long targetParentId;
-
- /** 目标父级编码 */
- private String targetParentCode;
-
- /** 目标父级名称 */
- private String targetParentName;
+ /** 目标等级id路径 */
+ @Length(max = 600,message = "目标等级路径长度不能超过600字")
+ private String targetLevelPathIds;
- /** 目标等级路径 */
- private String targetLevelPath;
+ /** 目标等级名称路径 */
+ @Length(max = 600,message = "目标等级路径长度不能超过600字")
+ private String targetLevelPathNames;
/** 备注 */
+ @Length(max = 255,message = "备注长度不能超过255字")
private String remark;
- /** 创建时间 */
- @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
- private LocalDateTime createTime;
-
- /** 最后更新时间 */
- @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
- private LocalDateTime updateTime;
-
- /** 所属租户 */
- @JsonIgnore
- @JsonProperty
- private String tenantId;
-
- /** 创建人 */
- private String createBy;
+ @TableField(exist = false)
+ private String spuName;
- /** 更新人 */
- private String updateBy;
+ @TableField(exist = false)
+ private String skuName;
- /** 逻辑删除标记(0:显示;1:隐藏) */
- @JsonIgnore
- @JsonProperty
- private String delFlag;
+ /** 活动信息(活动执行时间,预计核销时间、活动简介) */
+ private TbsActivity activityInfo;
}
diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsActivityServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsActivityServiceImpl.java
index 11467108..e3650ae2 100644
--- a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsActivityServiceImpl.java
+++ b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsActivityServiceImpl.java
@@ -196,9 +196,11 @@ public class TbsActivityServiceImpl extends ServiceImpl activityGoodsList,
List activityCenterGoodsList,
TbsCostApply costApply,TbsActivity activity){
- for (TbsActivityCenterGoodsBo centerGoodsBo : activityBo.getActivityCenterGoodsList()) {
+ for (int i = 0; i < activityBo.getActivityCenterGoodsList().size(); i++) {
+ TbsActivityCenterGoodsBo centerGoodsBo = activityBo.getActivityCenterGoodsList().get(i);
BmsSubject subject = subjectMap.get(centerGoodsBo.getSubjectId());
TbsActivityCenterGoods centerGoods = new TbsActivityCenterGoods();
+ centerGoods.setCenterGoodsCode(activity.getActivityCode()+"_"+(i+1));
//设置成本中心
String key = centerGoodsBo.getCenterType()+":"+centerGoodsBo.getCenterId();
TbsCenterDto tbsCenterDto = centerDtoMap.get(key);
@@ -352,7 +354,8 @@ public class TbsActivityServiceImpl extends ServiceImpl