diff --git a/src/main/java/com/qs/serve/modules/seeyon/SeeYonController.java b/src/main/java/com/qs/serve/modules/seeyon/SeeYonController.java index ab070cec..791b6135 100644 --- a/src/main/java/com/qs/serve/modules/seeyon/SeeYonController.java +++ b/src/main/java/com/qs/serve/modules/seeyon/SeeYonController.java @@ -18,8 +18,10 @@ import com.qs.serve.modules.sys.entity.SysUser; import com.qs.serve.modules.sys.service.SysUserService; import com.qs.serve.modules.tbs.common.TbsSeeYonConst; import com.qs.serve.modules.tbs.entity.TbsActivity; +import com.qs.serve.modules.tbs.entity.TbsCostTodo; import com.qs.serve.modules.tbs.service.TbsActivityService; import com.qs.serve.modules.tbs.service.TbsCostApplyService; +import com.qs.serve.modules.tbs.service.TbsCostTodoService; import com.qs.serve.modules.tzc.entity.TzcPolicy; import com.qs.serve.modules.tzc.service.TzcPolicyService; import com.qs.serve.modules.vtb.entity.VtbVerification; @@ -52,6 +54,7 @@ public class SeeYonController { private ProjectProperties projectProperties; private TbsActivityService activityService; private CommonCheckService commonCheckService; + private TbsCostTodoService tbsCostTodoService; /** * 我的审批列表 @@ -220,6 +223,8 @@ public class SeeYonController { info = costApplyService.getById(obj.getTargetId()); }else if (tempCode.equals("ReleasePolicy")){ info = policyService.getById(obj.getTargetId()); + }else if (tempCode.equals("CheckCostAgree")){ + info = tbsCostTodoService.getById(obj.getTargetId()); } obj.setValueInfo(info); affairList.add(obj); diff --git a/src/main/java/com/qs/serve/modules/tbs/common/util/TbsActivityUtil.java b/src/main/java/com/qs/serve/modules/tbs/common/util/TbsActivityUtil.java index d400c9da..974fafd4 100644 --- a/src/main/java/com/qs/serve/modules/tbs/common/util/TbsActivityUtil.java +++ b/src/main/java/com/qs/serve/modules/tbs/common/util/TbsActivityUtil.java @@ -29,17 +29,30 @@ public class TbsActivityUtil { return sysConfOfWarningDays; } + /** + * 建立预期条件 + * @param lqw + * @param queryState 0=>未逾期、1=>已逾期、2=>即将逾期 + */ public static void buildOverdue(LambdaQueryWrapper lqw,Integer queryState){ if(queryState!=null){ if(queryState.equals(0)){ lqw.gt(TbsActivity::getPreCheckDate, LocalDate.now()); }else if(queryState.equals(1)){ - lqw.le(TbsActivity::getPreCheckDate, LocalDate.now()); + lqw.and(qw->{ + qw.le(TbsActivity::getPreCheckDate, LocalDate.now()) + .or() + .le(TbsActivity::getPreEndDateBack, LocalDate.now()); + }); }else if(queryState.equals(2)){ LocalDate now = LocalDate.now(); int sysConfOfWarningDays = getSysConfOfWarningDays(); LocalDate startNow = now.plusDays( - sysConfOfWarningDays ); - lqw.between(TbsActivity::getPreCheckDate,startNow , now); + lqw.and(qw->{ + qw.between(TbsActivity::getPreCheckDate,startNow , now) + .or() + .between(TbsActivity::getPreEndDateBack,startNow , now); + }); }else { lqw.eq(TbsActivity::getId,"0"); } diff --git a/src/main/java/com/qs/serve/modules/tbs/controller/TbsCostTodoCheckController.java b/src/main/java/com/qs/serve/modules/tbs/controller/TbsCostTodoCheckController.java index 1386883d..006be4b0 100644 --- a/src/main/java/com/qs/serve/modules/tbs/controller/TbsCostTodoCheckController.java +++ b/src/main/java/com/qs/serve/modules/tbs/controller/TbsCostTodoCheckController.java @@ -14,7 +14,9 @@ import com.qs.serve.modules.seeyon.entity.CtpAffairQo; import com.qs.serve.modules.seeyon.entity.bo.CtpAddNodeParam; import com.qs.serve.modules.tbs.entity.TbsCostTodo; import com.qs.serve.modules.tbs.entity.bo.TbsAffairCommitBo; +import com.qs.serve.modules.tbs.entity.bo.TbsSubmitToDoBo; import com.qs.serve.modules.tbs.entity.vo.CtpAffairVo; +import com.qs.serve.modules.tbs.service.TbsCostApplyService; import com.qs.serve.modules.tbs.service.TbsCostTodoService; import com.qs.serve.modules.tbs.service.impl.TbsCostApplyOperationServiceImpl; import com.qs.serve.modules.tbs.service.impl.TbsCostTodoOperationServiceImpl; @@ -37,8 +39,18 @@ import java.util.List; @RequestMapping("tbs/costTodo") public class TbsCostTodoCheckController { - private TbsCostApplyOperationServiceImpl tbsCostApplyOperationServiceImpl; + private TbsCostTodoOperationServiceImpl costTodoOperationService; + /** + * 提交审批 + * @param param + * @return + */ + @PostMapping("/submit") + public R save(@RequestBody TbsSubmitToDoBo param){ + costTodoOperationService.submit(param); + return R.ok(); + } /** * 审批列表(用于详情页) @@ -47,7 +59,7 @@ public class TbsCostTodoCheckController { */ @GetMapping("/ListAffairs") public R> pageAffair(String costApplyId){ - return tbsCostApplyOperationServiceImpl.pageAffair(costApplyId); + return costTodoOperationService.pageAffair(costApplyId); } /** @@ -57,8 +69,9 @@ public class TbsCostTodoCheckController { */ @GetMapping("/pageMemberAffair") public R> pageMemberAffair(CtpAffairQo param){ - return tbsCostApplyOperationServiceImpl.pageMemberAffair(param); + return costTodoOperationService.pageMemberAffair(param); } + /** * 提交审批节点 * @return @@ -68,7 +81,7 @@ public class TbsCostTodoCheckController { @SysLog(module = SystemModule.Budget, title = "费用申请", biz = BizType.DELETE) @PreAuthorize("hasRole('tbs:costApply:commit')") public R commitAffair(@RequestBody @Valid TbsAffairCommitBo affairCommit){ - return tbsCostApplyOperationServiceImpl.commitAffair(affairCommit); + return costTodoOperationService.commitAffair(affairCommit); } /** @@ -80,7 +93,7 @@ public class TbsCostTodoCheckController { @PostMapping("/compensate/{id}") @SysLog(module = SystemModule.Budget, title = "费用申请", biz = BizType.UPDATE) public R compensate(@PathVariable("id") String id){ - return tbsCostApplyOperationServiceImpl.runCompensate(id); + return costTodoOperationService.runCompensate(id); } /** @@ -92,7 +105,7 @@ public class TbsCostTodoCheckController { @PostMapping("/addNode") @SysLog(module = SystemModule.Budget, title = "费用申请", biz = BizType.DELETE) public R addNode(@RequestBody CtpAddNodeParam param){ - return tbsCostApplyOperationServiceImpl.addNode(param); + return costTodoOperationService.addNode(param); } /** @@ -101,7 +114,7 @@ public class TbsCostTodoCheckController { */ @PostMapping("/getAffairUnfinished") public R getUnfinished(){ - return tbsCostApplyOperationServiceImpl.getUnfinished(); + return costTodoOperationService.getUnfinished(); } } diff --git a/src/main/java/com/qs/serve/modules/tbs/controller/TbsCostTodoController.java b/src/main/java/com/qs/serve/modules/tbs/controller/TbsCostTodoController.java index cd8a1b2c..3c913027 100644 --- a/src/main/java/com/qs/serve/modules/tbs/controller/TbsCostTodoController.java +++ b/src/main/java/com/qs/serve/modules/tbs/controller/TbsCostTodoController.java @@ -6,11 +6,10 @@ import com.qs.serve.common.model.dto.PageVo; import com.qs.serve.common.model.dto.R; import com.qs.serve.common.model.enums.BizType; import com.qs.serve.common.model.enums.SystemModule; -import com.qs.serve.common.util.AuthContextUtils; -import com.qs.serve.common.util.PageUtil; -import com.qs.serve.common.util.CopierUtil; -import com.qs.serve.common.util.StringUtils; +import com.qs.serve.common.util.*; +import com.qs.serve.modules.sys.service.SysAttachService; import com.qs.serve.modules.sys.service.SysUserService; +import com.qs.serve.modules.tbs.common.TbsCommonCheckState; import com.qs.serve.modules.tbs.service.impl.TbsCostTodoOperationServiceImpl; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -21,6 +20,7 @@ import com.qs.serve.modules.tbs.entity.TbsCostTodo; import com.qs.serve.modules.tbs.service.TbsCostTodoService; import javax.validation.Valid; +import java.util.Arrays; import java.util.List; /** @@ -36,15 +36,20 @@ public class TbsCostTodoController { private TbsCostTodoService tbsCostTodoService; private TbsCostTodoOperationServiceImpl costTodoOperationService; + private SysAttachService attachService; /** - * 新增(提交审批) + * 新增 * @param param * @return */ @PostMapping("/save") public R save(@RequestBody @Valid TbsCostTodo param){ - costTodoOperationService.submit(param); + String todoCode = "XY"+ CodeGenUtil.generate(CodeGenUtil.SourceKey.AgreeCheck); + param.setTodoCode(todoCode); + param.setFinishedFlag(null); + param.setCheckStatus(0); + tbsCostTodoService.save(param); return R.ok(); } @@ -60,6 +65,19 @@ public class TbsCostTodoController { return R.ok(list); } + /** + * 我的翻页 + * @param param + * @return + */ + @GetMapping("/myPage") + public R> myPage(TbsCostTodo param){ + param.setCreateBy(AuthContextUtils.getSysUserId()); + PageUtil.startPage(); + List list = tbsCostTodoService.selectTbsCostTodoList(param); + return R.byPageHelperList(list); + } + /** * 翻页 * @param param @@ -81,21 +99,32 @@ public class TbsCostTodoController { @GetMapping("/getById/{id}") public R getById(@PathVariable("id") String id){ TbsCostTodo tbsCostTodo = tbsCostTodoService.getById(id); + if(tbsCostTodo.getAttachIds()!=null&&tbsCostTodo.getAttachIds().length>0){ + List list = attachService.listByIds(Arrays.asList(tbsCostTodo.getAttachIds())); + tbsCostTodo.setAttachList(list); + } + if(tbsCostTodo.getAttachIds2()!=null&&tbsCostTodo.getAttachIds2().length>0){ + List list = attachService.listByIds(Arrays.asList(tbsCostTodo.getAttachIds2())); + tbsCostTodo.setAttachList2(list); + } return R.ok(tbsCostTodo); } /** - * 更新(已取消) + * 更新 * @param param * @return */ @PostMapping("/updateById") public R updateById(@RequestBody @Valid TbsCostTodo param){ - if(1==1){return R.error();} String userId = AuthContextUtils.getSysUserId(); TbsCostTodo tbsCostTodo = tbsCostTodoService.getById(param.getId()); - if(!tbsCostTodo.getCreateBy().equals(userId)){ - return R.ok(); +// if(!tbsCostTodo.getCreateBy().equals(userId)){ +// return R.ok(); +// } + Integer state = tbsCostTodo.getCheckStatus(); + if(!state.equals(TbsCommonCheckState.State_1_apply)&&!state.equals(TbsCommonCheckState.State_2_finished)){ + return R.error("审批中或已完成的无法编辑"); } boolean result = tbsCostTodoService.updateById(param); return R.isTrue(result); @@ -103,18 +132,17 @@ public class TbsCostTodoController { /** - * 删除(已取消) + * 删除 * @param ids * @return */ @DeleteMapping("/deleteById/{ids}") public R deleteById(@PathVariable("ids") String ids){ - if(1==1){return R.error();} List idsLong = StringUtils.splitIdLong(ids); String userId = AuthContextUtils.getSysUserId(); LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.in(TbsCostTodo::getId,idsLong); - lqw.eq(TbsCostTodo::getCreateBy,userId); + //lqw.eq(TbsCostTodo::getCreateBy,userId); boolean result = tbsCostTodoService.remove(lqw); return R.isTrue(result); } diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/TbsActivity.java b/src/main/java/com/qs/serve/modules/tbs/entity/TbsActivity.java index 08297ac7..b1c580f4 100644 --- a/src/main/java/com/qs/serve/modules/tbs/entity/TbsActivity.java +++ b/src/main/java/com/qs/serve/modules/tbs/entity/TbsActivity.java @@ -93,6 +93,12 @@ public class TbsActivity implements Serializable { @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") private LocalDate actEndDate; + /** 预算结束时间(用于回退后设置) */ + @NotNull(message = "活动结束时间不能为空") + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") + private LocalDate preEndDateBack; + /** 预算开始时间 */ @NotNull(message = "活动开始时间不能为空") @DateTimeFormat(pattern = "yyyy-MM-dd") diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/TbsCostTodo.java b/src/main/java/com/qs/serve/modules/tbs/entity/TbsCostTodo.java index 3de83b44..cc53a493 100644 --- a/src/main/java/com/qs/serve/modules/tbs/entity/TbsCostTodo.java +++ b/src/main/java/com/qs/serve/modules/tbs/entity/TbsCostTodo.java @@ -66,7 +66,6 @@ public class TbsCostTodo implements Serializable { private BigDecimal amount; /** 完成状态 */ - @NotNull(message = "完成状态不能为空") private Integer finishedFlag; /** 完成时间 */ @@ -119,8 +118,17 @@ public class TbsCostTodo implements Serializable { @TableField(typeHandler = SplitStringTypeHandler.class,jdbcType= JdbcType.VARCHAR) private String[] attachIds; + /** 附件id */ + @TableField(typeHandler = SplitStringTypeHandler.class,jdbcType= JdbcType.VARCHAR) + private String[] attachIds2; + + /** 附件说明 */ + private String attachDesc; + @TableField(exist = false) private List attachList; + @TableField(exist = false) + private List attachList2; } diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsSubmitToDoBo.java b/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsSubmitToDoBo.java new file mode 100644 index 00000000..a28f169e --- /dev/null +++ b/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsSubmitToDoBo.java @@ -0,0 +1,23 @@ +package com.qs.serve.modules.tbs.entity.bo; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.qs.serve.common.framework.mybatis.handler.meta.SplitStringTypeHandler; +import lombok.Data; +import org.apache.ibatis.type.JdbcType; + +/** + * @author YenHex + * @since 2023/11/1 + */ +@Data +public class TbsSubmitToDoBo { + + private Long id; + + /** 附件id */ + private String[] attachIds2; + + /** 附件说明 */ + private String attachDesc; + +} diff --git a/src/main/java/com/qs/serve/modules/tbs/mapper/TbsCostTodoMapper.java b/src/main/java/com/qs/serve/modules/tbs/mapper/TbsCostTodoMapper.java index c9a873c5..f319db85 100644 --- a/src/main/java/com/qs/serve/modules/tbs/mapper/TbsCostTodoMapper.java +++ b/src/main/java/com/qs/serve/modules/tbs/mapper/TbsCostTodoMapper.java @@ -2,6 +2,8 @@ package com.qs.serve.modules.tbs.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.qs.serve.modules.tbs.entity.TbsCostTodo; +import org.apache.ibatis.annotations.Param; +import java.util.List; /** * 费用申请代办 Mapper @@ -10,5 +12,7 @@ import com.qs.serve.modules.tbs.entity.TbsCostTodo; */ public interface TbsCostTodoMapper extends BaseMapper { + List selectTbsCostTodoList(@Param("param") TbsCostTodo query); + } diff --git a/src/main/java/com/qs/serve/modules/tbs/service/TbsCostTodoService.java b/src/main/java/com/qs/serve/modules/tbs/service/TbsCostTodoService.java index 502cf210..aaa833bf 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/TbsCostTodoService.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/TbsCostTodoService.java @@ -2,6 +2,9 @@ package com.qs.serve.modules.tbs.service; import com.baomidou.mybatisplus.extension.service.IService; import com.qs.serve.modules.tbs.entity.TbsCostTodo; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** * 费用申请代办 服务接口 @@ -10,5 +13,7 @@ import com.qs.serve.modules.tbs.entity.TbsCostTodo; */ public interface TbsCostTodoService extends IService { + List selectTbsCostTodoList(TbsCostTodo query); + } diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostTodoOperationServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostTodoOperationServiceImpl.java index 1c8a5978..e4a3b219 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostTodoOperationServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostTodoOperationServiceImpl.java @@ -16,6 +16,7 @@ import com.qs.serve.modules.tbs.common.TbsSeeYonConst; import com.qs.serve.modules.tbs.entity.TbsBudget; import com.qs.serve.modules.tbs.entity.TbsCostTodo; import com.qs.serve.modules.tbs.entity.bo.TbsAffairCommitBo; +import com.qs.serve.modules.tbs.entity.bo.TbsSubmitToDoBo; import com.qs.serve.modules.tbs.mapper.TbsCostTodoMapper; import com.qs.serve.modules.tbs.service.TbsCostTodoService; import lombok.AllArgsConstructor; @@ -44,16 +45,15 @@ public class TbsCostTodoOperationServiceImpl implements SeeYonOperationService { /** * 提交 - * @param costTodo + * @param param */ @Transactional(rollbackFor = Exception.class) - public void submit(TbsCostTodo costTodo){ + public void submit(TbsSubmitToDoBo param){ + TbsCostTodo costTodo = tbsCostTodoMapper.selectById(param.getId()); + String todoCode = costTodo.getTodoCode(); String templateCode = this.getTemplateCode(); SysUser sysUser = sysUserMapper.selectById(AuthContextUtils.getSysUserId()); Map data = new HashMap<>(); - String todoCode = "XY"+ CodeGenUtil.generate(CodeGenUtil.SourceKey.AgreeCheck); - costTodo.setTodoCode(todoCode); - tbsCostTodoMapper.insert(costTodo); Long todoId = costTodo.getId(); data.put("exsp5", todoCode); data.put("orgId", todoId); @@ -86,6 +86,8 @@ public class TbsCostTodoOperationServiceImpl implements SeeYonOperationService { } costTodo.setSubmitTime(LocalDateTime.now()); costTodo.setSyFormId(formId); + costTodo.setAttachIds2(param.getAttachIds2()); + costTodo.setAttachDesc(param.getAttachDesc()); tbsCostTodoMapper.updateById(costTodo); } diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostTodoServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostTodoServiceImpl.java index cbeb3b2c..67bd4391 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostTodoServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostTodoServiceImpl.java @@ -3,11 +3,14 @@ package com.qs.serve.modules.tbs.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Service; import com.qs.serve.modules.tbs.entity.TbsCostTodo; import com.qs.serve.modules.tbs.service.TbsCostTodoService; import com.qs.serve.modules.tbs.mapper.TbsCostTodoMapper; +import java.util.List; + /** * 费用申请代办 服务实现类 * @author YenHex @@ -18,5 +21,10 @@ import com.qs.serve.modules.tbs.mapper.TbsCostTodoMapper; @AllArgsConstructor public class TbsCostTodoServiceImpl extends ServiceImpl implements TbsCostTodoService { + @Override + public List selectTbsCostTodoList(TbsCostTodo query) { + return baseMapper.selectTbsCostTodoList(query); + } + } diff --git a/src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationApplication.java b/src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationApplication.java index 601eca28..33dd9580 100644 --- a/src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationApplication.java +++ b/src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationApplication.java @@ -44,7 +44,9 @@ import org.springframework.web.bind.annotation.RequestBody; import javax.validation.Valid; import java.math.BigDecimal; +import java.time.LocalDate; import java.time.LocalDateTime; +import java.time.temporal.TemporalUnit; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -359,6 +361,7 @@ public class VtbVerificationApplication { TbsActivity activity = new TbsActivity(); activity.setId(verification.getActivityId()); activity.setActivityState(TbsActivityState.STATE_0_Todo); + activity.setPreEndDateBack(LocalDate.now().plusDays(3)); tbsActivityService.updateById(activity); } diff --git a/src/main/java/com/qs/serve/task/TbsTask.java b/src/main/java/com/qs/serve/task/TbsTask.java index 69bc1c52..e4b623ec 100644 --- a/src/main/java/com/qs/serve/task/TbsTask.java +++ b/src/main/java/com/qs/serve/task/TbsTask.java @@ -49,7 +49,13 @@ public class TbsTask { LocalDate lastDay = now.plusDays(-1); LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.in(TbsActivity::getCostApplyId,costApplyIds); - lqw.le(TbsActivity::getPreCheckDate, lastDay); + lqw.and(qw->{ + qw.and( + qw1->qw1.le(TbsActivity::getPreCheckDate, lastDay) + .isNull(TbsActivity::getPreEndDateBack) + ).or() + .le(TbsActivity::getPreEndDateBack, lastDay); + }); lqw.eq(TbsActivity::getReopenFlag,0); // 2-完成;4-已释放;5-已关闭 表流程已完结,冻结无意义 lqw.eq(TbsActivity::getActivityState,TbsActivityState.STATE_0_Todo); diff --git a/src/main/resources/mapper/tbs/TbsCostTodoMapper.xml b/src/main/resources/mapper/tbs/TbsCostTodoMapper.xml new file mode 100644 index 00000000..5b950f50 --- /dev/null +++ b/src/main/resources/mapper/tbs/TbsCostTodoMapper.xml @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + tbs_cost_todo.`id`, + tbs_cost_todo.`todo_code`, + tbs_cost_todo.`cost_apply_id`, + tbs_cost_todo.`check_status`, + tbs_cost_todo.`sy_from_id`, + tbs_cost_todo.`submit_time`, + tbs_cost_todo.`brands`, + tbs_cost_todo.`descr`, + tbs_cost_todo.`amount`, + tbs_cost_todo.`finished_flag`, + tbs_cost_todo.`finished_time`, + tbs_cost_todo.`remark`, + tbs_cost_todo.`create_time`, + tbs_cost_todo.`create_by`, + tbs_cost_todo.`update_time`, + tbs_cost_todo.`update_by`, + tbs_cost_todo.`del_flag`, + tbs_cost_todo.`tenant_id`, + tbs_cost_todo.`pay_msg`, + tbs_cost_todo.`pre_pay_date` + + + +