From 8eb021f3299abe55212d3d34d9557b1a79b99af3 Mon Sep 17 00:00:00 2001 From: Yen Date: Mon, 14 Aug 2023 09:11:16 +0800 Subject: [PATCH 1/8] =?UTF-8?q?=E9=A2=84=E7=AE=97=E5=AE=A1=E6=89=B9?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E8=A1=A5=E5=85=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/model/enums/SystemModule.java | 1 + .../controller/TbsBudgetChangeController.java | 37 +++++++++++++++---- .../controller/TbsCostApplyController.java | 8 ++++ .../TbsScheduleItemBudgetController.java | 1 + .../modules/tbs/entity/TbsBudgetChange.java | 4 +- .../tbs/entity/TbsBudgetChangeCondition.java | 2 +- .../tbs/entity/TbsBudgetCondition.java | 2 + .../tbs/entity/TbsScheduleItemBudget.java | 1 + .../TbsBudgetChangeOperationServiceImpl.java | 1 + .../impl/TbsBudgetChangeServiceImpl.java | 6 ++- .../service/impl/TbsBudgetServiceImpl.java | 12 ++++++ .../mapper/tbs/TbsBudgetChangeMapper.xml | 2 + 12 files changed, 66 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/qs/serve/common/model/enums/SystemModule.java b/src/main/java/com/qs/serve/common/model/enums/SystemModule.java index 562a402e..5a9fc005 100644 --- a/src/main/java/com/qs/serve/common/model/enums/SystemModule.java +++ b/src/main/java/com/qs/serve/common/model/enums/SystemModule.java @@ -23,6 +23,7 @@ public enum SystemModule { SYSTEM("sys","系统"), UMS("ums","手机用户"), DATA("data","数据"), + Excel("excel","excel数据"), Tag("tag","标签"); String code; diff --git a/src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetChangeController.java b/src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetChangeController.java index dbb02922..8ada7b07 100644 --- a/src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetChangeController.java +++ b/src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetChangeController.java @@ -11,19 +11,14 @@ 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.tbs.common.dto.TbsBudgetChangeVo; -import com.qs.serve.modules.tbs.entity.TbsBudgetChangeCondition; -import com.qs.serve.modules.tbs.entity.TbsBudgetChangeScheduleItem; +import com.qs.serve.modules.tbs.entity.*; import com.qs.serve.modules.tbs.entity.so.TbsBudgetChangeSo; -import com.qs.serve.modules.tbs.service.TbsBudgetChangeConditionService; -import com.qs.serve.modules.tbs.service.TbsBudgetChangeScheduleItemService; +import com.qs.serve.modules.tbs.service.*; 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.tbs.entity.TbsBudgetChange; -import com.qs.serve.modules.tbs.service.TbsBudgetChangeService; - import javax.validation.Valid; import java.util.List; import java.util.Map; @@ -43,6 +38,9 @@ public class TbsBudgetChangeController { private TbsBudgetChangeService tbsBudgetChangeService; private TbsBudgetChangeScheduleItemService tbsBudgetChangeScheduleItemService; private TbsBudgetChangeConditionService tbsBudgetChangeConditionService; + private TbsBudgetService tbsBudgetService; + private TbsScheduleItemBudgetService tbsScheduleItemBudgetService; + private TbsBudgetConditionService tbsBudgetConditionService; /** * 预算审批整合翻页 @@ -78,6 +76,31 @@ public class TbsBudgetChangeController { return R.ok(budgetChange); } + /** + * budgetId查询 + * @param id + * @return + */ + @GetMapping("/apply/{id}") + public R getApplyBudget(@PathVariable("id")Long id ){ + TbsBudget budget = tbsBudgetService.getById(id); + LambdaQueryWrapper conditionLqw = new LambdaQueryWrapper<>(); + conditionLqw.eq(TbsBudgetCondition::getBudgetId,id); + conditionLqw.isNull(TbsBudgetCondition::getChangeId); + List conditions = tbsBudgetConditionService.list(conditionLqw); + LambdaQueryWrapper schItemBudgetLqw = new LambdaQueryWrapper<>(); + schItemBudgetLqw.eq(TbsScheduleItemBudget::getBudgetId,id); + List scheduleItemBudgetList = tbsScheduleItemBudgetService.list(schItemBudgetLqw); + TbsBudgetChange budgetChange = TbsBudgetChange.toNewObject(budget); + List budgetChangeConditions = conditions.stream() + .map(TbsBudgetChangeCondition::toNewObject).collect(Collectors.toList()); + List budgetChangeScheduleItemList = scheduleItemBudgetList.stream() + .map(TbsBudgetChangeScheduleItem::toNewObject).collect(Collectors.toList()); + budgetChange.setChangeScheduleItemList(budgetChangeScheduleItemList); + budgetChange.setChangeConditionList(budgetChangeConditions); + return R.ok(budgetChange); + } + /** * 列表 * @param param 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 fc86bf0c..c5ac2a41 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 @@ -215,8 +215,16 @@ public class TbsCostApplyController { @GetMapping("/getById/{id}") @SysLog(module = SystemModule.Budget, title = "费用申请", biz = BizType.QUERY) @PreAuthorize("hasRole('tbs:costApply:query')") + @Transactional(rollbackFor = Exception.class) public R getById(@PathVariable("id") String id){ TbsCostApply tbsCostApply = tbsCostApplyService.getById(id); + if(tbsCostApply.getChargeState().equals(TbsCostApplyState.State_1_apply.getCode())){ + try { + tbsCostApplyOperationServiceImpl.runCompensate(id); + } catch (Exception e) { + e.printStackTrace(); + } + } TbsCostContract contract = costContractService.getByCostApplyId(tbsCostApply.getId()); tbsCostApply.setContractInfo(contract); return R.ok(tbsCostApply); diff --git a/src/main/java/com/qs/serve/modules/tbs/controller/TbsScheduleItemBudgetController.java b/src/main/java/com/qs/serve/modules/tbs/controller/TbsScheduleItemBudgetController.java index 154a3ed2..186d5778 100644 --- a/src/main/java/com/qs/serve/modules/tbs/controller/TbsScheduleItemBudgetController.java +++ b/src/main/java/com/qs/serve/modules/tbs/controller/TbsScheduleItemBudgetController.java @@ -102,6 +102,7 @@ public class TbsScheduleItemBudgetController { @SysLog(module = SystemModule.Budget, title = "预算考核期项", biz = BizType.INSERT) @PreAuthorize("hasRole('tbs:schedule:insert')") public R save(@RequestBody @Valid TbsScheduleItemBudget param){ + param.setPreDispatchAmountFirst(param.getPreDispatchAmount()); TbsScheduleItemBudget entity = CopierUtil.copy(param,new TbsScheduleItemBudget()); boolean result = tbsScheduleItemBudgetService.save(entity); return R.isTrue(result); diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/TbsBudgetChange.java b/src/main/java/com/qs/serve/modules/tbs/entity/TbsBudgetChange.java index cd503618..cb0d4bf2 100644 --- a/src/main/java/com/qs/serve/modules/tbs/entity/TbsBudgetChange.java +++ b/src/main/java/com/qs/serve/modules/tbs/entity/TbsBudgetChange.java @@ -170,10 +170,10 @@ public class TbsBudgetChange implements Serializable { public static TbsBudgetChange toNewObject(TbsBudget source){ TbsBudgetChange budgetChange = new TbsBudgetChange(); - budgetChange.setId(source.getId()); + //budgetChange.setId(source.getId()); budgetChange.setBudgetId(source.getId()); //budgetChange.setChangeCode(source.getChangeCode()); - //budgetChange.setBudgetTitle(source.getBudgetTitle()); + budgetChange.setBudgetTitle(source.getBudgetCode()); budgetChange.setBudgetNumber(source.getBudgetNumber()); budgetChange.setBudgetCheckState(source.getBudgetCheckState()); budgetChange.setSubjectId(source.getSubjectId()); diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/TbsBudgetChangeCondition.java b/src/main/java/com/qs/serve/modules/tbs/entity/TbsBudgetChangeCondition.java index 9e213a2a..566fa1d9 100644 --- a/src/main/java/com/qs/serve/modules/tbs/entity/TbsBudgetChangeCondition.java +++ b/src/main/java/com/qs/serve/modules/tbs/entity/TbsBudgetChangeCondition.java @@ -106,7 +106,7 @@ public class TbsBudgetChangeCondition implements Serializable { public static TbsBudgetChangeCondition toNewObject(TbsBudgetCondition source){ TbsBudgetChangeCondition budgetChangeCondition = new TbsBudgetChangeCondition(); - budgetChangeCondition.setId(source.getId()); + //budgetChangeCondition.setId(source.getId()); //budgetChangeCondition.setChangeId(source.getChangeId()); budgetChangeCondition.setBudgetId(source.getBudgetId()); budgetChangeCondition.setTargetType(source.getTargetType()); diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/TbsBudgetCondition.java b/src/main/java/com/qs/serve/modules/tbs/entity/TbsBudgetCondition.java index 50136570..89a01b16 100644 --- a/src/main/java/com/qs/serve/modules/tbs/entity/TbsBudgetCondition.java +++ b/src/main/java/com/qs/serve/modules/tbs/entity/TbsBudgetCondition.java @@ -35,6 +35,8 @@ public class TbsBudgetCondition implements Serializable { @NotNull(message = "预算id不能为空") private Long budgetId; + private Long changeId; + /** 目标类型(brand、category、series、spu、sku) */ @NotBlank(message = "目标类型(brand、category、series、spu、sku)不能为空") @Length(max = 30,message = "目标类型(brand、category、series、spu、sku)长度不能超过30字") diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/TbsScheduleItemBudget.java b/src/main/java/com/qs/serve/modules/tbs/entity/TbsScheduleItemBudget.java index 96734014..8cbaa713 100644 --- a/src/main/java/com/qs/serve/modules/tbs/entity/TbsScheduleItemBudget.java +++ b/src/main/java/com/qs/serve/modules/tbs/entity/TbsScheduleItemBudget.java @@ -70,6 +70,7 @@ public class TbsScheduleItemBudget implements Serializable { @NotNull(message = "预估发货金额") private BigDecimal preDispatchAmount; + private BigDecimal preDispatchAmountFirst; /** 备注 */ @Length(max = 255,message = "备注长度不能超过255字") diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeOperationServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeOperationServiceImpl.java index 299279ba..ccd25d79 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeOperationServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeOperationServiceImpl.java @@ -88,6 +88,7 @@ public class TbsBudgetChangeOperationServiceImpl implements SeeYonOperationServi List budgetConditionList = new ArrayList<>(); for (TbsBudgetChangeCondition changeCondition : changeConditionList) { TbsBudgetCondition budgetCondition = TbsBudgetCondition.toNewObject(changeCondition); + budgetCondition.setChangeId(budgetChange.getId()); budgetConditionList.add(budgetCondition); } if(CollectionUtil.isNotEmpty(budgetConditionList)){ diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeServiceImpl.java index 747715df..14edb2d9 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeServiceImpl.java @@ -27,6 +27,7 @@ import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import com.qs.serve.modules.tbs.service.TbsBudgetChangeService; +import org.springframework.transaction.annotation.Transactional; import java.time.LocalDateTime; import java.util.ArrayList; @@ -67,11 +68,13 @@ public class TbsBudgetChangeServiceImpl extends ServiceImpl data = new HashMap<>(); data.put("exsp5", budgetChange.getChangeCode()); @@ -132,6 +135,7 @@ public class TbsBudgetChangeServiceImpl extends ServiceImpl private final BmsSubjectService subjectService; private final TbsScheduleService scheduleService; private final TbsBudgetConditionService budgetConditionService; + private final TbsBudgetChangeMapper tbsBudgetChangeMapper; private final TbsBudgetLogService budgetLogService; private final TbsScheduleItemBudgetService scheduleItemBudgetService; private final TbsScheduleItemService scheduleItemService; @@ -516,6 +518,16 @@ public class TbsBudgetServiceImpl extends ServiceImpl List attachList = attachService.listByIds(attachIds); budgetVo.setAttachList(attachList); } + //有更变时,修改为审批状态 + if(budgetVo.getBudgetState().equals(1)&&!budgetVo.getBudgetCheckState().equals(TbsBudgetCheckState.State_1_apply)){ + LambdaQueryWrapper change_lqw = new LambdaQueryWrapper<>(); + change_lqw.eq(TbsBudgetChange::getBudgetId,budgetVo.getId()); + change_lqw.eq(TbsBudgetChange::getBudgetCheckState,TbsBudgetCheckState.State_1_apply); + long count = tbsBudgetChangeMapper.selectCount(change_lqw); + if(count>0){ + budgetVo.setBudgetCheckState(TbsBudgetCheckState.State_1_apply); + } + } return budgetVo; } diff --git a/src/main/resources/mapper/tbs/TbsBudgetChangeMapper.xml b/src/main/resources/mapper/tbs/TbsBudgetChangeMapper.xml index 7fefa600..78f5a78f 100644 --- a/src/main/resources/mapper/tbs/TbsBudgetChangeMapper.xml +++ b/src/main/resources/mapper/tbs/TbsBudgetChangeMapper.xml @@ -56,6 +56,7 @@ tbs_budget.`remark` from tbs_budget where tbs_budget.del_flag = 0 and `tbs_budget`.`budget_check_state` != 0 + and `tbs_budget`.`id` = #{query.budgetId} and `tbs_budget`.`budget_code` like concat('%',#{query.title},'%') and `tbs_budget`.`budget_number` like concat('%',#{query.code},'%') and `tbs_budget`.`budget_check_state` = #{query.budgetCheckState} @@ -98,6 +99,7 @@ and (`tbs_budget_change`.`change_code` like concat('%',#{query.code},'%') or `tbs_budget_change`.`budget_number` like concat('%',#{query.code},'%') ) + and `tbs_budget_change`.`budget_id` = #{query.budgetId} and `tbs_budget_change`.`budget_title` like concat('%',#{query.title},'%') and `tbs_budget_change`.`budget_check_state` = #{query.budgetCheckState} and `tbs_budget_change`.`subject_code` like concat('%',#{query.subjectCode},'%') From 24a5d5ae8439e48de62f4e65f763f6d7a1b43f3d Mon Sep 17 00:00:00 2001 From: Yen Date: Mon, 14 Aug 2023 09:43:59 +0800 Subject: [PATCH 2/8] =?UTF-8?q?=E9=A2=84=E7=AE=97=E5=AE=A1=E6=89=B9?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E8=A1=A5=E5=85=85=E9=99=84=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/TbsBudgetChangeController.java | 13 +++++++++++++ .../controller/TbsCostApplyController.java | 1 + .../modules/tbs/entity/TbsBudgetChange.java | 19 ++++++++++++++++++- .../impl/TbsBudgetChangeServiceImpl.java | 2 ++ 4 files changed, 34 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetChangeController.java b/src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetChangeController.java index 8ada7b07..8befb337 100644 --- a/src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetChangeController.java +++ b/src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetChangeController.java @@ -10,6 +10,7 @@ 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.StringUtils; +import com.qs.serve.modules.sys.service.SysAttachService; import com.qs.serve.modules.tbs.common.dto.TbsBudgetChangeVo; import com.qs.serve.modules.tbs.entity.*; import com.qs.serve.modules.tbs.entity.so.TbsBudgetChangeSo; @@ -20,6 +21,7 @@ import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; +import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -35,6 +37,7 @@ import java.util.stream.Collectors; @RequestMapping("tbs/budgetChange") public class TbsBudgetChangeController { + private SysAttachService sysAttachService; private TbsBudgetChangeService tbsBudgetChangeService; private TbsBudgetChangeScheduleItemService tbsBudgetChangeScheduleItemService; private TbsBudgetChangeConditionService tbsBudgetChangeConditionService; @@ -73,6 +76,12 @@ public class TbsBudgetChangeController { budgetChange.setChangeScheduleItemList(changeScheduleItemList); budgetChange.setChangeConditionList(map.get(0)); budgetChange.setOrgConditionList(map.get(1)); + if(budgetChange.getNewAttachIds()!=null&&budgetChange.getNewAttachIds().length>0){ + budgetChange.setNewAttachInfos(sysAttachService.listByIds(Arrays.asList(budgetChange.getNewAttachIds()))); + } + if(budgetChange.getOrgAttachIds()!=null&&budgetChange.getOrgAttachIds().length>0){ + budgetChange.setOrgAttachInfos(sysAttachService.listByIds(Arrays.asList(budgetChange.getOrgAttachIds()))); + } return R.ok(budgetChange); } @@ -98,6 +107,10 @@ public class TbsBudgetChangeController { .map(TbsBudgetChangeScheduleItem::toNewObject).collect(Collectors.toList()); budgetChange.setChangeScheduleItemList(budgetChangeScheduleItemList); budgetChange.setChangeConditionList(budgetChangeConditions); + if(budget.getAttachIds()!=null&&budget.getAttachIds().length>0){ + budgetChange.setNewAttachIds(budget.getAttachIds()); + budgetChange.setNewAttachInfos(sysAttachService.listByIds(Arrays.asList(budget.getAttachIds()))); + } return R.ok(budgetChange); } 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 c5ac2a41..028e4584 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,6 +268,7 @@ public class TbsCostApplyController { if(contract&&!supplier.getSupplierFlag().equals(1)){ return R.error("当前用户非供应商"); } + entity.setMatchType(1); entity.setCode(CodeGenUtil.generate(CodeGenUtil.SourceKey.CostApply)); entity.setSupplierCode(supplier.getCode()); entity.setSupplierName(supplier.getName()); diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/TbsBudgetChange.java b/src/main/java/com/qs/serve/modules/tbs/entity/TbsBudgetChange.java index cb0d4bf2..e606b25b 100644 --- a/src/main/java/com/qs/serve/modules/tbs/entity/TbsBudgetChange.java +++ b/src/main/java/com/qs/serve/modules/tbs/entity/TbsBudgetChange.java @@ -10,7 +10,9 @@ 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.common.framework.mybatis.handler.meta.SplitStringTypeHandler; import lombok.Data; +import org.apache.ibatis.type.JdbcType; import org.hibernate.validator.constraints.Length; import org.springframework.format.annotation.DateTimeFormat; @@ -23,7 +25,7 @@ import javax.validation.constraints.NotBlank; * @since 2023-08-09 */ @Data -@TableName("tbs_budget_change") +@TableName(value = "tbs_budget_change", autoResultMap = true) public class TbsBudgetChange implements Serializable { private static final long serialVersionUID = 1L; @@ -128,6 +130,15 @@ public class TbsBudgetChange implements Serializable { @Length(max = 255,message = "备注长度不能超过255字") private String remark; + /** 附件id */ + @TableField(typeHandler = SplitStringTypeHandler.class,jdbcType= JdbcType.VARCHAR) + private String[] orgAttachIds; + + + /** 附件id */ + @TableField(typeHandler = SplitStringTypeHandler.class,jdbcType= JdbcType.VARCHAR) + private String[] newAttachIds; + /** 创建时间 */ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") @@ -168,6 +179,12 @@ public class TbsBudgetChange implements Serializable { @TableField(exist = false) private List changeConditionList; + @TableField(exist = false) + private List newAttachInfos; + + @TableField(exist = false) + private List orgAttachInfos; + public static TbsBudgetChange toNewObject(TbsBudget source){ TbsBudgetChange budgetChange = new TbsBudgetChange(); //budgetChange.setId(source.getId()); diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeServiceImpl.java index 14edb2d9..cfc14264 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeServiceImpl.java @@ -131,6 +131,8 @@ public class TbsBudgetChangeServiceImpl extends ServiceImpl Date: Mon, 14 Aug 2023 10:47:36 +0800 Subject: [PATCH 3/8] =?UTF-8?q?debug,excel=E5=8A=A8=E6=80=81=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E8=A1=A8=E5=88=9D=E5=A7=8B=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ExlTableConfController.java | 113 ++++++++++++++++++ .../modules/exl/entity/ExlColumnConf.java | 102 ++++++++++++++++ .../serve/modules/exl/entity/ExlDsConf.java | 105 ++++++++++++++++ .../modules/exl/entity/ExlTableConf.java | 98 +++++++++++++++ .../modules/exl/entity/dto/ExlTableBo.java | 39 ++++++ .../exl/mapper/ExlColumnConfMapper.java | 14 +++ .../modules/exl/mapper/ExlDsConfMapper.java | 14 +++ .../exl/mapper/ExlTableConfMapper.java | 14 +++ .../exl/service/ExlColumnConfService.java | 14 +++ .../exl/service/ExlTableConfService.java | 21 ++++ .../impl/ExlColumnConfServiceImpl.java | 22 ++++ .../service/impl/ExlTableConfServiceImpl.java | 31 +++++ .../mapper/tbs/TbsBudgetMatchMapper.xml | 4 +- 13 files changed, 589 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/qs/serve/modules/exl/controller/ExlTableConfController.java create mode 100644 src/main/java/com/qs/serve/modules/exl/entity/ExlColumnConf.java create mode 100644 src/main/java/com/qs/serve/modules/exl/entity/ExlDsConf.java create mode 100644 src/main/java/com/qs/serve/modules/exl/entity/ExlTableConf.java create mode 100644 src/main/java/com/qs/serve/modules/exl/entity/dto/ExlTableBo.java create mode 100644 src/main/java/com/qs/serve/modules/exl/mapper/ExlColumnConfMapper.java create mode 100644 src/main/java/com/qs/serve/modules/exl/mapper/ExlDsConfMapper.java create mode 100644 src/main/java/com/qs/serve/modules/exl/mapper/ExlTableConfMapper.java create mode 100644 src/main/java/com/qs/serve/modules/exl/service/ExlColumnConfService.java create mode 100644 src/main/java/com/qs/serve/modules/exl/service/ExlTableConfService.java create mode 100644 src/main/java/com/qs/serve/modules/exl/service/impl/ExlColumnConfServiceImpl.java create mode 100644 src/main/java/com/qs/serve/modules/exl/service/impl/ExlTableConfServiceImpl.java diff --git a/src/main/java/com/qs/serve/modules/exl/controller/ExlTableConfController.java b/src/main/java/com/qs/serve/modules/exl/controller/ExlTableConfController.java new file mode 100644 index 00000000..2b1a0f1e --- /dev/null +++ b/src/main/java/com/qs/serve/modules/exl/controller/ExlTableConfController.java @@ -0,0 +1,113 @@ +package com.qs.serve.modules.exl.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 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.exl.entity.ExlTableConf; +import com.qs.serve.modules.exl.service.ExlTableConfService; + +import javax.validation.Valid; +import java.util.List; + +/** + * 动态Excel表 表配置 + * @author YenHex + * @since 2023-08-11 + */ +@Slf4j +@AllArgsConstructor +@RestController +@RequestMapping("exl/tableConf") +public class ExlTableConfController { + + private ExlTableConfService exlTableConfService; + + /** + * 列表 + * @param param + * @return + */ + //@GetMapping("/list") + public R> getList(ExlTableConf param){ + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(param); + List list = exlTableConfService.list(lqw); + return R.ok(list); + } + + /** + * 翻页 + * @param param + * @return + */ + @GetMapping("/page") + public R> getPage(ExlTableConf param){ + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(param); + PageUtil.startPage(); + List list = exlTableConfService.list(lqw); + return R.byPageHelperList(list); + } + + /** + * ID查询 + * @param id + * @return + */ + @GetMapping("/getById/{id}") + @SysLog(module = SystemModule.Excel, title = "表配置", biz = BizType.QUERY) + public R getById(@PathVariable("id") String id){ + ExlTableConf exlTableConf = exlTableConfService.getById(id); + return R.ok(exlTableConf); + } + + + + /** + * 更新 + * @param param + * @return + */ + @PostMapping("/updateById") + @SysLog(module = SystemModule.Excel, title = "表配置", biz = BizType.UPDATE) + public R updateById(@RequestBody @Valid ExlTableConf param){ + boolean result = exlTableConfService.updateById(param); + return R.isTrue(result); + } + + /** + * 新增 + * @param param + * @return + */ + @PostMapping("/save") + @SysLog(module = SystemModule.Excel, title = "表配置", biz = BizType.INSERT) + public R save(@RequestBody @Valid ExlTableConf param){ + boolean result = exlTableConfService.save(param); + return R.isTrue(result); + } + + /** + * 删除 + * @param ids + * @return + */ + @DeleteMapping("/deleteById/{ids}") + @SysLog(module = SystemModule.Excel, title = "表配置", biz = BizType.DELETE) + public R deleteById(@PathVariable("ids") String ids){ + List idsLong = StringUtils.splitIdLong(ids); + boolean result = exlTableConfService.removeByIds(idsLong); + return R.isTrue(result); + } + +} + diff --git a/src/main/java/com/qs/serve/modules/exl/entity/ExlColumnConf.java b/src/main/java/com/qs/serve/modules/exl/entity/ExlColumnConf.java new file mode 100644 index 00000000..52860641 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/exl/entity/ExlColumnConf.java @@ -0,0 +1,102 @@ +package com.qs.serve.modules.exl.entity; + +import java.time.LocalDate; +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; + +import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; +import org.hibernate.validator.constraints.Length; +import org.springframework.format.annotation.DateTimeFormat; + +import javax.validation.constraints.NotNull; +import javax.validation.constraints.NotBlank; + +/** + * 行配置 实体类 + * @author YenHex + * @since 2023-08-14 + */ +@Data +@TableName("exl_column_conf") +public class ExlColumnConf implements Serializable { + + private static final long serialVersionUID = 1L; + + /** id */ + @JsonIgnore + @TableId(type = IdType.AUTO) + private Long id; + + /** 表名 */ + @NotBlank(message = "表名不能为空") + @Length(max = 255,message = "表名长度不能超过255字") + private String columnName; + + /** excel头部 */ + @NotBlank(message = "excel头部不能为空") + @Length(max = 255,message = "excel头部长度不能超过255字") + private String columnHeader; + + /** 数据类型:string;int;money;date;datetime; */ + @Length(max = 255,message = "数据类型:string;int;money;date;datetime;长度不能超过255字") + private String columnType; + + @JsonIgnore + /** 作为查询条件标识 string-like;int-eq;date-between;datetime-between */ + @NotNull(message = "作为查询条件标识 string-like;int-eq;date-between;datetime-between不能为空") + private Integer conditionFlag; + + /** 创建时间 */ + @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; + + /** 最后更新时间 */ + @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; + + /** 所属租户 */ + @JsonIgnore + @JsonProperty + private String tenantId; + + /** 创建人 */ + @TableField(fill = FieldFill.INSERT) + private String createBy; + + /** 更新人 */ + @TableField(fill = FieldFill.UPDATE) + private String updateBy; + + /** 逻辑删除标记(0:显示;1:隐藏) */ + @JsonIgnore + @JsonProperty + private String delFlag; + + + public static ExlColumnConf toNewObject(ExlColumnConf source){ + ExlColumnConf columnConf = new ExlColumnConf(); + columnConf.setId(source.getId()); + columnConf.setColumnName(source.getColumnName()); + columnConf.setColumnHeader(source.getColumnHeader()); + columnConf.setColumnType(source.getColumnType()); + columnConf.setConditionFlag(source.getConditionFlag()); + columnConf.setCreateTime(source.getCreateTime()); + columnConf.setUpdateTime(source.getUpdateTime()); + columnConf.setTenantId(source.getTenantId()); + columnConf.setCreateBy(source.getCreateBy()); + columnConf.setUpdateBy(source.getUpdateBy()); + columnConf.setDelFlag(source.getDelFlag()); + return columnConf; + } + +} + diff --git a/src/main/java/com/qs/serve/modules/exl/entity/ExlDsConf.java b/src/main/java/com/qs/serve/modules/exl/entity/ExlDsConf.java new file mode 100644 index 00000000..7fccd980 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/exl/entity/ExlDsConf.java @@ -0,0 +1,105 @@ +package com.qs.serve.modules.exl.entity; + +import java.time.LocalDate; +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; + +import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; +import org.hibernate.validator.constraints.Length; +import org.springframework.format.annotation.DateTimeFormat; + +import javax.validation.constraints.NotNull; +import javax.validation.constraints.NotBlank; + +/** + * 数据源配置 实体类 + * @author YenHex + * @since 2023-08-11 + */ +@Data +@TableName("exl_ds_conf") +public class ExlDsConf implements Serializable { + + private static final long serialVersionUID = 1L; + + /** id */ + @TableId(type = IdType.AUTO) + private Long id; + + /** 启用 */ + @NotNull(message = "启用不能为空") + private Integer enable; + + /** 用户名 */ + @NotBlank(message = "用户名不能为空") + @Length(max = 255,message = "用户名长度不能超过255字") + private String username; + + /** 密码 */ + @NotBlank(message = "密码不能为空") + @Length(max = 255,message = "密码长度不能超过255字") + private String password; + + /** url */ + @Length(max = 255,message = "url长度不能超过255字") + private String url; + + /** 备注 */ + @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; + + /** 最后更新时间 */ + @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; + + /** 所属租户 */ + @JsonIgnore + @JsonProperty + private String tenantId; + + /** 创建人 */ + @TableField(fill = FieldFill.INSERT) + private String createBy; + + /** 更新人 */ + @TableField(fill = FieldFill.UPDATE) + private String updateBy; + + /** 逻辑删除标记(0:显示;1:隐藏) */ + @JsonIgnore + @JsonProperty + private String delFlag; + + + public static ExlDsConf toNewObject(ExlDsConf source){ + ExlDsConf dsConf = new ExlDsConf(); + dsConf.setId(source.getId()); + dsConf.setEnable(source.getEnable()); + dsConf.setUsername(source.getUsername()); + dsConf.setPassword(source.getPassword()); + dsConf.setUrl(source.getUrl()); + dsConf.setRemark(source.getRemark()); + dsConf.setCreateTime(source.getCreateTime()); + dsConf.setUpdateTime(source.getUpdateTime()); + dsConf.setTenantId(source.getTenantId()); + dsConf.setCreateBy(source.getCreateBy()); + dsConf.setUpdateBy(source.getUpdateBy()); + dsConf.setDelFlag(source.getDelFlag()); + return dsConf; + } + +} + diff --git a/src/main/java/com/qs/serve/modules/exl/entity/ExlTableConf.java b/src/main/java/com/qs/serve/modules/exl/entity/ExlTableConf.java new file mode 100644 index 00000000..ed4269b9 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/exl/entity/ExlTableConf.java @@ -0,0 +1,98 @@ +package com.qs.serve.modules.exl.entity; + +import java.time.LocalDate; +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; + +import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; +import org.hibernate.validator.constraints.Length; +import org.springframework.format.annotation.DateTimeFormat; + +import javax.validation.constraints.NotNull; +import javax.validation.constraints.NotBlank; + +/** + * 表配置 实体类 + * @author YenHex + * @since 2023-08-11 + */ +@Data +@TableName("exl_table_conf") +public class ExlTableConf implements Serializable { + + private static final long serialVersionUID = 1L; + + /** id */ + @TableId(type = IdType.AUTO) + private Long id; + + /** 表名 */ + @NotBlank(message = "表名不能为空") + @Length(max = 255,message = "表名长度不能超过255字") + private String tableName; + + /** excel标题 */ + @NotBlank(message = "excel标题不能为空") + @Length(max = 255,message = "excel标题长度不能超过255字") + private String excelTitle; + + /** 备注 */ + @Length(max = 255,message = "备注长度不能超过255字") + private String remark; + + /** 启用标识 (0/1) */ + private String enableFlag; + + /** 创建时间 */ + @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; + + /** 最后更新时间 */ + @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; + + /** 所属租户 */ + @JsonIgnore + @JsonProperty + private String tenantId; + + /** 创建人 */ + @TableField(fill = FieldFill.INSERT) + private String createBy; + + /** 更新人 */ + @TableField(fill = FieldFill.UPDATE) + private String updateBy; + + /** 逻辑删除标记(0:显示;1:隐藏) */ + @JsonIgnore + @JsonProperty + private String delFlag; + + + public static ExlTableConf toNewObject(ExlTableConf source){ + ExlTableConf tableConf = new ExlTableConf(); + tableConf.setId(source.getId()); + tableConf.setTableName(source.getTableName()); + tableConf.setExcelTitle(source.getExcelTitle()); + tableConf.setRemark(source.getRemark()); + tableConf.setCreateTime(source.getCreateTime()); + tableConf.setUpdateTime(source.getUpdateTime()); + tableConf.setTenantId(source.getTenantId()); + tableConf.setCreateBy(source.getCreateBy()); + tableConf.setUpdateBy(source.getUpdateBy()); + tableConf.setDelFlag(source.getDelFlag()); + return tableConf; + } + +} + diff --git a/src/main/java/com/qs/serve/modules/exl/entity/dto/ExlTableBo.java b/src/main/java/com/qs/serve/modules/exl/entity/dto/ExlTableBo.java new file mode 100644 index 00000000..b97885e0 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/exl/entity/dto/ExlTableBo.java @@ -0,0 +1,39 @@ +package com.qs.serve.modules.exl.entity.dto; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.qs.serve.modules.exl.entity.ExlColumnConf; +import lombok.Data; +import org.hibernate.validator.constraints.Length; + +import javax.validation.constraints.NotBlank; +import java.util.List; + +/** + * @author YenHex + * @since 2023/8/14 + */ +@Data +public class ExlTableBo { + + /** id(修改时参数) */ + @TableId(type = IdType.AUTO) + private Long id; + + /** 表名 */ + @NotBlank(message = "表名不能为空") + @Length(max = 255,message = "表名长度不能超过255字") + private String tableName; + + /** excel标题 */ + @NotBlank(message = "excel标题不能为空") + @Length(max = 255,message = "excel标题长度不能超过255字") + private String excelTitle; + + /** 备注 */ + @Length(max = 255,message = "备注长度不能超过255字") + private String remark; + + private List columnList; + +} diff --git a/src/main/java/com/qs/serve/modules/exl/mapper/ExlColumnConfMapper.java b/src/main/java/com/qs/serve/modules/exl/mapper/ExlColumnConfMapper.java new file mode 100644 index 00000000..9f45418d --- /dev/null +++ b/src/main/java/com/qs/serve/modules/exl/mapper/ExlColumnConfMapper.java @@ -0,0 +1,14 @@ +package com.qs.serve.modules.exl.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.qs.serve.modules.exl.entity.ExlColumnConf; + +/** + * 行配置 Mapper + * @author YenHex + * @date 2023-08-14 + */ +public interface ExlColumnConfMapper extends BaseMapper { + +} + diff --git a/src/main/java/com/qs/serve/modules/exl/mapper/ExlDsConfMapper.java b/src/main/java/com/qs/serve/modules/exl/mapper/ExlDsConfMapper.java new file mode 100644 index 00000000..f6c18515 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/exl/mapper/ExlDsConfMapper.java @@ -0,0 +1,14 @@ +package com.qs.serve.modules.exl.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.qs.serve.modules.exl.entity.ExlDsConf; + +/** + * 数据源配置 Mapper + * @author YenHex + * @date 2023-08-11 + */ +public interface ExlDsConfMapper extends BaseMapper { + +} + diff --git a/src/main/java/com/qs/serve/modules/exl/mapper/ExlTableConfMapper.java b/src/main/java/com/qs/serve/modules/exl/mapper/ExlTableConfMapper.java new file mode 100644 index 00000000..4c3e02eb --- /dev/null +++ b/src/main/java/com/qs/serve/modules/exl/mapper/ExlTableConfMapper.java @@ -0,0 +1,14 @@ +package com.qs.serve.modules.exl.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.qs.serve.modules.exl.entity.ExlTableConf; + +/** + * 表配置 Mapper + * @author YenHex + * @date 2023-08-11 + */ +public interface ExlTableConfMapper extends BaseMapper { + +} + diff --git a/src/main/java/com/qs/serve/modules/exl/service/ExlColumnConfService.java b/src/main/java/com/qs/serve/modules/exl/service/ExlColumnConfService.java new file mode 100644 index 00000000..cc568bd4 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/exl/service/ExlColumnConfService.java @@ -0,0 +1,14 @@ +package com.qs.serve.modules.exl.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.qs.serve.modules.exl.entity.ExlColumnConf; + +/** + * 行配置 服务接口 + * @author YenHex + * @date 2023-08-14 + */ +public interface ExlColumnConfService extends IService { + +} + diff --git a/src/main/java/com/qs/serve/modules/exl/service/ExlTableConfService.java b/src/main/java/com/qs/serve/modules/exl/service/ExlTableConfService.java new file mode 100644 index 00000000..9c1c70cf --- /dev/null +++ b/src/main/java/com/qs/serve/modules/exl/service/ExlTableConfService.java @@ -0,0 +1,21 @@ +package com.qs.serve.modules.exl.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.qs.serve.modules.exl.entity.ExlTableConf; +import com.qs.serve.modules.exl.entity.dto.ExlTableBo; + +/** + * 表配置 服务接口 + * @author YenHex + * @date 2023-08-11 + */ +public interface ExlTableConfService extends IService { + + /** + * 编辑 + * @param param + */ + void modify(ExlTableBo param); + +} + diff --git a/src/main/java/com/qs/serve/modules/exl/service/impl/ExlColumnConfServiceImpl.java b/src/main/java/com/qs/serve/modules/exl/service/impl/ExlColumnConfServiceImpl.java new file mode 100644 index 00000000..5af7ca02 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/exl/service/impl/ExlColumnConfServiceImpl.java @@ -0,0 +1,22 @@ +package com.qs.serve.modules.exl.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.exl.entity.ExlColumnConf; +import com.qs.serve.modules.exl.service.ExlColumnConfService; +import com.qs.serve.modules.exl.mapper.ExlColumnConfMapper; + +/** + * 行配置 服务实现类 + * @author YenHex + * @since 2023-08-14 + */ +@Slf4j +@Service +@AllArgsConstructor +public class ExlColumnConfServiceImpl extends ServiceImpl implements ExlColumnConfService { + +} + diff --git a/src/main/java/com/qs/serve/modules/exl/service/impl/ExlTableConfServiceImpl.java b/src/main/java/com/qs/serve/modules/exl/service/impl/ExlTableConfServiceImpl.java new file mode 100644 index 00000000..8bf1e2a0 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/exl/service/impl/ExlTableConfServiceImpl.java @@ -0,0 +1,31 @@ +package com.qs.serve.modules.exl.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.qs.serve.modules.exl.entity.dto.ExlTableBo; +import com.qs.serve.modules.exl.service.ExlColumnConfService; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import com.qs.serve.modules.exl.entity.ExlTableConf; +import com.qs.serve.modules.exl.service.ExlTableConfService; +import com.qs.serve.modules.exl.mapper.ExlTableConfMapper; + +/** + * 表配置 服务实现类 + * @author YenHex + * @since 2023-08-11 + */ +@Slf4j +@Service +@AllArgsConstructor +public class ExlTableConfServiceImpl extends ServiceImpl implements ExlTableConfService { + + private final ExlColumnConfService columnConfService; + + @Override + public void modify(ExlTableBo param) { + + } + +} + diff --git a/src/main/resources/mapper/tbs/TbsBudgetMatchMapper.xml b/src/main/resources/mapper/tbs/TbsBudgetMatchMapper.xml index b6519534..b80287f8 100644 --- a/src/main/resources/mapper/tbs/TbsBudgetMatchMapper.xml +++ b/src/main/resources/mapper/tbs/TbsBudgetMatchMapper.xml @@ -19,7 +19,7 @@ - + @@ -34,7 +34,7 @@ -- temp_tbg2.amt final_budget_amount, -- temp_tbg3.amt used_budget_amount, tb.condition_flag budget_condition_flag, - tb.subject_id subject_id, + tb.subject_id budget_subject_id, tb.budget_code budget_name, tb.budget_number budget_code, tbc.target_level_path_ids condition_goods_ids From 60cd01895a77b55492dccf55f974025a4ed63833 Mon Sep 17 00:00:00 2001 From: Yen Date: Mon, 14 Aug 2023 12:04:56 +0800 Subject: [PATCH 4/8] =?UTF-8?q?excel=E5=8A=A8=E6=80=81=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E8=A1=A8=E5=88=9D=E5=A7=8B=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ExlTableConfController.java | 86 ++++++++++++++-- .../controller/ExlTableDataController.java | 99 +++++++++++++++++++ .../modules/exl/entity/ExlColumnConf.java | 15 +-- .../modules/exl/entity/ExlTableConf.java | 19 +++- .../exl/entity/dto/ExlQueryFieldDto.java | 24 +++++ .../exl/service/ExlTableConfService.java | 3 +- .../service/impl/ExlTableConfServiceImpl.java | 46 ++++++++- 7 files changed, 275 insertions(+), 17 deletions(-) create mode 100644 src/main/java/com/qs/serve/modules/exl/controller/ExlTableDataController.java create mode 100644 src/main/java/com/qs/serve/modules/exl/entity/dto/ExlQueryFieldDto.java diff --git a/src/main/java/com/qs/serve/modules/exl/controller/ExlTableConfController.java b/src/main/java/com/qs/serve/modules/exl/controller/ExlTableConfController.java index 2b1a0f1e..85bcb859 100644 --- a/src/main/java/com/qs/serve/modules/exl/controller/ExlTableConfController.java +++ b/src/main/java/com/qs/serve/modules/exl/controller/ExlTableConfController.java @@ -9,6 +9,11 @@ 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.common.util.WordUtil; +import com.qs.serve.modules.exl.entity.ExlColumnConf; +import com.qs.serve.modules.exl.entity.dto.ExlQueryFieldDto; +import com.qs.serve.modules.exl.entity.dto.ExlTableBo; +import com.qs.serve.modules.exl.service.ExlColumnConfService; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.security.access.prepost.PreAuthorize; @@ -18,7 +23,11 @@ import com.qs.serve.modules.exl.entity.ExlTableConf; import com.qs.serve.modules.exl.service.ExlTableConfService; import javax.validation.Valid; +import java.time.LocalDateTime; +import java.util.ArrayList; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; /** * 动态Excel表 表配置 @@ -32,6 +41,7 @@ import java.util.List; public class ExlTableConfController { private ExlTableConfService exlTableConfService; + private ExlColumnConfService exlColumnConfService; /** * 列表 @@ -45,6 +55,12 @@ public class ExlTableConfController { return R.ok(list); } + //测试传参 + @GetMapping("/test") + public R test(@RequestParam Map map){ + return R.ok(map); + } + /** * 翻页 * @param param @@ -67,6 +83,34 @@ public class ExlTableConfController { @SysLog(module = SystemModule.Excel, title = "表配置", biz = BizType.QUERY) public R getById(@PathVariable("id") String id){ ExlTableConf exlTableConf = exlTableConfService.getById(id); + LambdaQueryWrapper columnLqw = new LambdaQueryWrapper<>(); + columnLqw.eq(ExlColumnConf::getTableConfId,id); + List columnConfList = exlColumnConfService.list(columnLqw); + exlTableConf.setColumnList(columnConfList); + //组装查询参数列表 + List queryColumn = columnConfList.stream() + .filter(a->a.getConditionFlag().equals(1)).collect(Collectors.toList()); + List queryFieldList = new ArrayList<>(); + for (ExlColumnConf columnConf : queryColumn) { + if(columnConf.getColumnType().contains("date")){ + ExlQueryFieldDto startDto = new ExlQueryFieldDto(); + startDto.setField("START--"+columnConf.getColumnName()); + startDto.setType(columnConf.getColumnType()); + startDto.setLabel(columnConf.getColumnHeader()); + queryFieldList.add(startDto); + ExlQueryFieldDto fieldDto = new ExlQueryFieldDto(); + fieldDto.setField("END--"+columnConf.getColumnName()); + fieldDto.setType(columnConf.getColumnType()); + fieldDto.setLabel(columnConf.getColumnHeader()); + queryFieldList.add(fieldDto); + }else { + ExlQueryFieldDto fieldDto = new ExlQueryFieldDto(); + fieldDto.setField(columnConf.getColumnName()); + fieldDto.setType(columnConf.getColumnType()); + fieldDto.setLabel(columnConf.getColumnHeader()); + queryFieldList.add(fieldDto); + } + } return R.ok(exlTableConf); } @@ -79,9 +123,12 @@ public class ExlTableConfController { */ @PostMapping("/updateById") @SysLog(module = SystemModule.Excel, title = "表配置", biz = BizType.UPDATE) - public R updateById(@RequestBody @Valid ExlTableConf param){ - boolean result = exlTableConfService.updateById(param); - return R.isTrue(result); + public R updateById(@RequestBody @Valid ExlTableBo param){ + if(param.getId()==null){ + return R.error("id is null"); + } + ExlTableConf tableConf = exlTableConfService.modify(param); + return R.ok(tableConf); } /** @@ -91,9 +138,29 @@ public class ExlTableConfController { */ @PostMapping("/save") @SysLog(module = SystemModule.Excel, title = "表配置", biz = BizType.INSERT) - public R save(@RequestBody @Valid ExlTableConf param){ - boolean result = exlTableConfService.save(param); - return R.isTrue(result); + public R save(@RequestBody @Valid ExlTableBo param){ + if(param.getId()!=null){ + return R.error("id should be null"); + } + ExlTableConf tableConf = exlTableConfService.modify(param); + return R.ok(tableConf); + } + + /** + * 启用配置 + * @param tableId + * @return + */ + @PostMapping("/enable/{tableId}") + @SysLog(module = SystemModule.Excel, title = "表配置", biz = BizType.INSERT) + public R enable(@PathVariable("tableId") String tableId){ + ExlTableConf tableConf = exlTableConfService.getById(tableId); + if(tableConf.getEnableFlag().equals(0)){ + tableConf.setEnableFlag(1); + tableConf.setEnableTime(LocalDateTime.now()); + exlTableConfService.updateById(tableConf); + } + return R.ok(); } /** @@ -105,6 +172,13 @@ public class ExlTableConfController { @SysLog(module = SystemModule.Excel, title = "表配置", biz = BizType.DELETE) public R deleteById(@PathVariable("ids") String ids){ List idsLong = StringUtils.splitIdLong(ids); + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.in(ExlTableConf::getId,ids); + lqw.eq(ExlTableConf::getEnableFlag,1); + Long count = exlTableConfService.count(lqw); + if(count>0){ + return R.error("已启用的配置不可删除"); + } boolean result = exlTableConfService.removeByIds(idsLong); return R.isTrue(result); } diff --git a/src/main/java/com/qs/serve/modules/exl/controller/ExlTableDataController.java b/src/main/java/com/qs/serve/modules/exl/controller/ExlTableDataController.java new file mode 100644 index 00000000..7731d8df --- /dev/null +++ b/src/main/java/com/qs/serve/modules/exl/controller/ExlTableDataController.java @@ -0,0 +1,99 @@ +package com.qs.serve.modules.exl.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.StringUtils; +import com.qs.serve.modules.exl.entity.ExlColumnConf; +import com.qs.serve.modules.exl.entity.ExlTableConf; +import com.qs.serve.modules.exl.entity.dto.ExlQueryFieldDto; +import com.qs.serve.modules.exl.entity.dto.ExlTableBo; +import com.qs.serve.modules.exl.service.ExlColumnConfService; +import com.qs.serve.modules.exl.service.ExlTableConfService; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 动态Excel表 表配置 + * @author YenHex + * @since 2023-08-11 + */ +@Slf4j +@AllArgsConstructor +@RestController +@RequestMapping("exl/tableData") +public class ExlTableDataController { + + private ExlTableConfService exlTableConfService; + private ExlColumnConfService exlColumnConfService; + + + + /** + * 翻页 + * @param param + * @return + */ + @GetMapping("/page") + public R> getPage(ExlTableConf param){ + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(param); + PageUtil.startPage(); + List list = exlTableConfService.list(lqw); + return R.byPageHelperList(list); + } + + + /** + * 更新 + * @param param + * @return + */ + @PostMapping("/updateById") + public R updateById(@RequestBody @Valid ExlTableBo param){ + return R.ok(); + } + + /** + * 新增 + * @param param + * @return + */ + @PostMapping("/save") + public R save(@RequestBody @Valid ExlTableBo param){ + return R.ok(); + } + + /** + * 删除 + * @param ids + * @return + */ + @DeleteMapping("/deleteById/{ids}") + @SysLog(module = SystemModule.Excel, title = "表配置", biz = BizType.DELETE) + public R deleteById(@PathVariable("ids") String ids){ + List idsLong = StringUtils.splitIdLong(ids); + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.in(ExlTableConf::getId,ids); + lqw.eq(ExlTableConf::getEnableFlag,1); + Long count = exlTableConfService.count(lqw); + if(count>0){ + return R.error("已启用的配置不可删除"); + } + boolean result = exlTableConfService.removeByIds(idsLong); + return R.isTrue(result); + } + +} + diff --git a/src/main/java/com/qs/serve/modules/exl/entity/ExlColumnConf.java b/src/main/java/com/qs/serve/modules/exl/entity/ExlColumnConf.java index 52860641..4cdaa0d4 100644 --- a/src/main/java/com/qs/serve/modules/exl/entity/ExlColumnConf.java +++ b/src/main/java/com/qs/serve/modules/exl/entity/ExlColumnConf.java @@ -32,9 +32,11 @@ public class ExlColumnConf implements Serializable { @TableId(type = IdType.AUTO) private Long id; - /** 表名 */ - @NotBlank(message = "表名不能为空") - @Length(max = 255,message = "表名长度不能超过255字") + private Long tableConfId; + + /** 列名 */ + @NotBlank(message = "列名不能为空") + @Length(max = 255,message = "列名长度不能超过255字") private String columnName; /** excel头部 */ @@ -43,12 +45,11 @@ public class ExlColumnConf implements Serializable { private String columnHeader; /** 数据类型:string;int;money;date;datetime; */ - @Length(max = 255,message = "数据类型:string;int;money;date;datetime;长度不能超过255字") + @Length(max = 20,message = "数据类型:string;int;money;date;datetime;长度不能超过255字") private String columnType; - @JsonIgnore - /** 作为查询条件标识 string-like;int-eq;date-between;datetime-between */ - @NotNull(message = "作为查询条件标识 string-like;int-eq;date-between;datetime-between不能为空") + //string-like;int-eq;date-between;datetime-between + /** 作为查询条件标识 */ private Integer conditionFlag; /** 创建时间 */ diff --git a/src/main/java/com/qs/serve/modules/exl/entity/ExlTableConf.java b/src/main/java/com/qs/serve/modules/exl/entity/ExlTableConf.java index ed4269b9..3b857b53 100644 --- a/src/main/java/com/qs/serve/modules/exl/entity/ExlTableConf.java +++ b/src/main/java/com/qs/serve/modules/exl/entity/ExlTableConf.java @@ -4,6 +4,7 @@ import java.time.LocalDate; import java.io.Serializable; import java.math.BigDecimal; import java.time.LocalDateTime; +import java.util.List; import com.baomidou.mybatisplus.annotation.*; import com.fasterxml.jackson.annotation.JsonFormat; @@ -46,7 +47,12 @@ public class ExlTableConf implements Serializable { private String remark; /** 启用标识 (0/1) */ - private String enableFlag; + private Integer enableFlag; + + /** 启用时间 */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + private LocalDateTime enableTime; /** 创建时间 */ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @@ -78,6 +84,17 @@ public class ExlTableConf implements Serializable { @JsonProperty private String delFlag; + /** + * 列配置的列表 + */ + @TableField(exist = false) + private List columnList; + + /** + * 查询参数列表 + */ + @TableField(exist = false) + private List queryList; public static ExlTableConf toNewObject(ExlTableConf source){ ExlTableConf tableConf = new ExlTableConf(); diff --git a/src/main/java/com/qs/serve/modules/exl/entity/dto/ExlQueryFieldDto.java b/src/main/java/com/qs/serve/modules/exl/entity/dto/ExlQueryFieldDto.java new file mode 100644 index 00000000..17e2bb6f --- /dev/null +++ b/src/main/java/com/qs/serve/modules/exl/entity/dto/ExlQueryFieldDto.java @@ -0,0 +1,24 @@ +package com.qs.serve.modules.exl.entity.dto; + +import lombok.Data; +import org.hibernate.validator.constraints.Length; + +import javax.validation.constraints.NotBlank; + +/** + * @author YenHex + * @since 2023/8/14 + */ +@Data +public class ExlQueryFieldDto { + + /** 字段名 */ + private String field; + + /** 数据类型 */ + private String type; + + /** 显示标签 */ + private String label; + +} diff --git a/src/main/java/com/qs/serve/modules/exl/service/ExlTableConfService.java b/src/main/java/com/qs/serve/modules/exl/service/ExlTableConfService.java index 9c1c70cf..1a9d85ab 100644 --- a/src/main/java/com/qs/serve/modules/exl/service/ExlTableConfService.java +++ b/src/main/java/com/qs/serve/modules/exl/service/ExlTableConfService.java @@ -14,8 +14,9 @@ public interface ExlTableConfService extends IService { /** * 编辑 * @param param + * @return */ - void modify(ExlTableBo param); + ExlTableConf modify(ExlTableBo param); } diff --git a/src/main/java/com/qs/serve/modules/exl/service/impl/ExlTableConfServiceImpl.java b/src/main/java/com/qs/serve/modules/exl/service/impl/ExlTableConfServiceImpl.java index 8bf1e2a0..d201886f 100644 --- a/src/main/java/com/qs/serve/modules/exl/service/impl/ExlTableConfServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/exl/service/impl/ExlTableConfServiceImpl.java @@ -1,6 +1,9 @@ package com.qs.serve.modules.exl.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.qs.serve.common.util.Assert; +import com.qs.serve.modules.exl.entity.ExlColumnConf; import com.qs.serve.modules.exl.entity.dto.ExlTableBo; import com.qs.serve.modules.exl.service.ExlColumnConfService; import lombok.AllArgsConstructor; @@ -10,6 +13,8 @@ import com.qs.serve.modules.exl.entity.ExlTableConf; import com.qs.serve.modules.exl.service.ExlTableConfService; import com.qs.serve.modules.exl.mapper.ExlTableConfMapper; +import java.util.List; + /** * 表配置 服务实现类 * @author YenHex @@ -23,8 +28,45 @@ public class ExlTableConfServiceImpl extends ServiceImpl columnList = param.getColumnList(); + columnList.forEach(a->{ + a.setTableConfId(tableId); + a.setId(null); + }); + columnConfService.saveBatch(columnList); + return tableConf; + }else { + //update + final Long tableId = param.getId(); + ExlTableConf dbData = this.getById(tableId); + if(dbData.getEnableFlag().equals(1)){ + Assert.throwEx("已启用的配置不可修改"); + } + tableConf.setId(tableId); + tableConf.setTableName(param.getTableName()); + tableConf.setExcelTitle(param.getExcelTitle()); + tableConf.setRemark(param.getRemark()); + this.updateById(tableConf); + LambdaQueryWrapper columnLqw = new LambdaQueryWrapper<>(); + columnLqw.eq(ExlColumnConf::getTableConfId,param.getId()); + columnConfService.remove(columnLqw); + List columnList = param.getColumnList(); + columnList.forEach(a->{ + a.setTableConfId(tableId); + a.setId(null); + }); + columnConfService.saveBatch(columnList); + } + return tableConf; } } From eb72b4515dc20a03029ebaac31998433af175569 Mon Sep 17 00:00:00 2001 From: Yen Date: Mon, 14 Aug 2023 15:05:58 +0800 Subject: [PATCH 5/8] =?UTF-8?q?=E6=96=B0=E5=8C=B9=E9=85=8D=E6=96=B9?= =?UTF-8?q?=E5=BC=8F=E4=BC=98=E5=85=88=E7=BA=A7=E5=BC=82=E5=B8=B8=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=EF=BC=9B=E5=AE=A1=E6=89=B9=E9=A1=B6=E5=B1=82=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/seeyon/service/SeeYonOperationService.java | 4 +--- .../serve/modules/tbs/common/util/CostSort2WrapperUtil.java | 2 +- .../service/impl/TbsBudgetApplyOperationServiceImpl.java | 6 ++++++ .../service/impl/TbsBudgetChangeOperationServiceImpl.java | 6 ++++++ .../service/impl/VtbVerificationOperationServiceImpl.java | 6 ++++++ 5 files changed, 20 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/qs/serve/modules/seeyon/service/SeeYonOperationService.java b/src/main/java/com/qs/serve/modules/seeyon/service/SeeYonOperationService.java index 3d9e6c8a..63ffcf21 100644 --- a/src/main/java/com/qs/serve/modules/seeyon/service/SeeYonOperationService.java +++ b/src/main/java/com/qs/serve/modules/seeyon/service/SeeYonOperationService.java @@ -131,9 +131,7 @@ public interface SeeYonOperationService extends SeeYonBaseService{ * @param targetId * @return */ - default boolean checkSyFormIdIsNotNull(String targetId){ - return false; - } + boolean checkSyFormIdIsNotNull(String targetId); /** * 审批列表(用于详情页) diff --git a/src/main/java/com/qs/serve/modules/tbs/common/util/CostSort2WrapperUtil.java b/src/main/java/com/qs/serve/modules/tbs/common/util/CostSort2WrapperUtil.java index e5acfd9d..0491a52a 100644 --- a/src/main/java/com/qs/serve/modules/tbs/common/util/CostSort2WrapperUtil.java +++ b/src/main/java/com/qs/serve/modules/tbs/common/util/CostSort2WrapperUtil.java @@ -59,8 +59,8 @@ public class CostSort2WrapperUtil { } sortProductAndTime(sortOfNoCondition); sortProductAndTime(sortOfCondition); - listResult.addAll(sortOfNoCondition); listResult.addAll(sortOfCondition); + listResult.addAll(sortOfNoCondition); return listResult; } diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetApplyOperationServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetApplyOperationServiceImpl.java index 6bdf9886..23dcf8cb 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetApplyOperationServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetApplyOperationServiceImpl.java @@ -25,6 +25,12 @@ public class TbsBudgetApplyOperationServiceImpl implements SeeYonOperationServic private TbsBudgetMapper budgetMapper; + @Override + public boolean checkSyFormIdIsNotNull(String targetId) { + TbsBudget tbsBudget = budgetMapper.selectById(targetId); + return tbsBudget.getSyFormId()!=null; + } + @Override public void doCommitBacked(String targetId) { AsyncManager.me().execute(AsyncFactory.submitBudgetApply(targetId)); diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeOperationServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeOperationServiceImpl.java index ccd25d79..e672bca9 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeOperationServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeOperationServiceImpl.java @@ -47,6 +47,12 @@ public class TbsBudgetChangeOperationServiceImpl implements SeeYonOperationServi private TbsScheduleItemBudgetService tbsScheduleItemBudgetService; + @Override + public boolean checkSyFormIdIsNotNull(String targetId) { + TbsBudgetChange budgetChange = budgetChangeMapper.selectById(targetId); + return budgetChange.getSyFormId()!=null; + } + @Override public void doCommitBacked(String targetId) { AsyncManager.me().execute(AsyncFactory.submitBudgetChange(targetId)); diff --git a/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationOperationServiceImpl.java b/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationOperationServiceImpl.java index 7fa81f69..69b38dd4 100644 --- a/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationOperationServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationOperationServiceImpl.java @@ -42,6 +42,12 @@ public class VtbVerificationOperationServiceImpl implements SeeYonOperationServi private TbsActivityPayConditionService activityPayConditionService; private TbsActivityService tbsActivityService; + @Override + public boolean checkSyFormIdIsNotNull(String targetId) { + VtbVerification verification = vtbVerificationMapper.selectById(targetId); + return verification.getSyFormId()!=null; + } + @Override public String getTemplateCode() { return TbsSeeYonConst.CostCheckConf.Code(); From 239cf7d4788c73f55033d5edcb45ed47e2d5a6b3 Mon Sep 17 00:00:00 2001 From: Yen Date: Mon, 14 Aug 2023 17:17:20 +0800 Subject: [PATCH 6/8] =?UTF-8?q?=E9=A2=84=E7=AE=97=E5=AE=A1=E6=89=B9?= =?UTF-8?q?=E5=BC=82=E5=B8=B8=E4=BF=AE=E5=A4=8D=EF=BC=9B=E5=8A=A8=E6=80=81?= =?UTF-8?q?=E8=A1=A8=E6=A0=BC=E4=B8=B4=E6=97=B6=E4=BF=9D=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/exl/common/QsSqlSessionUtil.java | 61 +++++++++++++++++++ .../exl/common/TableCreateSqlUtil.java | 39 ++++++++++++ .../controller/ExlTableConfController.java | 25 +++++++- .../controller/ExlTableDataController.java | 6 +- .../modules/exl/entity/ExlColumnConf.java | 3 + .../modules/exl/entity/ExlTableConf.java | 2 +- .../service/SeeYonOperationService.java | 3 + .../TbsBudgetChangeOperationServiceImpl.java | 2 +- .../impl/TbsBudgetChangeServiceImpl.java | 2 +- 9 files changed, 134 insertions(+), 9 deletions(-) create mode 100644 src/main/java/com/qs/serve/modules/exl/common/QsSqlSessionUtil.java create mode 100644 src/main/java/com/qs/serve/modules/exl/common/TableCreateSqlUtil.java diff --git a/src/main/java/com/qs/serve/modules/exl/common/QsSqlSessionUtil.java b/src/main/java/com/qs/serve/modules/exl/common/QsSqlSessionUtil.java new file mode 100644 index 00000000..e1ea24c8 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/exl/common/QsSqlSessionUtil.java @@ -0,0 +1,61 @@ +package com.qs.serve.modules.exl.common; + +import org.apache.ibatis.session.SqlSession; +import org.mybatis.spring.SqlSessionTemplate; +import org.mybatis.spring.SqlSessionUtils; + +import java.sql.PreparedStatement; +import java.sql.SQLException; + +/** + * @author YenHex + * @since 2023/8/14 + */ +public class QsSqlSessionUtil { + + /** + * 获取sqlSession + * @return + */ + public static SqlSession getSqlSession(SqlSessionTemplate sqlSessionTemplate){ + return SqlSessionUtils.getSqlSession(sqlSessionTemplate.getSqlSessionFactory(), + sqlSessionTemplate.getExecutorType(), sqlSessionTemplate.getPersistenceExceptionTranslator()); + } + + /** + * 关闭sqlSession + * @param session + */ + public static void closeSqlSession(SqlSession session,SqlSessionTemplate sqlSessionTemplate) { + SqlSessionUtils.closeSqlSession(session, sqlSessionTemplate.getSqlSessionFactory()); + } + + /** + * 执行sql + * @param sql + * @param sqlSessionTemplate + * @return + */ + public static boolean executeSql(String sql,SqlSessionTemplate sqlSessionTemplate){ + PreparedStatement pst = null; + SqlSession session = getSqlSession(sqlSessionTemplate); + try { + pst = session.getConnection().prepareStatement(sql); + pst.execute(); + return true; + } catch (SQLException e) { + e.printStackTrace(); + }finally { + if(pst!=null){ + try { + pst.close(); + } catch (SQLException e) { + e.printStackTrace(); + } + } + closeSqlSession(session,sqlSessionTemplate); + } + return false; + } + +} diff --git a/src/main/java/com/qs/serve/modules/exl/common/TableCreateSqlUtil.java b/src/main/java/com/qs/serve/modules/exl/common/TableCreateSqlUtil.java new file mode 100644 index 00000000..bc2ca366 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/exl/common/TableCreateSqlUtil.java @@ -0,0 +1,39 @@ +package com.qs.serve.modules.exl.common; + +import com.qs.serve.modules.exl.entity.ExlColumnConf; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author YenHex + * @since 2023/8/14 + */ +public class TableCreateSqlUtil { + + public static final Map MYSQL_DATA_MAP = new HashMap<>(); + + public static final String COLUMN_NULL = " null "; + public static final String COLUMN_NOT_NULL = " not null "; + public static final String COLUMN_COMMENT = "COMMENT"; + + public static String createMysqlTableSql(String tableName, List columnList){ + StringBuffer result = new StringBuffer("CREATE TABLE `"+tableName+"` ("); + result.append(" `union_id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id',"); + for (ExlColumnConf column : columnList) { + String columnType = column.getColumnType(); + String nullValue = column.getNotNullFlag().equals(1) ? COLUMN_NOT_NULL:COLUMN_NULL; + if(columnType.equals("int")){ + result.append("`"+column.getColumnName()+"` "+ + MYSQL_DATA_MAP.get(columnType) + + nullValue + + COLUMN_COMMENT + " '"+ + column.getColumnHeader()+"',"); + } + } + result.append(" PRIMARY KEY (`union_id`) USING BTREE "); + return result.append(")").toString(); + } + +} diff --git a/src/main/java/com/qs/serve/modules/exl/controller/ExlTableConfController.java b/src/main/java/com/qs/serve/modules/exl/controller/ExlTableConfController.java index 85bcb859..83d0c3eb 100644 --- a/src/main/java/com/qs/serve/modules/exl/controller/ExlTableConfController.java +++ b/src/main/java/com/qs/serve/modules/exl/controller/ExlTableConfController.java @@ -10,12 +10,17 @@ 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.common.util.WordUtil; +import com.qs.serve.modules.exl.common.QsSqlSessionUtil; +import com.qs.serve.modules.exl.common.TableCreateSqlUtil; import com.qs.serve.modules.exl.entity.ExlColumnConf; import com.qs.serve.modules.exl.entity.dto.ExlQueryFieldDto; import com.qs.serve.modules.exl.entity.dto.ExlTableBo; import com.qs.serve.modules.exl.service.ExlColumnConfService; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.apache.ibatis.session.SqlSession; +import org.mybatis.spring.SqlSessionTemplate; +import org.mybatis.spring.SqlSessionUtils; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; @@ -40,6 +45,7 @@ import java.util.stream.Collectors; @RequestMapping("exl/tableConf") public class ExlTableConfController { + private SqlSessionTemplate sqlSessionTemplate; private ExlTableConfService exlTableConfService; private ExlColumnConfService exlColumnConfService; @@ -111,6 +117,7 @@ public class ExlTableConfController { queryFieldList.add(fieldDto); } } + exlTableConf.setQueryList(queryFieldList); return R.ok(exlTableConf); } @@ -155,14 +162,26 @@ public class ExlTableConfController { @SysLog(module = SystemModule.Excel, title = "表配置", biz = BizType.INSERT) public R enable(@PathVariable("tableId") String tableId){ ExlTableConf tableConf = exlTableConfService.getById(tableId); + LambdaQueryWrapper columnLqw = new LambdaQueryWrapper<>(); + columnLqw.eq(ExlColumnConf::getTableConfId,tableId); + List columnConfList = exlColumnConfService.list(columnLqw); if(tableConf.getEnableFlag().equals(0)){ - tableConf.setEnableFlag(1); - tableConf.setEnableTime(LocalDateTime.now()); - exlTableConfService.updateById(tableConf); + String sql = TableCreateSqlUtil.createMysqlTableSql(tableConf.getTableName(),columnConfList); + boolean result = QsSqlSessionUtil.executeSql(sql,sqlSessionTemplate); + if(result){ + tableConf.setEnableFlag(1); + tableConf.setEnableTime(LocalDateTime.now()); + exlTableConfService.updateById(tableConf); + }else { + log.error("[ID:{}]创建表格失败,建表语句:{}",tableId,sql); + return R.error("创建失败"); + } } return R.ok(); } + + /** * 删除 * @param ids diff --git a/src/main/java/com/qs/serve/modules/exl/controller/ExlTableDataController.java b/src/main/java/com/qs/serve/modules/exl/controller/ExlTableDataController.java index 7731d8df..ca79b409 100644 --- a/src/main/java/com/qs/serve/modules/exl/controller/ExlTableDataController.java +++ b/src/main/java/com/qs/serve/modules/exl/controller/ExlTableDataController.java @@ -60,7 +60,7 @@ public class ExlTableDataController { * @param param * @return */ - @PostMapping("/updateById") + //@PostMapping("/updateById") public R updateById(@RequestBody @Valid ExlTableBo param){ return R.ok(); } @@ -70,7 +70,7 @@ public class ExlTableDataController { * @param param * @return */ - @PostMapping("/save") + //@PostMapping("/save") public R save(@RequestBody @Valid ExlTableBo param){ return R.ok(); } @@ -80,7 +80,7 @@ public class ExlTableDataController { * @param ids * @return */ - @DeleteMapping("/deleteById/{ids}") + //@DeleteMapping("/deleteById/{ids}") @SysLog(module = SystemModule.Excel, title = "表配置", biz = BizType.DELETE) public R deleteById(@PathVariable("ids") String ids){ List idsLong = StringUtils.splitIdLong(ids); diff --git a/src/main/java/com/qs/serve/modules/exl/entity/ExlColumnConf.java b/src/main/java/com/qs/serve/modules/exl/entity/ExlColumnConf.java index 4cdaa0d4..2c33babf 100644 --- a/src/main/java/com/qs/serve/modules/exl/entity/ExlColumnConf.java +++ b/src/main/java/com/qs/serve/modules/exl/entity/ExlColumnConf.java @@ -52,6 +52,9 @@ public class ExlColumnConf implements Serializable { /** 作为查询条件标识 */ private Integer conditionFlag; + /** 空值标识 */ + private Integer notNullFlag; + /** 创建时间 */ @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/exl/entity/ExlTableConf.java b/src/main/java/com/qs/serve/modules/exl/entity/ExlTableConf.java index 3b857b53..330e23b4 100644 --- a/src/main/java/com/qs/serve/modules/exl/entity/ExlTableConf.java +++ b/src/main/java/com/qs/serve/modules/exl/entity/ExlTableConf.java @@ -94,7 +94,7 @@ public class ExlTableConf implements Serializable { * 查询参数列表 */ @TableField(exist = false) - private List queryList; + private List queryList; public static ExlTableConf toNewObject(ExlTableConf source){ ExlTableConf tableConf = new ExlTableConf(); diff --git a/src/main/java/com/qs/serve/modules/seeyon/service/SeeYonOperationService.java b/src/main/java/com/qs/serve/modules/seeyon/service/SeeYonOperationService.java index 63ffcf21..d79dcfcb 100644 --- a/src/main/java/com/qs/serve/modules/seeyon/service/SeeYonOperationService.java +++ b/src/main/java/com/qs/serve/modules/seeyon/service/SeeYonOperationService.java @@ -274,6 +274,9 @@ public interface SeeYonOperationService extends SeeYonBaseService{ default R commitAffair(TbsAffairCommitBo affairCommit){ getRequestService().testConnection(); String syFormId = this.getSyFormIdByTargetInfo(affairCommit); + if(syFormId==null){ + Assert.throwEx("["+affairCommit.getTargetId()+"]__syFormId is null"); + } R result = getRequestService().commonCommit(affairCommit, getTemplateCode(),syFormId); boolean isBackCommit = affairCommit.getState()==2; if(result.getStatus()==200){ diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeOperationServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeOperationServiceImpl.java index e672bca9..3431449c 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeOperationServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeOperationServiceImpl.java @@ -156,7 +156,7 @@ public class TbsBudgetChangeOperationServiceImpl implements SeeYonOperationServi @Override public String getTemplateCode() { - return TbsSeeYonConst.BudgetApplyConf.Code(); + return TbsSeeYonConst.BudgetChangeConf.Code(); } } diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeServiceImpl.java index cfc14264..55ae2efc 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeServiceImpl.java @@ -110,7 +110,7 @@ public class TbsBudgetChangeServiceImpl extends ServiceImpl Date: Tue, 15 Aug 2023 10:16:52 +0800 Subject: [PATCH 7/8] =?UTF-8?q?=E5=8A=A8=E6=80=81=E8=A1=A8=E6=A0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../qs/serve/modules/exl/common/ExlConst.java | 20 ++++++ .../controller/ExlTableConfController.java | 10 +-- .../controller/ExlTableDataController.java | 62 +++++++++++++++++++ .../exl/entity/dto/ExlConditionDto.java | 18 ++++++ .../exl/mapper/ExlTableConfMapper.java | 9 +++ .../tbs/common/TbsBudgetCheckState.java | 3 +- .../bo/TbsBudgetUpdateAfterStartBo.java | 3 + .../modules/tbs/entity/so/TbsBudgetSo.java | 5 +- .../impl/TbsBudgetChangeServiceImpl.java | 7 +++ .../service/impl/TbsBudgetServiceImpl.java | 5 +- .../impl/VtbVerificationServiceImpl.java | 1 + .../mapper/exl/ExlTableConfMapper.xml | 62 +++++++++++++++++++ .../resources/mapper/tbs/TbsBudgetMapper.xml | 1 + 13 files changed, 199 insertions(+), 7 deletions(-) create mode 100644 src/main/java/com/qs/serve/modules/exl/common/ExlConst.java create mode 100644 src/main/java/com/qs/serve/modules/exl/entity/dto/ExlConditionDto.java create mode 100644 src/main/resources/mapper/exl/ExlTableConfMapper.xml diff --git a/src/main/java/com/qs/serve/modules/exl/common/ExlConst.java b/src/main/java/com/qs/serve/modules/exl/common/ExlConst.java new file mode 100644 index 00000000..5e33d9cc --- /dev/null +++ b/src/main/java/com/qs/serve/modules/exl/common/ExlConst.java @@ -0,0 +1,20 @@ +package com.qs.serve.modules.exl.common; + +/** + * @author YenHex + * @since 2023/8/15 + */ +public interface ExlConst { + + String TABLE_NAME_PRE = "exd_"; + + String DATE_TYPE = "date"; + String TYPE_INT = "int"; + String TYPE_MONEY = "money"; + String TYPE_STRING = "string"; + + String PRE_COLUMN_START = "START--"; + + String PRE_COLUMN_END = "END--"; + +} diff --git a/src/main/java/com/qs/serve/modules/exl/controller/ExlTableConfController.java b/src/main/java/com/qs/serve/modules/exl/controller/ExlTableConfController.java index 83d0c3eb..82a38a42 100644 --- a/src/main/java/com/qs/serve/modules/exl/controller/ExlTableConfController.java +++ b/src/main/java/com/qs/serve/modules/exl/controller/ExlTableConfController.java @@ -10,6 +10,7 @@ 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.common.util.WordUtil; +import com.qs.serve.modules.exl.common.ExlConst; import com.qs.serve.modules.exl.common.QsSqlSessionUtil; import com.qs.serve.modules.exl.common.TableCreateSqlUtil; import com.qs.serve.modules.exl.entity.ExlColumnConf; @@ -98,14 +99,14 @@ public class ExlTableConfController { .filter(a->a.getConditionFlag().equals(1)).collect(Collectors.toList()); List queryFieldList = new ArrayList<>(); for (ExlColumnConf columnConf : queryColumn) { - if(columnConf.getColumnType().contains("date")){ + if(columnConf.getColumnType().contains(ExlConst.DATE_TYPE)){ ExlQueryFieldDto startDto = new ExlQueryFieldDto(); - startDto.setField("START--"+columnConf.getColumnName()); + startDto.setField(ExlConst.PRE_COLUMN_START + columnConf.getColumnName()); startDto.setType(columnConf.getColumnType()); startDto.setLabel(columnConf.getColumnHeader()); queryFieldList.add(startDto); ExlQueryFieldDto fieldDto = new ExlQueryFieldDto(); - fieldDto.setField("END--"+columnConf.getColumnName()); + fieldDto.setField(ExlConst.PRE_COLUMN_END + columnConf.getColumnName()); fieldDto.setType(columnConf.getColumnType()); fieldDto.setLabel(columnConf.getColumnHeader()); queryFieldList.add(fieldDto); @@ -166,7 +167,8 @@ public class ExlTableConfController { columnLqw.eq(ExlColumnConf::getTableConfId,tableId); List columnConfList = exlColumnConfService.list(columnLqw); if(tableConf.getEnableFlag().equals(0)){ - String sql = TableCreateSqlUtil.createMysqlTableSql(tableConf.getTableName(),columnConfList); + String sql = TableCreateSqlUtil.createMysqlTableSql(ExlConst.TABLE_NAME_PRE + + tableConf.getTableName(),columnConfList); boolean result = QsSqlSessionUtil.executeSql(sql,sqlSessionTemplate); if(result){ tableConf.setEnableFlag(1); diff --git a/src/main/java/com/qs/serve/modules/exl/controller/ExlTableDataController.java b/src/main/java/com/qs/serve/modules/exl/controller/ExlTableDataController.java index ca79b409..7921c6b5 100644 --- a/src/main/java/com/qs/serve/modules/exl/controller/ExlTableDataController.java +++ b/src/main/java/com/qs/serve/modules/exl/controller/ExlTableDataController.java @@ -8,10 +8,13 @@ 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.StringUtils; +import com.qs.serve.modules.exl.common.ExlConst; import com.qs.serve.modules.exl.entity.ExlColumnConf; import com.qs.serve.modules.exl.entity.ExlTableConf; +import com.qs.serve.modules.exl.entity.dto.ExlConditionDto; import com.qs.serve.modules.exl.entity.dto.ExlQueryFieldDto; import com.qs.serve.modules.exl.entity.dto.ExlTableBo; +import com.qs.serve.modules.exl.mapper.ExlTableConfMapper; import com.qs.serve.modules.exl.service.ExlColumnConfService; import com.qs.serve.modules.exl.service.ExlTableConfService; import lombok.AllArgsConstructor; @@ -21,6 +24,7 @@ import org.springframework.web.bind.annotation.*; import javax.validation.Valid; import java.time.LocalDateTime; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -39,6 +43,64 @@ public class ExlTableDataController { private ExlTableConfService exlTableConfService; private ExlColumnConfService exlColumnConfService; + private ExlTableConfMapper exlTableConfMapper; + + /** + * test + * @return + */ + @GetMapping("/test/{tableConfigId}") + public R test(@PathVariable("tableConfigId") Long tableConfigId,@RequestParam Map map){ + // table + ExlTableConf tableConf = exlTableConfService.getById(tableConfigId); + // columns + LambdaQueryWrapper columnLqw = new LambdaQueryWrapper<>(); + columnLqw.eq(ExlColumnConf::getTableConfId,tableConfigId); + List columnList = exlColumnConfService.list(columnLqw); + // condition + List ge_conditions = new ArrayList<>(); + List le_conditions = new ArrayList<>(); + List eq_conditions = new ArrayList<>(); + List like_conditions = new ArrayList<>(); + if(!map.isEmpty()){ + for (String columnName : map.keySet()) { + String searchValue = map.get(columnName); + if(columnName.contains(ExlConst.PRE_COLUMN_START)){ + String orgColumn = columnName.replace(ExlConst.PRE_COLUMN_START,"").trim(); + ExlConditionDto conditionDto = new ExlConditionDto(orgColumn,searchValue); + ge_conditions.add(conditionDto); + }else if (columnName.contains(ExlConst.PRE_COLUMN_END)){ + String orgColumn = columnName.replace(ExlConst.PRE_COLUMN_END,"").trim(); + ExlConditionDto conditionDto = new ExlConditionDto(orgColumn,searchValue); + le_conditions.add(conditionDto); + }else { + for (ExlColumnConf columnConf : columnList) { + if(columnConf.getColumnName().equals(columnName)){ + ExlConditionDto conditionDto = new ExlConditionDto(columnName,searchValue); + if (columnConf.getColumnType().equals(ExlConst.TYPE_INT)){ + eq_conditions.add(conditionDto); + }else if (columnConf.getColumnType().equals(ExlConst.TYPE_STRING)){ + like_conditions.add(conditionDto); + } + } + } + } + } + } + // page + Integer pageSize = PageUtil.getPageSize(); + Integer startRow = PageUtil.getStartRow(); + // query + Map queryMap = new HashMap<>(10); + queryMap.put("startRow",startRow); + queryMap.put("pageSize",pageSize); + queryMap.put("leList",le_conditions); + queryMap.put("geList",ge_conditions); + queryMap.put("eqList",eq_conditions); + queryMap.put("likeList",like_conditions); + String targetTableName = ExlConst.TABLE_NAME_PRE + tableConf.getTableName(); + return R.ok(exlTableConfMapper.listData(targetTableName,queryMap)); + } /** diff --git a/src/main/java/com/qs/serve/modules/exl/entity/dto/ExlConditionDto.java b/src/main/java/com/qs/serve/modules/exl/entity/dto/ExlConditionDto.java new file mode 100644 index 00000000..74e75b53 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/exl/entity/dto/ExlConditionDto.java @@ -0,0 +1,18 @@ +package com.qs.serve.modules.exl.entity.dto; + +import lombok.AllArgsConstructor; +import lombok.Data; + +/** + * @author YenHex + * @since 2023/8/15 + */ +@Data +@AllArgsConstructor +public class ExlConditionDto { + + String column; + + String value; + +} diff --git a/src/main/java/com/qs/serve/modules/exl/mapper/ExlTableConfMapper.java b/src/main/java/com/qs/serve/modules/exl/mapper/ExlTableConfMapper.java index 4c3e02eb..e498cef7 100644 --- a/src/main/java/com/qs/serve/modules/exl/mapper/ExlTableConfMapper.java +++ b/src/main/java/com/qs/serve/modules/exl/mapper/ExlTableConfMapper.java @@ -1,7 +1,12 @@ package com.qs.serve.modules.exl.mapper; +import com.baomidou.mybatisplus.annotation.InterceptorIgnore; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.qs.serve.modules.exl.entity.ExlTableConf; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; /** * 表配置 Mapper @@ -10,5 +15,9 @@ import com.qs.serve.modules.exl.entity.ExlTableConf; */ public interface ExlTableConfMapper extends BaseMapper { + + @InterceptorIgnore(tenantLine = "1") + List> listData(@Param("tableName") String tableName,@Param("query")Map query); + } diff --git a/src/main/java/com/qs/serve/modules/tbs/common/TbsBudgetCheckState.java b/src/main/java/com/qs/serve/modules/tbs/common/TbsBudgetCheckState.java index bbcabcda..7c6b27b1 100644 --- a/src/main/java/com/qs/serve/modules/tbs/common/TbsBudgetCheckState.java +++ b/src/main/java/com/qs/serve/modules/tbs/common/TbsBudgetCheckState.java @@ -7,12 +7,13 @@ package com.qs.serve.modules.tbs.common; public interface TbsBudgetCheckState { /** - * 0=未发布;1=审批中;2=完成;3-被驳回;4-中止; + * 0=未发布;1=审批中;2=完成;3-被驳回;4-中止;5关闭 */ int State_0_unPublish = 0; int State_1_apply = 1; int State_2_finished = 2; int State_3_setback = 3; int State_4_stop = 4; + int State_5_close = 4; } diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsBudgetUpdateAfterStartBo.java b/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsBudgetUpdateAfterStartBo.java index 68398209..740656c7 100644 --- a/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsBudgetUpdateAfterStartBo.java +++ b/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsBudgetUpdateAfterStartBo.java @@ -24,6 +24,9 @@ public class TbsBudgetUpdateAfterStartBo implements Serializable { /** 预算编码 */ private String budgetCode; + /** 原来的更变记录id */ + private String orgChangeId; + /** * 成本中心类型: center, diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/so/TbsBudgetSo.java b/src/main/java/com/qs/serve/modules/tbs/entity/so/TbsBudgetSo.java index d5365a42..3d93f516 100644 --- a/src/main/java/com/qs/serve/modules/tbs/entity/so/TbsBudgetSo.java +++ b/src/main/java/com/qs/serve/modules/tbs/entity/so/TbsBudgetSo.java @@ -28,9 +28,12 @@ public class TbsBudgetSo implements Serializable { private Integer budgetState; - /** 预算编码 */ + /** 预算标题 */ private String budgetCode; + /** 预算编码 */ + private String budgetNumber; + /** 科目编码搜索值 */ private String subjectValue; diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeServiceImpl.java index 55ae2efc..32ede9e9 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeServiceImpl.java @@ -72,6 +72,13 @@ public class TbsBudgetChangeServiceImpl extends ServiceImpl String templateCode = TbsSeeYonConst.BudgetApplyConf.Code(); SysUser sysUser = sysUserService.getById(AuthContextUtils.getSysUserId()); TbsBudget tbsBudget = this.getById(id); + if(tbsBudget.getBudgetState().equals(1)){ + Assert.throwEx(""); + } Map data = new HashMap<>(); data.put("exsp5", tbsBudget.getBudgetCode()); data.put("orgId", tbsBudget.getId().toString()); @@ -518,7 +521,7 @@ public class TbsBudgetServiceImpl extends ServiceImpl List attachList = attachService.listByIds(attachIds); budgetVo.setAttachList(attachList); } - //有更变时,修改为审批状态 + //TODO 添加子状态码;有更变时,修改为审批状态 if(budgetVo.getBudgetState().equals(1)&&!budgetVo.getBudgetCheckState().equals(TbsBudgetCheckState.State_1_apply)){ LambdaQueryWrapper change_lqw = new LambdaQueryWrapper<>(); change_lqw.eq(TbsBudgetChange::getBudgetId,budgetVo.getId()); diff --git a/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java b/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java index d27215d7..db2f4dc2 100644 --- a/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java @@ -247,6 +247,7 @@ public class VtbVerificationServiceImpl extends ServiceImpl + + + + + + + + + + + + + + + + + + + + exl_table_conf.`id`, + exl_table_conf.`table_name`, + exl_table_conf.`excel_title`, + exl_table_conf.`enable_flag`, + exl_table_conf.`enable_time`, + exl_table_conf.`remark`, + exl_table_conf.`create_time`, + exl_table_conf.`update_time`, + exl_table_conf.`tenant_id`, + exl_table_conf.`create_by`, + exl_table_conf.`update_by`, + exl_table_conf.`del_flag` + + + + + diff --git a/src/main/resources/mapper/tbs/TbsBudgetMapper.xml b/src/main/resources/mapper/tbs/TbsBudgetMapper.xml index 3c5e6fc4..dc9545e4 100644 --- a/src/main/resources/mapper/tbs/TbsBudgetMapper.xml +++ b/src/main/resources/mapper/tbs/TbsBudgetMapper.xml @@ -73,6 +73,7 @@ FROM `tbs_budget` `tbs_budget` LEFT JOIN `tbs_budget_condition` `tbs_budget_condition` ON `tbs_budget`.`id` = `tbs_budget_condition`.`budget_id` + and `tbs_budget`.`budget_number` like concat('%',#{query.budgetNumber},'%') and `tbs_budget`.`budget_state` = #{query.budgetState} and `tbs_budget`.`budget_code` like concat('%',#{query.budgetCode},'%') From 1b036fbccbde6d84c4da8fa2464b6af2d34835b2 Mon Sep 17 00:00:00 2001 From: Yen Date: Tue, 15 Aug 2023 14:19:52 +0800 Subject: [PATCH 8/8] =?UTF-8?q?=E5=8A=A8=E6=80=81=E8=A1=A8=E6=A0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../qs/serve/modules/exl/common/ExlConst.java | 1 + .../exl/common/TableCreateSqlUtil.java | 29 +++++----- .../controller/ExlTableConfController.java | 14 ++--- .../controller/ExlTableDataController.java | 54 +++---------------- .../modules/exl/entity/ExlColumnConf.java | 5 ++ .../service/impl/ExlTableConfServiceImpl.java | 6 +++ .../tbs/common/TbsBudgetCheckState.java | 2 +- .../controller/TbsBudgetChangeController.java | 7 +++ .../controller/TbsBudgetCheckController.java | 10 ++++ .../TbsBudgetChangeOperationServiceImpl.java | 2 +- src/main/java/com/qs/serve/task/TbsTask.java | 5 +- 11 files changed, 63 insertions(+), 72 deletions(-) diff --git a/src/main/java/com/qs/serve/modules/exl/common/ExlConst.java b/src/main/java/com/qs/serve/modules/exl/common/ExlConst.java index 5e33d9cc..6263c2f6 100644 --- a/src/main/java/com/qs/serve/modules/exl/common/ExlConst.java +++ b/src/main/java/com/qs/serve/modules/exl/common/ExlConst.java @@ -7,6 +7,7 @@ package com.qs.serve.modules.exl.common; public interface ExlConst { String TABLE_NAME_PRE = "exd_"; + String TABLE_COMMENT_PRE = "excel数据-"; String DATE_TYPE = "date"; String TYPE_INT = "int"; diff --git a/src/main/java/com/qs/serve/modules/exl/common/TableCreateSqlUtil.java b/src/main/java/com/qs/serve/modules/exl/common/TableCreateSqlUtil.java index bc2ca366..5eb675f2 100644 --- a/src/main/java/com/qs/serve/modules/exl/common/TableCreateSqlUtil.java +++ b/src/main/java/com/qs/serve/modules/exl/common/TableCreateSqlUtil.java @@ -13,27 +13,32 @@ import java.util.Map; public class TableCreateSqlUtil { public static final Map MYSQL_DATA_MAP = new HashMap<>(); + static { + MYSQL_DATA_MAP.put("int","bigint"); + MYSQL_DATA_MAP.put("string","varchar(300)"); + MYSQL_DATA_MAP.put("date","date"); + MYSQL_DATA_MAP.put("money","decimal(11, 2)"); + MYSQL_DATA_MAP.put("datetime","datetime"); + } public static final String COLUMN_NULL = " null "; public static final String COLUMN_NOT_NULL = " not null "; public static final String COLUMN_COMMENT = "COMMENT"; - public static String createMysqlTableSql(String tableName, List columnList){ + public static String createMysqlTableSql(String tableName,String tableRemark, List columnList){ StringBuffer result = new StringBuffer("CREATE TABLE `"+tableName+"` ("); - result.append(" `union_id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id',"); + result.append(" `union_row_id` varchar(255) NOT NULL AUTO_INCREMENT COMMENT 'union_row_id',"); for (ExlColumnConf column : columnList) { - String columnType = column.getColumnType(); + String columnType = MYSQL_DATA_MAP.get(column.getColumnType())==null?column.getColumnType():MYSQL_DATA_MAP.get(column.getColumnType()); String nullValue = column.getNotNullFlag().equals(1) ? COLUMN_NOT_NULL:COLUMN_NULL; - if(columnType.equals("int")){ - result.append("`"+column.getColumnName()+"` "+ - MYSQL_DATA_MAP.get(columnType) + - nullValue + - COLUMN_COMMENT + " '"+ - column.getColumnHeader()+"',"); - } + result.append("`"+column.getColumnName()+"` "+ + columnType + + nullValue + + COLUMN_COMMENT + " '"+ + column.getColumnHeader()+"',"); } - result.append(" PRIMARY KEY (`union_id`) USING BTREE "); - return result.append(")").toString(); + result.append(" PRIMARY KEY (`union_row_id`) USING BTREE "); + return result.append(") COMMENT = '"+tableRemark+"' ").toString(); } } diff --git a/src/main/java/com/qs/serve/modules/exl/controller/ExlTableConfController.java b/src/main/java/com/qs/serve/modules/exl/controller/ExlTableConfController.java index 82a38a42..4ffadbb6 100644 --- a/src/main/java/com/qs/serve/modules/exl/controller/ExlTableConfController.java +++ b/src/main/java/com/qs/serve/modules/exl/controller/ExlTableConfController.java @@ -61,13 +61,6 @@ public class ExlTableConfController { List list = exlTableConfService.list(lqw); return R.ok(list); } - - //测试传参 - @GetMapping("/test") - public R test(@RequestParam Map map){ - return R.ok(map); - } - /** * 翻页 * @param param @@ -167,8 +160,11 @@ public class ExlTableConfController { columnLqw.eq(ExlColumnConf::getTableConfId,tableId); List columnConfList = exlColumnConfService.list(columnLqw); if(tableConf.getEnableFlag().equals(0)){ - String sql = TableCreateSqlUtil.createMysqlTableSql(ExlConst.TABLE_NAME_PRE - + tableConf.getTableName(),columnConfList); + String sql = TableCreateSqlUtil.createMysqlTableSql( + ExlConst.TABLE_NAME_PRE + tableConf.getTableName(), + ExlConst.TABLE_COMMENT_PRE + tableConf.getExcelTitle(), + columnConfList); + log.debug(sql); boolean result = QsSqlSessionUtil.executeSql(sql,sqlSessionTemplate); if(result){ tableConf.setEnableFlag(1); diff --git a/src/main/java/com/qs/serve/modules/exl/controller/ExlTableDataController.java b/src/main/java/com/qs/serve/modules/exl/controller/ExlTableDataController.java index 7921c6b5..5bd5b562 100644 --- a/src/main/java/com/qs/serve/modules/exl/controller/ExlTableDataController.java +++ b/src/main/java/com/qs/serve/modules/exl/controller/ExlTableDataController.java @@ -49,7 +49,7 @@ public class ExlTableDataController { * test * @return */ - @GetMapping("/test/{tableConfigId}") + @GetMapping("/page/{tableConfigId}") public R test(@PathVariable("tableConfigId") Long tableConfigId,@RequestParam Map map){ // table ExlTableConf tableConf = exlTableConfService.getById(tableConfigId); @@ -103,59 +103,19 @@ public class ExlTableDataController { } - /** - * 翻页 - * @param param - * @return - */ - @GetMapping("/page") - public R> getPage(ExlTableConf param){ - LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(param); - PageUtil.startPage(); - List list = exlTableConfService.list(lqw); - return R.byPageHelperList(list); - } - - - /** - * 更新 - * @param param - * @return - */ - //@PostMapping("/updateById") - public R updateById(@RequestBody @Valid ExlTableBo param){ - return R.ok(); - } - /** * 新增 * @param param * @return */ - //@PostMapping("/save") - public R save(@RequestBody @Valid ExlTableBo param){ - return R.ok(); - } - - /** - * 删除 - * @param ids - * @return - */ - //@DeleteMapping("/deleteById/{ids}") - @SysLog(module = SystemModule.Excel, title = "表配置", biz = BizType.DELETE) - public R deleteById(@PathVariable("ids") String ids){ - List idsLong = StringUtils.splitIdLong(ids); - LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); - lqw.in(ExlTableConf::getId,ids); - lqw.eq(ExlTableConf::getEnableFlag,1); - Long count = exlTableConfService.count(lqw); - if(count>0){ - return R.error("已启用的配置不可删除"); + @PostMapping("/batchSave/{tableConfigId}") + public R batchSave(@RequestBody List param){ + for (Object obj : param) { + } - boolean result = exlTableConfService.removeByIds(idsLong); - return R.isTrue(result); + return R.ok(param); } + } diff --git a/src/main/java/com/qs/serve/modules/exl/entity/ExlColumnConf.java b/src/main/java/com/qs/serve/modules/exl/entity/ExlColumnConf.java index 2c33babf..2010fde7 100644 --- a/src/main/java/com/qs/serve/modules/exl/entity/ExlColumnConf.java +++ b/src/main/java/com/qs/serve/modules/exl/entity/ExlColumnConf.java @@ -32,6 +32,8 @@ public class ExlColumnConf implements Serializable { @TableId(type = IdType.AUTO) private Long id; + /** 非必传 */ + @JsonIgnore private Long tableConfId; /** 列名 */ @@ -55,6 +57,9 @@ public class ExlColumnConf implements Serializable { /** 空值标识 */ private Integer notNullFlag; + /** 空值标识 */ + private Integer keyFlag; + /** 创建时间 */ @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/exl/service/impl/ExlTableConfServiceImpl.java b/src/main/java/com/qs/serve/modules/exl/service/impl/ExlTableConfServiceImpl.java index d201886f..12987c9a 100644 --- a/src/main/java/com/qs/serve/modules/exl/service/impl/ExlTableConfServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/exl/service/impl/ExlTableConfServiceImpl.java @@ -3,6 +3,7 @@ package com.qs.serve.modules.exl.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.qs.serve.common.util.Assert; +import com.qs.serve.modules.exl.common.ExlConst; import com.qs.serve.modules.exl.entity.ExlColumnConf; import com.qs.serve.modules.exl.entity.dto.ExlTableBo; import com.qs.serve.modules.exl.service.ExlColumnConfService; @@ -12,6 +13,7 @@ import org.springframework.stereotype.Service; import com.qs.serve.modules.exl.entity.ExlTableConf; import com.qs.serve.modules.exl.service.ExlTableConfService; import com.qs.serve.modules.exl.mapper.ExlTableConfMapper; +import org.springframework.transaction.annotation.Transactional; import java.util.List; @@ -28,6 +30,7 @@ public class ExlTableConfServiceImpl extends ServiceImpl columnList = param.getColumnList(); columnList.forEach(a->{ a.setTableConfId(tableId); + if(a.getColumnType().equals(ExlConst.TYPE_MONEY)){ + a.setConditionFlag(0); + } a.setId(null); }); columnConfService.saveBatch(columnList); diff --git a/src/main/java/com/qs/serve/modules/tbs/common/TbsBudgetCheckState.java b/src/main/java/com/qs/serve/modules/tbs/common/TbsBudgetCheckState.java index 7c6b27b1..02721eab 100644 --- a/src/main/java/com/qs/serve/modules/tbs/common/TbsBudgetCheckState.java +++ b/src/main/java/com/qs/serve/modules/tbs/common/TbsBudgetCheckState.java @@ -14,6 +14,6 @@ public interface TbsBudgetCheckState { int State_2_finished = 2; int State_3_setback = 3; int State_4_stop = 4; - int State_5_close = 4; + int State_5_close = 5; } diff --git a/src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetChangeController.java b/src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetChangeController.java index 8befb337..e57af613 100644 --- a/src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetChangeController.java +++ b/src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetChangeController.java @@ -1,6 +1,8 @@ package com.qs.serve.modules.tbs.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.qs.serve.common.framework.manager.AsyncFactory; +import com.qs.serve.common.framework.manager.AsyncManager; import com.qs.serve.common.model.annotation.SysLog; import com.qs.serve.common.model.dto.PageVo; import com.qs.serve.common.model.dto.R; @@ -11,10 +13,12 @@ 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.sys.service.SysAttachService; +import com.qs.serve.modules.tbs.common.TbsBudgetCheckState; import com.qs.serve.modules.tbs.common.dto.TbsBudgetChangeVo; import com.qs.serve.modules.tbs.entity.*; import com.qs.serve.modules.tbs.entity.so.TbsBudgetChangeSo; import com.qs.serve.modules.tbs.service.*; +import com.qs.serve.modules.tbs.service.impl.TbsBudgetChangeOperationServiceImpl; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.security.access.prepost.PreAuthorize; @@ -82,6 +86,9 @@ public class TbsBudgetChangeController { if(budgetChange.getOrgAttachIds()!=null&&budgetChange.getOrgAttachIds().length>0){ budgetChange.setOrgAttachInfos(sysAttachService.listByIds(Arrays.asList(budgetChange.getOrgAttachIds()))); } + if (budgetChange.getBudgetCheckState().equals(TbsBudgetCheckState.State_1_apply)){ + AsyncManager.me().execute(AsyncFactory.submitBudgetChange(budgetChange.getId()+"")); + } return R.ok(budgetChange); } diff --git a/src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetCheckController.java b/src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetCheckController.java index b4fcf52f..5f7d34ce 100644 --- a/src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetCheckController.java +++ b/src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetCheckController.java @@ -39,6 +39,16 @@ public class TbsBudgetCheckController { private final TbsBudgetApplyOperationServiceImpl tbsBudgetApplyOperationService; private final TbsBudgetChangeOperationServiceImpl tbsBudgetChangeOperationService; + //测试 + @PostMapping("test/{id}") + public R test(@PathVariable String id){ + TbsAffairCommitBo param = new TbsAffairCommitBo(); + param.setTargetId(id); + tbsBudgetChangeOperationService.doFinished(param); + return R.ok(); + } + + /** * 提交申请 * @return diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeOperationServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeOperationServiceImpl.java index 3431449c..a2c717cc 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeOperationServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetChangeOperationServiceImpl.java @@ -85,7 +85,7 @@ public class TbsBudgetChangeOperationServiceImpl implements SeeYonOperationServi budgetChangeMapper.updateById(budgetChange); } TbsBudget tbsBudget = budgetMapper.selectById(budgetChange.getBudgetId()); - SysUser sysUser = getSysUserService().getBySyId(budgetChange.getUserId()); + SysUser sysUser = getSysUserService().getById(budgetChange.getUserId()); //更新条件 List allChangeConditionList = tbsBudgetChangeConditionService.listByChangeId(budgetChange.getId()); Map> map = allChangeConditionList.stream().collect(Collectors.groupingBy(TbsBudgetChangeCondition::getSourceFlag)); diff --git a/src/main/java/com/qs/serve/task/TbsTask.java b/src/main/java/com/qs/serve/task/TbsTask.java index 37c3b491..69bc1c52 100644 --- a/src/main/java/com/qs/serve/task/TbsTask.java +++ b/src/main/java/com/qs/serve/task/TbsTask.java @@ -45,10 +45,11 @@ public class TbsTask { List costApplyList = tbsCostApplyService.list(lqwApply); List costApplyIds = costApplyList.stream().map(a->a.getId()).collect(Collectors.toList()); //只更新审批完成的申请活动状态 - + LocalDate now = LocalDate.now(); + LocalDate lastDay = now.plusDays(-1); LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.in(TbsActivity::getCostApplyId,costApplyIds); - lqw.le(TbsActivity::getPreCheckDate, LocalDate.now()); + lqw.le(TbsActivity::getPreCheckDate, lastDay); lqw.eq(TbsActivity::getReopenFlag,0); // 2-完成;4-已释放;5-已关闭 表流程已完结,冻结无意义 lqw.eq(TbsActivity::getActivityState,TbsActivityState.STATE_0_Todo);