廖井涛
2025-02-13 33a8b7c3b8e76d0eacb27a3f700b9ab81ddadf54
新增mes切割接口
5个文件已修改
129 ■■■■■ 已修改文件
north-glass-erp/northglass-erp/src/views/sd/order/CreateOrder.vue 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/controller/mm/MaterialInventoryController.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/mapper/mm/MaterialInventoryMapper.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/service/mm/MaterialInventoryService.java 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/mapper/mm/MaterialInventory.xml 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/order/CreateOrder.vue
@@ -1005,7 +1005,9 @@
  request.post(`/order/saveOrderTitle`,order).then((res) => {
    if(res.code==200){
      ElMessage.success(t('basicData.msg.saveSuccess'))
      router.push({path:'/main/order/selectOrder'})
      router.push({path:'/main/order/createOrder',query:{
          orderId:titleUploadData.value.orderId,
          random:Math.random()}})
    }else {
      ElMessage.error(res.msg)
    }
@@ -1669,7 +1671,7 @@
      </vxe-grid>
    </div>
    <el-dialog v-model="dialogTableVisible" :title="$t('order.processingNote')" style="width: 60%;height:75% ">
    <el-dialog v-model="dialogTableVisible" :draggable="true" :title="$t('order.processingNote')" style="width: 60%;height:75% ">
      <el-input
          v-model="titleUploadData.processingNote"
          type="textarea"
north-glass-erp/src/main/java/com/example/erp/controller/mm/MaterialInventoryController.java
@@ -182,6 +182,13 @@
    }
    @ApiOperation("mes切割报工")
    @PostMapping  ("/mesMaterialOutbound")
    public Result mesMaterialOutbound(@RequestBody Map<String,Object> reportingWork)  {
        return  Result.seccess(materialInventoryService.mesMaterialOutbound(reportingWork));
    }
}
north-glass-erp/src/main/java/com/example/erp/mapper/mm/MaterialInventoryMapper.java
@@ -116,6 +116,9 @@
    Boolean updateMaterialInventoryAvailableInventoryOut(@Param("inventoryId") Long inventoryId,
                                                @Param("quantity") Integer quantity);
    Boolean updateMaterialInventoryAvailableInventoryOutMes(@Param("inventoryId") Long inventoryId,
                                                         @Param("quantity") Integer quantity);
    Boolean updateMaterialInventoryAvailableInventoryInt(@Param("inventoryId") Long inventoryId,
                                                @Param("quantity") Integer quantity);
@@ -231,4 +234,20 @@
    List<MaterialLog> exportMaterialLogReport(List<LocalDate> dates, String type);
    List<MaterialOutbound> getSelectMaterialOutboundProjectNo(@Param("projectNo") String projectNo);
    OptimizeUse getSelectOptimizeUses(@Param("projectNo") String projectNo,@Param("width") Double width,@Param("height") Double height);
    List<MaterialOutboundDetail> getSelectMaterialOutboundOptimizeUses(@Param("useId") Integer useId);
    Boolean updateMaterialOutboundOptimizeUses(@Param("useId") Integer useId);
    Boolean insertMaterialOutboundDetailOptimizeUses(@Param("materialOutboundId") String materialOutboundId,@Param("number") Integer number,
                                               @Param("inventoryId") Long inventoryId,@Param("materialCode") Long materialCode,@Param("inventoryArea") String inventory_area,
                                               @Param("useId") Integer useId,@Param("outboundQuantity") Integer outboundQuantity,
                                               @Param("singlePieceArea") Double singlePieceArea,@Param("dateOfManufacture") LocalDate dateOfManufacture);
    Boolean insertMaterialOutboundOptimizeUses(@Param("materialOutboundId") String materialOutboundId,@Param("projectNo") String projectNo,
                                                     @Param("name") String name);
}
north-glass-erp/src/main/java/com/example/erp/service/mm/MaterialInventoryService.java
@@ -1,18 +1,22 @@
package com.example.erp.service.mm;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.example.erp.common.Constants;
import com.example.erp.dto.mm.FinishedOperateLogDTO;
import com.example.erp.entity.mm.*;
import com.example.erp.entity.pp.FlowCard;
import com.example.erp.entity.pp.OptimizeUse;
import com.example.erp.entity.pp.*;
import com.example.erp.entity.sd.Delivery;
import com.example.erp.entity.sd.DeliveryDetail;
import com.example.erp.entity.sd.OrderDetail;
import com.example.erp.entity.sd.OrderProcessDetail;
import com.example.erp.entity.userInfo.Log;
import com.example.erp.entity.userInfo.SysError;
import com.example.erp.exception.ServiceException;
import com.example.erp.mapper.mm.BasicWarehouseTypeMapper;
import com.example.erp.mapper.mm.MaterialInventoryMapper;
import com.example.erp.mapper.mm.MaterialLogMapper;
@@ -23,6 +27,8 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import java.time.LocalDateTime;
import java.util.List;
import java.util.ArrayList;
@@ -939,7 +945,49 @@
    @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());
        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(),
                        optimizeUses.getId(),quantity,materialInventory.getSinglePieceArea(),materialInventory.getDateOfManufacture());
                materialInventoryMapper.updateMaterialInventoryAvailableInventoryOutMes(Long.valueOf(optimizeUses.getRawStockCode()),quantity);
            }
        }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;
        }
        //保存日志
        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;
    }
north-glass-erp/src/main/resources/mapper/mm/MaterialInventory.xml
@@ -727,6 +727,13 @@
        where id=#{inventoryId}
    </update>
    <update id="updateMaterialInventoryAvailableInventoryOutMes">
        update mm.material_inventory
        set available_quantity=available_quantity-#{quantity},inventory_quantity=inventory_quantity-#{quantity},
            plan_quantity=plan_quantity-#{quantity},total_area=inventory_quantity*single_piece_area
        where id=#{inventoryId}
    </update>
    <update id="updateMaterialOutboundToExamine">
        update mm.material_outbound set reviewed_state=#{reviewedState},reviewed=#{reviewed},reviewed_time=now()
@@ -1061,5 +1068,43 @@
        </where>
    </select>
    <select id="getSelectMaterialOutboundProjectNo">
        select * from mm.material_outbound mo where order_id=#{projectNo}
    </select>
    <select id="getSelectOptimizeUses">
        select * from pp.optimize_use mo where project_no=#{projectNo} and width=#{width} and height=#{height}
    </select>
    <select id="getSelectMaterialOutboundOptimizeUses">
        select * from mm.material_outbound_detail mo where
        <where>
            <if test="useId != null">
               and use_id=#{useId}
            </if>
        </where>
    </select>
    <select id="updateMaterialOutboundOptimizeUses">
        update mm.material_outbound_detail set outbound_quantity=outbound_quantity+#{quantity} where use_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}
               )
    </insert>
    <insert id="insertMaterialOutboundOptimizeUses"  useGeneratedKeys="true" >
        insert into mm.material_outbound(material_outbound_id,material_requisition_personnel,material_requisition_team,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()
               )
    </insert>
</mapper>