Merge branch 'refs/heads/feature/excel-132' into dev
This commit is contained in:
commit
77b7b523eb
|
|
@ -72,7 +72,7 @@ public class EbomApi extends BaseApi {
|
|||
@PostMapping("workDetailsListByPage")
|
||||
@ApiOperation("Ebom-工作明细列表")
|
||||
public ResultVO<Page<BomNewEbomParentVO>> workDetailsListByPage(@RequestBody BomNewEbomParentQuery query) {
|
||||
return ResultVO.success(bomNewEbomParentService.workDetailsListByPage(query));
|
||||
return ResultVO.success(bomNewEbomParentService.workDetailsListByPageNew(query));
|
||||
}
|
||||
|
||||
@PostMapping("formalWorksheet")
|
||||
|
|
|
|||
|
|
@ -81,4 +81,12 @@ public interface BomNewEbomParentMapper extends BaseMapper<BomNewEbomParentEntit
|
|||
|
||||
|
||||
List<BomNewEbomParentEntity> getEBomParentByMaterialNos(@Param("job") Integer job, @Param("createdBy")String createdBy, @Param("materialNos") List<String> materialNos);
|
||||
|
||||
Page<BomNewEbomParentVO> workDetailsListByPageNew(Page<Object> objectPage, BomNewEbomParentQuery query, Integer userJob, String userCode);
|
||||
|
||||
List<BomNewEbomParentVO> getChildren(Long bomRowId, int type);
|
||||
|
||||
List<BomNewEbomParentVO> getBom(String materialNo, String drawingNo);
|
||||
|
||||
List<BomNewEbomParentVO> getVOById(Long parentRowId);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2080,4 +2080,106 @@ public class BomNewEbomParentService extends ServiceImpl<BomNewEbomParentMapper,
|
|||
log.debug("resetAllBomExist");
|
||||
this.getBaseMapper().resetAllBomExist();
|
||||
}
|
||||
|
||||
public Page<BomNewEbomParentVO> workDetailsListByPageNew(BomNewEbomParentQuery query) {
|
||||
if (StrUtil.isNotBlank(query.getMaterialNo()) || StrUtil.isNotBlank(query.getDrawingNo())) {
|
||||
query.setPage(1L);
|
||||
query.setPageSize(20L);
|
||||
}
|
||||
Page<BomNewEbomParentVO> result = this.getBaseMapper().workDetailsListByPageNew(new Page<>(query.getPage(), query.getPageSize()), query, userRoleService.getUserJob(), SessionUtil.getUserCode());
|
||||
if (StrUtil.isBlank(query.getMaterialNo()) && StrUtil.isBlank(query.getDrawingNo())) {
|
||||
//列表搜索
|
||||
return result;
|
||||
}
|
||||
//根据编号或图号搜索
|
||||
//从顶级开始查找
|
||||
List<BomNewEbomParentVO> roots = result.getRecords().stream()
|
||||
.filter(r -> StrUtil.equals(r.getMaterialNo(), query.getMaterialNo()) || StrUtil.equals(r.getDrawingNo(), query.getDrawingNo()))
|
||||
.collect(Collectors.toList());
|
||||
roots.forEach(this::buildChildren);
|
||||
//从子级开始查找
|
||||
List<BomNewEbomParentVO> boms = this.getBaseMapper().getBom(query.getMaterialNo(), query.getDrawingNo());
|
||||
boms.removeIf(c -> Objects.equals(c.getLastVersionIs(), 0));
|
||||
boms.forEach(this::buildChildren);
|
||||
roots.addAll(boms.stream().filter(b -> b.getRootIs() == 0 && b.getUserRootIs() == 0 && b.getRootIsForWaitReview() == 0).map(this::buildParent).flatMap(List::stream).collect(Collectors.toList()));
|
||||
|
||||
Map<String, List<BomNewEbomParentVO>> map = roots.stream().collect(Collectors.groupingBy(BaseMaterialVO::getMaterialNo));
|
||||
List<BomNewEbomParentVO> results = new ArrayList<>();
|
||||
map.forEach((k, v) -> {
|
||||
if (v.size() == 1) {
|
||||
results.add(v.get(0));
|
||||
} else {
|
||||
BomNewEbomParentVO f1 = v.get(0);
|
||||
for (int i = 1; i < v.size(); i++) {
|
||||
merge(f1, v.get(i));
|
||||
}
|
||||
results.add(f1);
|
||||
}
|
||||
});
|
||||
|
||||
results.sort((r1, r2) -> r1.getBomRowId() >= r2.getBomRowId() ? r1.getBomRowId() > r2.getBomRowId() ? 1 : 0 : -1);
|
||||
|
||||
Page<BomNewEbomParentVO> pageResult = new Page<>();
|
||||
pageResult.setPages(1);
|
||||
pageResult.setCurrent(1);
|
||||
pageResult.setTotal(results.size());
|
||||
pageResult.setRecords(results);
|
||||
return pageResult;
|
||||
}
|
||||
|
||||
private void merge(BomNewEbomParentVO v1, BomNewEbomParentVO v2) {
|
||||
v1.getChildNodes().addAll(v2.getChildNodes());
|
||||
}
|
||||
|
||||
private List<BomNewEbomParentVO> buildParent(BomNewEbomParentVO vo) {
|
||||
List<BomNewEbomParentVO> parents = this.getBaseMapper().getVOById(vo.getParentRowId());
|
||||
parents.removeIf(c -> 0 == c.getLastVersionIs());
|
||||
if (parents.isEmpty()) {
|
||||
return CollUtil.toList(vo);
|
||||
} else {
|
||||
List<BomNewEbomParentVO> datas = new ArrayList<>();
|
||||
parents.forEach(p -> {
|
||||
if (Objects.isNull(vo.getStatus())) {
|
||||
vo.setStatus(p.getStatus());
|
||||
vo.setCurrentVersion("A00");
|
||||
vo.setDeptName(p.getDeptName());
|
||||
vo.setDeviseName(p.getDeviseName());
|
||||
}
|
||||
if (Objects.equals(vo.getBomExist(), 0) && Objects.equals(vo.getShouldBomExist(), 1)) {
|
||||
vo.setCurrentVersion("A-1");
|
||||
}
|
||||
p.setChildNodes(CollUtil.toList(vo));
|
||||
datas.addAll(buildParent(p));
|
||||
});
|
||||
return datas;
|
||||
}
|
||||
}
|
||||
|
||||
private void buildChildren(BomNewEbomParentVO vo) {
|
||||
if (Objects.isNull(vo.getLastVersionIs())) return;
|
||||
List<BomNewEbomParentVO> children = this.getBaseMapper().getChildren(vo.getBomRowId(), 0);
|
||||
//children.removeIf(c -> c.getLastVersionIs() != 1);
|
||||
vo.setChildNodes(children);
|
||||
children.forEach(c -> {
|
||||
if (!Objects.equals(vo.getStatus(), EBomStatusEnum.PUBLISHED.getValue())
|
||||
&& Objects.equals(c.getStatus(), EBomStatusEnum.PUBLISHED.getValue())) {
|
||||
c.setStatus(EBomStatusEnum.BORROWED_PARTS.getValue());
|
||||
}
|
||||
if (Objects.isNull(c.getStatus())) {
|
||||
c.setStatus(vo.getStatus());
|
||||
c.setCurrentVersion("A00");
|
||||
c.setDeptName(vo.getDeptName());
|
||||
c.setDeviseName(vo.getDeviseName());
|
||||
}
|
||||
if (Objects.equals(c.getBomExist(), 0) && Objects.equals(c.getShouldBomExist(), 1)) {
|
||||
c.setCurrentVersion("A-1");
|
||||
}
|
||||
if (c.getBomRowId() != 0 && c.getUserRootIs() == 0 && !Objects.equals(c.getStatus(), EBomStatusEnum.BORROWED_PARTS.getValue())) {
|
||||
List<BomNewEbomParentVO> cc = this.getBaseMapper().getChildren(c.getBomRowId(), 0);
|
||||
//cc.removeIf(ci -> ci.getLastVersionIs() != 1);
|
||||
c.setChildNodes(cc);
|
||||
cc.forEach(this::buildChildren);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -380,4 +380,91 @@
|
|||
</foreach>
|
||||
</if>
|
||||
</select>
|
||||
|
||||
<select id="workDetailsListByPageNew" resultType="com.nflg.product.bomnew.pojo.vo.BomNewEbomParentVO">
|
||||
SELECT *,row_id as bomRowId
|
||||
FROM t_bom_new_ebom_parent
|
||||
WHERE (root_is=1 OR ((user_root_is=1 OR root_is_for_wait_review=1) AND created_by=#{userCode}))
|
||||
<if test="userJob==0">
|
||||
AND status IN (1,3)
|
||||
</if>
|
||||
<if test="userJob==1 and query.dataType==0">
|
||||
AND status=2
|
||||
</if>
|
||||
<if test="userJob==1 and query.dataType==1">
|
||||
AND status=4
|
||||
</if>
|
||||
<if test="query.deviseName!=null and query.deviseName!=''">
|
||||
AND devise_name=#{query.deviseName}
|
||||
</if>
|
||||
<if test="query.startDate!=null and query.startDate!=''">
|
||||
AND created_time BETWEEN #{query.startDate} AND DATE_ADD(#{query.endDate}, INTERVAL 1 DAY)
|
||||
</if>
|
||||
order by row_id desc
|
||||
</select>
|
||||
|
||||
<select id="getChildren" resultType="com.nflg.product.bomnew.pojo.vo.BomNewEbomParentVO">
|
||||
SELECT a.current_version
|
||||
, a.devise_name
|
||||
, a.devise_user_code
|
||||
, a.dept_name
|
||||
, a.source
|
||||
, a.created_by
|
||||
, IFNULL(a.last_version_is, 1) last_version_is
|
||||
, IFNULL(a.user_root_is, 0) user_root_is
|
||||
, IFNULL(a.row_id, 0) AS bomRowId
|
||||
, b.*
|
||||
FROM t_bom_new_ebom_child b
|
||||
LEFT JOIN t_bom_new_ebom_parent a ON a.material_no = b.material_no
|
||||
WHERE b.parent_row_id = #{bomRowId}
|
||||
<if test="type==0">
|
||||
and IFNULL(a.last_version_is, 1)!=0
|
||||
</if>
|
||||
<if test="type==1">
|
||||
and a.status=4
|
||||
</if>
|
||||
ORDER BY b.order_number
|
||||
</select>
|
||||
|
||||
<select id="getBom" resultType="com.nflg.product.bomnew.pojo.vo.BomNewEbomParentVO">
|
||||
SELECT a.current_version
|
||||
, a.devise_name
|
||||
, a.devise_user_code
|
||||
, a.dept_name
|
||||
, a.source
|
||||
, a.created_by
|
||||
, a.last_version_is
|
||||
, IFNULL(a.user_root_is, 0) user_root_is
|
||||
,ifnull(a.root_is,0) root_is
|
||||
,ifnull(a.root_is_for_wait_review,0) root_is_for_wait_review
|
||||
, IFNULL(a.row_id, 0) AS bomRowId
|
||||
,a.`status`
|
||||
, b.*
|
||||
FROM t_bom_new_ebom_child b
|
||||
LEFT JOIN t_bom_new_ebom_parent a ON a.material_no = b.material_no
|
||||
<if test="materialNo!=null and materialNo!=''">
|
||||
WHERE b.material_no = #{materialNo}
|
||||
</if>
|
||||
<if test="drawingNo!=null and drawingNo!=''">
|
||||
WHERE b.drawingNo = #{drawingNo}
|
||||
</if>
|
||||
ORDER BY b.order_number
|
||||
</select>
|
||||
|
||||
<select id="getVOById" resultType="com.nflg.product.bomnew.pojo.vo.BomNewEbomParentVO">
|
||||
SELECT IFNULL(b.exception_status, a.exception_status) exception_status
|
||||
, IFNULL(b.created_by, a.created_by) created_by
|
||||
, IFNULL(b.edit_status, a.edit_status) edit_status
|
||||
, IFNULL(b.created_time, a.created_time) created_time
|
||||
, b.exception_tag
|
||||
, b.project_type
|
||||
, IFNULL(b.num, a.num) num
|
||||
, IFNULL(b.modify_time, a.modify_time) modify_time
|
||||
, IFNULL(b.parent_row_id, 0) parent_row_id
|
||||
, a.row_id bomRowId
|
||||
, a.*
|
||||
FROM t_bom_new_ebom_parent a
|
||||
LEFT JOIN t_bom_new_ebom_child b ON a.material_no = b.material_no
|
||||
WHERE a.row_id = #{parentRowId}
|
||||
</select>
|
||||
</mapper>
|
||||
|
|
|
|||
Loading…
Reference in New Issue