| | |
| | | * @return 原始统计数据列表 |
| | | */ |
| | | public List<Map<String, Object>> selectRawStatData(Map<String, Object> params); |
| | | |
| | | /** |
| | | * 查询所有手工气体工单数据 |
| | | * |
| | | * @return 所有手工气体工单数据 |
| | | */ |
| | | public List<Map<String, Object>> selectAllMoData(); |
| | | } |
| | |
| | | */ |
| | | public int deleteApsPlateStandardRequireErrorByIds(Long[] ids); |
| | | |
| | | /** |
| | | * 批量插入钣金标准需求异常信息 |
| | | * |
| | | * @param errorList 需要插入的异常数据集合 |
| | | * @return 结果 |
| | | */ |
| | | public int batchInsert(List<ApsPlateStandardRequireError> errorList); |
| | | |
| | | int deleteLastPatch(String batchNumber); |
| | | } |
| | |
| | | import com.aps.common.core.utils.uuid.IdUtils; |
| | | import com.aps.common.security.utils.SecurityUtils; |
| | | import com.aps.core.domain.*; |
| | | import com.aps.core.domain.ApsPlate.ApsPlateStandardRequireError; |
| | | import com.aps.core.mapper.*; |
| | | import com.aps.core.service.IApsGasMaterialUsageService; |
| | | import com.aps.core.service.IApsGasPipingRouteStatService; |
| | | import com.aps.core.service.IApsStandardProcessService; |
| | | import com.aps.core.mapper.ApsPlateStandardRequireErrorMapper; |
| | | import jakarta.servlet.http.HttpServletResponse; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.poi.ss.usermodel.*; |
| | |
| | | |
| | | @Autowired |
| | | private IApsStandardProcessService apsStandardProcessService; |
| | | |
| | | @Autowired |
| | | private ApsPlateStandardRequireErrorMapper apsPlateStandardRequireErrorMapper; |
| | | |
| | | /** |
| | | * 查询气体管路产能负载统计 |
| | |
| | | // 处理手工气体工单数据 - 使用联合查询获取所有相关数据 |
| | | List<Map<String, Object>> moDataList = apsGasPipingRouteStatMapper.selectMoRouteData(); |
| | | |
| | | // 获取所有的MO数据,用于检查哪些MO没有关联到工艺路线 |
| | | List<Map<String, Object>> allMoData = apsGasPipingRouteStatMapper.selectAllMoData(); |
| | | |
| | | // 记录已关联工艺路线的MO编号 |
| | | Set<String> processedMoSet = new HashSet<>(); |
| | | |
| | | // 按工单号分组,便于处理同一工单的不同工序 |
| | | Map<String, List<Map<String, Object>>> moGroups = moDataList.stream() |
| | | .collect(Collectors.groupingBy(data -> data.get("work_order_no").toString())); |
| | |
| | | // 处理每个工单的工艺路线 |
| | | for (String workOrderNo : moGroups.keySet()) { |
| | | List<Map<String, Object>> workOrderData = moGroups.get(workOrderNo); |
| | | |
| | | // 标记该工单已处理 |
| | | processedMoSet.add(workOrderNo); |
| | | |
| | | // 按工序号排序 |
| | | workOrderData.sort((a, b) -> { |
| | |
| | | } |
| | | } |
| | | |
| | | // 处理没有关联到工艺路线的MO数据 |
| | | List<ApsPlateStandardRequireError> errorList = new ArrayList<>(); |
| | | for (Map<String, Object> moData : allMoData) { |
| | | String workOrderNo = moData.get("mo").toString(); |
| | | // 如果该工单没有被处理过,说明没有关联到工艺路线 |
| | | if (!processedMoSet.contains(workOrderNo)) { |
| | | ApsPlateStandardRequireError error = ApsPlateStandardRequireError.builder() |
| | | .id(Long.valueOf(IdUtils.fastSimpleUUID().hashCode())) |
| | | .batchNumber(batchNumber) |
| | | .requireId(IdUtil.getSnowflakeNextId()) |
| | | .docNum(workOrderNo) |
| | | .itemNum(moData.get("material_code").toString()) |
| | | .orgCode(moData.get("factory").toString()) |
| | | .message("标准工艺路线不存在") |
| | | .delFlag("0") |
| | | .build(); |
| | | |
| | | // 设置基类属性 |
| | | error.setCreateBy(SecurityUtils.getUsername()); |
| | | error.setCreateTime(truncateToSeconds(DateUtils.getNowDate())); |
| | | |
| | | errorList.add(error); |
| | | } |
| | | } |
| | | |
| | | // 批量插入异常数据 |
| | | if (!errorList.isEmpty()) { |
| | | apsPlateStandardRequireErrorMapper.batchInsert(errorList); |
| | | } |
| | | |
| | | // 批量插入数据 |
| | | if (!statList.isEmpty()) { |
| | | for (int i = 0; i < statList.size(); i += 500) { |
| | |
| | | l.route_name as process_name, |
| | | l.route_num as process_number, |
| | | l.standard_time, |
| | | m.domain, |
| | | s.work_shop as workshop |
| | | string_agg(DISTINCT m.domain, ';') as domain, |
| | | string_agg(DISTINCT s.work_shop, ';') as workshop |
| | | FROM aps_gas_pipeline_prediction p |
| | | JOIN aps_standard_process_route_header h ON p.material_code = h.item_code AND p.factory = h.org_code |
| | | JOIN aps_standard_process_route_line l ON h.route_id = l.route_id |
| | | LEFT JOIN aps_material_product_group_management m ON p.material_code = m.material_code AND p.factory = m.factory |
| | | LEFT JOIN aps_standard_process s ON l.route_name = s.process_name |
| | | GROUP BY p.id, p.material_code, p.factory, p.predict_quantity, p.predict_date, h.route_id, l.route_name, l.route_num, l.standard_time |
| | | ORDER BY p.material_code, l.route_num |
| | | </select> |
| | | |
| | |
| | | r.process_name, |
| | | r.process_number, |
| | | r.standard_time, |
| | | m.domain, |
| | | s.work_shop as workshop |
| | | string_agg(DISTINCT m.domain, ';') as domain, |
| | | string_agg(DISTINCT s.work_shop, ';') as workshop |
| | | FROM aps_gas_pipeline_mo mo |
| | | JOIN aps_process_route r ON mo.mo = r.work_order_no |
| | | LEFT JOIN aps_material_product_group_management m ON mo.material_code = m.material_code AND mo.factory = m.factory |
| | | LEFT JOIN aps_standard_process s ON r.process_name = s.process_name |
| | | GROUP BY mo.id, mo.mo, mo.material_code, mo.factory, mo.quantity, mo.plan_end, r.process_name, r.process_number, r.standard_time |
| | | ORDER BY mo.mo, r.process_number |
| | | </select> |
| | | |
| | |
| | | process_plan_start_day |
| | | </select> |
| | | |
| | | <!-- 查询所有手工气体工单数据 --> |
| | | <select id="selectAllMoData" resultType="java.util.Map"> |
| | | SELECT |
| | | id, |
| | | mo, |
| | | factory, |
| | | material_code, |
| | | plan_end, |
| | | quantity |
| | | FROM aps_gas_pipeline_mo |
| | | </select> |
| | | |
| | | </mapper> |
| | |
| | | set del_flag = '1' |
| | | where del_flag = '0' and batch_number != #{batchNumber} |
| | | </update> |
| | | |
| | | <insert id="batchInsert" parameterType="java.util.List"> |
| | | insert into aps_plate_standard_require_error( |
| | | id, batch_number, require_id, doc_num, item_num, org_code, |
| | | message, del_flag, create_by, create_time |
| | | ) values |
| | | <foreach collection="list" item="item" separator=","> |
| | | ( |
| | | #{item.id}, #{item.batchNumber}, #{item.requireId}, #{item.docNum}, |
| | | #{item.itemNum}, #{item.orgCode}, #{item.message}, #{item.delFlag}, |
| | | #{item.createBy}, #{item.createTime} |
| | | ) |
| | | </foreach> |
| | | </insert> |
| | | </mapper> |