diff --git a/src/main/java/com/qs/serve/common/framework/manager/AsyncFactory.java b/src/main/java/com/qs/serve/common/framework/manager/AsyncFactory.java index b4009dfc..db89f0d4 100644 --- a/src/main/java/com/qs/serve/common/framework/manager/AsyncFactory.java +++ b/src/main/java/com/qs/serve/common/framework/manager/AsyncFactory.java @@ -57,7 +57,7 @@ public class AsyncFactory { public void run() { try { AuthContextUtils.setTenant("001"); - Thread.sleep(10*1000); + Thread.sleep(20*1000); log.debug("submitPolicy"); TzcPolicyOperationServiceImpl operationService = SpringUtils.getBean(TzcPolicyOperationServiceImpl.class); String summeryResult = operationService.checkAffairSummery(policyId.toString()); @@ -85,7 +85,7 @@ public class AsyncFactory { public void run() { try { AuthContextUtils.setTenant("001"); - Thread.sleep(10*1000); + Thread.sleep(20*1000); log.debug("submitCostApply"); TbsCostApplyOperationServiceImpl applyOperationService = SpringUtils.getBean(TbsCostApplyOperationServiceImpl.class); String summeryResult = applyOperationService.checkAffairSummery(costApply.getId().toString()); @@ -115,7 +115,7 @@ public class AsyncFactory { public void run() { try { AuthContextUtils.setTenant("001"); - Thread.sleep(10*1000); + Thread.sleep(20*1000); log.debug("saveVtbSubmit"); VtbVerificationOperationServiceImpl verificationOperationService = SpringUtils.getBean(VtbVerificationOperationServiceImpl.class); String summeryResult = verificationOperationService.checkAffairSummery(verification.getId().toString()); diff --git a/src/main/java/com/qs/serve/modules/goods/common/GoodsType.java b/src/main/java/com/qs/serve/modules/goods/common/GoodsType.java new file mode 100644 index 00000000..488634b0 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/goods/common/GoodsType.java @@ -0,0 +1,31 @@ +package com.qs.serve.modules.goods.common; + +import lombok.AllArgsConstructor; + +/** + * @author YenHex + * @since 2023/7/28 + */ +@AllArgsConstructor +public enum GoodsType { + + SKU("sku","单品"), + SPU("spu","SKU"), + Category("category","品类"), + Series("series","系列"), + Brand("brand","品牌"), + ; + + String code; + String name; + + public static String getName(String code){ + for (GoodsType value : GoodsType.values()) { + if(value.code.equals(code)){ + return value.name; + } + } + return null; + } + +} diff --git a/src/main/java/com/qs/serve/modules/tbs/common/TbsCostApplyState.java b/src/main/java/com/qs/serve/modules/tbs/common/TbsCostApplyState.java index 60e39675..053eed2c 100644 --- a/src/main/java/com/qs/serve/modules/tbs/common/TbsCostApplyState.java +++ b/src/main/java/com/qs/serve/modules/tbs/common/TbsCostApplyState.java @@ -15,7 +15,7 @@ import java.util.List; @AllArgsConstructor public enum TbsCostApplyState { - //状态:0=未发布;1=审批中;2=待执行;3=完成;4-被驳回;5-中止;6-作废;7-异动 + //状态:0=未发布;1=审批中;2=待执行;3=完成;4-被驳回;5-中止;6-作废;7-异动;8-异动失败 State_0_unPublish(0), State_1_apply(1), State_2_actioning(2), @@ -23,7 +23,8 @@ public enum TbsCostApplyState { State_4_refused(4), State_5_stop(5), State_6_remove(6), - State_7_changed(6) + State_7_changed(7), + State_8_changed_fail(8) ; private Integer code; 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 776469c9..939b4f12 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 @@ -268,10 +268,23 @@ public class TbsCostApplyController { @PostMapping("/settingWithChange/{id}") @SysLog(module = SystemModule.Budget, title = "费用申请", biz = BizType.INSERT) @Transactional(rollbackFor = Exception.class) - public R save(@PathVariable("id") Long id){ + public R settingWithChange(@PathVariable("id") Long id){ return R.ok(costApplyPart1Service.toSetChanged(id)); } + /** + * 异动申请 + * @param id + * @return + */ + @PostMapping("/cancelWithChange/{id}") + @SysLog(module = SystemModule.Budget, title = "费用申请", biz = BizType.INSERT) + @Transactional(rollbackFor = Exception.class) + public R cancelWithChange(@PathVariable("id") Long id){ + costApplyPart1Service.cancelSetChanged(id); + return R.ok(); + } + /** * 根据模板,新增费用及活动 * @param param 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 2bd2a4fd..0b47d81f 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 @@ -197,6 +197,9 @@ public class TbsActivity implements Serializable { private String templateBudgetIds; + /** 是否取消(异动时设置) */ + private Integer cancelFlag; + @TableField(exist = false) private List attachList; 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 41179e4c..9d5942e0 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 @@ -152,8 +152,16 @@ public class TbsCostApply implements Serializable { private Integer cancelFlag; + /** + * 异动来源id + */ private Long changeSourceId; + /** + * 异动继承的id + */ + private Long changeExtendId; + @TableField(exist = false) private String affairId; diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/dto/TbsContractCostSubItem.java b/src/main/java/com/qs/serve/modules/tbs/entity/dto/TbsContractCostSubItem.java index 7646821d..8579b4d1 100644 --- a/src/main/java/com/qs/serve/modules/tbs/entity/dto/TbsContractCostSubItem.java +++ b/src/main/java/com/qs/serve/modules/tbs/entity/dto/TbsContractCostSubItem.java @@ -34,7 +34,7 @@ public class TbsContractCostSubItem { public static class Payment{ private String payItem; private String payCondition; - private BigDecimal applyMoney; + private BigDecimal payMoney; private String payDate; private String actualPayDate; private String payCompleteState; diff --git a/src/main/java/com/qs/serve/modules/tbs/mapper/TbsBudgetLogMapper.java b/src/main/java/com/qs/serve/modules/tbs/mapper/TbsBudgetLogMapper.java index a5d7e404..73011175 100644 --- a/src/main/java/com/qs/serve/modules/tbs/mapper/TbsBudgetLogMapper.java +++ b/src/main/java/com/qs/serve/modules/tbs/mapper/TbsBudgetLogMapper.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.qs.serve.modules.tbs.entity.TbsBudgetLog; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; +import org.apache.ibatis.annotations.Update; import java.math.BigDecimal; @@ -22,5 +23,14 @@ public interface TbsBudgetLogMapper extends BaseMapper { @Select("SELECT ROUND(abs(SUM(amount)),2) FROM `tbs_budget_log` WHERE opt_type in (1,4,5,6,11,12,13,14,15) and del_flag = '0'") BigDecimal countUsedBudgetAmount(); + + /** + * 更新删除预算log记录,用于异动 + * @param costApplyId + * @param delState + */ + @Update("update tbs_budget_log set del_flag = #{delState} WHERE cost_apply_id = #{costApplyId}}") + void updateLogDelFlagByCostApply(@Param("costApplyId")Long costApplyId,@Param("delState")Integer delState); + } diff --git a/src/main/java/com/qs/serve/modules/tbs/service/TbsCostApplyPart1Service.java b/src/main/java/com/qs/serve/modules/tbs/service/TbsCostApplyPart1Service.java index 7a32ed00..fe1da91c 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/TbsCostApplyPart1Service.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/TbsCostApplyPart1Service.java @@ -16,4 +16,10 @@ public interface TbsCostApplyPart1Service { */ TbsCostApply toSetChanged(Long costId); + /** + * 取消异动 + * @param costId + */ + void cancelSetChanged(Long costId); + } diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyOperationServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyOperationServiceImpl.java index 783fc9ad..b3e6ae9a 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyOperationServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyOperationServiceImpl.java @@ -31,6 +31,7 @@ import com.qs.serve.modules.tbs.entity.bo.TbsAffairCommitBo; import com.qs.serve.modules.tbs.entity.vo.CtpAffairVo; import com.qs.serve.modules.tbs.mapper.TbsActivityMapper; import com.qs.serve.modules.tbs.mapper.TbsActivitySlottingFeeMapper; +import com.qs.serve.modules.tbs.mapper.TbsBudgetLogMapper; import com.qs.serve.modules.tbs.service.TbsBudgetLogService; import com.qs.serve.modules.tbs.service.TbsCostApplyService; import lombok.AllArgsConstructor; @@ -61,6 +62,7 @@ public class TbsCostApplyOperationServiceImpl implements SeeYonOperationService private final TbsActivityMapper tbsActivityMapper; private final SysUserMapper userMapper; private final TbsActivitySlottingFeeMapper activitySlottingFeeMapper; + private final TbsBudgetLogMapper tbsBudgetLogMapper; @Override public SysUserService getSysUserService() { @@ -215,6 +217,10 @@ public class TbsCostApplyOperationServiceImpl implements SeeYonOperationService apply.setId(targetId); apply.setChargeState(TbsCostApplyState.State_2_actioning.getCode()); costApplyService.updateById(apply); + if(apply.getChangeSourceId()!=null){ + //移除 + tbsBudgetLogMapper.updateLogDelFlagByCostApply(apply.getChangeSourceId(),1); + } //更新活动通过时间 TbsActivity tbsActivity = new TbsActivity(); tbsActivity.setCostPassTime(LocalDateTime.now()); diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyPart1ServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyPart1ServiceImpl.java index 1e722b9e..04994c1f 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyPart1ServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyPart1ServiceImpl.java @@ -30,6 +30,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List; +import java.util.stream.Collectors; /** * @author YenHex @@ -59,10 +60,14 @@ public class TbsCostApplyPart1ServiceImpl implements TbsCostApplyPart1Service { public TbsCostApply toSetChanged(Long costId) { String userId = AuthContextUtils.getSysUserId(); TbsCostApply orgCost = tbsCostApplyService.getById(costId); +// if(orgCost.getChangeSourceId()!=null){ +// Assert.throwEx("异动单据不可再异动,请取消源单据异动后进行"); +// } if(!userId.equals(orgCost.getUserId())){ Assert.throwEx("拒绝访问"); } - if(!orgCost.getChargeState().equals(TbsCostApplyState.State_2_actioning.getCode())){ + if(!orgCost.getChargeState().equals(TbsCostApplyState.State_2_actioning.getCode())&& + !orgCost.getChargeState().equals(TbsCostApplyState.State_4_refused.getCode())){ Assert.throwEx("费用申请的状态不支持"); } //判断是否有核销记录 @@ -79,6 +84,11 @@ public class TbsCostApplyPart1ServiceImpl implements TbsCostApplyPart1Service { //复制新记录 TbsCostApply costApply = CopierUtil.copy(orgCost,new TbsCostApply()); costApply.setId(null); + costApply.setCreateBy(null); + costApply.setCreateTime(null); + costApply.setUpdateTime(null); + costApply.setUpdateBy(null); + costApply.setChangeSourceId(orgCost.getId()); costApply.setChargeState(TbsCostApplyState.State_0_unPublish.getCode()); tbsCostApplyService.save(costApply); final Long newCostApplyId = costApply.getId(); @@ -92,15 +102,27 @@ public class TbsCostApplyPart1ServiceImpl implements TbsCostApplyPart1Service { }); //活动相关复制 List activityList = tbsActivityMapper.selectList(qw_cost_apply); + //更新状态 + List activityIds = activityList.stream().map(TbsActivity::getId).collect(Collectors.toList()); + TbsActivity activity4Update = new TbsActivity(); + activity4Update.setCancelFlag(1); + LambdaQueryWrapper activityLqw = new LambdaQueryWrapper<>(); + activityLqw.in(TbsActivity::getId,activityIds); + tbsActivityMapper.update(activity4Update,activityLqw); this.copyAboutActivityData(newCostApplyId, activityList); - //更变旧记录 orgCost.setChargeState(TbsCostApplyState.State_7_changed.getCode()); orgCost.setCancelFlag(1); + orgCost.setChangeExtendId(costApply.getId()); tbsCostApplyService.updateById(orgCost); return costApply; } + @Override + public void cancelSetChanged(Long costId) { + + } + /** * 活动相关复制 * @param newCostApplyId @@ -112,6 +134,12 @@ public class TbsCostApplyPart1ServiceImpl implements TbsCostApplyPart1Service { Long orgActivityId = orgActivity.getId(); //重新保存 orgActivity.setId(null); + orgActivity.setCostApplyId(newCostApplyId); + orgActivity.setActivityState(0); + orgActivity.setCreateBy(null); + orgActivity.setCreateTime(null); + orgActivity.setUpdateTime(null); + orgActivity.setUpdateBy(null); tbsActivityMapper.insert(orgActivity); final Long newActivityId = orgActivity.getId(); diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java index 07ec2dec..17eec755 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java @@ -27,6 +27,7 @@ import com.qs.serve.modules.bms.service.BmsSubjectService; import com.qs.serve.modules.bms.service.BmsSupplierService; import com.qs.serve.modules.erp.entity.dto.ErpDispatchSumVo; import com.qs.serve.modules.erp.mapper.ErpDispatchDataMapper; +import com.qs.serve.modules.goods.common.GoodsType; import com.qs.serve.modules.seeyon.entity.BaseCreateCallbackBo; import com.qs.serve.modules.seeyon.entity.BaseCreateProcessBo; import com.qs.serve.modules.seeyon.service.SeeYonRequestService; @@ -58,10 +59,13 @@ import org.springframework.beans.BeansException; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.io.UnsupportedEncodingException; import java.math.BigDecimal; import java.math.RoundingMode; +import java.net.URLEncoder; import java.time.LocalDate; import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; import java.util.*; import java.util.stream.Collectors; @@ -436,15 +440,26 @@ public class TbsCostApplyServiceImpl extends ServiceImpl attachIds = Arrays.asList(contract.getAttachIds()); List attachList = sysAttachService.listByIds(attachIds); - urls = attachList.stream().map(SysAttach::getPath).collect(Collectors.joining(" , ")); + urls = attachList.stream().map(a->{ + if(a.getPath()!=null){ + try { + String tmp = URLEncoder.encode(a.getPath(), "UTF8").replace("%2F","/"); + return ossPrefix+tmp; + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + } + return ""; + }).collect(Collectors.joining(" , ")); } data.put("contractFile",urls); }else { @@ -473,7 +488,7 @@ public class TbsCostApplyServiceImpl extends ServiceImpl + + + @@ -59,6 +62,9 @@ tbs_cost_apply.`update_by`, tbs_cost_apply.`del_flag`, tbs_cost_apply.`template_id`, + tbs_cost_apply.`change_source_id`, + tbs_cost_apply.`change_extend_id`, + tbs_cost_apply.`cancel_flag`, tbs_cost_apply.`template_title`