廖井涛
2025-09-02 2731cf9e4e25c29c33d1b86c2f97c37f31c469eb
Merge branch 'master' of http://10.153.19.25:10105/r/ERP_override
10个文件已修改
246 ■■■■■ 已修改文件
north-glass-erp/northglass-erp/src/views/pp/glassOptimize/OptimizeControl.vue 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/glassOptimize/OptimizeParms.vue 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/Compute.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/processCard/PrintFlowCardDetails.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/reportingWorks/AddReportingWork.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/mapper/mm/FinishedOperateLogMapper.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/service/mm/FinishedGoodsInventoryService.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/mapper/mm/FinishedOperateLog.xml 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/mapper/pp/GlassOptimize.xml 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/mapper/pp/Report.xml 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/glassOptimize/OptimizeControl.vue
@@ -12,17 +12,6 @@
  
    </div>
  <div style="position: fixed; top: 93px; right: 120px; display: flex; align-items: center;">
    <label style="margin-right: 10px; color: #333;">文件保存模式:</label>
    <select
        v-model="fileSaveMode"
        style="padding: 8px; border: 1px solid #ccc; border-radius: 4px;"
    >
      <option value="1">单文件</option>
      <option value="2">多文件</option>
    </select>
  </div>
    <button @click="submitLayouts" style="position: fixed; top: 90px; right: 20px; padding: 10px; background: #4CAF50; color: white; border: none; border-radius: 5px; cursor: pointer;">
      保存OPT
    </button>
@@ -34,6 +23,7 @@
import { useI18n } from "vue-i18n";
import { ElMessage } from "element-plus";
import requestOptimize from "@/utils/requestOptimize";
import useUserInfoStore from "@/stores/userInfo";
const { t } = useI18n();
@@ -48,6 +38,10 @@
const optimizeLayouts = ref(null);
const fileSaveMode = ref(1);
const fileMode = ref();
const userStore = useUserInfoStore()
const username = userStore.user.userName;
// 从 localStorage 读取库存数据
const loadInventoryData = () => {
@@ -103,7 +97,26 @@
      });
};
const fetchSettings = async (username) => {
  try {
    const response = await request.post(`/glassOptimize/selectOptimizeParms/${username}`);
    if (response.code == 200) {
      if (!response.data) {
        console.error('响应数据为空');
        return;
      }
      const parsedData = JSON.parse(response.data);
      console.log('设置内容:', parsedData);
      if (parsedData.server && parsedData.server.fileMode) {
        fileMode.value = parsedData.server.fileMode;
      }
    } else {
      console.error('请求失败,状态码:', response.code);
    }
  } catch (error) {
    console.error('请求发生错误:', error);
  }
};
const selectOptimizeInfo = () => {
@@ -138,6 +151,7 @@
  loadInventoryData();
  selectLayout();
  selectOptimizeInfo();
  fetchSettings(username);
});
const submitLayouts = async () => {
@@ -154,7 +168,7 @@
      glassType:inventoryData.value[0].model,
      quantity: inventoryData.value[0].processingQuantity,
      fileType:"OPT",
      fileSaveMode:fileSaveMode.value,
      fileSaveMode:fileMode.value,
      glassIdMode:1,
      layouts: optimizeLayouts.value.layouts
    }, {
north-glass-erp/northglass-erp/src/views/pp/glassOptimize/OptimizeParms.vue
@@ -43,6 +43,12 @@
        return;
      }
      const parsedData = JSON.parse(response.data);
      if (!parsedData.server) {
        parsedData.server = {};
      }
      if (!parsedData.server.fileMode) {
        parsedData.server.fileMode = '1'; // 默认为单文件模式
      }
      Object.assign(settings, parsedData);
      console.log('设置已更新:', settings);
    } else {
@@ -237,6 +243,27 @@
        <div class="display-settings">
          <h2>结果输出设置</h2>
          <div class="form-group">
            <label>文件模式</label>
            <div class="radio-group">
              <input
                  type="radio"
                  id="singleFile"
                  value="1"
                  v-model="settings.server.fileMode"
              />
              <label for="singleFile">单文件</label>
              <input
                  type="radio"
                  id="multiFile"
                  value="2"
                  v-model="settings.server.fileMode"
                  style="margin-left: 20px;"
              />
              <label for="multiFile">多文件</label>
            </div>
          </div>
          <div class="form-group">
            <label>工程文件保存路径</label>
            <input type="text" v-model="settings.server.output_format" />
          </div>
@@ -387,7 +414,7 @@
  background-color: white;
  padding: 15px;
  border-radius: 8px;
  box-shadow: 0 2px 4 rgba(0, 0, 0, 0.1);
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}
.sidebar-item {
north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/Compute.vue
@@ -47,7 +47,7 @@
const optionVal = ref(50)
// 定义装载率
const percentage1 = ref(80)
const percentage1 = ref(50)
const percentage2 = ref(50)
// 定义其他表单数据
north-glass-erp/northglass-erp/src/views/pp/processCard/PrintFlowCardDetails.vue
@@ -1007,7 +1007,7 @@
        :close-on-press-escape="false"
        :title="$t('processCard.labelStyle')"
        destroy-on-close
        style="width: 90%;height:93%;margin-top: 3vh ">
        style="width: 90%;height:91%;margin-top: 3vh ">
      <!--      <tag-style style="width: 100%;height: 100%"/>-->
      <tag-style-designer :faceOrientation="labelRow.faceOrientation"
                          :lableType="labelRow.lableType"
north-glass-erp/northglass-erp/src/views/pp/reportingWorks/AddReportingWork.vue
@@ -1557,6 +1557,7 @@
    remark: remark.value,
    container: container.value,
    flowCard: resultData,
    createTime: titleUploadData.value.reportingWorkTime
  })
  //调用入库接口
  request.post("/finishedGoodsInventory/addSelectWarehousing",flowData.value).then((res) => {
north-glass-erp/src/main/java/com/example/erp/mapper/mm/FinishedOperateLogMapper.java
@@ -7,9 +7,9 @@
import com.example.erp.entity.sd.OrderDetail;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.data.repository.CrudRepository;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;
@@ -17,9 +17,11 @@
public interface FinishedOperateLogMapper extends BaseMapper<FinishedOperateLog> {
    FinishedOperateLog getselectFinishedOperateLog();
    Boolean insertIntFinishedOperateLog(@Param("flowCard") FlowCard flowCard ,@Param("userName") String userName,
                                        @Param("oddNumber") String oddNumber,@Param("container") String container,
                                        @Param("deliveryDetailMoney") Double deliveryDetailMoney,@Param("deliveryDetailArea") Double deliveryDetailArea);
    Boolean insertIntFinishedOperateLog(@Param("flowCard") FlowCard flowCard , @Param("userName") String userName,
                                        @Param("oddNumber") String oddNumber, @Param("container") String container,
                                        @Param("deliveryDetailMoney") Double deliveryDetailMoney,
                                        @Param("deliveryDetailArea") Double deliveryDetailArea,
                                        String createTime);
    Boolean insertOutFinishedOperateLog(@Param("orderDetail") OrderDetail orderDetail, @Param("userName") String userName, @Param("oddNumber") String oddNumber, String boxNo);
north-glass-erp/src/main/java/com/example/erp/service/mm/FinishedGoodsInventoryService.java
@@ -34,6 +34,7 @@
import java.sql.SQLOutput;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.*;
@Service
@@ -102,6 +103,11 @@
            if (object.get("decValue") != null) {
                decValue = Integer.parseInt(object.get("decValue").toString());
            }
            String createTime = null;
            if(object.get("createTime")!=null){
                createTime =  object.get("createTime").toString();
            }
            Log log = new Log();
            log.setOperator(userName);
            log.setOperatorId(userId);
@@ -162,7 +168,7 @@
                    //添加出入库记录
                    finishedOperateLogMapper.insertIntFinishedOperateLog(flowCard,userName,oddNumber,container,deliveryDetailMoney,deliveryDetailArea);
                    finishedOperateLogMapper.insertIntFinishedOperateLog(flowCard,userName,oddNumber,container,deliveryDetailMoney,deliveryDetailArea,createTime);
                    Integer finishedGoodsInventorycount = 0;
                    finishedGoodsInventorycount = finishedGoodsInventoryMapper.findOrderNumberdContainercount(flowCard.getOrder().getOrderId(),flowCard.getOrderNumber(),container);
north-glass-erp/src/main/resources/mapper/mm/FinishedOperateLog.xml
@@ -622,7 +622,15 @@
        )
        values (
                   #{oddNumber} ,#{flowCard.order.orderId},#{flowCard.processId},#{flowCard.orderNumber},"入库",#{userName},
                #{flowCard.inventoryQuantity},now(),"未审核",#{container},#{deliveryDetailMoney},#{deliveryDetailArea}
                #{flowCard.inventoryQuantity},
        <if test="createTime != null">
            #{createTime}
        </if>
        <if test="createTime == null">
            now()
        </if>
                ,"未审核",#{container},#{deliveryDetailMoney},#{deliveryDetailArea}
               )
    </insert>
north-glass-erp/src/main/resources/mapper/pp/GlassOptimize.xml
@@ -1881,27 +1881,40 @@
    </select>
    <select id="getOptimizeDetailsInfo" resultType="java.util.Map">
        SELECT
            0 As isRemain,
            width AS realWidth,
            height AS realHeight,
            p_width AS width,
            p_height AS height,
            process_id AS processId,
            layer,
            total_layer AS totalLayer,
            order_sort As orderSort,
            stock_id AS layoutId,
            stock_number AS glassSort,
            x_axis AS x,
            y_axis AS y,
            mark_icon AS markIcon,
            isRotate,
            glass_point AS glassPoint,
            rack_no As rackNo
            0 AS isRemain,
            od.width AS realWidth,
            od.height AS realHeight,
            od.p_width AS width,
            od.p_height AS height,
            od.process_id AS processId,
            od.layer,
            od.total_layer AS totalLayer,
            od.order_sort AS orderSort,
            od.stock_id AS layoutId,
            od.stock_number AS glassSort,
            od.x_axis AS x,
            od.y_axis AS y,
            od.mark_icon AS markIcon,
            od.isRotate,
            od.glass_point AS glassPoint,
            fc.order_id AS orderNo,
            ogd.process,
            o.customer_name AS customerName,
            o.processing_note AS processingNote,
            o.project AS projectName,
            ord.product_name AS productName,
            ord.building_number AS buildingNumber,
            COALESCE(h.layout_id, 0) as heatLayoutId,
            od.rack_no AS rackNo
        FROM
            pp.optimize_detail
            pp.optimize_detail od
                LEFT JOIN pp.flow_card fc on od.process_id = fc.process_id
                LEFT JOIN sd.order_glass_detail ogd ON fc.order_id = ogd.order_id
                LEFT JOIN sd.ORDER o ON o.order_id = fc.order_id
                LEFT JOIN sd.order_detail ord ON fc.order_id = ord.order_id
                LEFT JOIN pp.optimize_heat_detail h ON h.process_id = fc.process_id
        WHERE
            project_no = #{projectId}
            od.project_no =  #{projectId}
    </select>
    <select id="getOptimizeOffsetsInfo" resultType="java.util.Map">
        SELECT
north-glass-erp/src/main/resources/mapper/pp/Report.xml
@@ -3208,70 +3208,37 @@
    </select>
    <select id="yieldProcessMp">
        SELECT
        select
            rw.this_process as process,
            rw.completedQuantity,
            IFNULL(dd.breakageQuantity,0) as breakageQuantity,
            rw.completedArea,
            IFNULL(dd.breakageArea,0) as breakageArea,
            CONCAT(ROUND(TRUNCATE(rw.completedQuantity/(rw.completedQuantity + IFNULL(dd.breakageArea,0)),2)*100), '%') as finished
        from
            (
                select rw.this_process,SUM(rwd.completed_quantity) as completedQuantity
                     ,ROUND(SUM((rwd.child_width) * (rwd.child_height) * rwd.completed_quantity / 1000000), 2) as completedArea
                from reporting_work rw
                         LEFT JOIN reporting_work_detail rwd on rwd.reporting_work_id = rw.reporting_work_id
        t.this_process as process,
        SUM(t.completed_quantity) as completedQuantity,
        SUM(t.area) as completedArea,
        SUM(t.breakageQuantity) as breakageQuantity,
        SUM(t.breakageArea) as breakageArea,
        CONCAT(ROUND(ROUND(SUM(t.area)/(SUM(t.area) + SUM(t.breakageArea)),2)*100), '%') as finished
                where   rw.reporting_work_time &gt;= #{selectTime1}
                  AND rw.reporting_work_time &lt; #{selectTime2}
                  AND rw.reviewed_state >= 0
                GROUP BY rw.this_process
            ) as rw
                left join
            (
                select dd.responsible_process,sum(dd.breakage_quantity) as breakageQuantity
                     ,ROUND(SUM((rwd.child_width) * (rwd.child_height) * dd.breakage_quantity / 1000000), 2) as breakageArea
                from reporting_work rw left join damage_details dd on dd.reporting_work_id = rw.reporting_work_id
                                       LEFT JOIN reporting_work_detail rwd on rwd.reporting_work_id = dd.reporting_work_id
                                                 and rwd.order_number = dd.order_number and rwd.technology_number  = dd.technology_number
                where rw.reporting_work_time &gt;= #{selectTime1}
                  AND rw.reporting_work_time &lt; #{selectTime2}
                  AND rw.reviewed_state >= 0 and dd.available =0
                GROUP BY dd.responsible_process
            ) as dd on  rw.this_process = dd.responsible_process
        FROM
        (
        SELECT
        rw.reporting_work_time,
        rw.this_process,
        o.project,
        o.batch,
        rw.process_id,
        rwd.completed_quantity AS completed_quantity,
        ROUND(MAX(ogd.child_width) * MAX(ogd.child_height) * rwd.completed_quantity / 1000000, 2) AS area,
        IFNULL(dd.breakage_quantity,0) as breakageQuantity,
        IFNULL(ROUND(MAX(ogd.child_width) * MAX(ogd.child_height) * dd.breakage_quantity / 1000000, 2),0) AS breakageArea,
        IFNULL(dd.responsible_team,'') as responsibleTeam,
        od.product_name
        FROM
        reporting_work AS rw
        LEFT JOIN reporting_work_detail AS rwd
        ON rwd.reporting_work_id = rw.reporting_work_id
        LEFT JOIN damage_details as dd on dd.reporting_work_id = rw.reporting_work_id
        LEFT JOIN flow_card AS fc
        ON fc.order_id = rw.order_id
        AND fc.process_id = rw.process_id
        AND fc.order_number = rwd.order_number
        AND fc.technology_number = rwd.technology_number
        LEFT JOIN sd.order_glass_detail AS ogd
        ON ogd.order_id = fc.order_id
        AND ogd.order_number = fc.order_number
        AND ogd.technology_number = fc.technology_number
        LEFT JOIN sd.order_detail AS od
        ON od.order_id = ogd.order_id
        AND od.order_number = ogd.order_number
        LEFT JOIN sd.`order` AS o
        ON o.order_id = od.order_id
        WHERE
        o.create_order > 0
        AND rw.reviewed_state >= 0
        AND rwd.completed_quantity + IFNULL(dd.breakage_quantity,0)> 0
        AND rw.reporting_work_time &gt;= #{selectTime1}
        AND rw.reporting_work_time &lt; #{selectTime2}
        GROUP BY
        rw.reporting_work_id,
        rw.process_id,
        rw.this_process,
        rw.teams_groups_name,
        rwd.order_number,
        rwd.technology_number
        ) t
        GROUP BY
        t.this_process
        ORDER BY
        t.this_process
    </select>
</mapper>