新增文件预览列表修复了任务显示ossId但是无法现在的情况
新增项目编号索引
This commit is contained in:
@@ -0,0 +1,22 @@
|
|||||||
|
package com.ruoyi.oa.controller;
|
||||||
|
|
||||||
|
|
||||||
|
import com.ruoyi.oa.service.CodeGeneratorService;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.PathVariable;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
@RestController
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
@RequestMapping("/code")
|
||||||
|
public class CodeGeneratorController {
|
||||||
|
|
||||||
|
private final CodeGeneratorService gen;
|
||||||
|
|
||||||
|
@GetMapping("/code/{prefix}")
|
||||||
|
public String genCode(@PathVariable String prefix) {
|
||||||
|
return gen.nextCode(prefix);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -43,6 +43,9 @@ public class SysOaProjectController extends BaseController {
|
|||||||
|
|
||||||
private final SysOaTaskMapper sysOaTaskMapper;
|
private final SysOaTaskMapper sysOaTaskMapper;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询项目管理列表
|
* 查询项目管理列表
|
||||||
*/
|
*/
|
||||||
@@ -51,6 +54,15 @@ public class SysOaProjectController extends BaseController {
|
|||||||
return iSysOaProjectService.queryPageList(bo, pageQuery);
|
return iSysOaProjectService.queryPageList(bo, pageQuery);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询项目管理列表
|
||||||
|
*/
|
||||||
|
@GetMapping("/ware-list")
|
||||||
|
public TableDataInfo<SysOaProjectVo> listWareProject(SysOaProjectBo bo, PageQuery pageQuery) {
|
||||||
|
return iSysOaProjectService.listWareProject(bo, pageQuery);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 导出项目管理列表
|
* 导出项目管理列表
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -0,0 +1,17 @@
|
|||||||
|
package com.ruoyi.oa.domain;
|
||||||
|
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@TableName("sys_prefix_counter")
|
||||||
|
public class PrefixCounter {
|
||||||
|
|
||||||
|
@TableId(value = "prefix", type = IdType.INPUT)
|
||||||
|
private String prefix; // 主键,用作前缀
|
||||||
|
|
||||||
|
private Long seq; // 当前序号
|
||||||
|
}
|
||||||
@@ -144,4 +144,9 @@ public class SysOaProject extends BaseEntity {
|
|||||||
* 预付款
|
* 预付款
|
||||||
*/
|
*/
|
||||||
private Double prePay;
|
private Double prePay;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 代号类型
|
||||||
|
*/
|
||||||
|
private String projectCode;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -176,5 +176,10 @@ public class SysOaProjectBo extends BaseEntity {
|
|||||||
* 预付款
|
* 预付款
|
||||||
*/
|
*/
|
||||||
private Double prePay;
|
private Double prePay;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 代号类型
|
||||||
|
*/
|
||||||
|
private String projectCode;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -87,4 +87,6 @@ public class OaProjectScheduleVo {
|
|||||||
|
|
||||||
private String description;
|
private String description;
|
||||||
|
|
||||||
|
private String projectCode;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,9 +7,10 @@ import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
|
|||||||
import com.alibaba.excel.annotation.ExcelProperty;
|
import com.alibaba.excel.annotation.ExcelProperty;
|
||||||
import com.ruoyi.common.annotation.ExcelDictFormat;
|
import com.ruoyi.common.annotation.ExcelDictFormat;
|
||||||
import com.ruoyi.common.convert.ExcelDictConvert;
|
import com.ruoyi.common.convert.ExcelDictConvert;
|
||||||
|
import com.ruoyi.system.domain.SysOss;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -137,5 +138,5 @@ public class SysOaContractVo {
|
|||||||
@ExcelProperty(value = "备注")
|
@ExcelProperty(value = "备注")
|
||||||
private String remark;
|
private String remark;
|
||||||
|
|
||||||
|
private List<SysOss> fileList;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ import com.alibaba.excel.annotation.ExcelProperty;
|
|||||||
import com.ruoyi.common.annotation.ExcelDictFormat;
|
import com.ruoyi.common.annotation.ExcelDictFormat;
|
||||||
import com.ruoyi.common.convert.ExcelDictConvert;
|
import com.ruoyi.common.convert.ExcelDictConvert;
|
||||||
import com.ruoyi.oa.domain.SysOaTask;
|
import com.ruoyi.oa.domain.SysOaTask;
|
||||||
|
import com.ruoyi.system.domain.SysOss;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
@@ -239,4 +240,11 @@ public class SysOaProjectVo {
|
|||||||
* 预付款
|
* 预付款
|
||||||
*/
|
*/
|
||||||
private Double prePay;
|
private Double prePay;
|
||||||
|
|
||||||
|
private List<SysOss> fileList;
|
||||||
|
/**
|
||||||
|
* 代号类型
|
||||||
|
*/
|
||||||
|
private String projectCode;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,11 +6,12 @@ import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
|
|||||||
import com.alibaba.excel.annotation.ExcelProperty;
|
import com.alibaba.excel.annotation.ExcelProperty;
|
||||||
import com.ruoyi.common.annotation.ExcelDictFormat;
|
import com.ruoyi.common.annotation.ExcelDictFormat;
|
||||||
import com.ruoyi.common.convert.ExcelDictConvert;
|
import com.ruoyi.common.convert.ExcelDictConvert;
|
||||||
|
import com.ruoyi.system.domain.SysOss;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import org.springframework.format.annotation.DateTimeFormat;
|
import org.springframework.format.annotation.DateTimeFormat;
|
||||||
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -110,4 +111,6 @@ public class SysOaTaskItemVo {
|
|||||||
|
|
||||||
|
|
||||||
private String nickName;
|
private String nickName;
|
||||||
}
|
|
||||||
|
private List<SysOss> itemFileList;
|
||||||
|
}
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import com.alibaba.excel.annotation.ExcelProperty;
|
|||||||
import com.ruoyi.common.annotation.ExcelDictFormat;
|
import com.ruoyi.common.annotation.ExcelDictFormat;
|
||||||
import com.ruoyi.common.convert.ExcelDictConvert;
|
import com.ruoyi.common.convert.ExcelDictConvert;
|
||||||
import com.ruoyi.common.core.domain.entity.SysUser;
|
import com.ruoyi.common.core.domain.entity.SysUser;
|
||||||
|
import com.ruoyi.system.domain.SysOss;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import org.springframework.format.annotation.DateTimeFormat;
|
import org.springframework.format.annotation.DateTimeFormat;
|
||||||
|
|
||||||
@@ -210,4 +211,6 @@ public class SysOaTaskVo {
|
|||||||
private List<SysOaTaskItemVo> taskItemVoList;
|
private List<SysOaTaskItemVo> taskItemVoList;
|
||||||
|
|
||||||
private String files;
|
private String files;
|
||||||
|
|
||||||
|
private List<SysOss> fileList;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -67,5 +67,6 @@ public class SysOaWarehouseDetailVo extends BaseEntity {
|
|||||||
|
|
||||||
private String model;
|
private String model;
|
||||||
private String specifications;
|
private String specifications;
|
||||||
|
private String brand;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,22 @@
|
|||||||
|
package com.ruoyi.oa.mapper;
|
||||||
|
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import com.ruoyi.oa.domain.PrefixCounter;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
import org.apache.ibatis.annotations.Select;
|
||||||
|
import org.apache.ibatis.annotations.Update;
|
||||||
|
|
||||||
|
public interface PrefixCounterMapper extends BaseMapper<PrefixCounter> {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 若首次使用该 prefix ⇒ 插入 seq = 1
|
||||||
|
* 否则 ⇒ seq 原子 +1,并把新值写进 LAST_INSERT_ID
|
||||||
|
*/
|
||||||
|
|
||||||
|
void upsertAndIncr(@Param("prefix") String prefix);
|
||||||
|
|
||||||
|
/** 取上一步 LAST_INSERT_ID()(就是它自增后的新序号) */
|
||||||
|
@Select("SELECT LAST_INSERT_ID()")
|
||||||
|
Long getLastSeq();
|
||||||
|
}
|
||||||
@@ -1,9 +1,14 @@
|
|||||||
package com.ruoyi.oa.mapper;
|
package com.ruoyi.oa.mapper;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.toolkit.Constants;
|
||||||
import com.ruoyi.oa.domain.SysOaContract;
|
import com.ruoyi.oa.domain.SysOaContract;
|
||||||
import com.ruoyi.oa.domain.vo.SysOaContractVo;
|
import com.ruoyi.oa.domain.vo.SysOaContractVo;
|
||||||
import com.ruoyi.common.core.mapper.BaseMapperPlus;
|
import com.ruoyi.common.core.mapper.BaseMapperPlus;
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 合同管理Mapper接口
|
* 合同管理Mapper接口
|
||||||
@@ -14,4 +19,8 @@ import org.apache.ibatis.annotations.Mapper;
|
|||||||
@Mapper
|
@Mapper
|
||||||
public interface SysOaContractMapper extends BaseMapperPlus<SysOaContractMapper, SysOaContract, SysOaContractVo> {
|
public interface SysOaContractMapper extends BaseMapperPlus<SysOaContractMapper, SysOaContract, SysOaContractVo> {
|
||||||
|
|
||||||
|
SysOaContractVo selectVoOnePlus(@Param(Constants.WRAPPER) QueryWrapper<SysOaContract> sysOaContractLambdaQueryWrapper);
|
||||||
|
|
||||||
|
List<SysOaContractVo> selectVoListPlus(@Param(Constants.WRAPPER)QueryWrapper<SysOaContract> sysOaContractLambdaQueryWrapper);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -51,4 +51,10 @@ public interface SysOaProjectMapper extends BaseMapperPlus<SysOaProjectMapper, S
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
Page<SysOaProjectVo> selectVoListPage(@Param("page") Page<SysOaProjectVo> build,@Param(Constants.WRAPPER) QueryWrapper<SysOaProject> bo);
|
Page<SysOaProjectVo> selectVoListPage(@Param("page") Page<SysOaProjectVo> build,@Param(Constants.WRAPPER) QueryWrapper<SysOaProject> bo);
|
||||||
|
|
||||||
|
Page<SysOaProjectVo> listWareProject(@Param("page") Page<SysOaProjectVo> build,@Param(Constants.WRAPPER) QueryWrapper<SysOaProject> bo);
|
||||||
|
|
||||||
|
|
||||||
|
SysOaProjectVo selectVoByIdPlus(Long projectId);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,6 @@
|
|||||||
|
package com.ruoyi.oa.service;
|
||||||
|
|
||||||
|
public interface CodeGeneratorService {
|
||||||
|
|
||||||
|
String nextCode(String prefix) ;
|
||||||
|
}
|
||||||
@@ -76,4 +76,6 @@ public interface ISysOaProjectService {
|
|||||||
TableDataInfo<SysOaProjectVo> queryPageList2(SysOaProjectBo bo, PageQuery pageQuery);
|
TableDataInfo<SysOaProjectVo> queryPageList2(SysOaProjectBo bo, PageQuery pageQuery);
|
||||||
|
|
||||||
TableDataInfo<SysOaProjectVo> listProjects(SysOaProjectBo bo, PageQuery pageQuery);
|
TableDataInfo<SysOaProjectVo> listProjects(SysOaProjectBo bo, PageQuery pageQuery);
|
||||||
|
|
||||||
|
TableDataInfo<SysOaProjectVo> listWareProject(SysOaProjectBo bo, PageQuery pageQuery);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,26 @@
|
|||||||
|
package com.ruoyi.oa.service.impl;
|
||||||
|
|
||||||
|
import com.ruoyi.oa.mapper.PrefixCounterMapper;
|
||||||
|
import com.ruoyi.oa.service.CodeGeneratorService;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
@Service
|
||||||
|
public class CodeGeneratorServiceImpl implements CodeGeneratorService {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private PrefixCounterMapper mapper;
|
||||||
|
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
@Override
|
||||||
|
public String nextCode(String prefix) {
|
||||||
|
mapper.upsertAndIncr(prefix); // 原子插/更
|
||||||
|
long num = mapper.getLastSeq(); // 拿到新的序号
|
||||||
|
// 改动在这里:%07d 表示数字宽度 7,不足的前面补 0
|
||||||
|
String padded = String.format("%07d", num);
|
||||||
|
return prefix + "-" + padded; // e.g. TH-0000001
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -10,9 +10,12 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|||||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
import com.ruoyi.oa.domain.OaProjectScheduleStep;
|
import com.ruoyi.oa.domain.OaProjectScheduleStep;
|
||||||
import com.ruoyi.oa.domain.OaScheduleTemplate;
|
import com.ruoyi.oa.domain.OaScheduleTemplate;
|
||||||
|
import com.ruoyi.oa.domain.OaScheduleTemplateStep;
|
||||||
import com.ruoyi.oa.domain.bo.OaProjectScheduleStepBo;
|
import com.ruoyi.oa.domain.bo.OaProjectScheduleStepBo;
|
||||||
import com.ruoyi.oa.domain.bo.OaScheduleTemplateStepBo;
|
import com.ruoyi.oa.domain.bo.OaScheduleTemplateStepBo;
|
||||||
import com.ruoyi.oa.domain.vo.OaProjectScheduleStepVo;
|
import com.ruoyi.oa.domain.vo.OaProjectScheduleStepVo;
|
||||||
|
import com.ruoyi.oa.domain.vo.OaScheduleTemplateStepVo;
|
||||||
|
import com.ruoyi.oa.domain.vo.OaScheduleTemplateVo;
|
||||||
import com.ruoyi.oa.mapper.OaScheduleTemplateMapper;
|
import com.ruoyi.oa.mapper.OaScheduleTemplateMapper;
|
||||||
import com.ruoyi.oa.service.IOaProjectScheduleStepService;
|
import com.ruoyi.oa.service.IOaProjectScheduleStepService;
|
||||||
import com.ruoyi.oa.service.IOaScheduleTemplateStepService;
|
import com.ruoyi.oa.service.IOaScheduleTemplateStepService;
|
||||||
@@ -111,6 +114,7 @@ public class OaProjectScheduleServiceImpl implements IOaProjectScheduleService {
|
|||||||
}
|
}
|
||||||
bo.setTemplateId(templateId);
|
bo.setTemplateId(templateId);
|
||||||
}
|
}
|
||||||
|
|
||||||
bo.setCurrentStep(1L);
|
bo.setCurrentStep(1L);
|
||||||
OaProjectSchedule add = BeanUtil.toBean(bo, OaProjectSchedule.class);
|
OaProjectSchedule add = BeanUtil.toBean(bo, OaProjectSchedule.class);
|
||||||
validEntityBeforeSave(add);
|
validEntityBeforeSave(add);
|
||||||
@@ -118,13 +122,19 @@ public class OaProjectScheduleServiceImpl implements IOaProjectScheduleService {
|
|||||||
if (flag) {
|
if (flag) {
|
||||||
bo.setScheduleId(add.getScheduleId());
|
bo.setScheduleId(add.getScheduleId());
|
||||||
}
|
}
|
||||||
|
Long templateId = bo.getTemplateId();
|
||||||
|
OaScheduleTemplateStepBo oaScheduleTemplateStep = new OaScheduleTemplateStepBo();
|
||||||
|
oaScheduleTemplateStep.setTemplateId(templateId);
|
||||||
|
List<OaScheduleTemplateStepVo> oaScheduleTemplateStepVos = scheduleTemplateStepService.queryList(oaScheduleTemplateStep);
|
||||||
|
|
||||||
for (int i = 0; i < bo.getSteps().size(); i++) {
|
for (int i = 0; i < bo.getSteps().size(); i++) {
|
||||||
|
|
||||||
OaProjectScheduleStepBo step = bo.getSteps().get(i);
|
OaProjectScheduleStepBo step = bo.getSteps().get(i);
|
||||||
step.setScheduleId(add.getScheduleId());
|
step.setScheduleId(add.getScheduleId());
|
||||||
step.setStepOrder((long) (i+1));
|
OaScheduleTemplateStepVo oaScheduleTemplateStepVo = oaScheduleTemplateStepVos.get(i);
|
||||||
|
step.setStepOrder(oaScheduleTemplateStepVo.getStepOrder());
|
||||||
step.setBatchId(1L);
|
step.setBatchId(1L);
|
||||||
|
step.setHeader(oaScheduleTemplateStepVo.getHeader());
|
||||||
if (i==0){
|
if (i==0){
|
||||||
step.setActualStart(new Date());
|
step.setActualStart(new Date());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ public class OaScheduleTemplateStepServiceImpl implements IOaScheduleTemplateSte
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public TableDataInfo<OaScheduleTemplateStepVo> queryPageList(OaScheduleTemplateStepBo bo, PageQuery pageQuery) {
|
public TableDataInfo<OaScheduleTemplateStepVo> queryPageList(OaScheduleTemplateStepBo bo, PageQuery pageQuery) {
|
||||||
QueryWrapper<OaScheduleTemplateStep> lqw = buildQueryWrapper(bo);
|
QueryWrapper<OaScheduleTemplateStep> lqw = buildQueryWrapperSelect(bo);
|
||||||
Page<OaScheduleTemplateStepVo> result = baseMapper.selectVoPagePlus(pageQuery.build(), lqw);
|
Page<OaScheduleTemplateStepVo> result = baseMapper.selectVoPagePlus(pageQuery.build(), lqw);
|
||||||
return TableDataInfo.build(result);
|
return TableDataInfo.build(result);
|
||||||
}
|
}
|
||||||
@@ -62,6 +62,19 @@ public class OaScheduleTemplateStepServiceImpl implements IOaScheduleTemplateSte
|
|||||||
private QueryWrapper<OaScheduleTemplateStep> buildQueryWrapper(OaScheduleTemplateStepBo bo) {
|
private QueryWrapper<OaScheduleTemplateStep> buildQueryWrapper(OaScheduleTemplateStepBo bo) {
|
||||||
Map<String, Object> params = bo.getParams();
|
Map<String, Object> params = bo.getParams();
|
||||||
QueryWrapper<OaScheduleTemplateStep> lqw = Wrappers.query();
|
QueryWrapper<OaScheduleTemplateStep> lqw = Wrappers.query();
|
||||||
|
lqw.eq(bo.getTemplateId() != null, "template_id", bo.getTemplateId());
|
||||||
|
lqw.eq(bo.getStepOrder() != null, "step_order", bo.getStepOrder());
|
||||||
|
lqw.like(StringUtils.isNotBlank(bo.getStepName()), "step_name", bo.getStepName());
|
||||||
|
lqw.eq(bo.getExpectedDays() != null,"expected_days", bo.getExpectedDays());
|
||||||
|
lqw.eq(StringUtils.isNotBlank(bo.getHeader()), "header", bo.getHeader());
|
||||||
|
lqw.eq(StringUtils.isNotBlank(bo.getDescription()), "description", bo.getDescription());
|
||||||
|
lqw.orderByAsc("step_order");
|
||||||
|
return lqw;
|
||||||
|
}
|
||||||
|
|
||||||
|
private QueryWrapper<OaScheduleTemplateStep> buildQueryWrapperSelect(OaScheduleTemplateStepBo bo) {
|
||||||
|
Map<String, Object> params = bo.getParams();
|
||||||
|
QueryWrapper<OaScheduleTemplateStep> lqw = Wrappers.query();
|
||||||
|
|
||||||
lqw.eq(bo.getTemplateId() != null, "template_id", bo.getTemplateId());
|
lqw.eq(bo.getTemplateId() != null, "template_id", bo.getTemplateId());
|
||||||
lqw.eq(bo.getStepOrder() != null, "step_order", bo.getStepOrder());
|
lqw.eq(bo.getStepOrder() != null, "step_order", bo.getStepOrder());
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package com.ruoyi.oa.service.impl;
|
package com.ruoyi.oa.service.impl;
|
||||||
|
|
||||||
import cn.hutool.core.bean.BeanUtil;
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.ruoyi.common.core.domain.R;
|
import com.ruoyi.common.core.domain.R;
|
||||||
import com.ruoyi.common.utils.StringUtils;
|
import com.ruoyi.common.utils.StringUtils;
|
||||||
import com.ruoyi.common.core.page.TableDataInfo;
|
import com.ruoyi.common.core.page.TableDataInfo;
|
||||||
@@ -70,8 +71,9 @@ public class SysOaContractServiceImpl implements ISysOaContractService {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public SysOaContractVo findContractByProjectId(SysOaContractBo bo){
|
public SysOaContractVo findContractByProjectId(SysOaContractBo bo){
|
||||||
LambdaQueryWrapper<SysOaContract> sysOaContractLambdaQueryWrapper = buildContractWrapper(bo);
|
QueryWrapper<SysOaContract> sysOaContractLambdaQueryWrapper = buildContractWrapper(bo);
|
||||||
return contractMapper.selectVoOne(sysOaContractLambdaQueryWrapper);
|
|
||||||
|
return contractMapper.selectVoOnePlus(sysOaContractLambdaQueryWrapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -81,8 +83,8 @@ public class SysOaContractServiceImpl implements ISysOaContractService {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public List<SysOaContractVo> selectContractByProjectId(SysOaContractBo bo){
|
public List<SysOaContractVo> selectContractByProjectId(SysOaContractBo bo){
|
||||||
LambdaQueryWrapper<SysOaContract> sysOaContractLambdaQueryWrapper = buildContractWrapper(bo); ;
|
QueryWrapper<SysOaContract> sysOaContractLambdaQueryWrapper = buildContractWrapper(bo); ;
|
||||||
return contractMapper.selectVoList(sysOaContractLambdaQueryWrapper);
|
return contractMapper.selectVoListPlus(sysOaContractLambdaQueryWrapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
private LambdaQueryWrapper<SysOaContract> buildQueryWrapper(SysOaContractBo bo) {
|
private LambdaQueryWrapper<SysOaContract> buildQueryWrapper(SysOaContractBo bo) {
|
||||||
@@ -97,10 +99,10 @@ public class SysOaContractServiceImpl implements ISysOaContractService {
|
|||||||
return lqw;
|
return lqw;
|
||||||
}
|
}
|
||||||
|
|
||||||
private LambdaQueryWrapper<SysOaContract> buildContractWrapper(SysOaContractBo bo) {
|
private QueryWrapper<SysOaContract> buildContractWrapper(SysOaContractBo bo) {
|
||||||
LambdaQueryWrapper<SysOaContract> lqw = Wrappers.lambdaQuery();
|
QueryWrapper<SysOaContract> lqw = Wrappers.query();
|
||||||
lqw.eq(SysOaContract::getProjectId, bo.getProjectId());
|
lqw.eq("soc.project_id", bo.getProjectId());
|
||||||
lqw.eq(SysOaContract::getContractType, bo.getContractType());
|
lqw.eq("soc.contract_type", bo.getContractType());
|
||||||
|
|
||||||
return lqw;
|
return lqw;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,7 +12,10 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|||||||
import com.ruoyi.oa.domain.bo.SysOaWarehouseDetailBo;
|
import com.ruoyi.oa.domain.bo.SysOaWarehouseDetailBo;
|
||||||
import com.ruoyi.oa.domain.vo.SysOaOutWarehouseListVo;
|
import com.ruoyi.oa.domain.vo.SysOaOutWarehouseListVo;
|
||||||
import com.ruoyi.oa.domain.vo.SysOaTaskVo;
|
import com.ruoyi.oa.domain.vo.SysOaTaskVo;
|
||||||
|
import com.ruoyi.oa.service.CodeGeneratorService;
|
||||||
|
import liquibase.pro.packaged.A;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import com.ruoyi.oa.domain.bo.SysOaProjectBo;
|
import com.ruoyi.oa.domain.bo.SysOaProjectBo;
|
||||||
import com.ruoyi.oa.domain.vo.SysOaProjectVo;
|
import com.ruoyi.oa.domain.vo.SysOaProjectVo;
|
||||||
@@ -35,12 +38,22 @@ public class SysOaProjectServiceImpl implements ISysOaProjectService {
|
|||||||
|
|
||||||
private final SysOaProjectMapper baseMapper;
|
private final SysOaProjectMapper baseMapper;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private CodeGeneratorService codeGeneratorService;
|
||||||
|
|
||||||
|
|
||||||
|
// 1. 定义常量列表(最好放到某个常量类里)
|
||||||
|
private static final Set<String> VALID_PREFIXES = Collections.unmodifiableSet(new HashSet<>(Arrays.asList(
|
||||||
|
"PL", "TC", "GI", "GL", "ZAM", "CC", "CR", "STL", "SM", "TH","RJ"
|
||||||
|
)));
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询项目管理
|
* 查询项目管理
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public SysOaProjectVo queryById(Long projectId) {
|
public SysOaProjectVo queryById(Long projectId) {
|
||||||
return baseMapper.selectVoById(projectId);
|
return baseMapper.selectVoByIdPlus(projectId);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -67,6 +80,8 @@ public class SysOaProjectServiceImpl implements ISysOaProjectService {
|
|||||||
LambdaQueryWrapper<SysOaProject> lqw = Wrappers.lambdaQuery();
|
LambdaQueryWrapper<SysOaProject> lqw = Wrappers.lambdaQuery();
|
||||||
lqw.like(StringUtils.isNotBlank(bo.getProjectName()), SysOaProject::getProjectName, bo.getProjectName());
|
lqw.like(StringUtils.isNotBlank(bo.getProjectName()), SysOaProject::getProjectName, bo.getProjectName());
|
||||||
lqw.eq(StringUtils.isNotBlank(bo.getProjectNum()), SysOaProject::getProjectNum, bo.getProjectNum());
|
lqw.eq(StringUtils.isNotBlank(bo.getProjectNum()), SysOaProject::getProjectNum, bo.getProjectNum());
|
||||||
|
lqw.like(StringUtils.isNotBlank(bo.getProjectCode()), SysOaProject::getProjectCode, bo.getProjectCode());
|
||||||
|
|
||||||
lqw.eq(bo.getTradeType() != null, SysOaProject::getTradeType, bo.getTradeType());
|
lqw.eq(bo.getTradeType() != null, SysOaProject::getTradeType, bo.getTradeType());
|
||||||
lqw.gt(bo.getPrePay() != null && bo.getPrePay() > 0, SysOaProject::getPrePay, 0);
|
lqw.gt(bo.getPrePay() != null && bo.getPrePay() > 0, SysOaProject::getPrePay, 0);
|
||||||
lqw.eq(StringUtils.isNotBlank(bo.getProjectType()), SysOaProject::getProjectType, bo.getProjectType());
|
lqw.eq(StringUtils.isNotBlank(bo.getProjectType()), SysOaProject::getProjectType, bo.getProjectType());
|
||||||
@@ -83,6 +98,9 @@ public class SysOaProjectServiceImpl implements ISysOaProjectService {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public Boolean insertByBo(SysOaProjectBo bo) {
|
public Boolean insertByBo(SysOaProjectBo bo) {
|
||||||
|
if (bo.getProjectCode()!=null){
|
||||||
|
bo.setProjectCode(codeGeneratorService.nextCode(bo.getProjectCode()));
|
||||||
|
}
|
||||||
SysOaProject add = BeanUtil.toBean(bo, SysOaProject.class);
|
SysOaProject add = BeanUtil.toBean(bo, SysOaProject.class);
|
||||||
validEntityBeforeSave(add);
|
validEntityBeforeSave(add);
|
||||||
boolean flag = baseMapper.insert(add) > 0;
|
boolean flag = baseMapper.insert(add) > 0;
|
||||||
@@ -97,11 +115,17 @@ public class SysOaProjectServiceImpl implements ISysOaProjectService {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public Boolean updateByBo(SysOaProjectBo bo) {
|
public Boolean updateByBo(SysOaProjectBo bo) {
|
||||||
|
String prefix = bo.getProjectCode();
|
||||||
|
if (prefix != null && VALID_PREFIXES.contains(prefix)) {
|
||||||
|
// 只有当前缀在上面列表里,才真正去生成新编号
|
||||||
|
bo.setProjectCode(codeGeneratorService.nextCode(prefix));
|
||||||
|
}
|
||||||
SysOaProject update = BeanUtil.toBean(bo, SysOaProject.class);
|
SysOaProject update = BeanUtil.toBean(bo, SysOaProject.class);
|
||||||
validEntityBeforeSave(update);
|
validEntityBeforeSave(update);
|
||||||
return baseMapper.updateById(update) > 0;
|
return baseMapper.updateById(update) > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 2. 在你的逻辑里做判断
|
||||||
/**
|
/**
|
||||||
* 保存前的数据校验
|
* 保存前的数据校验
|
||||||
*/
|
*/
|
||||||
@@ -242,12 +266,26 @@ public class SysOaProjectServiceImpl implements ISysOaProjectService {
|
|||||||
return TableDataInfo.build(result);
|
return TableDataInfo.build(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查看存在出库的项目
|
||||||
|
* @param bo
|
||||||
|
* @param pageQuery
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public TableDataInfo<SysOaProjectVo> listWareProject(SysOaProjectBo bo, PageQuery pageQuery) {
|
||||||
|
QueryWrapper<SysOaProject> lqw = Wrappers.query();
|
||||||
|
lqw.like(StringUtils.isNotBlank(bo.getProjectName()), "sop.projec_name", bo.getProjectName());
|
||||||
|
lqw.like(StringUtils.isNotBlank(bo.getProjectName()), "sop.projec_name", bo.getProjectName());
|
||||||
|
Page<SysOaProjectVo> result = baseMapper.listWareProject(pageQuery.build(), lqw);
|
||||||
|
return TableDataInfo.build(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private QueryWrapper<SysOaProject> buildOutWareQueryWrapper(SysOaWarehouseDetailBo bo) {
|
private QueryWrapper<SysOaProject> buildOutWareQueryWrapper(SysOaWarehouseDetailBo bo) {
|
||||||
QueryWrapper<SysOaProject> lqw = Wrappers.query();
|
QueryWrapper<SysOaProject> lqw = Wrappers.query();
|
||||||
lqw.like(StringUtils.isNotBlank(bo.getProjectName()), "sop.projec_name", bo.getProjectName());
|
lqw.like(StringUtils.isNotBlank(bo.getProjectName()), "sop.projec_name", bo.getProjectName());
|
||||||
lqw.eq(StringUtils.isNotBlank(bo.getWarehouseName()), "sow.name", bo.getWarehouseName());
|
lqw.orderByDesc("sowm.create_time");
|
||||||
lqw.orderByDesc("sop.create_time");
|
|
||||||
return lqw;
|
return lqw;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -164,22 +164,6 @@ public class SysOaTaskServiceImpl implements ISysOaTaskService {
|
|||||||
|
|
||||||
boolean flag = false;
|
boolean flag = false;
|
||||||
for (Long workerId : workerIdList) {
|
for (Long workerId : workerIdList) {
|
||||||
if(Objects.nonNull(bo.getAccessory())){
|
|
||||||
List<String> fileUrls = Arrays.stream(bo.getAccessory().split(","))
|
|
||||||
.map(String::valueOf)
|
|
||||||
.collect(Collectors.toList());
|
|
||||||
String fileIds = ossService.insertFiles(fileUrls);
|
|
||||||
|
|
||||||
bo.setAccessory(fileIds);
|
|
||||||
}
|
|
||||||
if (Objects.nonNull(bo.getFiles())) {
|
|
||||||
List<String> fileUrls = Arrays.stream(bo.getFiles().split(","))
|
|
||||||
.map(String::valueOf)
|
|
||||||
.collect(Collectors.toList());
|
|
||||||
String fileIds = ossService.insertFiles(fileUrls);
|
|
||||||
|
|
||||||
bo.setFiles(fileIds);
|
|
||||||
}
|
|
||||||
SysOaTask add = BeanUtil.toBean(bo, SysOaTask.class);
|
SysOaTask add = BeanUtil.toBean(bo, SysOaTask.class);
|
||||||
add.setCreateUserId(LoginHelper.getUserId());
|
add.setCreateUserId(LoginHelper.getUserId());
|
||||||
validEntityBeforeSave(add);
|
validEntityBeforeSave(add);
|
||||||
|
|||||||
@@ -46,9 +46,11 @@
|
|||||||
op.project_grade,
|
op.project_grade,
|
||||||
op.project_status,
|
op.project_status,
|
||||||
op.trade_type,
|
op.trade_type,
|
||||||
|
op.project_code,
|
||||||
op.pre_pay,
|
op.pre_pay,
|
||||||
opss.plan_end,
|
opss.plan_end,
|
||||||
TIMESTAMPDIFF(DAY, NOW(), opss.plan_end) AS remainTime,
|
opss.header,
|
||||||
|
DATEDIFF(DATE(opss.plan_end), CURDATE()) AS remainTime,
|
||||||
ROUND(
|
ROUND(
|
||||||
(
|
(
|
||||||
(ops.current_step - CASE WHEN opss.status = 0 THEN 1 ELSE 0 END)
|
(ops.current_step - CASE WHEN opss.status = 0 THEN 1 ELSE 0 END)
|
||||||
|
|||||||
@@ -21,6 +21,7 @@
|
|||||||
<result property="status" column="status"/>
|
<result property="status" column="status"/>
|
||||||
<result property="expectedDays" column="expected_days"/>
|
<result property="expectedDays" column="expected_days"/>
|
||||||
<result property="useFlag" column="use_flag"/>
|
<result property="useFlag" column="use_flag"/>
|
||||||
|
<result property="header" column="header"/>
|
||||||
|
|
||||||
<!-- ========== 附件列表:多对一 折叠 ========= -->
|
<!-- ========== 附件列表:多对一 折叠 ========= -->
|
||||||
<collection property="fileList"
|
<collection property="fileList"
|
||||||
|
|||||||
@@ -27,6 +27,7 @@
|
|||||||
s.reporter,
|
s.reporter,
|
||||||
s.project_id AS projectId,
|
s.project_id AS projectId,
|
||||||
s.remark,
|
s.remark,
|
||||||
|
s.type,
|
||||||
p.project_name AS projectName
|
p.project_name AS projectName
|
||||||
FROM oa_report_summary s
|
FROM oa_report_summary s
|
||||||
LEFT JOIN sys_oa_project p ON s.project_id = p.project_id
|
LEFT JOIN sys_oa_project p ON s.project_id = p.project_id
|
||||||
@@ -42,6 +43,9 @@
|
|||||||
</if>
|
</if>
|
||||||
<if test="bo.projectId != null">
|
<if test="bo.projectId != null">
|
||||||
AND s.project_id = #{bo.projectId}
|
AND s.project_id = #{bo.projectId}
|
||||||
|
</if>
|
||||||
|
<if test="bo.type != null">
|
||||||
|
AND s.type = #{bo.type}
|
||||||
</if>
|
</if>
|
||||||
AND s.del_flag = 0
|
AND s.del_flag = 0
|
||||||
</where>
|
</where>
|
||||||
|
|||||||
@@ -0,0 +1,15 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
<!DOCTYPE mapper
|
||||||
|
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
|
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
|
<mapper namespace="com.ruoyi.oa.mapper.PrefixCounterMapper">
|
||||||
|
|
||||||
|
|
||||||
|
<insert id="upsertAndIncr">
|
||||||
|
INSERT INTO sys_prefix_counter (prefix, seq)
|
||||||
|
VALUES (#{prefix}, LAST_INSERT_ID(1))
|
||||||
|
ON DUPLICATE KEY UPDATE
|
||||||
|
seq = LAST_INSERT_ID(seq + 1)
|
||||||
|
|
||||||
|
</insert>
|
||||||
|
</mapper>
|
||||||
@@ -266,43 +266,21 @@
|
|||||||
SELECT m.month,
|
SELECT m.month,
|
||||||
|
|
||||||
ROUND(
|
ROUND(
|
||||||
COUNT(
|
COUNT(DISTINCT CASE
|
||||||
DISTINCT CASE
|
WHEN a.project_id NOT IN (0, 1)
|
||||||
WHEN a.project_id NOT IN (0, 1)
|
THEN CONCAT(a.user_id, '_', DATE(a.create_time)) END) /
|
||||||
THEN CONCAT(a.user_id, '_', DATE(a.create_time))
|
NULLIF(COUNT(DISTINCT CASE WHEN a.project_id != 0 THEN a.user_id END) *
|
||||||
END
|
COUNT(DISTINCT CASE WHEN a.project_id != 0 THEN DATE(a.create_time) END), 0), 4
|
||||||
)
|
|
||||||
/
|
|
||||||
NULLIF(
|
|
||||||
COUNT(
|
|
||||||
DISTINCT CASE
|
|
||||||
WHEN a.project_id != 0
|
|
||||||
THEN a.user_id
|
|
||||||
END
|
|
||||||
)
|
|
||||||
*
|
|
||||||
COUNT(
|
|
||||||
DISTINCT CASE
|
|
||||||
WHEN a.project_id != 0
|
|
||||||
THEN DATE(a.create_time)
|
|
||||||
END
|
|
||||||
),
|
|
||||||
0
|
|
||||||
),
|
|
||||||
4
|
|
||||||
) AS attendanceRate,
|
) AS attendanceRate,
|
||||||
|
|
||||||
SUM(CASE WHEN a.project_id = 0 THEN 1 ELSE 0 END) AS tripCount,
|
SUM(CASE WHEN a.project_id = 0 THEN 1 ELSE 0 END) AS tripCount,
|
||||||
|
|
||||||
COUNT(CASE WHEN a.project_id = 1 THEN 1 END) AS leavePeople,
|
COUNT(CASE WHEN a.project_id = 1 THEN 1 END) AS leavePeople,
|
||||||
|
|
||||||
SUM(CASE
|
SUM(CASE
|
||||||
WHEN a.project_id NOT IN (0, 1)
|
WHEN a.project_id NOT IN (0, 1)
|
||||||
AND IFNULL(a.hour, 0) > 8
|
AND IFNULL(a.hour, 0) > 8
|
||||||
THEN IFNULL(a.hour, 0) - 8
|
THEN IFNULL(a.hour, 0) - 8
|
||||||
ELSE 0
|
ELSE 0
|
||||||
END) AS overtimeHours
|
END) AS overtimeHours
|
||||||
|
|
||||||
FROM (SELECT DATE_FORMAT(#{refDate}, '%Y-%m') AS month,
|
FROM (SELECT DATE_FORMAT(#{refDate}, '%Y-%m') AS month,
|
||||||
LAST_DAY(#{refDate}) AS last_day,
|
LAST_DAY(#{refDate}) AS last_day,
|
||||||
CASE
|
CASE
|
||||||
|
|||||||
@@ -4,9 +4,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
<mapper namespace="com.ruoyi.oa.mapper.SysOaContractMapper">
|
<mapper namespace="com.ruoyi.oa.mapper.SysOaContractMapper">
|
||||||
|
|
||||||
<resultMap type="com.ruoyi.oa.domain.SysOaContract" id="SysOaContractResult">
|
<resultMap type="com.ruoyi.oa.domain.vo.SysOaContractVo" id="SysOaContractResult">
|
||||||
<result property="contractId" column="contract_id"/>
|
<result property="contractId" column="contract_id"/>
|
||||||
<result property="processId" column="process_id"/>
|
|
||||||
<result property="contractNum" column="contract_num"/>
|
<result property="contractNum" column="contract_num"/>
|
||||||
<result property="contractName" column="contract_name"/>
|
<result property="contractName" column="contract_name"/>
|
||||||
<result property="firstName" column="first_name"/>
|
<result property="firstName" column="first_name"/>
|
||||||
@@ -23,9 +22,86 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<result property="remark" column="remark"/>
|
<result property="remark" column="remark"/>
|
||||||
<result property="createBy" column="create_by"/>
|
<result property="createBy" column="create_by"/>
|
||||||
<result property="createTime" column="create_time"/>
|
<result property="createTime" column="create_time"/>
|
||||||
<result property="updateBy" column="update_by"/>
|
<collection property="fileList" ofType="com.ruoyi.system.domain.SysOss" javaType="list">
|
||||||
<result property="updateTime" column="update_time"/>
|
<result property="ossId" column="oss_id"/>
|
||||||
|
<result property="fileName" column="file_name"/>
|
||||||
|
<result property="fileSuffix" column="file_suffix"/>
|
||||||
|
<result property="originalName" column="original_name"/>
|
||||||
|
<result property="url" column="url"/>
|
||||||
|
<result property="service" column="service"/>
|
||||||
|
</collection>
|
||||||
</resultMap>
|
</resultMap>
|
||||||
|
|
||||||
|
|
||||||
|
<select id="selectVoOnePlus" resultMap="SysOaContractResult">
|
||||||
|
select soc.contract_id,
|
||||||
|
soc.project_id,
|
||||||
|
soc.contract_num,
|
||||||
|
soc.contract_name,
|
||||||
|
soc.first_name,
|
||||||
|
soc.first_person,
|
||||||
|
soc.first_phone,
|
||||||
|
soc.second_name,
|
||||||
|
soc.second_person,
|
||||||
|
soc.second_phone,
|
||||||
|
soc.contract_price,
|
||||||
|
soc.sign_time,
|
||||||
|
soc.validity,
|
||||||
|
soc.contract_type,
|
||||||
|
soc.contract_status,
|
||||||
|
soc.accessory,
|
||||||
|
soc.remark,
|
||||||
|
soc.create_by,
|
||||||
|
soc.create_time,
|
||||||
|
soc.update_by,
|
||||||
|
soc.update_time,
|
||||||
|
so.oss_id,
|
||||||
|
file_name,
|
||||||
|
original_name,
|
||||||
|
file_suffix,
|
||||||
|
url,
|
||||||
|
service,
|
||||||
|
is_public,
|
||||||
|
owner_id
|
||||||
|
from sys_oa_contract soc
|
||||||
|
left join sys_oss so on FIND_IN_SET(so.oss_id, soc.accessory)
|
||||||
|
${ew.getCustomSqlSegment}
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<select id="selectVoListPlus" resultMap="SysOaContractResult">
|
||||||
|
select soc.contract_id,
|
||||||
|
soc.project_id,
|
||||||
|
soc.contract_num,
|
||||||
|
soc.contract_name,
|
||||||
|
soc.first_name,
|
||||||
|
soc.first_person,
|
||||||
|
soc.first_phone,
|
||||||
|
soc.second_name,
|
||||||
|
soc.second_person,
|
||||||
|
soc.second_phone,
|
||||||
|
soc.contract_price,
|
||||||
|
soc.sign_time,
|
||||||
|
soc.validity,
|
||||||
|
soc.contract_type,
|
||||||
|
soc.contract_status,
|
||||||
|
soc.accessory,
|
||||||
|
soc.remark,
|
||||||
|
soc.create_by,
|
||||||
|
soc.create_time,
|
||||||
|
soc.update_by,
|
||||||
|
soc.update_time,
|
||||||
|
so.oss_id,
|
||||||
|
file_name,
|
||||||
|
original_name,
|
||||||
|
file_suffix,
|
||||||
|
url,
|
||||||
|
service,
|
||||||
|
is_public,
|
||||||
|
owner_id
|
||||||
|
from sys_oa_contract soc
|
||||||
|
left join sys_oss so on FIND_IN_SET(so.oss_id, soc.accessory)
|
||||||
|
${ew.getCustomSqlSegment}
|
||||||
|
</select>
|
||||||
|
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|||||||
@@ -60,7 +60,15 @@
|
|||||||
<result property="createTime" column="create_time"/>
|
<result property="createTime" column="create_time"/>
|
||||||
<result property="count" column="count"/>
|
<result property="count" column="count"/>
|
||||||
<result property="laborCost" column="labor_cost"/>
|
<result property="laborCost" column="labor_cost"/>
|
||||||
|
<result property="projectCode" column="project_code"/>
|
||||||
|
<collection property="fileList" ofType="com.ruoyi.system.domain.SysOss" javaType="list">
|
||||||
|
<result property="ossId" column="oss_id"/>
|
||||||
|
<result property="fileName" column="file_name"/>
|
||||||
|
<result property="fileSuffix" column="file_suffix"/>
|
||||||
|
<result property="originalName" column="original_name"/>
|
||||||
|
<result property="url" column="url"/>
|
||||||
|
<result property="service" column="service"/>
|
||||||
|
</collection>
|
||||||
</resultMap>
|
</resultMap>
|
||||||
|
|
||||||
|
|
||||||
@@ -84,6 +92,7 @@
|
|||||||
<select id="selectPageOutList" resultMap="SysOaOutWarehouseListVoResult">
|
<select id="selectPageOutList" resultMap="SysOaOutWarehouseListVoResult">
|
||||||
select sop.project_id,
|
select sop.project_id,
|
||||||
project_name,
|
project_name,
|
||||||
|
sop.project_code,
|
||||||
soow.warehouse_id,
|
soow.warehouse_id,
|
||||||
soow.id as soow_id,
|
soow.id as soow_id,
|
||||||
soow.amount,
|
soow.amount,
|
||||||
@@ -99,6 +108,7 @@
|
|||||||
SELECT
|
SELECT
|
||||||
p.project_id,
|
p.project_id,
|
||||||
p.project_name,
|
p.project_name,
|
||||||
|
p.project_code,
|
||||||
p.color,
|
p.color,
|
||||||
-- 子查询里已经聚合完 labor_cost
|
-- 子查询里已经聚合完 labor_cost
|
||||||
a.labor_cost,
|
a.labor_cost,
|
||||||
@@ -136,6 +146,7 @@
|
|||||||
<select id="getProjectDataByMonthAndDate" resultType="com.ruoyi.oa.domain.vo.SysOaProjectVo">
|
<select id="getProjectDataByMonthAndDate" resultType="com.ruoyi.oa.domain.vo.SysOaProjectVo">
|
||||||
select sum(soa.day_length + soa.hour / 8) as labor_cost,
|
select sum(soa.day_length + soa.hour / 8) as labor_cost,
|
||||||
color,
|
color,
|
||||||
|
sop.project_code,
|
||||||
sop.project_name,
|
sop.project_name,
|
||||||
date_format(soa.create_time, '%Y-%m-%d') as create_time
|
date_format(soa.create_time, '%Y-%m-%d') as create_time
|
||||||
from sys_oa_project sop
|
from sys_oa_project sop
|
||||||
@@ -147,6 +158,7 @@
|
|||||||
<select id="selectListToCost" resultType="com.ruoyi.oa.domain.vo.SysOaCostAllVo">
|
<select id="selectListToCost" resultType="com.ruoyi.oa.domain.vo.SysOaCostAllVo">
|
||||||
SELECT
|
SELECT
|
||||||
sop.project_name,sop.project_num,sop.project_id,sop.funds,
|
sop.project_name,sop.project_num,sop.project_id,sop.funds,
|
||||||
|
sop.project_code,
|
||||||
|
|
||||||
(
|
(
|
||||||
SELECT COALESCE(SUM(soc.cost),0)
|
SELECT COALESCE(SUM(soc.cost),0)
|
||||||
@@ -264,6 +276,7 @@
|
|||||||
p.trade_type,
|
p.trade_type,
|
||||||
p.project_id,
|
p.project_id,
|
||||||
p.project_name,
|
p.project_name,
|
||||||
|
p.project_code,
|
||||||
p.project_num,
|
p.project_num,
|
||||||
p.project_type,
|
p.project_type,
|
||||||
p.address,
|
p.address,
|
||||||
@@ -339,6 +352,7 @@
|
|||||||
sop.project_id AS p_id,
|
sop.project_id AS p_id,
|
||||||
sop.project_name AS project_name,
|
sop.project_name AS project_name,
|
||||||
sop.update_time,
|
sop.update_time,
|
||||||
|
sop.project_code,
|
||||||
t.task_id AS task_id,
|
t.task_id AS task_id,
|
||||||
t.task_type AS task_type,
|
t.task_type AS task_type,
|
||||||
t.status AS task_status,
|
t.status AS task_status,
|
||||||
@@ -389,6 +403,7 @@
|
|||||||
<result property="projectName" column="project_name"/>
|
<result property="projectName" column="project_name"/>
|
||||||
<result property="projectNum" column="project_num"/>
|
<result property="projectNum" column="project_num"/>
|
||||||
<result property="projectType" column="project_type"/>
|
<result property="projectType" column="project_type"/>
|
||||||
|
<result property="projectCode" column="project_code,"/>
|
||||||
<result property="remainTime" column="remainTime"/>
|
<result property="remainTime" column="remainTime"/>
|
||||||
<!-- 根据项目 ID 查询顶级进度(parent_id 为 0 或 NULL) -->
|
<!-- 根据项目 ID 查询顶级进度(parent_id 为 0 或 NULL) -->
|
||||||
<collection property="progressList"
|
<collection property="progressList"
|
||||||
@@ -428,6 +443,7 @@
|
|||||||
p.progress_name,
|
p.progress_name,
|
||||||
p.parent_id,
|
p.parent_id,
|
||||||
p.sort,
|
p.sort,
|
||||||
|
|
||||||
p.remark,
|
p.remark,
|
||||||
p.status,
|
p.status,
|
||||||
-- 孩子节点总数:如果没有匹配则返回 0
|
-- 孩子节点总数:如果没有匹配则返回 0
|
||||||
@@ -474,6 +490,7 @@
|
|||||||
p.project_name,
|
p.project_name,
|
||||||
p.project_num,
|
p.project_num,
|
||||||
p.project_type,
|
p.project_type,
|
||||||
|
p.project_code,
|
||||||
p.funds,
|
p.funds,
|
||||||
TIMESTAMPDIFF(DAY, NOW(), p.postpone_time) AS remainTime
|
TIMESTAMPDIFF(DAY, NOW(), p.postpone_time) AS remainTime
|
||||||
FROM sys_oa_project p
|
FROM sys_oa_project p
|
||||||
@@ -488,6 +505,7 @@
|
|||||||
sop.project_num,
|
sop.project_num,
|
||||||
sop.begin_time,
|
sop.begin_time,
|
||||||
sop.finish_time,
|
sop.finish_time,
|
||||||
|
sop.project_code,
|
||||||
sop.functionary,
|
sop.functionary,
|
||||||
IFNULL(
|
IFNULL(
|
||||||
SUM(CASE WHEN d.detail_status = 1 THEN 1 ELSE 0 END) * 100
|
SUM(CASE WHEN d.detail_status = 1 THEN 1 ELSE 0 END) * 100
|
||||||
@@ -502,6 +520,86 @@
|
|||||||
AND d.del_flag = 0
|
AND d.del_flag = 0
|
||||||
${ ew.getCustomSqlSegment}
|
${ ew.getCustomSqlSegment}
|
||||||
</select>
|
</select>
|
||||||
|
<select id="listWareProject" resultType="com.ruoyi.oa.domain.vo.SysOaProjectVo">
|
||||||
|
SELECT distinct sop.project_id,
|
||||||
|
project_name,
|
||||||
|
project_num,
|
||||||
|
project_type,
|
||||||
|
address,
|
||||||
|
funds,
|
||||||
|
functionary,
|
||||||
|
begin_time,
|
||||||
|
finish_time,
|
||||||
|
delivery,
|
||||||
|
guarantee,
|
||||||
|
introduction,
|
||||||
|
project_grade,
|
||||||
|
project_status,
|
||||||
|
contract_id,
|
||||||
|
invoice_name,
|
||||||
|
invoice_number,
|
||||||
|
invoice_address,
|
||||||
|
invoice_bank,
|
||||||
|
accessory,
|
||||||
|
bail,
|
||||||
|
is_postpone,
|
||||||
|
postpone_reason,
|
||||||
|
postpone_time,
|
||||||
|
color,
|
||||||
|
trade_type,
|
||||||
|
sop.project_code,
|
||||||
|
pre_pay
|
||||||
|
FROM sys_oa_project sop
|
||||||
|
INNER JOIN sys_oa_warehouse_master sown
|
||||||
|
ON sown.project_id = sop.project_id
|
||||||
|
${ ew.getCustomSqlSegment}
|
||||||
|
</select>
|
||||||
|
<select id="selectVoByIdPlus" resultMap="SysOaProjectVoResult">
|
||||||
|
select sop.project_id,
|
||||||
|
project_name,
|
||||||
|
project_num,
|
||||||
|
project_type,
|
||||||
|
address,
|
||||||
|
funds,
|
||||||
|
functionary,
|
||||||
|
begin_time,
|
||||||
|
finish_time,
|
||||||
|
delivery,
|
||||||
|
guarantee,
|
||||||
|
introduction,
|
||||||
|
project_grade,
|
||||||
|
project_status,
|
||||||
|
contract_id,
|
||||||
|
invoice_name,
|
||||||
|
invoice_number,
|
||||||
|
invoice_address,
|
||||||
|
invoice_bank,
|
||||||
|
bail,
|
||||||
|
remark,
|
||||||
|
accessory,
|
||||||
|
sop.create_by,
|
||||||
|
sop.create_time,
|
||||||
|
sop.update_by,
|
||||||
|
sop.update_time,
|
||||||
|
sop.project_code,
|
||||||
|
is_postpone,
|
||||||
|
postpone_reason,
|
||||||
|
postpone_time,
|
||||||
|
color,
|
||||||
|
trade_type,
|
||||||
|
pre_pay,
|
||||||
|
so.oss_id,
|
||||||
|
file_name,
|
||||||
|
original_name,
|
||||||
|
file_suffix,
|
||||||
|
url,
|
||||||
|
service,
|
||||||
|
is_public,
|
||||||
|
owner_id
|
||||||
|
from sys_oa_project sop
|
||||||
|
left join sys_oss so on FIND_IN_SET(so.oss_id, sop.accessory)
|
||||||
|
where sop.project_id = #{projectId}
|
||||||
|
</select>
|
||||||
|
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|||||||
@@ -14,7 +14,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<result property="beginTime" column="begin_time"/>
|
<result property="beginTime" column="begin_time"/>
|
||||||
<result property="finishTime" column="finish_time"/>
|
<result property="finishTime" column="finish_time"/>
|
||||||
<result property="content" column="content"/>
|
<result property="content" column="content"/>
|
||||||
<result property="accessory" column="accessory"/>
|
|
||||||
<result property="remark" column="remark"/>
|
<result property="remark" column="remark"/>
|
||||||
<result property="state" column="state"/>
|
<result property="state" column="state"/>
|
||||||
<result property="createBy" column="create_by"/>
|
<result property="createBy" column="create_by"/>
|
||||||
@@ -26,13 +25,34 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<collection property="taskItemVoList" ofType="com.ruoyi.oa.domain.vo.SysOaTaskItemVo" javaType="list">
|
<collection property="taskItemVoList" ofType="com.ruoyi.oa.domain.vo.SysOaTaskItemVo" javaType="list">
|
||||||
<result property="itemId" column="item_id"/>
|
<result property="itemId" column="item_id"/>
|
||||||
<result property="content" column="itemContent"/>
|
<result property="content" column="itemContent"/>
|
||||||
<result property="files" column="files"/>
|
|
||||||
<result property="signTime" column="sign_time"/>
|
<result property="signTime" column="sign_time"/>
|
||||||
<result property="status" column="itemStatus"/>
|
<result property="status" column="itemStatus"/>
|
||||||
<result property="beginTime" column="itemBeginTime"/>
|
<result property="beginTime" column="itemBeginTime"/>
|
||||||
<result property="endTime" column="itemEndTime"/>
|
<result property="endTime" column="itemEndTime"/>
|
||||||
<result property="remark" column="itemRemark"/>
|
<result property="remark" column="itemRemark"/>
|
||||||
<result property="completedTime" column="itemCompletedTime"/>
|
<result property="completedTime" column="itemCompletedTime"/>
|
||||||
|
<!-- ========== 附件列表:多对一 折叠 ========= -->
|
||||||
|
<collection property="itemFileList"
|
||||||
|
ofType="com.ruoyi.system.domain.SysOss"
|
||||||
|
javaType="java.util.ArrayList">
|
||||||
|
<result property="ossId" column="item_oss_id"/>
|
||||||
|
<result property="url" column="item_attach_url"/>
|
||||||
|
<result property="fileName" column="item_attach_file_name"/>
|
||||||
|
<result property="createBy" column="item_create_by"/>
|
||||||
|
<result property="isPublic" column="item_is_public"/>
|
||||||
|
<result property="ownerId" column="item_owner_id"/>
|
||||||
|
</collection>
|
||||||
|
</collection>
|
||||||
|
<!-- ========== 附件列表:多对一 折叠 ========= -->
|
||||||
|
<collection property="fileList"
|
||||||
|
ofType="com.ruoyi.system.domain.SysOss"
|
||||||
|
javaType="java.util.ArrayList">
|
||||||
|
<result property="ossId" column="oss_id"/>
|
||||||
|
<result property="url" column="attach_url"/>
|
||||||
|
<result property="fileName" column="attach_file_name"/>
|
||||||
|
<result property="createBy" column="create_by"/>
|
||||||
|
<result property="isPublic" column="is_public"/>
|
||||||
|
<result property="ownerId" column="owner_id"/>
|
||||||
</collection>
|
</collection>
|
||||||
</resultMap>
|
</resultMap>
|
||||||
|
|
||||||
@@ -60,13 +80,21 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
sot.origin_finish_time,
|
sot.origin_finish_time,
|
||||||
sot.postponements,
|
sot.postponements,
|
||||||
sot.completed_time,
|
sot.completed_time,
|
||||||
sot.content,
|
CASE
|
||||||
(
|
WHEN sot.completed_time IS NULL
|
||||||
SELECT GROUP_CONCAT(so.url SEPARATOR ',')
|
THEN DATEDIFF(
|
||||||
FROM sys_oss so
|
NOW(),
|
||||||
WHERE FIND_IN_SET(so.oss_id, sot.accessory) > 0
|
COALESCE(
|
||||||
) AS accessory,
|
sot.finish_time,
|
||||||
|
(SELECT a.end_time
|
||||||
|
FROM sys_oa_task_item a
|
||||||
|
WHERE a.task_id = sot.task_id
|
||||||
|
AND a.completed_time IS NULL
|
||||||
|
LIMIT 1)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
ELSE 0
|
||||||
|
END AS overDays,
|
||||||
sot.rank_number,
|
sot.rank_number,
|
||||||
sot.remark,
|
sot.remark,
|
||||||
sot.task_rank,
|
sot.task_rank,
|
||||||
@@ -83,19 +111,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
soti.item_id,
|
soti.item_id,
|
||||||
sop.project_num,
|
sop.project_num,
|
||||||
su1.nick_name AS createUserNickName,
|
su1.nick_name AS createUserNickName,
|
||||||
su2.nick_name AS workerNickName,
|
su2.nick_name AS workerNickName
|
||||||
CASE
|
|
||||||
WHEN sot.completed_time IS NULL
|
|
||||||
THEN DATEDIFF(NOW(), COALESCE(sot.finish_time, soti.end_time))
|
|
||||||
ELSE 0
|
|
||||||
END AS overDays,
|
|
||||||
(
|
|
||||||
|
|
||||||
SELECT GROUP_CONCAT(so.url SEPARATOR ',')
|
|
||||||
FROM sys_oss so
|
|
||||||
WHERE FIND_IN_SET(so.oss_id, soti.files) > 0
|
|
||||||
) AS files
|
|
||||||
|
|
||||||
FROM sys_oa_task sot
|
FROM sys_oa_task sot
|
||||||
LEFT JOIN sys_user su1 ON su1.user_id = sot.create_user_id
|
LEFT JOIN sys_user su1 ON su1.user_id = sot.create_user_id
|
||||||
LEFT JOIN sys_user su2 ON su2.user_id = sot.worker_id
|
LEFT JOIN sys_user su2 ON su2.user_id = sot.worker_id
|
||||||
@@ -110,105 +126,101 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
|
|
||||||
|
|
||||||
<select id="selectDetailVoById" resultMap="SysOaTaskResult">
|
<select id="selectDetailVoById" resultMap="SysOaTaskResult">
|
||||||
SELECT
|
SELECT sot.task_id,
|
||||||
sot.task_id,
|
sot.project_id,
|
||||||
sot.project_id,
|
sot.create_user_id,
|
||||||
sot.create_user_id,
|
sot.worker_id,
|
||||||
sot.worker_id,
|
sot.task_title,
|
||||||
sot.task_title,
|
sot.task_type,
|
||||||
sot.task_type,
|
sot.task_grade,
|
||||||
sot.task_grade,
|
|
||||||
|
|
||||||
COALESCE(
|
COALESCE(
|
||||||
sot.finish_time,
|
sot.finish_time,
|
||||||
(
|
(SELECT a.end_time
|
||||||
SELECT a.end_time
|
|
||||||
FROM sys_oa_task_item a
|
FROM sys_oa_task_item a
|
||||||
WHERE a.task_id = sot.task_id
|
WHERE a.task_id = sot.task_id
|
||||||
AND a.completed_time IS NULL
|
AND a.completed_time IS NULL
|
||||||
LIMIT 1
|
LIMIT 1)
|
||||||
)
|
) AS finish_time,
|
||||||
) AS finish_time,
|
COALESCE(
|
||||||
COALESCE(
|
sot.temp_time,
|
||||||
sot.temp_time,
|
(SELECT a.temp_time
|
||||||
(
|
|
||||||
SELECT a.temp_time
|
|
||||||
FROM sys_oa_task_item a
|
FROM sys_oa_task_item a
|
||||||
WHERE a.task_id = sot.task_id
|
WHERE a.task_id = sot.task_id
|
||||||
AND a.completed_time IS NULL
|
AND a.completed_time IS NULL
|
||||||
LIMIT 1
|
LIMIT 1)
|
||||||
)
|
) AS temp_time,
|
||||||
) AS temp_time,
|
|
||||||
|
|
||||||
sot.begin_time,
|
sot.begin_time,
|
||||||
sot.origin_finish_time,
|
sot.origin_finish_time,
|
||||||
sot.postponements,
|
sot.postponements,
|
||||||
sot.completed_time,
|
sot.completed_time,
|
||||||
sot.content,
|
sot.content,
|
||||||
su1.nick_name AS createUserNickName,
|
su1.nick_name AS createUserNickName,
|
||||||
su2.nick_name AS workerNickName,
|
su2.nick_name AS workerNickName,
|
||||||
|
|
||||||
(
|
(SELECT GROUP_CONCAT(so.url SEPARATOR ',')
|
||||||
SELECT GROUP_CONCAT(so.url SEPARATOR ',')
|
|
||||||
FROM sys_oss so
|
FROM sys_oss so
|
||||||
WHERE FIND_IN_SET(so.oss_id, sot.accessory) > 0
|
WHERE FIND_IN_SET(so.oss_id, sot.accessory) > 0) AS accessory,
|
||||||
) AS accessory,
|
|
||||||
|
|
||||||
sot.rank_number,
|
sot.rank_number,
|
||||||
sot.remark,
|
sot.remark,
|
||||||
sot.task_rank,
|
sot.task_rank,
|
||||||
sot.state,
|
sot.state,
|
||||||
sot.time_gap,
|
sot.time_gap,
|
||||||
sot.status,
|
sot.status,
|
||||||
sot.create_by,
|
sot.create_by,
|
||||||
sot.create_time,
|
sot.create_time,
|
||||||
sot.update_by,
|
sot.update_by,
|
||||||
sot.update_time,
|
sot.update_time,
|
||||||
sot.del_flag,
|
sot.del_flag,
|
||||||
sot.own_rank,
|
sot.own_rank,
|
||||||
sop.project_name,
|
sop.project_name,
|
||||||
sop.project_num,
|
sop.project_num,
|
||||||
|
|
||||||
soti.item_id,
|
soti.item_id,
|
||||||
soti.content AS itemContent,
|
soti.content AS itemContent,
|
||||||
soti.sign_time,
|
soti.sign_time,
|
||||||
soti.status AS itemStatus,
|
soti.status AS itemStatus,
|
||||||
soti.begin_time AS itemBeginTime,
|
soti.begin_time AS itemBeginTime,
|
||||||
soti.completed_time AS itemCompletedTime,
|
soti.completed_time AS itemCompletedTime,
|
||||||
soti.end_time AS itemEndTime,
|
soti.end_time AS itemEndTime,
|
||||||
soti.remark AS itemRemark,
|
soti.remark AS itemRemark,
|
||||||
(
|
CASE
|
||||||
SELECT GROUP_CONCAT(so.url SEPARATOR ',')
|
WHEN sot.completed_time IS NULL
|
||||||
FROM sys_oss so
|
THEN DATEDIFF(
|
||||||
WHERE FIND_IN_SET(so.oss_id, soti.files) > 0
|
NOW(),
|
||||||
) AS files,
|
COALESCE(
|
||||||
CASE
|
sot.finish_time,
|
||||||
WHEN sot.completed_time IS NULL
|
(SELECT a.end_time
|
||||||
THEN DATEDIFF(
|
|
||||||
NOW(),
|
|
||||||
COALESCE(
|
|
||||||
sot.finish_time,
|
|
||||||
(
|
|
||||||
SELECT a.end_time
|
|
||||||
FROM sys_oa_task_item a
|
FROM sys_oa_task_item a
|
||||||
WHERE a.task_id = sot.task_id
|
WHERE a.task_id = sot.task_id
|
||||||
AND a.completed_time IS NULL
|
AND a.completed_time IS NULL
|
||||||
LIMIT 1
|
LIMIT 1)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
ELSE 0
|
||||||
ELSE 0
|
END AS overDays,
|
||||||
END AS overDays
|
so.oss_id AS oss_id,
|
||||||
|
so.url AS attach_url,
|
||||||
FROM sys_oa_task sot
|
so.original_name AS attach_file_name, -- 如有需要
|
||||||
LEFT JOIN sys_user su1 ON su1.user_id = sot.create_user_id
|
so.create_by,
|
||||||
LEFT JOIN sys_user su2 ON su2.user_id = sot.worker_id
|
so.is_public,
|
||||||
LEFT JOIN sys_oa_project sop ON sop.project_id = sot.project_id
|
so.owner_id,
|
||||||
|
so2.oss_id AS item_oss_is,
|
||||||
|
so2.url AS item_attach_url,
|
||||||
LEFT JOIN sys_oa_task_item soti
|
so2.original_name AS item_attach_file_name, -- 如有需要
|
||||||
ON soti.task_id = sot.task_id
|
so2.create_by as item_create_by,
|
||||||
|
so2.is_public as item_is_public,
|
||||||
|
so2.owner_id as item_owner_id
|
||||||
|
FROM sys_oa_task sot
|
||||||
|
LEFT JOIN sys_user su1
|
||||||
|
ON su1.user_id = sot.create_user_id
|
||||||
|
LEFT JOIN sys_user su2 ON su2.user_id = sot.worker_id
|
||||||
|
LEFT JOIN sys_oa_project sop ON sop.project_id = sot.project_id
|
||||||
|
LEFT JOIN sys_oss so ON FIND_IN_SET(so.oss_id, sot.accessory)
|
||||||
|
LEFT JOIN sys_oa_task_item soti ON soti.task_id = sot.task_id
|
||||||
|
LEFT JOIN sys_oss so2 ON FIND_IN_SET(so2.oss_id, soti.files)
|
||||||
WHERE
|
WHERE
|
||||||
sot.task_id = #{taskId}
|
sot.task_id = #{taskId}
|
||||||
AND sot.del_flag = '0'
|
AND sot.del_flag = '0'
|
||||||
|
|||||||
@@ -55,9 +55,6 @@
|
|||||||
${ew.getCustomSqlSegment}
|
${ew.getCustomSqlSegment}
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<!-- ===================================================== -->
|
|
||||||
<!-- 子查询:明细列表 by masterId -->
|
|
||||||
<!-- ===================================================== -->
|
|
||||||
<select id="selectDetailByMasterId"
|
<select id="selectDetailByMasterId"
|
||||||
parameterType="long"
|
parameterType="long"
|
||||||
resultType="com.ruoyi.oa.domain.vo.SysOaWarehouseDetailVo">
|
resultType="com.ruoyi.oa.domain.vo.SysOaWarehouseDetailVo">
|
||||||
@@ -67,6 +64,7 @@
|
|||||||
sowd.sign_price,
|
sowd.sign_price,
|
||||||
sowd.amount,
|
sowd.amount,
|
||||||
sowd.project_id,
|
sowd.project_id,
|
||||||
|
sow.brand,
|
||||||
sow.name AS warehouseName,
|
sow.name AS warehouseName,
|
||||||
COALESCE(sow.model, sowt.model) AS model,
|
COALESCE(sow.model, sowt.model) AS model,
|
||||||
COALESCE(sow.brand, sowt.brand) AS brand,
|
COALESCE(sow.brand, sowt.brand) AS brand,
|
||||||
|
|||||||
36
script/sql/payment.sql
Normal file
36
script/sql/payment.sql
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
-- 项目付款进度表
|
||||||
|
CREATE TABLE oa_payment_progress (
|
||||||
|
payment_progress_id BIGINT NOT NULL AUTO_INCREMENT COMMENT '付款进度ID',
|
||||||
|
project_id BIGINT NOT NULL COMMENT '关联项目ID,引用 oa_project.project_id',
|
||||||
|
start_time DATETIME NOT NULL COMMENT '付款开始时间',
|
||||||
|
end_time DATETIME DEFAULT NULL COMMENT '付款结束时间',
|
||||||
|
amount DECIMAL(19,2) NOT NULL COMMENT '付款金额',
|
||||||
|
is_void TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否作废:0正常;1作废',
|
||||||
|
create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||||
|
update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||||
|
create_by VARCHAR(64) NOT NULL COMMENT '创建人',
|
||||||
|
update_by VARCHAR(64) NOT NULL COMMENT '更新人',
|
||||||
|
del_flag TINYINT(1) NOT NULL DEFAULT 0 COMMENT '删除标志:0正常;1已删除',
|
||||||
|
remark VARCHAR(500) DEFAULT NULL COMMENT '备注',
|
||||||
|
PRIMARY KEY (payment_progress_id),
|
||||||
|
INDEX idx_pp_proj (project_id),
|
||||||
|
CONSTRAINT fk_pp_proj FOREIGN KEY (project_id) REFERENCES sys_oa_project (project_id)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='项目付款进度表';
|
||||||
|
|
||||||
|
|
||||||
|
ALTER TABLE sys_oa_finance
|
||||||
|
-- 添加关联付款进度的字段
|
||||||
|
ADD COLUMN payment_progress_id BIGINT NULL COMMENT '关联 oa_payment_progress.payment_progress_id',
|
||||||
|
-- 为该字段建立外键,删除进度时自动删除对应财务记录
|
||||||
|
ADD CONSTRAINT fk_finance_to_pp
|
||||||
|
FOREIGN KEY (payment_progress_id)
|
||||||
|
REFERENCES oa_payment_progress (payment_progress_id)
|
||||||
|
ON DELETE CASCADE
|
||||||
|
ON UPDATE CASCADE;
|
||||||
|
|
||||||
|
ALTER TABLE sys_oa_detail
|
||||||
|
ADD CONSTRAINT fk_detail_to_finance
|
||||||
|
FOREIGN KEY (finance_id)
|
||||||
|
REFERENCES sys_oa_finance (finance_id)
|
||||||
|
ON DELETE CASCADE
|
||||||
|
ON UPDATE CASCADE;
|
||||||
Reference in New Issue
Block a user