chenlu
2024-12-03 89bb3e6f1ba4cf030772af7e0c7e28a68f5d1c9b
流程卡明细查询添加修改工艺流程功能
5个文件已修改
188 ■■■■ 已修改文件
north-glass-erp/northglass-erp/src/views/pp/processCard/SelectDetailProcessCard.vue 103 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/controller/pp/ProcessCardController.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/mapper/pp/FlowCardMapper.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/service/pp/FlowCardService.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/mapper/pp/FolwCard.xml 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/processCard/SelectDetailProcessCard.vue
@@ -14,6 +14,8 @@
import {VXETable} from "vxe-table";
import  useUserInfoStore from '@/stores/userInfo'
import {useI18n} from "vue-i18n";
import UpdateOrderCraft from "@/components/sd/order/UpdateOrderCraft.vue";
import {filterChanged} from "@/hook";
let productGlassTypeStore = useProductGlassTypeStore()
const { t } = useI18n()
const userStore = useUserInfoStore()
@@ -62,8 +64,57 @@
let pageNum=ref(1)
let pageState = null
let craftVisible = ref(false)
const  craftObj  = reactive({
  newCraft: [],
  oldCraft: [],
})
const  numberList  = reactive({
  technologyNumber:[],
})
const saveCraft = () => {
  //rowIndex.value.process = craftObj.newCraft.join('->')
 let orderProcess= craftObj.newCraft.join('->')
  request.post(`/processCard/updateProcess/${rowIndex.value.process_id}/${rowIndex.value.technology_number}/${rowIndex.value.order_id}/${orderProcess}`, craftObj).then((res) => {
    if (res.code == 200 && res.data === true) {
      ElMessage.success(t('basicData.msg.saveSuccess'))
      router.push({
        path: '/main/processCard/SelectDetailProcessCard',
        query: {processId: processId,random: Math.random()}
      })
    } else {
      ElMessage.warning(t('basicData.msg.saveFail'))
    }
  })
  craftVisible.value= false
}
let process =  ref([])
request.get(`/basicData/BasicDataByType/product/process`).then((res) =>{
  if (res.code==200){
    process.value=res.data
  }
})
let rowIndex = ref({})
const updateCraft = (row) => {
  craftVisible.value= true
  Object.keys(craftObj).forEach((key) =>{
    craftObj[key] = row['process'].split('->')
  })
  Object.keys(numberList).forEach((key) =>{
    numberList[key] = row['concatNumber'].split(',')
  })
  craftObj.technologyNumber=[]
  craftObj.technologyNumber.push(...numberList.technologyNumber);
  rowIndex.value = row
}
//第一次加载
const {currentRoute} = useRouter()
@@ -136,24 +187,29 @@
  },//表头参数
  columns:[
    {type:'expand',fixed:"left",slots: { content:'content' },width: 50},
    {title: t('basicData.operate'), width: 100, slots: { default: 'button_slot' },fixed:"left",},
    { type: 'seq',fixed:"left", title: t('basicData.Number'), width: 50 },
    {field: 'order_id', title: t('order.orderId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' },width: 80 },
    {field: 'order_id', title: t('order.orderId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' },width: 110 },
    {field: 'process_id', width: 140, title: t('processCard.processId') ,showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'order_number', title: t('order.OrderNum') ,filters:[{ data: '' }],slots: { filter: 'num1_filter' },},
    {field: 'technology_number', title: t('processCard.technologyNumber') ,filters:[{ data: '' }],slots: { filter: 'num1_filter' },},
    {field: 'order_number', title: t('order.OrderNum') ,filters:[{ data: '' }],slots: { filter: 'num1_filter' },width: 100},
    {field: 'technology_number', title: t('processCard.technologyNumber') ,filters:[{ data: '' }],slots: { filter: 'num1_filter' },width: 100},
    {field: 'quantity', title: t('order.quantity'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, width: 80},
    {field: 'child_width', title: t('order.width'), },
    {field: 'child_height', title: t('order.height'), },
    {field: 'area', title: t('order.area') ,showOverflow:"ellipsis"},
    {field: 'product_name', title: t('order.product'), },
    {field: 'glass_child', title: t('reportingWorks.glassChild'), },
    {field: 'founder', title: t('processCard.founder'), },
    {field: 'splitFrame_time', title: t('processCard.splitFrameTime'), },
    {field: 'child_width', title: t('order.width'),width: 80 },
    {field: 'child_height', title: t('order.height'),width: 80 },
    {field: 'area', title: t('order.area') ,showOverflow:"ellipsis",width: 70},
    {field: 'process',width:250,  title: t('craft.process'),filters:[{ data: '' }],slots: { filter: 'num1_filter' },},
    {field: 'product_name', title: t('order.product'),width: 310 },
    {field: 'glass_child', title: t('reportingWorks.glassChild'),width: 200 },
    {field: 'founder', title: t('processCard.founder'),width: 110 },
    {field: 'splitFrame_time', title: t('processCard.splitFrameTime'),width: 110 },
    {field: 'concatNumber', title: '总序号',width: 110},
  ],//表头按钮
  toolbarConfig: {
    buttons: [
      {'code': 'add', 'name': t('processCard.merge'),status: 'primary'}
      {'code': 'add', 'name': t('processCard.merge'),status: 'primary'},
    ],
    import: false,
    // export: true,
@@ -272,18 +328,27 @@
      <!--左边固定显示的插槽-->
      <template #num1_filter="{ column, $panel }">
        <div>
          <div v-for="(option, index) in column.filters" :key="index">
            <input type="type" v-model="option.data"
                   @keyup.enter.native="$panel.confirmFilter()"
                   @input="changeFilterEvent($event, option, $panel)"/>
          </div>
        </div>
      <!--左边固定显示的插槽-->
      <template #button_slot="{ row }">
        <el-button @click="updateCraft(row)" link type="primary" size="small">{{$t('craft.updateCraft')}}</el-button>
      </template>
    </vxe-grid>
    <el-dialog id="processChange"
               v-model="craftVisible"
               :title="$t('craft.technologicalProcess')"
               :close-on-click-modal="false"
               :close-on-press-escape="false"
               style="width: 60%;height:60% ;position: relative;" >
      <update-order-craft
          :craftObj="craftObj"
          :process="process"
          @saveCraft="saveCraft"
      />
    </el-dialog>
  </div>
</template>
north-glass-erp/src/main/java/com/example/erp/controller/pp/ProcessCardController.java
@@ -385,4 +385,16 @@
    }
    @ApiOperation("修改工艺流程")
    @PostMapping("/updateProcess/{processId}/{technologyNumber}/{orderId}/{process}")
    public Result updateProcess(
            @PathVariable String processId,
            @PathVariable String technologyNumber,
            @PathVariable String orderId,
            @PathVariable String process,
            @RequestBody Map<String, Object> object
    ) {
        return Result.seccess(flowCardService.updateProcessSv(processId,technologyNumber,orderId,process,object));
    }
}
north-glass-erp/src/main/java/com/example/erp/mapper/pp/FlowCardMapper.java
@@ -190,4 +190,10 @@
    List<Map<String, Object>> getPrintCustomDataProject(String projectNo);
    List<Map<String, String>> getPrintLabel3(String projectNo);
    Boolean updateProcessMp(String processId, String technologyNumber, String process, String number);
    Boolean deleteProcessMp(String processId, String technologyNumber);
    Boolean updateOrderProcessMp(String orderId, String number, String technologyNumber, String orderprocess);
}
north-glass-erp/src/main/java/com/example/erp/service/pp/FlowCardService.java
@@ -852,6 +852,36 @@
        map.put("title", flowCardMapper.getPrintTitle(type));
        return map;
    }
    public Boolean updateProcessSv(String processId, String technologyNumber, String orderId, String Orderprocess, Map<String, Object> object) {
        //判断该流程卡是否报工
        Integer count = flowCardMapper.reportingWorkCount(processId);
        if (count == 0) {
            //删除小片工艺表对应的数据
            flowCardMapper.deleteProcessMp(processId,technologyNumber);
            //重新插入修改好工艺流程卡的数据
            List<String> newCraftList = (List<String>) object.get("newCraft");
            List<String> numberList = (List<String>) object.get("technologyNumber");
            // 判断 newCraftList 是否为空
            if (newCraftList != null) {
                for (String number : numberList) {
                    //修改订单小片表工艺流程
                    flowCardMapper.updateOrderProcessMp(orderId,number,technologyNumber,Orderprocess);
                    for (String process : newCraftList) {
                        flowCardMapper.updateProcessMp(processId,technologyNumber,process,number);
                    }
                }
            }
            return true;
        }else {
            return false;
        }
    }
}
north-glass-erp/src/main/resources/mapper/pp/FolwCard.xml
@@ -443,12 +443,18 @@
               od.product_name,
               ogd.glass_child,
               fc.founder,
               date(fc.splitFrame_time)                                             as splitFrame_time
               date(fc.splitFrame_time)                                             as splitFrame_time,
               ogd.process,
               c.concatNumber
        from flow_card as fc
                 left join sd.order_glass_detail as ogd
                           on fc.order_id = ogd.order_id and fc.order_number = ogd.order_number and
                              fc.technology_number = ogd.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 (
            select process_id,technology_number, GROUP_CONCAT(order_number) as concatNumber from
            flow_card where process_id = #{processId} GROUP BY process_id,technology_number
                 ) as c on c.process_id=fc.process_id
        where fc.process_id = #{processId}
        GROUP BY fc.order_id, fc.process_id, fc.order_number, fc.technology_number
        order by fc.order_number, fc.technology_number
@@ -2465,4 +2471,33 @@
        group by  order_id,od.order_number
        order by ogd.child_width desc,ogd.child_height desc
    </select>
    <delete id="deleteProcessMp">
        delete from sd.order_process_detail where process_id = #{processId} and technology_number= #{technologyNumber}
    </delete>
    <insert id="updateProcessMp">
        insert into sd.order_process_detail (order_id,
                                             process_id,
                                             order_number,
                                             technology_number,
                                             process,
                                             create_time)
        select fc.order_id,
               fc.process_id,
               fc.order_number,
               #{technologyNumber},
               #{process},
               NOW()
        from pp.flow_card as fc
        where fc.process_id = #{processId}
          and fc.order_number = #{number}
          and fc.technology_number = #{technologyNumber}
        GROUP BY fc.order_number
    </insert>
    <update id="updateOrderProcessMp">
        update sd.order_glass_detail set process=#{orderprocess}
        where order_id=#{orderId} and order_number=#{number} and technology_number=#{technologyNumber}
    </update>
</mapper>