Browse Source

2024-10-11

数据采集功能优化
java8
fengyuan_yang 1 year ago
parent
commit
a614f154f3
  1. 85
      src/main/java/com/xujie/sys/modules/part/service/impl/BomManagementServiceImpl.java
  2. 34
      src/main/java/com/xujie/sys/modules/part/service/impl/RoutingManagementServiceImpl.java
  3. 2
      src/main/resources/mapper/part/BomManagementMapper.xml
  4. 10
      src/main/resources/mapper/pms/QcMapper.xml

85
src/main/java/com/xujie/sys/modules/part/service/impl/BomManagementServiceImpl.java

@ -599,6 +599,79 @@ public class BomManagementServiceImpl extends ServiceImpl<BomManagementMapper, B
@Override
@Transactional
public Map<String, Object> updateAlternativeStatus (BomDetailEntity data) {
BomHeaderEntity bomHeader = bomManagementMapper.selectOne(new QueryWrapper<BomHeaderEntity>().eq("site", data.getSite()).eq("bu_no", data.getBuNo()).eq("part_no", data.getPartNo()).eq("eng_chg_level", data.getEngChgLevel()).eq("bom_type", data.getBomType()));
// 如果是Build,则校验日期是否重叠
if ("Tentative".equals(data.getStatus())) {
// // 校验日期
// List<BomHeaderEntity> headerEntities = bomManagementMapper.queryHeaderPhaseDate(bomHeader);
// if (!headerEntities.isEmpty() && headerEntities.size() > 1) {
// throw new RuntimeException("日期冲突,不允许Build!");
// }
List<BomHeaderEntity> historyBom = bomManagementMapper.selectList(new QueryWrapper<BomHeaderEntity>().eq("site", data.getSite()).eq("bu_no", data.getBuNo()).eq("part_no", data.getPartNo()).eq("bom_type", data.getBomType()));
Date newEffPhaseInDate = bomHeader.getEffPhaseInDate();
Date newEffPhaseOutDate = bomHeader.getEffPhaseOutDate();
// 过滤掉自己
List<BomHeaderEntity> filteredList = historyBom.stream()
.filter(a -> a.getEngChgLevel() != data.getEngChgLevel())
.collect(Collectors.toList());
boolean b = false;
for (BomHeaderEntity existingBomHeader : filteredList) {
Date existingEffPhaseInDate = existingBomHeader.getEffPhaseInDate();
Date existingEffPhaseOutDate = existingBomHeader.getEffPhaseOutDate();
// 如果新对象的开始时间在现有对象的时间范围内则重叠
if (newEffPhaseInDate != null && newEffPhaseInDate.after(existingEffPhaseInDate) && newEffPhaseInDate.before(existingEffPhaseOutDate)) {
b = true;
break;
}
// 如果新对象的结束时间在现有对象的时间范围内则重叠
else if (newEffPhaseOutDate != null && newEffPhaseOutDate.after(existingEffPhaseInDate) && newEffPhaseOutDate.before(existingEffPhaseOutDate)) {
b = true;
break;
}
// 如果现有对象的开始时间在新对象的时间范围内则重叠
else if (existingEffPhaseInDate != null && existingEffPhaseInDate.after(newEffPhaseInDate) && existingEffPhaseInDate.before(newEffPhaseOutDate)) {
b = true;
break;
}
// 如果现有对象的结束时间在新对象的时间范围内则重叠
else if (existingEffPhaseOutDate != null && existingEffPhaseOutDate.after(newEffPhaseInDate) && existingEffPhaseOutDate.before(newEffPhaseOutDate)) {
b = true;
break;
}
// 如果两个时间段完全相同则重叠
else if (newEffPhaseInDate != null && newEffPhaseInDate.equals(existingEffPhaseInDate) && newEffPhaseOutDate.equals(existingEffPhaseOutDate)) {
b = true;
break;
}
}
if (b) {
throw new RuntimeException("日期冲突,不允许Build!");
}
}
// 如果是Retire,则校验失效日期
if ("Buildable".equals(data.getStatus())) {
if (bomHeader.getEffPhaseOutDate() == null) {
throw new RuntimeException("失效日期不能为空!");
}
// 获取当前日期
Date currentDate = new Date();
// 设置当前日期的时间部分为午夜
Calendar calendar = Calendar.getInstance();
calendar.setTime(currentDate);
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
Date startOfDay = calendar.getTime();
// 比较日期
if (!bomHeader.getEffPhaseOutDate().before(startOfDay)) {
throw new RuntimeException("失效日期要小于今天!");
}
}
// 判断该物料的该替代下有无子料
List<BomComponentVo> componentPartList = bomManagementMapper.queryComponentPart2(data);
if (componentPartList.isEmpty()) {
@ -611,12 +684,6 @@ public class BomManagementServiceImpl extends ServiceImpl<BomManagementMapper, B
if (StringUtils.isNotBlank(data.getStatus()) && StringUtils.isNotBlank(checkList.get(0).getStatus())) { // 判断状态是否为null
if (data.getStatus().equals(checkList.get(0).getStatus())) { // 判断状态是否已改变
if ("Tentative".equals(checkList.get(0).getStatus()) || "Obsolete".equals(checkList.get(0).getStatus())) {
// 校验日期
BomHeaderEntity bomHeaderEntity = bomManagementMapper.selectOne(new QueryWrapper<BomHeaderEntity>().eq("site", data.getSite()).eq("bu_no", data.getBuNo()).eq("part_no", data.getPartNo()).eq("eng_chg_level", data.getEngChgLevel()).eq("bom_type", data.getBomType()));
List<BomHeaderEntity> headerEntities = bomManagementMapper.queryHeaderPhaseDate(bomHeaderEntity);
if (!headerEntities.isEmpty() && headerEntities.size() > 1) {
throw new RuntimeException("日期冲突!");
}
data.setStatus("Buildable");
} else if ("Buildable".equals(checkList.get(0).getStatus())) {
data.setStatus("Obsolete");
@ -624,9 +691,9 @@ public class BomManagementServiceImpl extends ServiceImpl<BomManagementMapper, B
// 修改替代状态
bomManagementMapper.updateAlternativeStatus(data);
// 查询替代列表
BomHeaderEntity bomHeader = new BomHeaderEntity();
BeanUtils.copyProperties(data,bomHeader);
List<BomDetailEntity> detailDataList = bomManagementMapper.queryBomDetail(bomHeader);
BomHeaderEntity bomHeader2 = new BomHeaderEntity();
BeanUtils.copyProperties(data, bomHeader2);
List<BomDetailEntity> detailDataList = bomManagementMapper.queryBomDetail(bomHeader2);
// 被修改的替代
BomDetailEntity detailData = bomManagementMapper.checkBomDetailOnlyOne(data).get(0);
// 该替代的子明细列表

34
src/main/java/com/xujie/sys/modules/part/service/impl/RoutingManagementServiceImpl.java

@ -607,6 +607,28 @@ public class RoutingManagementServiceImpl extends ServiceImpl<RoutingManagementM
@Override
@Transactional
public Map<String, Object> updateAlternativeStatus(RoutingDetailEntity data) {
// 如果是Retire,则校验失效日期
if ("Buildable".equals(data.getStatus())) {
RoutingHeaderEntity routingHeader = routingManagementMapper.selectOne(new QueryWrapper<RoutingHeaderEntity>().eq("site", data.getSite()).eq("bu_no", data.getBuNo()).eq("part_no", data.getPartNo()).eq("routing_revision", data.getRoutingRevision()).eq("routing_type", data.getRoutingType()));
if (routingHeader.getPhaseOutDate() == null) {
throw new RuntimeException("失效日期不能为空!");
}
// 获取当前日期
Date currentDate = new Date();
// 设置当前日期的时间部分为午夜
Calendar calendar = Calendar.getInstance();
calendar.setTime(currentDate);
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
Date startOfDay = calendar.getTime();
// 比较日期
if (!routingHeader.getPhaseOutDate().before(startOfDay)) {
System.out.println("失效日期要小于今天!");
}
}
// 判断该物料的该替代下有无工序
List<RoutingComponentEntity> componentOperationList = routingManagementMapper.queryComponent(data);
if (componentOperationList.isEmpty()) {
@ -619,12 +641,12 @@ public class RoutingManagementServiceImpl extends ServiceImpl<RoutingManagementM
if (StringUtils.isNotBlank(data.getStatus()) && StringUtils.isNotBlank(checkList.get(0).getStatus())) { // 判断状态是否为null
if (data.getStatus().equals(checkList.get(0).getStatus())) { // 判断状态是否已改变
if ("Tentative".equals(checkList.get(0).getStatus()) || "Obsolete".equals(checkList.get(0).getStatus())) {
// 校验日期
RoutingHeaderEntity routingHeaderEntity = routingManagementMapper.selectOne(new QueryWrapper<RoutingHeaderEntity>().eq("site", data.getSite()).eq("bu_no", data.getBuNo()).eq("part_no", data.getPartNo()).eq("routing_revision", data.getRoutingRevision()).eq("routing_type", data.getRoutingType()));
List<RoutingHeaderEntity> headerEntities = routingManagementMapper.queryHeaderPhaseDate(routingHeaderEntity);
if (!headerEntities.isEmpty() && headerEntities.size() > 1) {
throw new RuntimeException("日期冲突!");
}
// // 校验日期
// RoutingHeaderEntity routingHeaderEntity = routingManagementMapper.selectOne(new QueryWrapper<RoutingHeaderEntity>().eq("site", data.getSite()).eq("bu_no", data.getBuNo()).eq("part_no", data.getPartNo()).eq("routing_revision", data.getRoutingRevision()).eq("routing_type", data.getRoutingType()));
// List<RoutingHeaderEntity> headerEntities = routingManagementMapper.queryHeaderPhaseDate(routingHeaderEntity);
// if (!headerEntities.isEmpty() && headerEntities.size() > 1) {
// throw new RuntimeException("日期冲突!");
// }
data.setStatus("Buildable");
} else if ("Buildable".equals(checkList.get(0).getStatus())) {
data.setStatus("Obsolete");

2
src/main/resources/mapper/part/BomManagementMapper.xml

@ -262,7 +262,7 @@
note_text = #{noteText},
update_date = getDate(),
update_by = #{updateBy}
where site = #{site} and part_no = #{partNo} and eng_chg_level = #{engChgLevel} and bom_type = #{bomType}
where site = #{site} and bu_no = #{buNo} and part_no = #{partNo} and eng_chg_level = #{engChgLevel} and bom_type = #{bomType}
</update>
<!-- bom明细表编辑 -->

10
src/main/resources/mapper/pms/QcMapper.xml

@ -2371,6 +2371,9 @@
<if test = "query.submissionType != null and query.submissionType != ''">
AND submission_type = #{query.submissionType}
</if>
<if test = "query.invdefinetype != null and query.invdefinetype != ''">
AND dbo.qc_get_invdefinetype(site, part_no) LIKE '%' + #{query.invdefinetype} + '%'
</if>
</where>
ORDER BY
CASE WHEN state = '待检验' THEN 1
@ -3418,17 +3421,14 @@
</delete>
<select id="getInspectionNo" parameterType="QcFAIRecordData" resultType="EquipmentDataAcquisitionData">
select
select distinct
site,
bu_no,
equipment_no,
inspection_no,
create_date,
create_by,
item_no,
collection_source,
collection_method,
inspection_no
collection_method
from Equipment_data_acquisition
where site = #{site} and bu_no = #{buNo} and inspection_no = #{inspectionNo}
</select>

Loading…
Cancel
Save