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