廖井涛
2025-02-13 a6db13c4867c99dabf20aed8a91e5ccd9ffa0b90
修改mes切割报工
4个文件已修改
108 ■■■■■ 已修改文件
north-glass-erp/src/main/java/com/example/erp/entity/pp/OptimizeUse.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/mapper/mm/MaterialInventoryMapper.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/service/mm/MaterialInventoryService.java 85 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/mapper/mm/MaterialInventory.xml 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/entity/pp/OptimizeUse.java
@@ -12,7 +12,7 @@
public class OptimizeUse {
    @TableId(type = IdType.AUTO)
    private Integer id;
    private Integer projectNo;
    private String projectNo;
    private String rawStockCode;
    private String stockCode;
    private Integer type;
north-glass-erp/src/main/java/com/example/erp/mapper/mm/MaterialInventoryMapper.java
@@ -238,9 +238,9 @@
    OptimizeUse getSelectOptimizeUses(@Param("projectNo") String projectNo,@Param("width") Double width,@Param("height") Double height);
    List<MaterialOutboundDetail> getSelectMaterialOutboundOptimizeUses(@Param("useId") Integer useId);
    List<MaterialOutboundDetail> getSelectMaterialOutboundOptimizeUses(@Param("materialOutboundId") String materialOutboundId,@Param("useId") Integer useId);
    Boolean updateMaterialOutboundOptimizeUses(@Param("useId") Integer useId);
    Boolean updateMaterialOutboundOptimizeUses(@Param("useId") Integer useId,@Param("quantity") Integer quantity);
    Boolean insertMaterialOutboundDetailOptimizeUses(@Param("materialOutboundId") String materialOutboundId,@Param("number") Integer number,
                                               @Param("inventoryId") Long inventoryId,@Param("materialCode") Long materialCode,@Param("inventoryArea") String inventory_area,
@@ -250,4 +250,6 @@
    Boolean insertMaterialOutboundOptimizeUses(@Param("materialOutboundId") String materialOutboundId,@Param("projectNo") String projectNo,
                                                     @Param("name") String name);
    Boolean updateOptimizeUsesMes(@Param("useId") Integer useId,@Param("quantity") Integer quantity);
}
north-glass-erp/src/main/java/com/example/erp/service/mm/MaterialInventoryService.java
@@ -947,49 +947,64 @@
    @Transactional(rollbackFor = Exception.class)
    public boolean mesMaterialOutbound(Map<String, Object> reportingWorkMap) {
        //接收解析主附表信息
        JSONObject reportingWorkJson = new JSONObject(reportingWorkMap);
        String projectNo=reportingWorkJson.get("projectNo").toString();
        Double width= Double.valueOf(reportingWorkJson.get("width").toString());
        Double height= Double.valueOf(reportingWorkJson.get("height").toString());
        Integer quantity= Integer.valueOf(reportingWorkJson.get("quantity").toString());
        boolean saveState=true;
        Object savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint();
        try {
            //接收解析主附表信息
            JSONObject reportingWorkJson = new JSONObject(reportingWorkMap);
            String projectNo=reportingWorkJson.get("projectNo").toString();
            Double width= Double.valueOf(reportingWorkJson.get("width").toString());
            Double height= Double.valueOf(reportingWorkJson.get("height").toString());
            Integer quantity= Integer.valueOf(reportingWorkJson.get("quantity").toString());
        List<MaterialOutbound> materialOutboundList=materialInventoryMapper.getSelectMaterialOutboundProjectNo(projectNo);
        OptimizeUse optimizeUses=materialInventoryMapper.getSelectOptimizeUses(projectNo,width,height);
        List<MaterialOutboundDetail> materialOutboundDetailList=materialInventoryMapper.getSelectMaterialOutboundOptimizeUses(optimizeUses.getId());
        List<MaterialOutboundDetail> materialOutboundDetailList1=materialInventoryMapper.getSelectMaterialOutboundOptimizeUses(null);
        MaterialInventory materialInventory=materialInventoryMapper.getMaterialInventoryById(Long.valueOf(optimizeUses.getRawStockCode()));
        if(materialOutboundList.size()==1){
            if(materialOutboundDetailList.size()==1){
                materialInventoryMapper.updateMaterialOutboundOptimizeUses(optimizeUses.getId());
                materialInventoryMapper.updateMaterialInventoryAvailableInventoryOutMes(Long.valueOf(optimizeUses.getRawStockCode()),quantity);
            }else{
                materialInventoryMapper.insertMaterialOutboundDetailOptimizeUses(materialOutboundList.get(0).getMaterialOutboundId(),
                        materialOutboundDetailList1.size()+1,Long.valueOf(optimizeUses.getRawStockCode()),materialInventory.getMaterialCode(),materialInventory.getInventoryArea(),
            List<MaterialOutbound> materialOutboundList=materialInventoryMapper.getSelectMaterialOutboundProjectNo(projectNo);
            OptimizeUse optimizeUses=materialInventoryMapper.getSelectOptimizeUses(projectNo,width,height);
            MaterialInventory materialInventory=materialInventoryMapper.getMaterialInventoryById(Long.valueOf(optimizeUses.getRawStockCode()));
            if(materialOutboundList.size()==1){
                List<MaterialOutboundDetail> materialOutboundDetailList=materialInventoryMapper.getSelectMaterialOutboundOptimizeUses(materialOutboundList.get(0).getMaterialOutboundId(),optimizeUses.getId());
                List<MaterialOutboundDetail> materialOutboundDetailList1=materialInventoryMapper.getSelectMaterialOutboundOptimizeUses(materialOutboundList.get(0).getMaterialOutboundId(),null);
                if(materialOutboundDetailList.size()==1){
                    materialInventoryMapper.updateMaterialOutboundOptimizeUses(optimizeUses.getId(),quantity);
                }else{
                    materialInventoryMapper.insertMaterialOutboundDetailOptimizeUses(materialOutboundList.get(0).getMaterialOutboundId(),
                            materialOutboundDetailList1.size()+1,Long.valueOf(optimizeUses.getRawStockCode()),materialInventory.getMaterialCode(),materialInventory.getInventoryArea(),
                            optimizeUses.getId(),quantity,materialInventory.getSinglePieceArea(),materialInventory.getDateOfManufacture());
                }
            }else if(materialOutboundList.isEmpty()){
                String oddNumber = orderNumberSetting("出库");
                materialInventoryMapper.insertMaterialOutboundOptimizeUses(oddNumber,projectNo,reportingWorkJson.get("userName").toString());
                materialInventoryMapper.insertMaterialOutboundDetailOptimizeUses(oddNumber, 1,Long.valueOf(optimizeUses.getRawStockCode()),materialInventory.getMaterialCode(),materialInventory.getInventoryArea(),
                        optimizeUses.getId(),quantity,materialInventory.getSinglePieceArea(),materialInventory.getDateOfManufacture());
                materialInventoryMapper.updateMaterialInventoryAvailableInventoryOutMes(Long.valueOf(optimizeUses.getRawStockCode()),quantity);
            }else{
                return false;
            }
        }else if(materialOutboundList.isEmpty()){
            String oddNumber = orderNumberSetting("出库");
            materialInventoryMapper.insertMaterialOutboundOptimizeUses(oddNumber,projectNo,reportingWorkJson.get("userName").toString());
            materialInventoryMapper.insertMaterialOutboundDetailOptimizeUses(oddNumber, materialOutboundDetailList1.size()+1,Long.valueOf(optimizeUses.getRawStockCode()),materialInventory.getMaterialCode(),materialInventory.getInventoryArea(),
                    optimizeUses.getId(),quantity,materialInventory.getSinglePieceArea(),materialInventory.getDateOfManufacture());
            materialInventoryMapper.updateMaterialInventoryAvailableInventoryOutMes(Long.valueOf(optimizeUses.getRawStockCode()),quantity);
        }else{
            return false;
        }
            materialInventoryMapper.updateOptimizeUsesMes(optimizeUses.getId(),quantity);
        //保存日志
        Log log = new Log();
        log.setContent(reportingWorkMap.toString());
        log.setFunction("mesMaterialOutbound报工新增");
        log.setOperatorId((String) reportingWorkJson.get("userId"));
        log.setOperator((String) reportingWorkJson.get("userName"));
        logService.saveLog(log);
        return true;
            //保存日志
            Log log = new Log();
            log.setContent(reportingWorkMap.toString());
            log.setFunction("mesMaterialOutbound报工新增");
            log.setOperatorId((String) reportingWorkJson.get("userId"));
            log.setOperator((String) reportingWorkJson.get("userName"));
            logService.saveLog(log);
        } catch (Exception e) {
            TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);
            //将异常传入数据库
            SysError sysError = new SysError();
            sysError.setError(e+Arrays.toString(e.getStackTrace()));
            sysError.setFunc("mesMaterialOutbound报工新增");
            sysErrorService.insert(sysError);
            saveState = false;
        }
        return saveState;
    }
}
north-glass-erp/src/main/resources/mapper/mm/MaterialInventory.xml
@@ -1073,14 +1073,15 @@
    </select>
    <select id="getSelectOptimizeUses">
        select * from pp.optimize_use mo where project_no=#{projectNo} and width=#{width} and height=#{height}
        select * from pp.optimize_use  where project_no=#{projectNo} and width=#{width} and height=#{height} and state=1
    </select>
    <select id="getSelectMaterialOutboundOptimizeUses">
        select * from mm.material_outbound_detail mo where
        select * from mm.material_outbound_detail mo
        <where>
            mo.material_outbound_id=#{materialOutboundId}
            <if test="useId != null">
               and use_id=#{useId}
               and mo.use_id=#{useId}
            </if>
        </where>
    </select>
@@ -1089,17 +1090,21 @@
        update mm.material_outbound_detail set outbound_quantity=outbound_quantity+#{quantity} where use_id=#{useId};
    </select>
    <select id="updateOptimizeUsesMes">
        update pp.optimize_use set not_use_count=not_use_count-#{quantity} where id=#{useId};
    </select>
    <insert id="insertMaterialOutboundDetailOptimizeUses"  useGeneratedKeys="true" >
        insert into mm.material_outbound_detail (material_outbound_id,material_outbound_number,material_code,use_id,inventory_id,inventory_organization,
                                                 outbound_quantity,single_piece_area,inventory_area,date_of_manufacture)
        values (
                   #{materialOutboundId} ,#{number},#{materialCode},#{useId},#{inventoryId},'原片库',#{outboundQuantity},
                   #{materialOutboundDetail.singlePieceArea},#{materialOutboundDetail.inventoryArea},#{materialOutboundDetail.dateOfManufacture}
                   #{singlePieceArea},#{inventoryArea},#{dateOfManufacture}
               )
    </insert>
    <insert id="insertMaterialOutboundOptimizeUses"  useGeneratedKeys="true" >
        insert into mm.material_outbound(material_outbound_id,material_requisition_personnel,material_requisition_team,order_id,outbound_type,
        insert into mm.material_outbound(material_outbound_id,order_id,outbound_type,
                                         warehouse_manager,material_requisition_date,reviewed_state,reviewed,create_time,reviewed_time)
        values (
                   #{materialOutboundId} ,#{projectNo},'标准出库',#{name},now(),1,#{name},now(),now()