Browse Source

配合前端子表展示,修改接口

ai_300
zhouhaibin 1 month ago
parent
commit
128d481468
  1. 1
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/controller/ContractualTasksController.java
  2. 3
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/controller/DocumentTasksController.java
  3. 21
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/DocumentTaskChild.java
  4. 19
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/DocumentTaskGroup.java
  5. 7
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/mapper/DocumentTasksMapper.java
  6. 1
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/IContractualTasksService.java
  7. 3
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/IDocumentTasksService.java
  8. 34
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/ContractualTasksServiceImpl.java
  9. 53
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/DocumentTasksServiceImpl.java
  10. 24
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/PmgCompanyProductsServiceImpl.java
  11. 2
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/PmgPersonProductsServiceImpl.java
  12. 2
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/PmgSupplierProductsServiceImpl.java
  13. 95
      zaojiaManagement/zaojia-productManagement/src/main/resources/mapper/productManagement/DocumentTasksMapper.xml

1
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/controller/ContractualTasksController.java

@ -7,6 +7,7 @@ import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.dromara.productManagement.domain.DocumentTaskGroup;
import org.dromara.productManagement.domain.vo.DocumentTasksVo;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;

3
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/controller/DocumentTasksController.java

@ -7,6 +7,7 @@ import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.dromara.productManagement.domain.DocumentTaskGroup;
import org.dromara.system.domain.vo.SysOssUploadVo;
import org.dromara.system.domain.vo.SysOssVo;
import org.dromara.system.service.ISysOssService;
@ -48,7 +49,7 @@ public class DocumentTasksController extends BaseController {
*/
@SaCheckPermission("productManagement:DocumentTasks:list")
@GetMapping("/list")
public TableDataInfo<DocumentTasksVo> list(DocumentTasksBo bo, PageQuery pageQuery) {
public TableDataInfo<DocumentTaskGroup> list(DocumentTasksBo bo, PageQuery pageQuery) {
return documentTasksService.queryPageList(bo, pageQuery);
}

21
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/DocumentTaskChild.java

@ -0,0 +1,21 @@
package org.dromara.productManagement.domain;
import lombok.Data;
import java.util.Date;
@Data
public class DocumentTaskChild {
private Long id;
private String taskName;
private String taskId;
private Long ossId;
private Date estimatedCompletionTime;
private String progressStatus;
private Long version;
private Date createTime;
private Date updateTime;
// 添加任务持续时间字段
private String taskDuration;
private String createUser;
}

19
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/DocumentTaskGroup.java

@ -0,0 +1,19 @@
package org.dromara.productManagement.domain;
import lombok.Data;
import java.util.Date;
import java.util.List;
@Data
public class DocumentTaskGroup {
private String id;
private String documentName;
private Long createBy;
private String taskIndustry;
private String taskRegion;
private Date createTime;
private String createUser;
private String progress;
private List<DocumentTaskChild> childrenTasks;
}

7
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/mapper/DocumentTasksMapper.java

@ -1,10 +1,16 @@
package org.dromara.productManagement.mapper;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
import org.dromara.common.mybatis.annotation.DataColumn;
import org.dromara.common.mybatis.annotation.DataPermission;
import org.dromara.productManagement.domain.DocumentTaskGroup;
import org.dromara.productManagement.domain.DocumentTasks;
import org.dromara.productManagement.domain.vo.DocumentTasksVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import org.dromara.system.domain.SysUser;
/**
* 文档任务Mapper接口
@ -17,5 +23,6 @@ import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
@DataColumn(key = "userName", value = "create_by")
})
public interface DocumentTasksMapper extends BaseMapperPlus<DocumentTasks, DocumentTasksVo> {
Page<DocumentTaskGroup> selectDocumentTaskGroups(@Param("page") Page<DocumentTasks> page,@Param(Constants.WRAPPER) Wrapper<DocumentTasks> wrapper);
}

1
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/IContractualTasksService.java

@ -1,5 +1,6 @@
package org.dromara.productManagement.service;
import org.dromara.productManagement.domain.DocumentTaskGroup;
import org.dromara.productManagement.domain.vo.ContractualTasksVo;
import org.dromara.productManagement.domain.bo.ContractualTasksBo;
import org.dromara.common.mybatis.core.page.TableDataInfo;

3
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/IDocumentTasksService.java

@ -1,5 +1,6 @@
package org.dromara.productManagement.service;
import org.dromara.productManagement.domain.DocumentTaskGroup;
import org.dromara.productManagement.domain.vo.DocumentTasksVo;
import org.dromara.productManagement.domain.bo.DocumentTasksBo;
import org.dromara.common.mybatis.core.page.TableDataInfo;
@ -34,7 +35,7 @@ public interface IDocumentTasksService {
* @param pageQuery 分页参数
* @return 文档任务分页列表
*/
TableDataInfo<DocumentTasksVo> queryPageList(DocumentTasksBo bo, PageQuery pageQuery);
TableDataInfo<DocumentTaskGroup> queryPageList(DocumentTasksBo bo, PageQuery pageQuery);
/**
* 查询符合条件的文档任务列表

34
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/ContractualTasksServiceImpl.java

@ -12,6 +12,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.productManagement.domain.DocumentTaskGroup;
import org.dromara.productManagement.domain.DocumentTasks;
import org.dromara.productManagement.domain.bo.DocumentTasksBo;
import org.dromara.productManagement.domain.vo.DocumentTasksPermissionsVo;
@ -88,7 +89,21 @@ public class ContractualTasksServiceImpl implements IContractualTasksService {
String[] list= {"contractReview"};
documentTasksBo.setTaskNameList(Arrays.asList(list));
}
return documentTasksService.queryPageList(documentTasksBo, pageQuery);
LambdaQueryWrapper<DocumentTasks> lqw = buildQueryWrapper(documentTasksBo);
Page<DocumentTasksVo> result = documentTasksMapper.selectVoPage(pageQuery.build(), lqw);
result.getRecords().forEach(vo -> {
Long createBy = vo.getCreateBy();
vo.setCreateUser(userService.selectUserById(createBy).getNickName());
//计算updateTime 和 createTime之间相差的小时数
// 格式化输出
String formattedDuration="";
if(!vo.getProgressStatus().equals("PENDING")&&!vo.getProgressStatus().equals("STARTED")){
formattedDuration= MyTimeUtils.formatTimeDifference(vo.getCreateTime(), vo.getUpdateTime());
}
vo.setTaskDuration(formattedDuration);
});
return TableDataInfo.build(result);
}
/**
@ -99,7 +114,6 @@ public class ContractualTasksServiceImpl implements IContractualTasksService {
*/
@Override
public List<DocumentTasksVo> queryList(ContractualTasksBo bo) {
DocumentTasksBo documentTasksBo = new DocumentTasksBo();
BeanUtils.copyProperties(bo, documentTasksBo);
if(bo.getTaskNameList()==null || bo.getTaskNameList().size() == 0){
@ -109,17 +123,17 @@ public class ContractualTasksServiceImpl implements IContractualTasksService {
return documentTasksService.queryList(documentTasksBo);
}
private LambdaQueryWrapper<ContractualTasks> buildQueryWrapper(ContractualTasksBo bo) {
LambdaQueryWrapper<ContractualTasks> lqw = Wrappers.lambdaQuery();
lqw.eq(StringUtils.isNotBlank(bo.getTaskIndustry()), ContractualTasks::getTaskIndustry, bo.getTaskIndustry());
lqw.eq(StringUtils.isNotBlank(bo.getTaskRegion()), ContractualTasks::getTaskRegion, bo.getTaskRegion());
lqw.like(StringUtils.isNotBlank(bo.getDocumentName()), ContractualTasks::getDocumentName, bo.getDocumentName());
lqw.eq(StringUtils.isNotBlank(bo.getProgressStatus()), ContractualTasks::getProgressStatus, bo.getProgressStatus());
private LambdaQueryWrapper<DocumentTasks> buildQueryWrapper(DocumentTasksBo bo) {
LambdaQueryWrapper<DocumentTasks> lqw = Wrappers.lambdaQuery();
lqw.eq(StringUtils.isNotBlank(bo.getTaskIndustry()), DocumentTasks::getTaskIndustry, bo.getTaskIndustry());
lqw.eq(StringUtils.isNotBlank(bo.getTaskRegion()), DocumentTasks::getTaskRegion, bo.getTaskRegion());
lqw.like(StringUtils.isNotBlank(bo.getDocumentName()), DocumentTasks::getDocumentName, bo.getDocumentName());
lqw.eq(StringUtils.isNotBlank(bo.getProgressStatus()), DocumentTasks::getProgressStatus, bo.getProgressStatus());
List<String> taskNames = bo.getTaskNameList();
if (taskNames != null && !taskNames.isEmpty()) {
lqw.in(ContractualTasks::getTaskName, taskNames);
lqw.in(DocumentTasks::getTaskName, taskNames);
}
lqw.orderByDesc(ContractualTasks::getCreateTime);
lqw.orderByDesc(DocumentTasks::getCreateTime);
return lqw;
}

53
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/DocumentTasksServiceImpl.java

@ -2,6 +2,8 @@ package org.dromara.productManagement.service.impl;
import cn.dev33.satoken.stp.StpUtil;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.lang.UUID;
import cn.hutool.core.util.IdUtil;
import okhttp3.*;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.service.DictService;
@ -17,9 +19,7 @@ import lombok.RequiredArgsConstructor;
import org.dromara.common.oss.core.OssClient;
import org.dromara.common.oss.factory.OssFactory;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.productManagement.domain.DocumentTasksPermissionsDetail;
import org.dromara.productManagement.domain.ModelPrompts;
import org.dromara.productManagement.domain.ModelUserPromptssetting;
import org.dromara.productManagement.domain.*;
import org.dromara.productManagement.domain.vo.DocumentTasksPermissionsDetailVo;
import org.dromara.productManagement.domain.vo.DocumentTasksPermissionsVo;
import org.dromara.productManagement.mapper.*;
@ -35,7 +35,6 @@ import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.dromara.productManagement.domain.bo.DocumentTasksBo;
import org.dromara.productManagement.domain.vo.DocumentTasksVo;
import org.dromara.productManagement.domain.DocumentTasks;
import org.dromara.productManagement.service.IDocumentTasksService;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
@ -102,21 +101,36 @@ public class DocumentTasksServiceImpl implements IDocumentTasksService {
* @return 文档任务分页列表
*/
@Override
public TableDataInfo<DocumentTasksVo> queryPageList(DocumentTasksBo bo, PageQuery pageQuery) {
public TableDataInfo<DocumentTaskGroup> queryPageList(DocumentTasksBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<DocumentTasks> lqw = buildQueryWrapper(bo);
Page<DocumentTasksVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
result.getRecords().forEach(vo -> {
Integer pageSize = pageQuery.getPageSize();
if(pageSize != 5){
//增加lwd中的一个条件
List<String> taskNames = bo.getTaskNameList();
if(taskNames == null ||!taskNames.contains("contractReview")){
lqw.ne(DocumentTasks::getTaskName,"contractReview");
}
}
Page<DocumentTaskGroup> documentTaskGroupPage = baseMapper.selectDocumentTaskGroups(pageQuery.build(), lqw);
documentTaskGroupPage.getRecords().forEach(vo -> {
Long createBy = vo.getCreateBy();
vo.setCreateUser(userService.selectUserById(createBy).getNickName());
//计算updateTime 和 createTime之间相差的小时数
// 格式化输出
String formattedDuration="";
if(!vo.getProgressStatus().equals("PENDING")&&!vo.getProgressStatus().equals("STARTED")){
formattedDuration= MyTimeUtils.formatTimeDifference(vo.getCreateTime(), vo.getUpdateTime());
}
vo.setTaskDuration(formattedDuration);
});
return TableDataInfo.build(result);
return TableDataInfo.build(documentTaskGroupPage);
// Page<DocumentTasksVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
// result.getRecords().forEach(vo -> {
// Long createBy = vo.getCreateBy();
// vo.setCreateUser(userService.selectUserById(createBy).getNickName());
// //计算updateTime 和 createTime之间相差的小时数
// // 格式化输出
// String formattedDuration="";
// if(!vo.getProgressStatus().equals("PENDING")&&!vo.getProgressStatus().equals("STARTED")){
// formattedDuration= MyTimeUtils.formatTimeDifference(vo.getCreateTime(), vo.getUpdateTime());
// }
// vo.setTaskDuration(formattedDuration);
// });
// return TableDataInfo.build(result);
}
@ -145,9 +159,12 @@ public class DocumentTasksServiceImpl implements IDocumentTasksService {
lqw.like(StringUtils.isNotBlank(bo.getDocumentName()), DocumentTasks::getDocumentName, bo.getDocumentName());
lqw.eq(StringUtils.isNotBlank(bo.getProgressStatus()), DocumentTasks::getProgressStatus, bo.getProgressStatus());
lqw.orderByDesc(DocumentTasks::getCreateTime);
if(taskNames == null ||!taskNames.contains("contractReview")){
lqw.ne(DocumentTasks::getTaskName,"contractReview");
}
//分组,作为父项
lqw.groupBy(DocumentTasks::getDocumentName,
DocumentTasks::getCreateBy,
DocumentTasks::getTaskIndustry,
DocumentTasks::getTaskRegion,
DocumentTasks::getCreateTime);
return lqw;
}

24
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/PmgCompanyProductsServiceImpl.java

@ -153,18 +153,18 @@ public class PmgCompanyProductsServiceImpl implements IPmgCompanyProductsService
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
baseMapper.selectVoBatchIds(ids).forEach(item -> {
String modelId = item.getModelId();
if (StringUtils.isNotBlank(modelId)) {
LambdaUpdateWrapper<PmgCompanyProductModel> modelUpdateWrapper = new LambdaUpdateWrapper<>(); // 临时数据标记
modelUpdateWrapper.eq(PmgCompanyProductModel::getId, modelId);
companyProductModelMapper.delete(modelUpdateWrapper);
// 更新型号规格参数的is_temporary标记为临时数据
LambdaUpdateWrapper<PmgCompanyProductModelDetails> detailsUpdateWrapper = new LambdaUpdateWrapper<>();
detailsUpdateWrapper.eq(PmgCompanyProductModelDetails::getModelId, modelId);
companyProductModelDetailsMapper.delete(detailsUpdateWrapper);
}
});
// baseMapper.selectVoByIds(ids).forEach(item -> {
// String modelId = item.getModelId();
// if (StringUtils.isNotBlank(modelId)) {
// LambdaUpdateWrapper<PmgCompanyProductModel> modelUpdateWrapper = new LambdaUpdateWrapper<>(); // 临时数据标记
// modelUpdateWrapper.eq(PmgCompanyProductModel::getId, modelId);
// companyProductModelMapper.delete(modelUpdateWrapper);
// // 更新型号规格参数的is_temporary标记为临时数据
// LambdaUpdateWrapper<PmgCompanyProductModelDetails> detailsUpdateWrapper = new LambdaUpdateWrapper<>();
// detailsUpdateWrapper.eq(PmgCompanyProductModelDetails::getModelId, modelId);
// companyProductModelDetailsMapper.delete(detailsUpdateWrapper);
// }
// });
return baseMapper.deleteBatchIds(ids) > 0;
}
}

2
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/PmgPersonProductsServiceImpl.java

@ -155,7 +155,7 @@ public class PmgPersonProductsServiceImpl implements IPmgPersonProductsService {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
baseMapper.selectVoBatchIds(ids).forEach(item -> {
baseMapper.selectVoByIds(ids).forEach(item -> {
String modelId = item.getModelId();
if (StringUtils.isNotBlank(modelId)) {
LambdaUpdateWrapper<PmgPersonProductModel> modelUpdateWrapper = new LambdaUpdateWrapper<>(); // 临时数据标记

2
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/PmgSupplierProductsServiceImpl.java

@ -173,7 +173,7 @@ public class PmgSupplierProductsServiceImpl implements IPmgSupplierProductsServi
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
baseMapper.selectVoBatchIds(ids).forEach(item -> {
baseMapper.selectVoByIds(ids).forEach(item -> {
String modelId = item.getModelId();
if (StringUtils.isNotBlank(modelId)) {
LambdaUpdateWrapper<PmgSupplierProductModel> modelUpdateWrapper = new LambdaUpdateWrapper<>(); // 临时数据标记

95
zaojiaManagement/zaojia-productManagement/src/main/resources/mapper/productManagement/DocumentTasksMapper.xml

@ -3,5 +3,100 @@
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.productManagement.mapper.DocumentTasksMapper">
<resultMap id="DocumentTaskGroupResult" type="org.dromara.productManagement.domain.DocumentTaskGroup">
<id property="documentName" column="document_name"/>
<result property="id" column="group_id"/>
<result property="createBy" column="create_by"/>
<result property="taskIndustry" column="task_industry"/>
<result property="taskRegion" column="task_region"/>
<result property="createTime" column="group_create_time"/>
<result property="progress" column="progress"/>
<!-- 使用collection标签正确映射子任务列表 -->
<collection property="childrenTasks"
column="{documentName=document_name,
createBy=create_by,
taskIndustry=task_industry,
taskRegion=task_region,
groupDate=group_create_time}"
select="selectChildTasks"/>
</resultMap>
<!-- 父级查询 -->
<select id="selectDocumentTaskGroups" resultMap="DocumentTaskGroupResult">
SELECT
document_name,
UUID() as group_id,
create_by,
task_industry,
task_region,
create_time as group_create_time,
CASE
WHEN (SUM(CASE WHEN progress_status IN ('SUCCESS', 'FAILURE') THEN 1 ELSE 0 END) * 100.0) / COUNT(*) = 100
THEN
CASE
WHEN SUM(CASE WHEN progress_status = 'FAILURE' THEN 1 ELSE 0 END) > 0
THEN CONCAT(
'100%(',
COUNT(*),
'/',
COUNT(*),
',失败:',
SUM(CASE WHEN progress_status = 'FAILURE' THEN 1 ELSE 0 END),
')'
)
ELSE CONCAT('100%(', COUNT(*), '/', COUNT(*), ')')
END
ELSE
CONCAT(
FLOOR((SUM(CASE WHEN progress_status IN ('SUCCESS', 'FAILURE') THEN 1 ELSE 0 END) * 100.0) / COUNT(*)),
'%(',
SUM(CASE WHEN progress_status IN ('SUCCESS', 'FAILURE') THEN 1 ELSE 0 END),
'/',
COUNT(*),
')'
)
END as progress
FROM document_tasks
${ew.getCustomSqlSegment}
</select>
<!-- 子任务查询 -->
<select id="selectChildTasks" resultType="org.dromara.productManagement.domain.DocumentTaskChild">
SELECT
id,
task_name,
task_id,
oss_id,
estimated_completion_time,
progress_status,
version,
create_time,
update_time,
CASE
WHEN update_time IS NOT NULL THEN
CASE
WHEN TIMESTAMPDIFF(HOUR, create_time, update_time) >= 1 THEN
CONCAT(
FLOOR(TIMESTAMPDIFF(MINUTE, create_time, update_time) / 60),
'小时',
MOD(TIMESTAMPDIFF(MINUTE, create_time, update_time), 60),
'分钟'
)
ELSE
CONCAT(
TIMESTAMPDIFF(MINUTE, create_time, update_time),
'分钟'
)
END
ELSE NULL
END as task_duration
FROM document_tasks
WHERE del_flag = '0'
AND document_name = #{documentName}
AND create_by = #{createBy}
AND task_industry = #{taskIndustry}
AND task_region = #{taskRegion}
AND create_time = #{groupDate}
ORDER BY create_time DESC
</select>
</mapper>

Loading…
Cancel
Save