feat: 绑定零部件其余接口

This commit is contained in:
2024-04-18 15:27:39 +08:00
parent 76c86bb191
commit 986fbaf438
8 changed files with 279 additions and 41 deletions
@@ -4,19 +4,15 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.jero.common.api.vo.Result; import com.jero.common.api.vo.Result;
import com.jero.common.api.vo.ResultCommon; import com.jero.common.api.vo.ResultCommon;
import com.jero.common.aspect.annotation.AutoLog; import com.jero.common.aspect.annotation.AutoLog;
import com.jero.common.aspect.annotation.DictPoint;
import com.jero.common.exception.JeroBootException; import com.jero.common.exception.JeroBootException;
import com.jero.common.util.MessageUtils; import com.jero.common.util.MessageUtils;
import com.jero.modules.laws.bindPart.entity.BindPartStandardVO;
import com.jero.modules.laws.bindPart.entity.LawsBindPart; import com.jero.modules.laws.bindPart.entity.LawsBindPart;
import com.jero.modules.laws.bindPart.service.ILawsBindPartService; import com.jero.modules.laws.bindPart.service.ILawsBindPartService;
import com.jero.modules.laws.common.service.ILawsCommonService; import com.jero.modules.laws.documenttool.service.IDocumentSplitService;
import com.jero.modules.laws.common.vo.LawsDictModel; import com.jero.modules.split.entity.SarFileSplitMenuEO;
import com.jero.modules.laws.common.vo.ManyStandardSelectionBox; import com.jero.modules.split.page.SarFileSplitMenuEOPage;
import com.jero.modules.laws.common.vo.ManyStandardSelectionBoxVO; import com.jero.modules.split.service.ISarFileSplitMenuEOService;
import com.jero.modules.laws.enterprise.entity.EnterpriseStandardInspectContent;
import com.jero.modules.laws.enterprise.entity.dto.ESQueryCommonDTO;
import com.jero.modules.laws.enterprise.entity.vo.EnterpriseStandardDeclareVo;
import com.jero.modules.split.entity.SarFileSplitInfoEO;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam; import io.swagger.annotations.ApiParam;
@@ -28,9 +24,9 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@@ -43,6 +39,12 @@ public class LawsBindPartController {
@Autowired @Autowired
private ILawsBindPartService lawsBindPartService; private ILawsBindPartService lawsBindPartService;
@Resource
private IDocumentSplitService documentSplitService;
@Resource
private ISarFileSplitMenuEOService sarFileSplitMenuEOService;
/** /**
* 分页列表查询 * 分页列表查询
* *
@@ -123,4 +125,53 @@ public class LawsBindPartController {
return Result.OK("批量删除成功!"); return Result.OK("批量删除成功!");
} }
/**
* 选择标准
*
* @return
*/
@AutoLog(value = "绑定零部件-选择标准")
@ApiOperation(value="绑定零部件-选择标准", notes="绑定零部件-选择标准")
@GetMapping(value = "/selectStandard")
public Result<IPage<BindPartStandardVO>> selectStandard(BindPartStandardVO bindPartStandardVO,
@RequestParam(name="pageNo", defaultValue="1") @ApiParam("页码") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") @ApiParam("页面显示数量") Integer pageSize) {
IPage<BindPartStandardVO> pageList= lawsBindPartService.selectStandard(bindPartStandardVO, pageNo, pageSize);
return Result.OK(pageList);
}
/**
* 选择条款
*
* @return
*/
@AutoLog(value = "绑定零部件-条款列表")
@ApiOperation(value="绑定零部件-条款列表", notes="绑定零部件-条款列表")
@PostMapping(value = "/selectClause")
public Result<IPage<Map<String, Object>>> selectClause(@RequestBody Map<String, Object> parameter) {
try {
IPage<Map<String, Object>> data = documentSplitService.queryDocumentSplitDetail(parameter);
return Result.OK(data);
} catch (JeroBootException e){
return Result.error(e.getMessage());
} catch (Exception e){
return Result.error(MessageUtils.getMessage(ResultCommon.ERROR));
}
}
/**
* 选择条款
*
* @return
*/
@AutoLog(value = "绑定零部件-条款目录树")
@ApiOperation(value="绑定零部件-条款目录树", notes="绑定零部件-条款目录树")
@GetMapping(value = "/selectClause")
public Result<List<SarFileSplitMenuEO>> clauseTree(SarFileSplitMenuEOPage page) {
page.setValidFlag("0");
page.setOrderBy("display_seq asc");
List<SarFileSplitMenuEO> getList = sarFileSplitMenuEOService.queryByList(page);
return Result.OK(getList);
}
} }
@@ -0,0 +1,61 @@
package com.jero.modules.laws.bindPart.entity;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.jero.common.aspect.annotation.Dict;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
* @author: Mzaxd
* @Date: 2024/4/18 10:09
*/
@Data
public class BindPartStandardVO {
/**
* id
*/
@ApiModelProperty(value = "id")
private String id;
/**
* 标准号
*/
@ApiModelProperty(value = "标准号")
private String standardNumber;
/**
* 标准名称
*/
@ApiModelProperty(value = "标准名称")
private String standardName;
/**
* 标准状态
*/
@ApiModelProperty(value = "标准状态")
@Dict(dicCode = "standard_state")
private String standardState;
/**
* 标准状态
*/
@ApiModelProperty(value = "企标标准状态")
@Dict(dicCode = "es_standard_state")
private String esStandardState;
/**
* 发布日期
*/
@ApiModelProperty(value = "发布日期")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
private Date releaseDate;
/**
* 标准类型(1:国内,2:海外,3:企业)
*/
@ApiModelProperty(value = "标准类型(1:国内,2:海外,3:企业)")
@Dict(dicCode = "standard_source")
private String standardType;
/**
* 拆分条款记录Id(选择条款用)
*/
@ApiModelProperty(value = "拆分条款记录Id(选择条款用)")
private String infoId;
}
@@ -70,10 +70,10 @@ public class LawsBindPart implements Serializable {
private String partName; private String partName;
/** /**
* 零部件标准绑定关系表id * 文档拆分Id
*/ */
@ApiModelProperty(value = "零部件标准绑定关系表id") @ApiModelProperty(value = "文档拆分Id")
private String sarFileSplitInfoId; private String docSplitId;
/** /**
* 绑定人员 * 绑定人员
@@ -90,13 +90,6 @@ public class LawsBindPart implements Serializable {
@ApiModelProperty(value = "绑定时间") @ApiModelProperty(value = "绑定时间")
private Date bindTime; private Date bindTime;
/**
* 文档拆分Id
*/
@ApiModelProperty(value = "文档拆分Id")
@TableField(exist = false)
private String docSplitId;
/** /**
* 条款Id * 条款Id
*/ */
@@ -63,7 +63,7 @@ public class LawsBindPartDoc implements Serializable {
* 条款id * 条款id
*/ */
@ApiModelProperty(value = "条款id") @ApiModelProperty(value = "条款id")
private String docId; private String clauseId;
@TableField(exist = false) @TableField(exist = false)
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
@@ -1,6 +1,7 @@
package com.jero.modules.laws.bindPart.mapper; package com.jero.modules.laws.bindPart.mapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.jero.modules.laws.bindPart.entity.BindPartStandardVO;
import com.jero.modules.laws.bindPart.entity.LawsBindPart; import com.jero.modules.laws.bindPart.entity.LawsBindPart;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.jero.modules.laws.enterprise.entity.vo.EnterpriseStandardPlanVo; import com.jero.modules.laws.enterprise.entity.vo.EnterpriseStandardPlanVo;
@@ -15,6 +16,8 @@ import org.apache.ibatis.annotations.Param;
public interface LawsBindPartMapper extends BaseMapper<LawsBindPart> { public interface LawsBindPartMapper extends BaseMapper<LawsBindPart> {
IPage<LawsBindPart> page(IPage<LawsBindPart> page, @Param("param") LawsBindPart lawsBindPart); IPage<LawsBindPart> page(IPage<LawsBindPart> page, @Param("param") LawsBindPart lawsBindPart);
IPage<BindPartStandardVO> selectStandard(IPage<BindPartStandardVO> page, @Param("param") BindPartStandardVO bindPartStandardVO);
} }
@@ -13,7 +13,7 @@
<result property="orgCode" column="org_code" jdbcType="VARCHAR"/> <result property="orgCode" column="org_code" jdbcType="VARCHAR"/>
<result property="partNo" column="part_no" jdbcType="VARCHAR"/> <result property="partNo" column="part_no" jdbcType="VARCHAR"/>
<result property="partName" column="part_name" jdbcType="VARCHAR"/> <result property="partName" column="part_name" jdbcType="VARCHAR"/>
<result property="sarFileSplitInfoId" column="sar_file_split_info_id" jdbcType="VARCHAR"/> <result property="docSplitId" column="doc_split_id" jdbcType="VARCHAR"/>
<result property="bindUser" column="bind_user" jdbcType="VARCHAR"/> <result property="bindUser" column="bind_user" jdbcType="VARCHAR"/>
<result property="bindTime" column="bind_time" jdbcType="TIMESTAMP"/> <result property="bindTime" column="bind_time" jdbcType="TIMESTAMP"/>
</resultMap> </resultMap>
@@ -30,7 +30,7 @@
bp.id, bp.id,
bp.part_no, bp.part_no,
bp.part_name, bp.part_name,
bp.sar_file_split_info_id, bp.doc_split_id,
standard.standard_number, standard.standard_number,
standard.standard_name, standard.standard_name,
GROUP_CONCAT(lbpd.clause_id ORDER BY split.item_num SEPARATOR ', ') AS clauseIds, GROUP_CONCAT(lbpd.clause_id ORDER BY split.item_num SEPARATOR ', ') AS clauseIds,
@@ -39,7 +39,7 @@
bp.bind_time bp.bind_time
FROM FROM
`laws_bind_part` AS bp `laws_bind_part` AS bp
LEFT JOIN sar_file_split_info AS sfsi ON bp.sar_file_split_info_id = sfsi.id LEFT JOIN sar_file_split_info AS sfsi ON bp.doc_split_id = sfsi.id
LEFT JOIN ( LEFT JOIN (
select id, standard_number, standard_name from laws_enterprise_standard where del_flag = 0 select id, standard_number, standard_name from laws_enterprise_standard where del_flag = 0
UNION ALL UNION ALL
@@ -71,4 +71,45 @@
</if> </if>
</where> </where>
</select> </select>
<select id="selectStandard" resultType="com.jero.modules.laws.bindPart.entity.BindPartStandardVO">
select
standard.id as id,
standard.standard_number as standardNumber,
standard.standard_name as standardName,
standard.release_date as releaseDate,
standard.standard_state as standardState,
standard.standard_state as esStandardState
FROM
<choose>
<when test="param.standardType == '1' or param.standardType == '' or param.standardType == null">
laws_domestic_standard AS standard
</when>
<when test="param.standardType == '2'">
laws_overseas_standard AS standard
</when>
<when test="param.standardType == '3'">
laws_enterprise_standard AS standard
</when>
</choose>
<where>
standard.del_flag = 0
<!--标准号或标准名称-->
<if test="param.standardName != null and param.standardName != ''">
AND standard.standard_number LIKE CONCAT('%',#{param.standardName},'%') OR
standard.standard_name LIKE CONCAT('%',#{param.standardName},'%')
</if>
<choose>
<when test="param.standardType == '1' or param.standardType == '' or param.standardType == null">
AND standard.standard_state <![CDATA[<>]]> '7'
</when>
<when test="param.standardType == '2'">
AND standard.standard_state <![CDATA[<>]]> '7'
</when>
<when test="param.standardType == '3'">
AND standard.standard_state <![CDATA[<>]]> '9'
</when>
</choose>
</where>
</select>
</mapper> </mapper>
@@ -1,6 +1,7 @@
package com.jero.modules.laws.bindPart.service; package com.jero.modules.laws.bindPart.service;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.jero.modules.laws.bindPart.entity.BindPartStandardVO;
import com.jero.modules.laws.bindPart.entity.LawsBindPart; import com.jero.modules.laws.bindPart.entity.LawsBindPart;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.jero.modules.laws.system.entity.LawsContactManage; import com.jero.modules.laws.system.entity.LawsContactManage;
@@ -26,15 +27,6 @@ public interface ILawsBindPartService extends IService<LawsBindPart> {
*/ */
IPage<LawsBindPart> queryPage(LawsBindPart lawsBindPart, Integer pageNo, Integer pageSize, HttpServletRequest req); IPage<LawsBindPart> queryPage(LawsBindPart lawsBindPart, Integer pageNo, Integer pageSize, HttpServletRequest req);
/**
* 列表查询
*
* @param lawsBindPart
* @param req
* @return
*/
List<LawsBindPart> queryList(LawsBindPart lawsBindPart, HttpServletRequest req);
/** /**
* 保存 * 保存
* *
@@ -75,4 +67,12 @@ public interface ILawsBindPartService extends IService<LawsBindPart> {
*/ */
LawsBindPart queryById(String id); LawsBindPart queryById(String id);
/**
* 选择标准
* @param bindPartStandardVO
* @param pageNo
* @param pageSize
* @return
*/
IPage<BindPartStandardVO> selectStandard(BindPartStandardVO bindPartStandardVO, Integer pageNo, Integer pageSize);
} }
@@ -1,19 +1,31 @@
package com.jero.modules.laws.bindPart.service.impl; package com.jero.modules.laws.bindPart.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jero.common.system.query.QueryGenerator; import com.jero.common.exception.JeroBootException;
import com.jero.modules.laws.bindPart.entity.BindPartStandardVO;
import com.jero.modules.laws.bindPart.entity.LawsBindPart; import com.jero.modules.laws.bindPart.entity.LawsBindPart;
import com.jero.modules.laws.bindPart.entity.LawsBindPartDoc;
import com.jero.modules.laws.bindPart.service.ILawsBindPartDocService;
import com.jero.modules.laws.bindPart.service.ILawsBindPartService; import com.jero.modules.laws.bindPart.service.ILawsBindPartService;
import com.jero.modules.laws.bindPart.mapper.LawsBindPartMapper; import com.jero.modules.laws.bindPart.mapper.LawsBindPartMapper;
import com.jero.modules.laws.enterprise.entity.vo.EnterpriseStandardPlanVo; import com.jero.modules.onlyoffice.entity.StandardFileType;
import com.jero.modules.split.entity.SarFileSplitInfoEO;
import com.jero.modules.split.service.ISarFileSplitInfoService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import static com.jero.common.constant.CommonConstant.HAS_SEND;
/** /**
* @author ThinkBook * @author ThinkBook
@@ -27,6 +39,12 @@ public class LawsBindPartServiceImpl extends ServiceImpl<LawsBindPartMapper, Law
@Resource @Resource
private LawsBindPartMapper lawsBindPartMapper; private LawsBindPartMapper lawsBindPartMapper;
@Resource
private ISarFileSplitInfoService fileSplitInfoService;
@Resource
private ILawsBindPartDocService lawsBindPartDocService;
@Override @Override
public IPage<LawsBindPart> queryPage(LawsBindPart lawsBindPart, Integer pageNo, Integer pageSize, HttpServletRequest req) { public IPage<LawsBindPart> queryPage(LawsBindPart lawsBindPart, Integer pageNo, Integer pageSize, HttpServletRequest req) {
IPage<LawsBindPart> page = new Page<>(pageNo, pageSize); IPage<LawsBindPart> page = new Page<>(pageNo, pageSize);
@@ -34,29 +52,61 @@ public class LawsBindPartServiceImpl extends ServiceImpl<LawsBindPartMapper, Law
return page; return page;
} }
@Override
public List<LawsBindPart> queryList(LawsBindPart lawsBindPart, HttpServletRequest req) {
return null;
}
@Override @Override
public void add(LawsBindPart lawsBindPart) { public void add(LawsBindPart lawsBindPart) {
save(lawsBindPart); save(lawsBindPart);
String clauseIds = lawsBindPart.getClauseIds();
this.saveBindPartDoc(clauseIds, lawsBindPart.getId());
}
private void saveBindPartDoc(String clauseIds, String bindId) {
if (StrUtil.isBlank(clauseIds)) {
return;
}
String[] clauseIdList = clauseIds.split(",");
List<LawsBindPartDoc> lawsBindPartDocList = new ArrayList<>();
for (String clause : clauseIdList) {
LawsBindPartDoc lawsBindPartDoc = new LawsBindPartDoc();
lawsBindPartDoc.setBindId(bindId);
lawsBindPartDoc.setClauseId(clause);
lawsBindPartDocList.add(lawsBindPartDoc);
}
lawsBindPartDocService.saveBatch(lawsBindPartDocList);
} }
@Override @Override
public void editById(LawsBindPart lawsBindPart) { public void editById(LawsBindPart lawsBindPart) {
if (StrUtil.isBlank(lawsBindPart.getId())) {
throw new JeroBootException("id不能为空");
}
updateById(lawsBindPart); updateById(lawsBindPart);
// 清空关联关系
removeBindPartDoc(lawsBindPart.getId());
// 保存新关系
String clauseIds = lawsBindPart.getClauseIds();
this.saveBindPartDoc(clauseIds, lawsBindPart.getId());
}
private void removeBindPartDoc(String bindIds) {
if (StrUtil.isBlank(bindIds)) {
return;
}
List<String> bindIdList = Arrays.asList(bindIds.split(","));
LambdaQueryWrapper<LawsBindPartDoc> lawsBindPartDocLambdaQueryWrapper = new LambdaQueryWrapper<>();
lawsBindPartDocLambdaQueryWrapper.in(LawsBindPartDoc::getBindId, bindIdList);
lawsBindPartDocService.remove(lawsBindPartDocLambdaQueryWrapper);
} }
@Override @Override
public void deleteById(String id) { public void deleteById(String id) {
removeById(id); removeById(id);
removeBindPartDoc(id);
} }
@Override @Override
public void deleteByIds(List<String> ids) { public void deleteByIds(List<String> ids) {
removeByIds(ids); removeByIds(ids);
removeBindPartDoc(ids.stream().map(String::valueOf).collect(Collectors.joining(",")));
} }
@Override @Override
@@ -64,6 +114,45 @@ public class LawsBindPartServiceImpl extends ServiceImpl<LawsBindPartMapper, Law
return getById(id); return getById(id);
} }
@Override
public IPage<BindPartStandardVO> selectStandard(BindPartStandardVO bindPartStandardVO, Integer pageNo, Integer pageSize) {
IPage<BindPartStandardVO> page = new Page<>(pageNo, pageSize);
lawsBindPartMapper.selectStandard(page, bindPartStandardVO);
List<BindPartStandardVO> records = page.getRecords();
// 获取所有标准Id
List<String> standardIdList = records.stream().map(BindPartStandardVO::getId).collect(Collectors.toList());
LambdaQueryWrapper<SarFileSplitInfoEO> sarFileSplitInfoEOLambdaQueryWrapper = new LambdaQueryWrapper<>();
sarFileSplitInfoEOLambdaQueryWrapper.isNotNull(SarFileSplitInfoEO::getStandardId);
sarFileSplitInfoEOLambdaQueryWrapper.in(!standardIdList.isEmpty(), SarFileSplitInfoEO::getStandardId, standardIdList);
sarFileSplitInfoEOLambdaQueryWrapper.eq(SarFileSplitInfoEO::getSplitStatus, HAS_SEND);
// 设置拆分信息id
List<SarFileSplitInfoEO> splitInfoEOList = fileSplitInfoService.list(sarFileSplitInfoEOLambdaQueryWrapper);
Map<String, List<SarFileSplitInfoEO>> map = splitInfoEOList.stream().collect(Collectors.groupingBy(SarFileSplitInfoEO::getStandardId));
// 创建映射:枚举的value到order的映射
Map<String, Integer> orderMap = java.util.Arrays.stream(StandardFileType.values())
.collect(Collectors.toMap(StandardFileType::getValue, StandardFileType::getOrder));
records.forEach(standard -> {
List<SarFileSplitInfoEO> sarFileSplitInfoEOS = map.get(standard.getId());
if (sarFileSplitInfoEOS == null || sarFileSplitInfoEOS.isEmpty()) {
return;
}
if (sarFileSplitInfoEOS.size() == 1) {
standard.setInfoId(sarFileSplitInfoEOS.get(0).getId());
}
// 需要对所有拆分信息按照文件类型排序
sarFileSplitInfoEOS.sort((file1, file2) -> {
Integer order1 = orderMap.get(file1.getFileType());
Integer order2 = orderMap.get(file2.getFileType());
return Integer.compare(order1, order2);
});
standard.setInfoId(sarFileSplitInfoEOS.get(0).getId());
});
// 设置编辑Id
return page;
}
} }