增加功能:项目管理
This commit is contained in:
parent
d9cb1f17d2
commit
6583cc5032
@ -0,0 +1,147 @@
|
|||||||
|
package net.ferrum.web.controller.business;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
import javax.validation.constraints.*;
|
||||||
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||||
|
import net.ferrum.business.domain.QsBatch;
|
||||||
|
import net.ferrum.business.domain.QsProjects;
|
||||||
|
import net.ferrum.business.domain.QsSpecAttributeTypes;
|
||||||
|
import net.ferrum.business.domain.QsSpecAttributeValues;
|
||||||
|
import net.ferrum.business.domain.bo.QsProjectAttributesBo;
|
||||||
|
import net.ferrum.business.domain.bo.QsSpecAttributeValuesBo;
|
||||||
|
import net.ferrum.business.domain.bo.QsUserSupplierBo;
|
||||||
|
import net.ferrum.business.domain.vo.QsProjectAttributesVo;
|
||||||
|
import net.ferrum.business.service.IQsBatchService;
|
||||||
|
import net.ferrum.business.service.IQsProjectAttributesService;
|
||||||
|
import net.ferrum.business.service.IQsSpecAttributeValuesService;
|
||||||
|
import net.ferrum.common.utils.BeanCopyUtils;
|
||||||
|
import org.apache.ibatis.executor.BaseExecutor;
|
||||||
|
import org.springframework.transaction.TransactionDefinition;
|
||||||
|
import org.springframework.transaction.TransactionStatus;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
import org.springframework.transaction.support.DefaultTransactionDefinition;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
import net.ferrum.common.annotation.RepeatSubmit;
|
||||||
|
import net.ferrum.common.annotation.Log;
|
||||||
|
import net.ferrum.common.core.controller.BaseController;
|
||||||
|
import net.ferrum.common.core.domain.PageQuery;
|
||||||
|
import net.ferrum.common.core.domain.R;
|
||||||
|
import net.ferrum.common.core.validate.AddGroup;
|
||||||
|
import net.ferrum.common.core.validate.EditGroup;
|
||||||
|
import net.ferrum.common.core.validate.QueryGroup;
|
||||||
|
import net.ferrum.common.enums.BusinessType;
|
||||||
|
import net.ferrum.common.utils.poi.ExcelUtil;
|
||||||
|
import net.ferrum.business.domain.vo.QsProjectsVo;
|
||||||
|
import net.ferrum.business.domain.bo.QsProjectsBo;
|
||||||
|
import net.ferrum.business.service.IQsProjectsService;
|
||||||
|
import net.ferrum.common.core.page.TableDataInfo;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目管理
|
||||||
|
*
|
||||||
|
* @author ruoyi
|
||||||
|
* @date 2025-07-19
|
||||||
|
*/
|
||||||
|
@Validated
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/business/projects")
|
||||||
|
public class QsProjectsController extends BaseController {
|
||||||
|
|
||||||
|
private final IQsProjectsService iQsProjectsService;
|
||||||
|
private final IQsBatchService iQsBatchService;
|
||||||
|
private final IQsSpecAttributeValuesService iQsSpecAttributeValuesService;
|
||||||
|
private final IQsProjectAttributesService iQsProjectAttributesService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询项目管理列表
|
||||||
|
*/
|
||||||
|
@SaCheckPermission("business:projects:list")
|
||||||
|
@GetMapping("/list")
|
||||||
|
public TableDataInfo<QsProjects> list(QsProjects bo, PageQuery pageQuery) {
|
||||||
|
return iQsProjectsService.queryPageList(bo, pageQuery);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 导出项目管理列表
|
||||||
|
*/
|
||||||
|
@SaCheckPermission("business:projects:export")
|
||||||
|
@Log(title = "项目管理", businessType = BusinessType.EXPORT)
|
||||||
|
@PostMapping("/export")
|
||||||
|
public void export(QsProjectsBo bo, HttpServletResponse response) {
|
||||||
|
List<QsProjectsVo> list = iQsProjectsService.queryList(bo);
|
||||||
|
ExcelUtil.exportExcel(list, "项目管理", QsProjectsVo.class, response);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取项目管理详细信息
|
||||||
|
*
|
||||||
|
* @param projectId 主键
|
||||||
|
*/
|
||||||
|
@SaCheckPermission("business:projects:query")
|
||||||
|
@GetMapping("/{projectId}")
|
||||||
|
public R<QsProjects> getInfo(@NotNull(message = "主键不能为空")
|
||||||
|
@PathVariable Long projectId) {
|
||||||
|
//return R.ok(iQsProjectsService.queryById(projectId));
|
||||||
|
return R.ok(iQsProjectsService.selectById(projectId));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增项目管理
|
||||||
|
*/
|
||||||
|
@SaCheckPermission("business:projects:add")
|
||||||
|
@Log(title = "项目管理", businessType = BusinessType.INSERT)
|
||||||
|
@RepeatSubmit()
|
||||||
|
@PostMapping()
|
||||||
|
|
||||||
|
public R<Void> add(@Validated(AddGroup.class) @RequestBody QsProjectsBo bo) {
|
||||||
|
return toAjax(iQsProjectsService.insertByBo(bo));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改项目管理
|
||||||
|
*/
|
||||||
|
@SaCheckPermission("business:projects:edit")
|
||||||
|
@Log(title = "项目管理", businessType = BusinessType.UPDATE)
|
||||||
|
@RepeatSubmit()
|
||||||
|
@PutMapping()
|
||||||
|
public R<Void> edit(@Validated(EditGroup.class) @RequestBody QsProjectsBo bo) {
|
||||||
|
return toAjax(iQsProjectsService.updateByBo(bo));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除项目管理
|
||||||
|
*
|
||||||
|
* @param projectIds 主键串
|
||||||
|
*/
|
||||||
|
@SaCheckPermission("business:projects:remove")
|
||||||
|
@Log(title = "项目管理", businessType = BusinessType.DELETE)
|
||||||
|
@DeleteMapping("/{projectIds}")
|
||||||
|
public R<Void> remove(@NotEmpty(message = "主键不能为空")
|
||||||
|
@PathVariable Long[] projectIds) {
|
||||||
|
|
||||||
|
String sRet = iQsProjectsService.deleteWithValidByIds(Arrays.asList(projectIds), true);
|
||||||
|
if (sRet.length()==0){
|
||||||
|
return R.ok();
|
||||||
|
}else{
|
||||||
|
return R.fail(sRet);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取批次列表
|
||||||
|
*/
|
||||||
|
@SaCheckPermission("business:projects:list")
|
||||||
|
@GetMapping("/batchList")
|
||||||
|
public R< List<QsBatch>> selectBatchList(QsBatch type) {
|
||||||
|
return R.ok(iQsBatchService.selectBatchList(type));
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package net.ferrum.business.controller;
|
package net.ferrum.web.controller.business;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
package net.ferrum.business.controller;
|
package net.ferrum.web.controller.business;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
@ -9,6 +9,7 @@ import lombok.RequiredArgsConstructor;
|
|||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
import javax.validation.constraints.*;
|
import javax.validation.constraints.*;
|
||||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||||
|
import net.ferrum.business.domain.QsBatch;
|
||||||
import net.ferrum.business.domain.QsSpecAttributeTypes;
|
import net.ferrum.business.domain.QsSpecAttributeTypes;
|
||||||
import net.ferrum.business.domain.QsSpecAttributeValues;
|
import net.ferrum.business.domain.QsSpecAttributeValues;
|
||||||
import net.ferrum.business.service.IQsSpecAttributeTypesService;
|
import net.ferrum.business.service.IQsSpecAttributeTypesService;
|
||||||
@ -121,4 +122,26 @@ public class QsSpecAttributeValuesController extends BaseController {
|
|||||||
public R< List<QsSpecAttributeTypes>> selectSpecAttributeTypesList(QsSpecAttributeTypes type) {
|
public R< List<QsSpecAttributeTypes>> selectSpecAttributeTypesList(QsSpecAttributeTypes type) {
|
||||||
return R.ok(iQsSpecAttributeTypesService.selectSpecAttributeTypesList(type));
|
return R.ok(iQsSpecAttributeTypesService.selectSpecAttributeTypesList(type));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据规格参数类型,获取这类参数下面的所有规格参数
|
||||||
|
*/
|
||||||
|
@SaCheckPermission("business:specAttributeValues:list")
|
||||||
|
@GetMapping("/specAttributeValueListByTypeId")
|
||||||
|
public R< List<QsSpecAttributeValues>> selectSpecAttributeValuesByTypesId(Long typeId) {
|
||||||
|
return R.ok(iQsSpecAttributeValuesService.selectSpecAttributeValuesByTypesId(typeId));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 得到所有据规格参数类型,每个参数类型包含本类中的所有规格参数
|
||||||
|
*/
|
||||||
|
@SaCheckPermission("business:specAttributeValues:list")
|
||||||
|
@GetMapping("/specAttributeTypesWithValues")
|
||||||
|
public R< List<QsSpecAttributeTypes>> selectSpecAttributeTypesWithValues(){
|
||||||
|
List<QsSpecAttributeTypes> typeList = iQsSpecAttributeTypesService.selectSpecAttributeTypesList(null);
|
||||||
|
for(QsSpecAttributeTypes type : typeList){
|
||||||
|
type.setSpecValues(iQsSpecAttributeValuesService.selectSpecAttributeValuesByTypesId(type.getTypeId()));
|
||||||
|
}
|
||||||
|
return R.ok(typeList);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,33 @@
|
|||||||
|
package net.ferrum.test;
|
||||||
|
|
||||||
|
import groovy.util.logging.Slf4j;
|
||||||
|
import net.ferrum.common.core.domain.PageQuery;
|
||||||
|
import net.ferrum.common.core.page.TableDataInfo;
|
||||||
|
import net.ferrum.flowable.core.domain.ProcessQuery;
|
||||||
|
import net.ferrum.workflow.domain.vo.WfTaskVo;
|
||||||
|
import net.ferrum.workflow.service.IWfProcessService;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.boot.test.context.SpringBootTest;
|
||||||
|
|
||||||
|
@Slf4j
|
||||||
|
@SpringBootTest
|
||||||
|
public class ServiceTest {
|
||||||
|
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private IWfProcessService wfProcessService;
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void test1() {
|
||||||
|
ProcessQuery query = new ProcessQuery();
|
||||||
|
//query.setSpecBatch("333");
|
||||||
|
|
||||||
|
PageQuery pageQuery = new PageQuery();
|
||||||
|
pageQuery.setPageNum(1);
|
||||||
|
pageQuery.setPageSize(50);
|
||||||
|
TableDataInfo<WfTaskVo> wfTaskVoTableDataInfo = wfProcessService.selectPageAllProcessList1(query, pageQuery);
|
||||||
|
System.out.println(wfTaskVoTableDataInfo);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -129,4 +129,10 @@ public interface UserConstants {
|
|||||||
*/
|
*/
|
||||||
Long ADMIN_ID = 1L;
|
Long ADMIN_ID = 1L;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目起始阶段ID
|
||||||
|
*/
|
||||||
|
Long PROJECT_START_ID = 1L;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,51 @@
|
|||||||
|
package net.ferrum.business.domain;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.*;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
|
import net.ferrum.common.core.domain.BaseEntity;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目规格对象 qs_project_attributes
|
||||||
|
*
|
||||||
|
* @author ruoyi
|
||||||
|
* @date 2025-07-24
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@TableName("qs_project_attributes")
|
||||||
|
public class QsProjectAttributes extends BaseEntity {
|
||||||
|
|
||||||
|
private static final long serialVersionUID=1L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目属性关联Id
|
||||||
|
*/
|
||||||
|
private Long id;
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
private Long projectId;
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
private Long typeId;
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
private Long valueId;
|
||||||
|
/**
|
||||||
|
* 备注
|
||||||
|
*/
|
||||||
|
private String remark;
|
||||||
|
/**
|
||||||
|
* 逻辑删除标志
|
||||||
|
*/
|
||||||
|
@TableLogic
|
||||||
|
private String delFlag;
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,109 @@
|
|||||||
|
package net.ferrum.business.domain;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.*;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
|
import net.ferrum.common.core.domain.BaseEntity;
|
||||||
|
import net.ferrum.common.core.domain.entity.SysDept;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目管理对象 qs_projects
|
||||||
|
*
|
||||||
|
* @author ruoyi
|
||||||
|
* @date 2025-07-19
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@TableName("qs_projects")
|
||||||
|
public class QsProjects extends BaseEntity {
|
||||||
|
|
||||||
|
private static final long serialVersionUID=1L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目ID
|
||||||
|
*/
|
||||||
|
@TableId(value = "project_id")
|
||||||
|
private Long projectId;
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
private Long batchId;
|
||||||
|
/**
|
||||||
|
* 项目名称
|
||||||
|
*/
|
||||||
|
private String projectName;
|
||||||
|
/**
|
||||||
|
* 备注
|
||||||
|
*/
|
||||||
|
private String remark;
|
||||||
|
/**
|
||||||
|
* 逻辑删除标志
|
||||||
|
*/
|
||||||
|
@TableLogic
|
||||||
|
private String delFlag;
|
||||||
|
/**
|
||||||
|
* 项目当前所处阶段
|
||||||
|
*/
|
||||||
|
private Long currentMasterStageId;
|
||||||
|
/**
|
||||||
|
* 项目完成情况
|
||||||
|
*/
|
||||||
|
private String projectCompletion;
|
||||||
|
/**
|
||||||
|
* 项目开始时间
|
||||||
|
*/
|
||||||
|
private Date startDate;
|
||||||
|
/**
|
||||||
|
* 结束时间
|
||||||
|
*/
|
||||||
|
private Date endTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批次对象
|
||||||
|
*/
|
||||||
|
@TableField(exist = false)
|
||||||
|
private QsBatch batch;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批次名称
|
||||||
|
*/
|
||||||
|
@TableField(exist = false)
|
||||||
|
private String batchName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 规格参数
|
||||||
|
*/
|
||||||
|
@TableField(exist = false)
|
||||||
|
private String specInfo;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 阶段名称,内部使用
|
||||||
|
*/
|
||||||
|
@TableField(exist = false)
|
||||||
|
private String stageName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 阶段显示名称,用户看到的
|
||||||
|
*/
|
||||||
|
@TableField(exist = false)
|
||||||
|
private String stageDisplayName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否为并行阶段
|
||||||
|
*/
|
||||||
|
@TableField(exist = false)
|
||||||
|
private String isParallelContainer;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 并行阶段完成情况
|
||||||
|
*/
|
||||||
|
@TableField(exist = false)
|
||||||
|
private String parallelProgress;
|
||||||
|
|
||||||
|
}
|
||||||
@ -6,8 +6,10 @@ import lombok.EqualsAndHashCode;
|
|||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import net.ferrum.common.core.domain.BaseEntity;
|
import net.ferrum.common.core.domain.BaseEntity;
|
||||||
|
import net.ferrum.common.core.domain.entity.SysRole;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 规格类型对象 qs_spec_attribute_types
|
* 规格类型对象 qs_spec_attribute_types
|
||||||
@ -41,4 +43,10 @@ public class QsSpecAttributeTypes extends BaseEntity {
|
|||||||
@TableLogic
|
@TableLogic
|
||||||
private String delFlag;
|
private String delFlag;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 角色对象
|
||||||
|
*/
|
||||||
|
@TableField(exist = false)
|
||||||
|
private List<QsSpecAttributeValues> specValues;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,68 @@
|
|||||||
|
package net.ferrum.business.domain.bo;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
|
import net.ferrum.common.core.validate.AddGroup;
|
||||||
|
import net.ferrum.common.core.validate.EditGroup;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
import javax.validation.constraints.*;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
import net.ferrum.common.core.domain.BaseEntity;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目规格业务对象 qs_project_attributes
|
||||||
|
*
|
||||||
|
* @author ruoyi
|
||||||
|
* @date 2025-07-24
|
||||||
|
*/
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
public class QsProjectAttributesBo extends BaseEntity {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目属性关联Id
|
||||||
|
*/
|
||||||
|
@NotNull(message = "项目属性关联Id不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@NotNull(message = "不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||||
|
private Long projectId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@NotNull(message = "不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||||
|
private Long typeId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@NotNull(message = "不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||||
|
private Long valueId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 备注
|
||||||
|
*/
|
||||||
|
private String remark;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 规格参数具体值
|
||||||
|
*/
|
||||||
|
@TableField(exist = false)
|
||||||
|
private String value;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 规格参数类型的名称
|
||||||
|
*/
|
||||||
|
@TableField(exist = false)
|
||||||
|
private String typeName;
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,86 @@
|
|||||||
|
package net.ferrum.business.domain.bo;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
|
import net.ferrum.common.core.validate.AddGroup;
|
||||||
|
import net.ferrum.common.core.validate.EditGroup;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
import javax.validation.constraints.*;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
|
import net.ferrum.common.core.domain.BaseEntity;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目管理业务对象 qs_projects
|
||||||
|
*
|
||||||
|
* @author ruoyi
|
||||||
|
* @date 2025-07-19
|
||||||
|
*/
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
public class QsProjectsBo extends BaseEntity {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目ID
|
||||||
|
*/
|
||||||
|
@NotNull(message = "项目ID不能为空", groups = { EditGroup.class })
|
||||||
|
private Long projectId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@NotNull(message = "不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||||
|
private Long batchId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目名称
|
||||||
|
*/
|
||||||
|
@NotBlank(message = "项目名称不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||||
|
private String projectName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 备注
|
||||||
|
*/
|
||||||
|
private String remark;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目当前所处阶段
|
||||||
|
*/
|
||||||
|
private Long currentMasterStageId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目完成情况
|
||||||
|
*/
|
||||||
|
private String projectCompletion;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目开始时间
|
||||||
|
*/
|
||||||
|
@NotNull(message = "项目开始时间不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||||
|
private Date startDate;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 结束时间
|
||||||
|
*/
|
||||||
|
private Date endTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批次名称
|
||||||
|
*/
|
||||||
|
@TableField(exist = false)
|
||||||
|
private String batchName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 规格参数列表
|
||||||
|
*/
|
||||||
|
@TableField(exist = false)
|
||||||
|
private List<QsProjectAttributesBo> specInfoList;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@ -1,5 +1,6 @@
|
|||||||
package net.ferrum.business.domain.bo;
|
package net.ferrum.business.domain.bo;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableLogic;
|
||||||
import net.ferrum.common.core.validate.AddGroup;
|
import net.ferrum.common.core.validate.AddGroup;
|
||||||
import net.ferrum.common.core.validate.EditGroup;
|
import net.ferrum.common.core.validate.EditGroup;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
@ -7,6 +8,7 @@ import lombok.EqualsAndHashCode;
|
|||||||
import javax.validation.constraints.*;
|
import javax.validation.constraints.*;
|
||||||
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import net.ferrum.common.core.domain.BaseEntity;
|
import net.ferrum.common.core.domain.BaseEntity;
|
||||||
|
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
package net.ferrum.business.domain.bo;
|
package net.ferrum.business.domain.bo;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
import net.ferrum.common.core.validate.AddGroup;
|
import net.ferrum.common.core.validate.AddGroup;
|
||||||
import net.ferrum.common.core.validate.EditGroup;
|
import net.ferrum.common.core.validate.EditGroup;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
@ -7,6 +8,7 @@ import lombok.EqualsAndHashCode;
|
|||||||
import javax.validation.constraints.*;
|
import javax.validation.constraints.*;
|
||||||
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import net.ferrum.common.core.domain.BaseEntity;
|
import net.ferrum.common.core.domain.BaseEntity;
|
||||||
|
|
||||||
@ -45,4 +47,11 @@ public class QsSpecAttributeValuesBo extends BaseEntity {
|
|||||||
private String remark;
|
private String remark;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批次名称
|
||||||
|
*/
|
||||||
|
@TableField(exist = false)
|
||||||
|
private String batchName;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,61 @@
|
|||||||
|
package net.ferrum.business.domain.vo;
|
||||||
|
|
||||||
|
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
|
||||||
|
import com.alibaba.excel.annotation.ExcelProperty;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
|
import net.ferrum.common.annotation.ExcelDictFormat;
|
||||||
|
import net.ferrum.common.convert.ExcelDictConvert;
|
||||||
|
import lombok.Data;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目规格视图对象 qs_project_attributes
|
||||||
|
*
|
||||||
|
* @author ruoyi
|
||||||
|
* @date 2025-07-24
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@ExcelIgnoreUnannotated
|
||||||
|
public class QsProjectAttributesVo {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目属性关联Id
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "项目属性关联Id")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "")
|
||||||
|
private Long projectId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "")
|
||||||
|
private Long typeId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "")
|
||||||
|
private Long valueId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 备注
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "备注")
|
||||||
|
private String remark;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 规格设定值
|
||||||
|
*/
|
||||||
|
@TableField(exist = false)
|
||||||
|
private String value;
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,75 @@
|
|||||||
|
package net.ferrum.business.domain.vo;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
|
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
|
||||||
|
import com.alibaba.excel.annotation.ExcelProperty;
|
||||||
|
import net.ferrum.common.annotation.ExcelDictFormat;
|
||||||
|
import net.ferrum.common.convert.ExcelDictConvert;
|
||||||
|
import lombok.Data;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目管理视图对象 qs_projects
|
||||||
|
*
|
||||||
|
* @author ruoyi
|
||||||
|
* @date 2025-07-19
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@ExcelIgnoreUnannotated
|
||||||
|
public class QsProjectsVo {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目ID
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "项目ID")
|
||||||
|
private Long projectId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "")
|
||||||
|
private Long batchId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目名称
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "项目名称")
|
||||||
|
private String projectName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 备注
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "备注")
|
||||||
|
private String remark;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目当前所处阶段
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "项目当前所处阶段")
|
||||||
|
private Long currentMasterStageId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目完成情况
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "项目完成情况")
|
||||||
|
private String projectCompletion;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目开始时间
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "项目开始时间")
|
||||||
|
private Date startDate;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 结束时间
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "结束时间")
|
||||||
|
private Date endTime;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@ -1,9 +1,13 @@
|
|||||||
package net.ferrum.business.mapper;
|
package net.ferrum.business.mapper;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.toolkit.Constants;
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import net.ferrum.business.domain.QsBatch;
|
import net.ferrum.business.domain.QsBatch;
|
||||||
import net.ferrum.business.domain.vo.QsBatchVo;
|
import net.ferrum.business.domain.vo.QsBatchVo;
|
||||||
import net.ferrum.common.core.mapper.BaseMapperPlus;
|
import net.ferrum.common.core.mapper.BaseMapperPlus;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
import java.util.List;
|
||||||
/**
|
/**
|
||||||
* 批次管理Mapper接口
|
* 批次管理Mapper接口
|
||||||
*
|
*
|
||||||
@ -11,5 +15,5 @@ import net.ferrum.common.core.mapper.BaseMapperPlus;
|
|||||||
* @date 2025-07-18
|
* @date 2025-07-18
|
||||||
*/
|
*/
|
||||||
public interface QsBatchMapper extends BaseMapperPlus<QsBatchMapper, QsBatch, QsBatchVo> {
|
public interface QsBatchMapper extends BaseMapperPlus<QsBatchMapper, QsBatch, QsBatchVo> {
|
||||||
|
public List<QsBatch> selectBatchList( @Param(Constants.WRAPPER) Wrapper<QsBatch> queryWrapper);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,22 @@
|
|||||||
|
package net.ferrum.business.mapper;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.toolkit.Constants;
|
||||||
|
import net.ferrum.business.domain.QsProjectAttributes;
|
||||||
|
import net.ferrum.business.domain.vo.QsProjectAttributesVo;
|
||||||
|
import net.ferrum.common.core.mapper.BaseMapperPlus;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目规格Mapper接口
|
||||||
|
*
|
||||||
|
* @author ruoyi
|
||||||
|
* @date 2025-07-24
|
||||||
|
*/
|
||||||
|
public interface QsProjectAttributesMapper extends BaseMapperPlus<QsProjectAttributesMapper, QsProjectAttributes, QsProjectAttributesVo> {
|
||||||
|
public List<QsProjectAttributesVo> selectProjSpecInfoList(@Param(Constants.WRAPPER) QueryWrapper<QsProjectAttributes> queryWrapper);
|
||||||
|
public int deleteByProjectId(Long userId);
|
||||||
|
}
|
||||||
@ -0,0 +1,24 @@
|
|||||||
|
package net.ferrum.business.mapper;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.toolkit.Constants;
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
|
import net.ferrum.business.domain.QsBatch;
|
||||||
|
import net.ferrum.business.domain.QsProjects;
|
||||||
|
import net.ferrum.business.domain.QsSpecAttributeValues;
|
||||||
|
import net.ferrum.business.domain.bo.QsProjectsBo;
|
||||||
|
import net.ferrum.business.domain.vo.QsProjectsVo;
|
||||||
|
import net.ferrum.common.core.mapper.BaseMapperPlus;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目管理Mapper接口
|
||||||
|
*
|
||||||
|
* @author ruoyi
|
||||||
|
* @date 2025-07-19
|
||||||
|
*/
|
||||||
|
public interface QsProjectsMapper extends BaseMapperPlus<QsProjectsMapper, QsProjects, QsProjectsVo> {
|
||||||
|
Page<QsProjects> selectPageQsProjectsList(@Param("page") Page<QsProjects> page, @Param(Constants.WRAPPER) Wrapper<QsProjects> queryWrapper);
|
||||||
|
}
|
||||||
@ -10,6 +10,8 @@ import net.ferrum.common.core.mapper.BaseMapperPlus;
|
|||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
import org.apache.ibatis.annotations.Param;
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 规格参数值Mapper接口
|
* 规格参数值Mapper接口
|
||||||
*
|
*
|
||||||
@ -20,4 +22,6 @@ import org.apache.ibatis.annotations.Param;
|
|||||||
public interface QsSpecAttributeValuesMapper extends BaseMapperPlus<QsSpecAttributeValuesMapper, QsSpecAttributeValues, QsSpecAttributeValuesVo> {
|
public interface QsSpecAttributeValuesMapper extends BaseMapperPlus<QsSpecAttributeValuesMapper, QsSpecAttributeValues, QsSpecAttributeValuesVo> {
|
||||||
|
|
||||||
Page<QsSpecAttributeValues> selectPageSpecAttributeValuesList(@Param("page") Page<QsSpecAttributeValues> page, @Param(Constants.WRAPPER) Wrapper<QsSpecAttributeValues> queryWrapper);
|
Page<QsSpecAttributeValues> selectPageSpecAttributeValuesList(@Param("page") Page<QsSpecAttributeValues> page, @Param(Constants.WRAPPER) Wrapper<QsSpecAttributeValues> queryWrapper);
|
||||||
|
|
||||||
|
List<QsSpecAttributeValues> selectSpecAttributeValuesByTypesId(@Param("typeId")Long typeId);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
package net.ferrum.business.service;
|
package net.ferrum.business.service;
|
||||||
|
|
||||||
|
import net.ferrum.business.domain.QsBatch;
|
||||||
import net.ferrum.business.domain.vo.QsBatchVo;
|
import net.ferrum.business.domain.vo.QsBatchVo;
|
||||||
import net.ferrum.business.domain.bo.QsBatchBo;
|
import net.ferrum.business.domain.bo.QsBatchBo;
|
||||||
import net.ferrum.common.core.page.TableDataInfo;
|
import net.ferrum.common.core.page.TableDataInfo;
|
||||||
@ -45,4 +46,10 @@ public interface IQsBatchService {
|
|||||||
* 校验并批量删除批次管理信息
|
* 校验并批量删除批次管理信息
|
||||||
*/
|
*/
|
||||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取规批次列表
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
List<QsBatch> selectBatchList(QsBatch entity);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,54 @@
|
|||||||
|
package net.ferrum.business.service;
|
||||||
|
|
||||||
|
import net.ferrum.business.domain.QsProjectAttributes;
|
||||||
|
import net.ferrum.business.domain.vo.QsProjectAttributesVo;
|
||||||
|
import net.ferrum.business.domain.bo.QsProjectAttributesBo;
|
||||||
|
import net.ferrum.common.core.page.TableDataInfo;
|
||||||
|
import net.ferrum.common.core.domain.PageQuery;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目规格Service接口
|
||||||
|
*
|
||||||
|
* @author ruoyi
|
||||||
|
* @date 2025-07-24
|
||||||
|
*/
|
||||||
|
public interface IQsProjectAttributesService {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询项目规格
|
||||||
|
*/
|
||||||
|
QsProjectAttributesVo queryById(Long id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询项目规格列表
|
||||||
|
*/
|
||||||
|
TableDataInfo<QsProjectAttributesVo> queryPageList(QsProjectAttributesBo bo, PageQuery pageQuery);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询项目规格列表
|
||||||
|
*/
|
||||||
|
List<QsProjectAttributesVo> queryList(QsProjectAttributesBo bo);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增项目规格
|
||||||
|
*/
|
||||||
|
Boolean insertByBo(QsProjectAttributesBo bo);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改项目规格
|
||||||
|
*/
|
||||||
|
Boolean updateByBo(QsProjectAttributesBo bo);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 校验并批量删除项目规格信息
|
||||||
|
*/
|
||||||
|
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据项目ID批量删除项目规格
|
||||||
|
*/
|
||||||
|
public boolean deleteByProjectId(Long projectId);
|
||||||
|
}
|
||||||
@ -1,48 +0,0 @@
|
|||||||
package net.ferrum.business.service;
|
|
||||||
|
|
||||||
import net.ferrum.business.domain.bo.QsProjectBo;
|
|
||||||
import net.ferrum.business.domain.vo.QsProjectVo;
|
|
||||||
import net.ferrum.common.core.domain.PageQuery;
|
|
||||||
import net.ferrum.common.core.page.TableDataInfo;
|
|
||||||
|
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 模板信息Service接口
|
|
||||||
*
|
|
||||||
* @author 26554
|
|
||||||
* @date 2025-04-21
|
|
||||||
*/
|
|
||||||
public interface IQsProjectService {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询模板信息
|
|
||||||
*/
|
|
||||||
QsProjectVo queryById(Long id);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询模板信息列表
|
|
||||||
*/
|
|
||||||
TableDataInfo<QsProjectVo> queryPageList(QsProjectBo bo, PageQuery pageQuery);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询模板信息列表
|
|
||||||
*/
|
|
||||||
List<QsProjectVo> queryList(QsProjectBo bo);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 新增模板信息
|
|
||||||
*/
|
|
||||||
Boolean insertByBo(QsProjectBo bo);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 修改模板信息
|
|
||||||
*/
|
|
||||||
Boolean updateByBo(QsProjectBo bo);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 校验并批量删除模板信息信息
|
|
||||||
*/
|
|
||||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
|
||||||
}
|
|
||||||
@ -0,0 +1,62 @@
|
|||||||
|
package net.ferrum.business.service;
|
||||||
|
|
||||||
|
import net.ferrum.business.domain.QsProjects;
|
||||||
|
import net.ferrum.business.domain.vo.QsProjectsVo;
|
||||||
|
import net.ferrum.business.domain.bo.QsProjectsBo;
|
||||||
|
import net.ferrum.common.core.page.TableDataInfo;
|
||||||
|
import net.ferrum.common.core.domain.PageQuery;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目管理Service接口
|
||||||
|
*
|
||||||
|
* @author ruoyi
|
||||||
|
* @date 2025-07-19
|
||||||
|
*/
|
||||||
|
public interface IQsProjectsService {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询项目管理
|
||||||
|
*/
|
||||||
|
QsProjectsVo queryById(Long projectId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询项目
|
||||||
|
*/
|
||||||
|
QsProjects selectById(Long projectId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询项目管理列表
|
||||||
|
*/
|
||||||
|
TableDataInfo<QsProjects> queryPageList(QsProjects entity, PageQuery pageQuery);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询项目管理列表
|
||||||
|
*/
|
||||||
|
List<QsProjectsVo> queryList(QsProjectsBo bo);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增项目管理
|
||||||
|
*/
|
||||||
|
Boolean insertByBo(QsProjectsBo bo);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改项目管理
|
||||||
|
*/
|
||||||
|
Boolean updateByBo(QsProjectsBo bo);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 校验并批量删除项目管理信息
|
||||||
|
*/
|
||||||
|
String deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 校验项目是否已经开工
|
||||||
|
*
|
||||||
|
* @param projectId 项目ID
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
public boolean checkProjectInProcessing(Long projectId);
|
||||||
|
}
|
||||||
@ -49,4 +49,10 @@ public interface IQsSpecAttributeValuesService {
|
|||||||
* 校验并批量删除规格参数值信息
|
* 校验并批量删除规格参数值信息
|
||||||
*/
|
*/
|
||||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据规格类型id得到本类中的所有规格参数
|
||||||
|
*/
|
||||||
|
public List<QsSpecAttributeValues> selectSpecAttributeValuesByTypesId(Long typeId);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,6 +1,8 @@
|
|||||||
package net.ferrum.business.service.impl;
|
package net.ferrum.business.service.impl;
|
||||||
|
|
||||||
import cn.hutool.core.bean.BeanUtil;
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
|
import net.ferrum.business.domain.QsSpecAttributeTypes;
|
||||||
import net.ferrum.common.utils.StringUtils;
|
import net.ferrum.common.utils.StringUtils;
|
||||||
import net.ferrum.common.core.page.TableDataInfo;
|
import net.ferrum.common.core.page.TableDataInfo;
|
||||||
import net.ferrum.common.core.domain.PageQuery;
|
import net.ferrum.common.core.domain.PageQuery;
|
||||||
@ -113,4 +115,19 @@ public class QsBatchServiceImpl implements IQsBatchService {
|
|||||||
}
|
}
|
||||||
return baseMapper.deleteBatchIds(ids) > 0;
|
return baseMapper.deleteBatchIds(ids) > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询批次
|
||||||
|
*
|
||||||
|
* @param entity 要查询的规格参数类型批次参数
|
||||||
|
* @return 批次信息集合
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public List<QsBatch> selectBatchList(QsBatch entity) {
|
||||||
|
LambdaQueryWrapper<QsBatch> lqw = new LambdaQueryWrapper<>();
|
||||||
|
lqw.eq(QsBatch::getDelFlag, "0")
|
||||||
|
.eq(ObjectUtil.isNotNull(entity.getBatchId()), QsBatch::getBatchId, entity.getBatchId())
|
||||||
|
.like(StringUtils.isNotBlank(entity.getBatchName()), QsBatch::getBatchName, entity.getBatchName());
|
||||||
|
return baseMapper.selectBatchList(lqw);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,138 @@
|
|||||||
|
package net.ferrum.business.service.impl;
|
||||||
|
|
||||||
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
|
import net.ferrum.business.domain.QsSpecAttributeTypes;
|
||||||
|
import net.ferrum.business.domain.QsSpecAttributeValues;
|
||||||
|
import net.ferrum.business.domain.bo.QsSpecAttributeValuesBo;
|
||||||
|
import net.ferrum.common.constant.UserConstants;
|
||||||
|
import net.ferrum.common.utils.StringUtils;
|
||||||
|
import net.ferrum.common.core.page.TableDataInfo;
|
||||||
|
import net.ferrum.common.core.domain.PageQuery;
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import net.ferrum.business.domain.bo.QsProjectAttributesBo;
|
||||||
|
import net.ferrum.business.domain.vo.QsProjectAttributesVo;
|
||||||
|
import net.ferrum.business.domain.QsProjectAttributes;
|
||||||
|
import net.ferrum.business.mapper.QsProjectAttributesMapper;
|
||||||
|
import net.ferrum.business.service.IQsProjectAttributesService;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Collection;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目规格Service业务层处理
|
||||||
|
*
|
||||||
|
* @author ruoyi
|
||||||
|
* @date 2025-07-24
|
||||||
|
*/
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
@Service
|
||||||
|
public class QsProjectAttributesServiceImpl implements IQsProjectAttributesService {
|
||||||
|
|
||||||
|
private final QsProjectAttributesMapper baseMapper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询项目规格
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public QsProjectAttributesVo queryById(Long id){
|
||||||
|
return baseMapper.selectVoById(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询项目规格列表
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public TableDataInfo<QsProjectAttributesVo> queryPageList(QsProjectAttributesBo bo, PageQuery pageQuery) {
|
||||||
|
LambdaQueryWrapper<QsProjectAttributes> lqw = buildQueryWrapperPage(bo);
|
||||||
|
Page<QsProjectAttributesVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
||||||
|
return TableDataInfo.build(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
private LambdaQueryWrapper<QsProjectAttributes> buildQueryWrapperPage(QsProjectAttributesBo bo) {
|
||||||
|
Map<String, Object> params = bo.getParams();
|
||||||
|
LambdaQueryWrapper<QsProjectAttributes> lqw = Wrappers.lambdaQuery();
|
||||||
|
lqw.eq(QsProjectAttributes::getDelFlag, "0");
|
||||||
|
lqw.eq(bo.getProjectId() != null, QsProjectAttributes::getProjectId, bo.getProjectId());
|
||||||
|
lqw.eq(bo.getTypeId() != null, QsProjectAttributes::getTypeId, bo.getTypeId());
|
||||||
|
lqw.eq(bo.getValueId() != null, QsProjectAttributes::getValueId, bo.getValueId());
|
||||||
|
return lqw;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询项目规格列表
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public List<QsProjectAttributesVo> queryList(QsProjectAttributesBo bo) {
|
||||||
|
QueryWrapper<QsProjectAttributes> lqw = buildQueryWrapper(bo);
|
||||||
|
return baseMapper.selectProjSpecInfoList(lqw);
|
||||||
|
}
|
||||||
|
|
||||||
|
private QueryWrapper<QsProjectAttributes> buildQueryWrapper(QsProjectAttributesBo bo) {
|
||||||
|
Map<String, Object> params = bo.getParams();
|
||||||
|
QueryWrapper<QsProjectAttributes> lqw = Wrappers.query();
|
||||||
|
|
||||||
|
lqw.eq("qpa.del_flag", UserConstants.NORMAL);
|
||||||
|
lqw.eq(bo.getProjectId() != null, "qpa.project_id", bo.getProjectId());
|
||||||
|
lqw.eq(bo.getTypeId() != null, "qpa.type_id", bo.getTypeId());
|
||||||
|
lqw.eq(bo.getValueId() != null, "qpa.value_id", bo.getValueId());
|
||||||
|
return lqw;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增项目规格
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Boolean insertByBo(QsProjectAttributesBo bo) {
|
||||||
|
QsProjectAttributes add = BeanUtil.toBean(bo, QsProjectAttributes.class);
|
||||||
|
validEntityBeforeSave(add);
|
||||||
|
boolean flag = baseMapper.insert(add) > 0;
|
||||||
|
if (flag) {
|
||||||
|
bo.setId(add.getId());
|
||||||
|
}
|
||||||
|
return flag;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改项目规格
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Boolean updateByBo(QsProjectAttributesBo bo) {
|
||||||
|
QsProjectAttributes update = BeanUtil.toBean(bo, QsProjectAttributes.class);
|
||||||
|
validEntityBeforeSave(update);
|
||||||
|
return baseMapper.updateById(update) > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 保存前的数据校验
|
||||||
|
*/
|
||||||
|
private void validEntityBeforeSave(QsProjectAttributes entity){
|
||||||
|
//TODO 做一些数据校验,如唯一约束
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量删除项目规格
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
||||||
|
if(isValid){
|
||||||
|
//TODO 做一些业务上的校验,判断是否需要校验
|
||||||
|
}
|
||||||
|
return baseMapper.deleteBatchIds(ids) > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据项目ID批量删除项目规格
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public boolean deleteByProjectId(Long ProjectId) {
|
||||||
|
int rowsAffected = baseMapper.deleteByProjectId(ProjectId);
|
||||||
|
return rowsAffected >= 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,317 @@
|
|||||||
|
package net.ferrum.business.service.impl;
|
||||||
|
|
||||||
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import net.ferrum.business.domain.bo.QsProjectAttributesBo;
|
||||||
|
import net.ferrum.business.domain.vo.QsProjectAttributesVo;
|
||||||
|
import net.ferrum.business.service.IQsProjectAttributesService;
|
||||||
|
import net.ferrum.common.constant.UserConstants;
|
||||||
|
import net.ferrum.common.utils.BeanCopyUtils;
|
||||||
|
import net.ferrum.common.utils.StringUtils;
|
||||||
|
import net.ferrum.common.core.page.TableDataInfo;
|
||||||
|
import net.ferrum.common.core.domain.PageQuery;
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import net.ferrum.business.domain.bo.QsProjectsBo;
|
||||||
|
import net.ferrum.business.domain.vo.QsProjectsVo;
|
||||||
|
import net.ferrum.business.domain.QsProjects;
|
||||||
|
import net.ferrum.business.mapper.QsProjectsMapper;
|
||||||
|
import net.ferrum.business.service.IQsProjectsService;
|
||||||
|
import org.springframework.transaction.PlatformTransactionManager;
|
||||||
|
import org.springframework.transaction.TransactionDefinition;
|
||||||
|
import org.springframework.transaction.support.TransactionTemplate;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
|
import java.util.concurrent.atomic.AtomicLongArray;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目管理Service业务层处理
|
||||||
|
*
|
||||||
|
* @author ruoyi
|
||||||
|
* @date 2025-07-19
|
||||||
|
*/
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
@Service
|
||||||
|
@Slf4j
|
||||||
|
public class QsProjectsServiceImpl implements IQsProjectsService {
|
||||||
|
|
||||||
|
private final QsProjectsMapper baseMapper;
|
||||||
|
private final IQsProjectAttributesService iQsProjectAttributesService;
|
||||||
|
private final PlatformTransactionManager transactionManager;
|
||||||
|
|
||||||
|
private final StringBuilder failureMsg = new StringBuilder();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询项目管理
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public QsProjectsVo queryById(Long projectId){
|
||||||
|
return baseMapper.selectVoById(projectId);
|
||||||
|
}
|
||||||
|
|
||||||
|
public QsProjects selectById(Long projectId){
|
||||||
|
QsProjects entity = new QsProjects();
|
||||||
|
QsProjectsVo vo = baseMapper.selectVoById(projectId);
|
||||||
|
BeanCopyUtils.copy(vo,entity);
|
||||||
|
PageQuery pageQuery = new PageQuery();
|
||||||
|
pageQuery.setPageNum(1);
|
||||||
|
pageQuery.setPageSize(10);
|
||||||
|
TableDataInfo<QsProjects> data = queryPageList(entity,pageQuery);
|
||||||
|
if ( !data.getRows().isEmpty() ){
|
||||||
|
return data.getRows().get(0);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询项目管理列表
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public TableDataInfo<QsProjects> queryPageList(QsProjects entity, PageQuery pageQuery) {
|
||||||
|
Wrapper<QsProjects> lqw = buildQueryWrapper(entity);
|
||||||
|
Page<QsProjects> result = baseMapper.selectPageQsProjectsList(pageQuery.build(), lqw);
|
||||||
|
return TableDataInfo.build(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询项目管理列表
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public List<QsProjectsVo> queryList(QsProjectsBo bo) {
|
||||||
|
QsProjects entity = new QsProjects();
|
||||||
|
BeanCopyUtils.copy(bo,entity);
|
||||||
|
Wrapper<QsProjects> lqw = buildQueryWrapper(entity);
|
||||||
|
return baseMapper.selectVoList(lqw);
|
||||||
|
}
|
||||||
|
|
||||||
|
private QueryWrapper<QsProjects> buildQueryWrapper(QsProjects bo) {
|
||||||
|
Map<String, Object> params = bo.getParams();
|
||||||
|
//LambdaQueryWrapper<QsProjectsBo> lqw = Wrappers.lambdaQuery();
|
||||||
|
QueryWrapper<QsProjects> lqw = new QueryWrapper<>();
|
||||||
|
lqw.eq("a.del_flag", UserConstants.NORMAL);
|
||||||
|
|
||||||
|
lqw.eq(bo.getBatchId() != null, "a.batch_id", bo.getBatchId());
|
||||||
|
lqw.like(StringUtils.isNotBlank(bo.getBatchName()), "b.batch_name", bo.getBatchName());
|
||||||
|
lqw.like(StringUtils.isNotBlank(bo.getProjectName()), "a.project_name", bo.getProjectName());
|
||||||
|
lqw.like(bo.getStageDisplayName() != null, "ms.display_name", bo.getStageDisplayName());
|
||||||
|
lqw.like(StringUtils.isNotBlank(bo.getProjectCompletion()), "a.project_completion", bo.getProjectCompletion());
|
||||||
|
lqw.between(params.get("beginStartDate") != null && params.get("endStartDate") != null,
|
||||||
|
"a.start_date" ,params.get("beginStartDate"), params.get("endStartDate"));
|
||||||
|
lqw.between(params.get("beginEndTime") != null && params.get("endEndTime") != null,
|
||||||
|
"a.end_time" ,params.get("beginEndTime"), params.get("endEndTime"));
|
||||||
|
return lqw;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增项目管理
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Boolean insertByBo(QsProjectsBo bo) {
|
||||||
|
|
||||||
|
TransactionTemplate transactionTemplate = new TransactionTemplate(transactionManager);
|
||||||
|
transactionTemplate.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW);
|
||||||
|
boolean updateSuccess = true;
|
||||||
|
transactionTemplate.execute(status -> {
|
||||||
|
try {
|
||||||
|
// 在这里执行数据库操作,这些操作将在同一个事务中执行
|
||||||
|
QsProjects add = BeanUtil.toBean(bo, QsProjects.class);
|
||||||
|
//validEntityBeforeSave(add);
|
||||||
|
boolean flag = baseMapper.insert(add) > 0;
|
||||||
|
if (flag) {
|
||||||
|
bo.setProjectId(add.getProjectId());
|
||||||
|
//插入项目所有的规格参数
|
||||||
|
bo.getSpecInfoList().forEach(specValue -> {
|
||||||
|
QsProjectAttributesBo specInfoBo = new QsProjectAttributesBo();
|
||||||
|
BeanCopyUtils.copy(specValue,specInfoBo);
|
||||||
|
specInfoBo.setProjectId(bo.getProjectId());
|
||||||
|
if (! iQsProjectAttributesService.insertByBo(specInfoBo)) {
|
||||||
|
String msg = "插入异常——在插入项目规格信息时出现异常!" + "参数:" + specInfoBo;
|
||||||
|
failureMsg.append(msg);
|
||||||
|
log.error(msg);
|
||||||
|
throw new RuntimeException(msg);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
//在 qs_project_stage_status 表中插入当前项目的阶段的子并行阶段
|
||||||
|
// 在项目表中插入项目时,默认项目当前阶段为1,第一阶段:项目建议,没有并行的子阶段,所以不用做这步操作
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
String msg = "插入异常——在插入项目主体信息时出现异常!" + "参数:" + bo;
|
||||||
|
failureMsg.append(msg);
|
||||||
|
log.error(msg);
|
||||||
|
throw new RuntimeException(msg);
|
||||||
|
}
|
||||||
|
// 如果一切正常,返回null表示提交事务
|
||||||
|
return null;
|
||||||
|
} catch (Exception e) {
|
||||||
|
// 如果发生异常,可以手动回滚事务
|
||||||
|
status.setRollbackOnly();
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return updateSuccess;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改项目管理
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Boolean updateByBo(QsProjectsBo bo) {
|
||||||
|
|
||||||
|
TransactionTemplate transactionTemplate = new TransactionTemplate(transactionManager);
|
||||||
|
transactionTemplate.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW);
|
||||||
|
boolean updateSuccess = true;
|
||||||
|
transactionTemplate.execute(status -> {
|
||||||
|
try {
|
||||||
|
// 在这里执行数据库操作,这些操作将在同一个事务中执行
|
||||||
|
QsProjectAttributesBo querySpecInfoBo = new QsProjectAttributesBo();
|
||||||
|
querySpecInfoBo.setProjectId(bo.getProjectId());
|
||||||
|
List<QsProjectAttributesVo> projSepcValueList =iQsProjectAttributesService.queryList(querySpecInfoBo);
|
||||||
|
|
||||||
|
// 将 projSepcValueList 的 id 存入 Map
|
||||||
|
Map<Long, QsProjectAttributesVo> mapB = new HashMap<>();
|
||||||
|
for (QsProjectAttributesVo item : projSepcValueList) {
|
||||||
|
mapB.put(item.getId(), item);
|
||||||
|
}
|
||||||
|
|
||||||
|
bo.getSpecInfoList().forEach(specValue -> {
|
||||||
|
QsProjectAttributesVo oldSpecInfo = mapB.get(specValue.getId());
|
||||||
|
|
||||||
|
QsProjectAttributesBo specInfoBo = new QsProjectAttributesBo();
|
||||||
|
|
||||||
|
if (oldSpecInfo == null){ //没有这个规格属性,就插入一个新的
|
||||||
|
BeanCopyUtils.copy(specValue,specInfoBo);
|
||||||
|
specInfoBo.setProjectId(bo.getProjectId());
|
||||||
|
if (! iQsProjectAttributesService.insertByBo(specInfoBo)) {
|
||||||
|
String msg = "修改项目,插入异常——在插入项目规格信息时出现异常!" + "参数:" + specInfoBo;
|
||||||
|
failureMsg.append(msg);
|
||||||
|
log.error(msg);
|
||||||
|
throw new RuntimeException(msg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (oldSpecInfo.getId().equals(specValue.getId()) &&
|
||||||
|
!oldSpecInfo.getValue().equals(specValue.getValue())){ //规格发生改变
|
||||||
|
BeanCopyUtils.copy(specValue,specInfoBo);
|
||||||
|
specInfoBo.setProjectId(bo.getProjectId());
|
||||||
|
if (! iQsProjectAttributesService.updateByBo(specInfoBo)) {
|
||||||
|
String msg = "修改项目,更新异常——在更新项目规格信息时出现异常!" + "参数:" + specInfoBo;
|
||||||
|
failureMsg.append(msg);
|
||||||
|
log.error(msg);
|
||||||
|
throw new RuntimeException(msg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
QsProjects update = BeanUtil.toBean(bo, QsProjects.class);
|
||||||
|
validEntityBeforeSave(update);
|
||||||
|
if (!(baseMapper.updateById(update) > 0)){
|
||||||
|
String msg = "修改项目,更新异常——在更新项目信息时出现异常!" + "参数:" + update.toString();
|
||||||
|
failureMsg.append(msg);
|
||||||
|
log.error(msg);
|
||||||
|
throw new RuntimeException(msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 如果一切正常,返回null表示提交事务
|
||||||
|
return null;
|
||||||
|
} catch (Exception e) {
|
||||||
|
// 如果发生异常,可以手动回滚事务
|
||||||
|
status.setRollbackOnly();
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return updateSuccess;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 保存前的数据校验
|
||||||
|
*/
|
||||||
|
private void validEntityBeforeSave(QsProjects entity){
|
||||||
|
//TODO 做一些数据校验,如唯一约束
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量删除项目管理
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public String deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
||||||
|
|
||||||
|
List <QsProjects> qsProjectList = baseMapper.selectBatchIds(ids);
|
||||||
|
|
||||||
|
if(isValid){
|
||||||
|
//TODO 做一些业务上的校验,判断是否需要校验
|
||||||
|
failureMsg.setLength(0); // 清空内容
|
||||||
|
for (int i = 0; i < qsProjectList.size(); i++) {
|
||||||
|
QsProjects qsProject = qsProjectList.get(i);
|
||||||
|
if (qsProject.getCurrentMasterStageId() > UserConstants.PROJECT_START_ID) { // 项目已经开工,不允许删除
|
||||||
|
String msg = "删除项目,项目名称:" + qsProject.getProjectName() +
|
||||||
|
"已经开工,不能删除!";
|
||||||
|
failureMsg.append(msg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (failureMsg.length()>0) return failureMsg.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
failureMsg.setLength(0); // 清空内容
|
||||||
|
TransactionTemplate transactionTemplate = new TransactionTemplate(transactionManager);
|
||||||
|
transactionTemplate.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW);
|
||||||
|
AtomicLongArray noDelProject = new AtomicLongArray(ids.size());
|
||||||
|
String sRet = transactionTemplate.execute(status -> {
|
||||||
|
try {
|
||||||
|
// 在这里执行数据库操作,这些操作将在同一个事务中执行
|
||||||
|
ids.forEach(projectId -> {
|
||||||
|
QsProjects qsProject = baseMapper.selectById(projectId);
|
||||||
|
if(qsProject == null){return;}
|
||||||
|
//删除 项目的规格参数
|
||||||
|
if(!iQsProjectAttributesService.deleteByProjectId(projectId)){
|
||||||
|
String msg = "删除项目,删除异常——在删除项目规格信息时出现异常!" + "参数:" + qsProject;
|
||||||
|
failureMsg.append(msg);
|
||||||
|
log.error(msg);
|
||||||
|
throw new RuntimeException(msg);
|
||||||
|
}
|
||||||
|
//删除 项目基本信息
|
||||||
|
if(!( baseMapper.deleteById(projectId) > 0)){
|
||||||
|
String msg = "删除项目,删除异常——在删除项目规格信息时出现异常!" + "参数:" + qsProject;
|
||||||
|
failureMsg.append(msg);
|
||||||
|
log.error(msg);
|
||||||
|
throw new RuntimeException(msg);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
// 如果一切正常,返回null表示提交事务
|
||||||
|
return failureMsg.toString();
|
||||||
|
} catch (Exception e) {
|
||||||
|
// 如果发生异常,可以手动回滚事务
|
||||||
|
status.setRollbackOnly();
|
||||||
|
return failureMsg.toString();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return sRet;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 校验项目是否已经开工
|
||||||
|
*
|
||||||
|
* @param projectId 项目ID
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public boolean checkProjectInProcessing(Long projectId) {
|
||||||
|
return baseMapper.exists(new LambdaQueryWrapper<QsProjects>()
|
||||||
|
.gt(QsProjects::getCurrentMasterStageId, UserConstants.PROJECT_START_ID)
|
||||||
|
.eq(ObjectUtil.isNotNull(projectId), QsProjects::getProjectId, projectId)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -2,6 +2,7 @@ package net.ferrum.business.service.impl;
|
|||||||
|
|
||||||
import cn.hutool.core.bean.BeanUtil;
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
|
import net.ferrum.business.domain.QsBatch;
|
||||||
import net.ferrum.common.utils.StringUtils;
|
import net.ferrum.common.utils.StringUtils;
|
||||||
import net.ferrum.common.core.page.TableDataInfo;
|
import net.ferrum.common.core.page.TableDataInfo;
|
||||||
import net.ferrum.common.core.domain.PageQuery;
|
import net.ferrum.common.core.domain.PageQuery;
|
||||||
@ -112,16 +113,18 @@ public class QsSpecAttributeTypesServiceImpl implements IQsSpecAttributeTypesSer
|
|||||||
* 查询规格参数类型
|
* 查询规格参数类型
|
||||||
*
|
*
|
||||||
* @param type 要查询的规格参数类型
|
* @param type 要查询的规格参数类型
|
||||||
* @return 部门信息集合
|
* @return 部规格参数类型信息集合
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public List<QsSpecAttributeTypes> selectSpecAttributeTypesList(QsSpecAttributeTypes type) {
|
public List<QsSpecAttributeTypes> selectSpecAttributeTypesList(QsSpecAttributeTypes type) {
|
||||||
LambdaQueryWrapper<QsSpecAttributeTypes> lqw = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<QsSpecAttributeTypes> lqw = new LambdaQueryWrapper<>();
|
||||||
lqw.eq(QsSpecAttributeTypes::getDelFlag, "0")
|
if (type != null){
|
||||||
.eq(ObjectUtil.isNotNull(type.getTypeId()), QsSpecAttributeTypes::getTypeId, type.getTypeId())
|
lqw.eq(QsSpecAttributeTypes::getDelFlag, "0")
|
||||||
.like(StringUtils.isNotBlank(type.getTypeName()), QsSpecAttributeTypes::getTypeName, type.getTypeName())
|
.eq(ObjectUtil.isNotNull(type.getTypeId()), QsSpecAttributeTypes::getTypeId, type.getTypeId())
|
||||||
.orderByAsc(QsSpecAttributeTypes::getTypeId)
|
.like(StringUtils.isNotBlank(type.getTypeName()), QsSpecAttributeTypes::getTypeName, type.getTypeName())
|
||||||
.orderByAsc(QsSpecAttributeTypes::getTypeName);
|
.orderByAsc(QsSpecAttributeTypes::getTypeId)
|
||||||
|
.orderByAsc(QsSpecAttributeTypes::getTypeName);
|
||||||
|
}
|
||||||
return baseMapper.selectSpecAttributeTypesList(lqw);
|
return baseMapper.selectSpecAttributeTypesList(lqw);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|||||||
import net.ferrum.business.domain.QsSpecAttributeTypes;
|
import net.ferrum.business.domain.QsSpecAttributeTypes;
|
||||||
import net.ferrum.business.mapper.QsSpecAttributeTypesMapper;
|
import net.ferrum.business.mapper.QsSpecAttributeTypesMapper;
|
||||||
import net.ferrum.common.constant.UserConstants;
|
import net.ferrum.common.constant.UserConstants;
|
||||||
|
import net.ferrum.common.core.domain.R;
|
||||||
import net.ferrum.common.core.domain.entity.SysDept;
|
import net.ferrum.common.core.domain.entity.SysDept;
|
||||||
import net.ferrum.common.core.domain.entity.SysUser;
|
import net.ferrum.common.core.domain.entity.SysUser;
|
||||||
import net.ferrum.common.helper.DataBaseHelper;
|
import net.ferrum.common.helper.DataBaseHelper;
|
||||||
@ -145,4 +146,8 @@ public class QsSpecAttributeValuesServiceImpl implements IQsSpecAttributeValuesS
|
|||||||
}
|
}
|
||||||
return baseMapper.deleteBatchIds(ids) > 0;
|
return baseMapper.deleteBatchIds(ids) > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<QsSpecAttributeValues> selectSpecAttributeValuesByTypesId(Long typeId) {
|
||||||
|
return baseMapper.selectSpecAttributeValuesByTypesId(typeId);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -19,5 +19,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<result property="remark" column="remark"/>
|
<result property="remark" column="remark"/>
|
||||||
</resultMap>
|
</resultMap>
|
||||||
|
|
||||||
|
<select id="selectBatchList" resultMap="QsBatchResult">
|
||||||
|
select *
|
||||||
|
from qs_batch a
|
||||||
|
${ew.getCustomSqlSegment}
|
||||||
|
order by a.batch_start_date desc
|
||||||
|
</select>
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|||||||
@ -0,0 +1,33 @@
|
|||||||
|
<?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="net.ferrum.business.mapper.QsProjectAttributesMapper">
|
||||||
|
|
||||||
|
<resultMap type="net.ferrum.business.domain.QsProjectAttributes" id="QsProjectAttributesResult">
|
||||||
|
<result property="id" column="id"/>
|
||||||
|
<result property="projectId" column="project_id"/>
|
||||||
|
<result property="typeId" column="type_id"/>
|
||||||
|
<result property="valueId" column="value_id"/>
|
||||||
|
<result property="createBy" column="create_by"/>
|
||||||
|
<result property="createTime" column="create_time"/>
|
||||||
|
<result property="updateBy" column="update_by"/>
|
||||||
|
<result property="updateTime" column="update_time"/>
|
||||||
|
<result property="remark" column="remark"/>
|
||||||
|
<result property="delFlag" column="del_flag"/>
|
||||||
|
</resultMap>
|
||||||
|
|
||||||
|
<select id="selectProjSpecInfoList" resultType="net.ferrum.business.domain.vo.QsProjectAttributesVo">
|
||||||
|
select qpa.id,qpa.project_id,qpa.type_id,qpa.value_id,qpa.remark, qsav.value as value
|
||||||
|
from qs_project_attributes qpa
|
||||||
|
left join qs_spec_attribute_values qsav on qpa.type_id = qsav.type_id and qpa.value_id = qsav.value_id
|
||||||
|
${ew.getCustomSqlSegment}
|
||||||
|
order by qpa.type_id, qpa.value_id
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<delete id="deleteByProjectId" parameterType="java.lang.Long">
|
||||||
|
DELETE FROM qs_project_attributes
|
||||||
|
WHERE project_id = #{projectId}
|
||||||
|
</delete>
|
||||||
|
|
||||||
|
</mapper>
|
||||||
@ -0,0 +1,83 @@
|
|||||||
|
<?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="net.ferrum.business.mapper.QsProjectsMapper">
|
||||||
|
|
||||||
|
<resultMap type="net.ferrum.business.domain.QsProjects" id="QsProjectsResult">
|
||||||
|
<result property="projectId" column="project_id"/>
|
||||||
|
<result property="batchId" column="batch_id"/>
|
||||||
|
<result property="projectName" column="project_name"/>
|
||||||
|
<result property="createBy" column="create_by"/>
|
||||||
|
<result property="createTime" column="create_time"/>
|
||||||
|
<result property="updateBy" column="update_by"/>
|
||||||
|
<result property="updateTime" column="update_time"/>
|
||||||
|
<result property="remark" column="remark"/>
|
||||||
|
<result property="delFlag" column="del_flag"/>
|
||||||
|
<result property="currentMasterStageId" column="current_master_stage_id"/>
|
||||||
|
<result property="projectCompletion" column="project_completion"/>
|
||||||
|
<result property="startDate" column="start_date"/>
|
||||||
|
<result property="endTime" column="end_time"/>
|
||||||
|
|
||||||
|
<result property="specInfo" column="specInfo"/>
|
||||||
|
<result property="batchName" column="batch_name"/>
|
||||||
|
<result property="stageName" column="stage_name"/>
|
||||||
|
<result property="stageDisplayName" column="display_name"/>
|
||||||
|
<result property="isParallelContainer" column="is_parallel_container"/>
|
||||||
|
<result property="parallelProgress" column="parallel_Progress"/>
|
||||||
|
|
||||||
|
<association property="batch" column="batch_id" javaType="net.ferrum.business.domain.QsBatch" resultMap="QsBatchResult"/>
|
||||||
|
</resultMap>
|
||||||
|
|
||||||
|
<resultMap type="net.ferrum.business.domain.QsBatch" id="QsBatchResult">
|
||||||
|
<result property="batchId" column="batch_id"/>
|
||||||
|
<result property="batchNo" column="batch_no"/>
|
||||||
|
<result property="batchName" column="batch_name"/>
|
||||||
|
<result property="batchStartDate" column="batch_start_date"/>
|
||||||
|
<result property="batchPlanEndDate" column="batch_plan_end_date"/>
|
||||||
|
<result property="batchEndDate" column="batch_end_date"/>
|
||||||
|
<result property="delFlag" column="del_flag"/>
|
||||||
|
<result property="createBy" column="create_by"/>
|
||||||
|
<result property="createTime" column="create_time"/>
|
||||||
|
<result property="updateBy" column="update_by"/>
|
||||||
|
<result property="updateTime" column="update_time"/>
|
||||||
|
<result property="remark" column="remark"/>
|
||||||
|
</resultMap>
|
||||||
|
|
||||||
|
|
||||||
|
<select id="selectPageQsProjectsList" resultMap="QsProjectsResult">
|
||||||
|
select a.batch_id, a.project_id, a.project_name,a.current_master_stage_id,a.project_completion,
|
||||||
|
a.start_date,a.end_time, b.batch_name,d.specInfo,
|
||||||
|
a.create_by, a.create_time, a.update_by, a.update_time, a.remark, a.del_flag,
|
||||||
|
ms.stage_name, ms.display_name, ms.is_parallel_container,
|
||||||
|
IF(ms.is_parallel_container,
|
||||||
|
CONCAT(
|
||||||
|
(SELECT COUNT(*)
|
||||||
|
FROM qs_project_stage_status pss
|
||||||
|
WHERE pss.project_id = a.project_id
|
||||||
|
AND pss.master_stage_id = a.current_master_stage_id
|
||||||
|
AND pss.status = '已完成'),
|
||||||
|
'/',
|
||||||
|
(SELECT COUNT(*)
|
||||||
|
FROM qs_project_sub_stages pss
|
||||||
|
WHERE pss.master_stage_id = a.current_master_stage_id)
|
||||||
|
),
|
||||||
|
'1/1'
|
||||||
|
) AS parallel_Progress
|
||||||
|
from qs_projects a
|
||||||
|
left join qs_batch b on a.batch_id = b.batch_id
|
||||||
|
left join (SELECT p.project_id,
|
||||||
|
GROUP_CONCAT(
|
||||||
|
CONCAT(pa.id, ':',at.type_id, ':',at.type_name, ':', av.value_id,':', av.value)
|
||||||
|
ORDER BY at.type_id SEPARATOR '|'
|
||||||
|
) AS specInfo
|
||||||
|
FROM qs_projects p
|
||||||
|
LEFT JOIN qs_project_attributes pa ON p.project_id = pa.project_id
|
||||||
|
LEFT JOIN qs_spec_attribute_values av ON pa.value_id = av.value_id
|
||||||
|
LEFT JOIN qs_spec_attribute_types at ON av.type_id = at.type_id
|
||||||
|
GROUP BY p.project_id) as d on d.project_id = a.project_id
|
||||||
|
left JOIN qs_project_master_stages ms ON a.current_master_stage_id = ms.master_stage_id
|
||||||
|
${ew.getCustomSqlSegment}
|
||||||
|
order by a.start_date desc
|
||||||
|
</select>
|
||||||
|
</mapper>
|
||||||
@ -13,6 +13,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<result property="updateTime" column="update_time"/>
|
<result property="updateTime" column="update_time"/>
|
||||||
<result property="remark" column="remark"/>
|
<result property="remark" column="remark"/>
|
||||||
<result property="delFlag" column="del_flag"/>
|
<result property="delFlag" column="del_flag"/>
|
||||||
|
|
||||||
|
<collection property="specValues" javaType="java.util.List" resultMap="SpecValusResult"/>
|
||||||
|
|
||||||
|
</resultMap>
|
||||||
|
|
||||||
|
|
||||||
|
<resultMap id="SpecValusResult" type="net.ferrum.business.domain.QsSpecAttributeValues">
|
||||||
|
<id property="typeId" column="type_id"/>
|
||||||
|
<result property="valueId" column="value_id"/>
|
||||||
|
<result property="value" column="value"/>
|
||||||
</resultMap>
|
</resultMap>
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -40,4 +40,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
order by a.type_id, a.value_id
|
order by a.type_id, a.value_id
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<select id="selectSpecAttributeValuesByTypesId"
|
||||||
|
resultType="net.ferrum.business.domain.QsSpecAttributeValues">
|
||||||
|
select a.value_id, a.value, a.type_id, b.type_name
|
||||||
|
from qs_spec_attribute_values a, qs_spec_attribute_types b
|
||||||
|
where a.type_id = b.type_id
|
||||||
|
and a.del_flag != '2'
|
||||||
|
and a.type_id = #{typeId}
|
||||||
|
order by a.type_id, a.value_id
|
||||||
|
</select>
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|||||||
19
script/sql/mysql/projectsMenu.sql
Normal file
19
script/sql/mysql/projectsMenu.sql
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
-- 菜单 SQL
|
||||||
|
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
|
||||||
|
values(1946418987737362434, '项目管理', '1896968401096663042', '1', 'projects', 'business/projects/index', 1, 0, 'C', '0', '0', 'business:projects:list', '#', 'admin', sysdate(), '', null, '项目管理菜单');
|
||||||
|
|
||||||
|
-- 按钮 SQL
|
||||||
|
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
|
||||||
|
values(1946418987737362435, '项目管理查询', 1946418987737362434, '1', '#', '', 1, 0, 'F', '0', '0', 'business:projects:query', '#', 'admin', sysdate(), '', null, '');
|
||||||
|
|
||||||
|
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
|
||||||
|
values(1946418987737362436, '项目管理新增', 1946418987737362434, '2', '#', '', 1, 0, 'F', '0', '0', 'business:projects:add', '#', 'admin', sysdate(), '', null, '');
|
||||||
|
|
||||||
|
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
|
||||||
|
values(1946418987737362437, '项目管理修改', 1946418987737362434, '3', '#', '', 1, 0, 'F', '0', '0', 'business:projects:edit', '#', 'admin', sysdate(), '', null, '');
|
||||||
|
|
||||||
|
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
|
||||||
|
values(1946418987737362438, '项目管理删除', 1946418987737362434, '4', '#', '', 1, 0, 'F', '0', '0', 'business:projects:remove', '#', 'admin', sysdate(), '', null, '');
|
||||||
|
|
||||||
|
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
|
||||||
|
values(1946418987737362439, '项目管理导出', 1946418987737362434, '5', '#', '', 1, 0, 'F', '0', '0', 'business:projects:export', '#', 'admin', sysdate(), '', null, '');
|
||||||
19
script/sql/mysql/userSupplierMenu.sql
Normal file
19
script/sql/mysql/userSupplierMenu.sql
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
-- 菜单 SQL
|
||||||
|
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
|
||||||
|
values(1944385995214422017, 'userSupplier', '1896968401096663042', '1', 'userSupplier', 'business/userSupplier/index', 1, 0, 'C', '0', '0', 'business:userSupplier:list', '#', 'admin', sysdate(), '', null, 'userSupplier菜单');
|
||||||
|
|
||||||
|
-- 按钮 SQL
|
||||||
|
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
|
||||||
|
values(1944385995214422018, 'userSupplier查询', 1944385995214422017, '1', '#', '', 1, 0, 'F', '0', '0', 'business:userSupplier:query', '#', 'admin', sysdate(), '', null, '');
|
||||||
|
|
||||||
|
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
|
||||||
|
values(1944385995214422019, 'userSupplier新增', 1944385995214422017, '2', '#', '', 1, 0, 'F', '0', '0', 'business:userSupplier:add', '#', 'admin', sysdate(), '', null, '');
|
||||||
|
|
||||||
|
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
|
||||||
|
values(1944385995214422020, 'userSupplier修改', 1944385995214422017, '3', '#', '', 1, 0, 'F', '0', '0', 'business:userSupplier:edit', '#', 'admin', sysdate(), '', null, '');
|
||||||
|
|
||||||
|
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
|
||||||
|
values(1944385995214422021, 'userSupplier删除', 1944385995214422017, '4', '#', '', 1, 0, 'F', '0', '0', 'business:userSupplier:remove', '#', 'admin', sysdate(), '', null, '');
|
||||||
|
|
||||||
|
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
|
||||||
|
values(1944385995214422022, 'userSupplier导出', 1944385995214422017, '5', '#', '', 1, 0, 'F', '0', '0', 'business:userSupplier:export', '#', 'admin', sysdate(), '', null, '');
|
||||||
Loading…
x
Reference in New Issue
Block a user