guoyuji
2024-09-26 8c29a327707574f1e04cd25218e05ba9b4c8e4a8
Merge branch 'master' of http://10.153.19.25:10101/r/ERP_override
34个文件已修改
823 ■■■■ 已修改文件
north-glass-erp/northglass-erp/src/components/pp/PrintProcess.vue 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/components/pp/PrintProcessReplenish.vue 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/components/pp/PrintReworkProcess.vue 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/mainIngredientStock/CreateOutBound.vue 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/mainProductStock/CreateProductStock.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/mainProductStock/FinishedProductOut.vue 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/processCard/AddProcessCard.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/processCard/PrintCustomLabel1.vue 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/processCard/PrintCustomLabelSemi1.vue 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/processCard/PrintCustomLabelSemi2.vue 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/processCard/PrintFlowCard.vue 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/processCard/PrintFlowCardDetails.vue 46 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/processCard/PrintLabel.vue 59 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/processCard/PrintLabel1.vue 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/report/CrossProcessBreaking.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/reportingWorks/AddReportingWork.vue 45 ●●●●● 补丁 | 查看 | 原始文档 | 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/controller/pp/ProcessCardController.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/controller/pp/ReportingWorkController.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/entity/pp/ReportingWorkDetail.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/mapper/mm/FinishedGoodsInventoryMapper.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/mapper/mm/MaterialInventoryMapper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/mapper/pp/FlowCardMapper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/mapper/pp/ReportingWorkMapper.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/service/mm/FinishedGoodsInventoryService.java 115 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/service/mm/MaterialInventoryService.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/service/pp/FlowCardService.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/service/pp/ReportingWorkService.java 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/mapper/mm/FinishedGoodsInventory.xml 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/mapper/mm/MaterialInventory.xml 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/mapper/pp/FolwCard.xml 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/mapper/pp/Report.xml 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/mapper/pp/ReportingWork.xml 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/mapper/sd/CustomerMapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/components/pp/PrintProcess.vue
@@ -307,8 +307,6 @@
        <td></td>
        <td></td>
      </tr>
      </tbody>
      <tfoot>
      <tr style="height: 14px">
        <td v-for="(itemsum,index) in item.detail" :key="index" colspan="29">
          数量:
@@ -376,19 +374,22 @@
      </tr>
      <tr v-if="company.remarkSwitch=='1'">
        <td colspan="29">
         <div style="display: flex;flex-wrap: wrap;">
           <div  v-for="(itemremark,index) in item.remarkList" :key="index">
          <div style="display: flex;flex-wrap: wrap;">
            <div class="nuber_xx" v-for="(itemremark,index) in item.remarkList" :key="index">
             <span v-if="!(itemremark.S02==null&&itemremark.S03==null&&itemremark.S04==null&&itemremark.S05==null)">
               编号:{{itemremark.S01}}
             </span>&nbsp;&nbsp;
             <span v-if="itemremark.S02!=null">备注1:{{itemremark.S02}}</span>&nbsp;&nbsp;
             <span v-if="itemremark.S03!=null">备注2:{{itemremark.S03}}</span>&nbsp;&nbsp;
             <span v-if="itemremark.S04!=null">备注3:{{itemremark.S04}}</span>&nbsp;&nbsp;
             <span v-if="itemremark.S05!=null">备注4:{{itemremark.S05}}</span>
           </div>
         </div>
              <span v-if="itemremark.S02!=null">备注1:{{itemremark.S02}}</span>&nbsp;&nbsp;
              <span v-if="itemremark.S03!=null">备注2:{{itemremark.S03}}</span>&nbsp;&nbsp;
              <span v-if="itemremark.S04!=null">备注3:{{itemremark.S04}}</span>&nbsp;&nbsp;
              <span v-if="itemremark.S05!=null">备注4:{{itemremark.S05}}</span>
            </div>
          </div>
        </td>
      </tr>
      </tbody>
      <tfoot>
      <tr v-for="(itemtextareas,index) in item.detail" :key="index">
        <td  colspan="29"  style="width: 480px;height: 150px ">
          <div style="width: 100%;height: 100%;text-align: left"><textarea style="height: 99%;width: 99%;border: none;;font-size: 12px;overflow: hidden;text-align: left;vertical-align: middle">{{itemtextareas.processing_note}}</textarea>
@@ -465,7 +466,9 @@
  background: none;
}
.nuber_xx span{
  font-size: 12px;
}
@media print {
north-glass-erp/northglass-erp/src/components/pp/PrintProcessReplenish.vue
@@ -230,7 +230,7 @@
    <table v-for="(item,id) in produceList" id="contentTable" :key="id">
      <thead>
      <tr v-for="(itemFlow,index) in item.detail" :key="index">
        <td    colspan="33">
        <td    colspan="34">
          <div style="float: left;">补片单号:{{itemFlow.patch_id}}</div>
          <div id="bj" style="float: right;font-size: 28px">补 {{ id + 1 }}</div>
          <div>{{ company.companyName }}</div>
@@ -252,7 +252,7 @@
        <td class="tdNowrap">项目名称:</td>
        <td colspan="8">{{ items.project }}</td>
        <td class="tdNowrap">工艺流程:</td>
        <td colspan="20"  style="width: 500px">{{ items.process }}</td>
        <td colspan="21"  style="width: 500px">{{ items.process }}</td>
      </tr>
      <tr v-for="(itemTr,index) in item.detail" :key="index">
        <td class="tdNowrap">磨边类型:</td>
@@ -260,7 +260,7 @@
        <td class="tdNowrap">单片名称:</td>
        <td colspan="8">{{ itemTr.glass_child }}</td>
        <td class="tdNowrap">产品名称:</td>
        <td colspan="20">{{ itemTr.product_name }}</td>
        <td colspan="21">{{ itemTr.product_name }}</td>
      </tr>
      <tr>
        <td rowspan='2'>序号</td>
@@ -275,6 +275,7 @@
        <td rowspan='2'>原因</td>
        <td rowspan='2'>工序</td>
        <td rowspan='2'>班组</td>
        <td rowspan='2'>信息</td>
        <td rowspan='2'>备注</td>
        <td v-for="(itemPr,index) in item.processList" :key="index" colspan="2">{{ itemPr.process }}</td>
      </tr>
@@ -319,6 +320,7 @@
        <td>{{ itemDatile.patch_reason }}</td>
        <td>{{ itemDatile.patch_processes }}</td>
        <td>{{ itemDatile.responsible_team }}</td>
        <td>{{ itemDatile.responsible_personnel }}</td>
        <td>{{ itemDatile.remarks }}</td>
        <td></td>
        <td></td>
@@ -344,7 +346,7 @@
      </tbody>
      <tfoot>
      <tr style="height: 14px">
        <td v-for="(itemsum,index) in item.detail" :key="index" colspan="33">
        <td v-for="(itemsum,index) in item.detail" :key="index" colspan="34">
          数量:
          <label>{{ itemsum.quantity }}</label>
          面积:
@@ -361,6 +363,7 @@
        </td>
        <td>完工签名</td>
        <td colspan="2"></td>
        <td colspan="2"></td>
        <td colspan="2"></td>
        <td colspan="2"></td>
@@ -392,6 +395,7 @@
        <td colspan="2"></td>
        <td colspan="2"></td>
        <td colspan="2"></td>
        <td colspan="2"></td>
      </tr>
      <tr>
        <td>质检签名</td>
@@ -409,13 +413,14 @@
        <td colspan="2"></td>
        <td colspan="2"></td>
        <td colspan="2"></td>
        <td colspan="2"></td>
      </tr>
      <tr>
        <td>原片箱号</td>
        <td colspan="28"></td>
        <td colspan="29"></td>
      </tr>
      <tr v-for="(qrCodeItem,index) in item.detail" :key="index">
        <td colspan="29">
        <td colspan="30">
          <span style="display: flex;">
            <span v-for="(qrCodeItems,index) in qrCodeItem.qrcodeList" :key="index" style="display: flex;width: 35%">
            <div class='qrCode' style="width: 80px;height: 80px;">
@@ -429,7 +434,7 @@
        </td>
      </tr>
      <tr v-for="(itemtextareas,index) in item.detail" :key="index">
        <td  colspan="33" rowspan="6" style="width: 99%;height: 150px ">
        <td  colspan="34" rowspan="6" style="width: 99%;height: 150px ">
          <div style="width: 100%;height: 100%;"><textarea style="height: 99%;width: 99%;border: none;;font-size: 12px;text-align: left">{{itemtextareas.processing_note}}</textarea>
          </div>
        </td>
north-glass-erp/northglass-erp/src/components/pp/PrintReworkProcess.vue
@@ -193,7 +193,7 @@
    <table v-for="(item,id) in produceList" id="contentTable" :key="id">
      <thead>
      <tr v-for="(itemFlow,index) in item.detail" :key="index">
        <td    colspan="33">
        <td    colspan="34">
          <div style="float: left;">返片单号:{{itemFlow.patch_id}}</div>
          <div id="bj" style="float: right;font-size: 28px">返 {{ id + 1 }}</div>
          <div>{{ company.companyName }}</div>
@@ -215,7 +215,7 @@
        <td class="tdNowrap">项目名称:</td>
        <td colspan="8">{{ items.project }}</td>
        <td class="tdNowrap">工艺流程:</td>
        <td colspan="20"  style="width: 500px">{{ items.process }}</td>
        <td colspan="21"  style="width: 500px">{{ items.process }}</td>
      </tr>
      <tr v-for="(itemTr,index) in item.detail" :key="index">
        <td class="tdNowrap">磨边类型:</td>
@@ -223,7 +223,7 @@
        <td class="tdNowrap">单片名称:</td>
        <td colspan="8">{{ itemTr.glass_child }}</td>
        <td class="tdNowrap">产品名称:</td>
        <td colspan="20">{{ itemTr.product_name }}</td>
        <td colspan="21">{{ itemTr.product_name }}</td>
      </tr>
      <tr>
        <td rowspan='2'>序号</td>
@@ -238,6 +238,7 @@
        <td rowspan='2'>原因</td>
        <td rowspan='2'>工序</td>
        <td rowspan='2'>班组</td>
        <td rowspan='2'>信息</td>
        <td rowspan='2'>备注</td>
        <td v-for="(itemPr,index) in item.processList" :key="index" colspan="2">{{ itemPr.process }}</td>
      </tr>
@@ -282,7 +283,9 @@
        <td>{{ itemDatile.patch_reason }}</td>
        <td>{{ itemDatile.patch_processes }}</td>
        <td>{{ itemDatile.responsible_team }}</td>
        <td>{{ itemDatile.responsible_personnel }}</td>
        <td>{{ itemDatile.remarks }}</td>
        <td></td>
        <td></td>
        <td></td>
        <td></td>
@@ -307,7 +310,7 @@
      </tbody>
      <tfoot>
      <tr style="height: 14px">
        <td v-for="(itemsum,index) in item.detail" :key="index" colspan="33">
        <td v-for="(itemsum,index) in item.detail" :key="index" colspan="34">
          数量:
          <label>{{ itemsum.quantity }}</label>
          面积:
@@ -324,6 +327,7 @@
        </td>
        <td>完工签名</td>
        <td colspan="2"></td>
        <td colspan="2"></td>
        <td colspan="2"></td>
        <td colspan="2"></td>
@@ -355,6 +359,7 @@
        <td colspan="2"></td>
        <td colspan="2"></td>
        <td colspan="2"></td>
        <td colspan="2"></td>
      </tr>
      <tr>
        <td>质检签名</td>
@@ -372,13 +377,14 @@
        <td colspan="2"></td>
        <td colspan="2"></td>
        <td colspan="2"></td>
        <td colspan="2"></td>
      </tr>
      <tr>
        <td>原片箱号</td>
        <td colspan="28"></td>
        <td colspan="29"></td>
      </tr>
      <tr v-for="(qrCodeItem,index) in item.detail" :key="index">
        <td colspan="29">
        <td colspan="30">
          <span style="display: flex;">
            <span v-for="(qrCodeItems,index) in qrCodeItem.qrcodeList" :key="index" style="display: flex;width: 35%">
            <div class='qrCode' style="width: 80px;height: 80px;">
@@ -392,7 +398,7 @@
        </td>
      </tr>
      <tr v-for="(itemtextareas,index) in item.detail" :key="index">
        <td  colspan="33" rowspan="6" style="width: 99%;height: 150px ">
        <td  colspan="34" rowspan="6" style="width: 99%;height: 150px ">
          <div style="width: 100%;height: 100%;"><textarea style="height: 99%;width: 99%;border: none;;font-size: 12px;text-align: left">{{itemtextareas.processing_note}}</textarea>
          </div>
        </td>
@@ -457,6 +463,10 @@
  font-size: 12px;
  font-weight: bolder;
}
input{
  border: none;
  background: none;
}
@page {
  size: auto;  /* auto is the initial value */
north-glass-erp/northglass-erp/src/views/mm/mainIngredientStock/CreateOutBound.vue
@@ -317,13 +317,17 @@
          })
          request.post("/MaterialInventory/saveMaterialOutbound", flowData.value).then((res) => {
            if(res.code==200){
            if(res.code==200 && res.data==="true"){
              ElMessage.success(t('basicData.msg.saveSuccess'))
              router.push({path: '/main/ingredientsStock/MaterialOutbound', query:{random:Math.random()}})
            }else if(res.data==="false1"){
              ElMessage.warning("数量错误,请刷新再保存")
            }else{
              ElMessage.warning(res.msg)
              router.push("/login")
              ElMessage.warning(t('basicData.msg.saveFail'))
            }
          }).catch((err)=>{
            ElMessage.error(t('basicData.msg.ServerConnectionError'))
            router.push("/login")
          })
          break
        }
north-glass-erp/northglass-erp/src/views/mm/mainProductStock/CreateProductStock.vue
@@ -280,9 +280,13 @@
            })
            request.post("/FinishedGoodsInventory/addSelectWarehousing",flowData.value).then((res) => {
              if(res.code==200 && res.data===true){
              if(res.code==200 && res.data==="true"){
                ElMessage.success(t('productStock.receivedSuccessfully'))
                router.push({path:'/main/productStock/CreateProductStock',query:{random:Math.random()}})
              }else if(res.data==="false1"){
                ElMessage.warning("库存数量不对请刷新界面")
              }else if(res.data==="false2"){
                ElMessage.warning("数据不存在")
              }else{
                ElMessage.warning(t('productStock.entryFailure'))
              }
north-glass-erp/northglass-erp/src/views/mm/mainProductStock/FinishedProductOut.vue
@@ -286,10 +286,14 @@
              orderDetail: selectRecords
            })
            request.post("/FinishedGoodsInventory/addDeliveryDetail", orderDetailData.value).then((res) => {
              if (res.code == 200 && res.data===true) {
              if (res.code == 200 && res.data==="true") {
                ElMessage.success(t('productStock.deliverySuccessful'))
                router.push({path: '/main/productStock/FinishedProductOut', query: {random: Math.random()}})
              } else {
              }else if (res.data==="false1") {
                ElMessage.warning("发货单已出库请刷新界面")
              }else if (res.data==="false2") {
                ElMessage.warning("发货单库存数不存在")
              }else {
                ElMessage.warning(t('productStock.deliveryFailed'))
              }
            }).catch((err)=>{
north-glass-erp/northglass-erp/src/views/pp/processCard/AddProcessCard.vue
@@ -740,6 +740,7 @@
    if ($grid) {
      switch (code) {
        case 'saveFlowCard': {
          gridLeftOptions.toolbarConfig.buttons[0].disabled=true
          const $table = xGridLeft.value
          const $tableRight = xGrid.value
          if ($table) {
north-glass-erp/northglass-erp/src/views/pp/processCard/PrintCustomLabel1.vue
@@ -33,32 +33,57 @@
const type = route.query.type
const faceOrientation = route.query.faceOrientation
const lableType = route.query.lableType
const printType=route.query.printType
onMounted(() => {
      request.post(`/processCard/getSelectPrintCustomLabel/${type}/1`, data.value).then((res) => {
        if (res.code == 200) {
          produceList.value = deepClone(res.data.title)
          list.value = deepClone(res.data.data)
          const data = produceList.value[0].value
          dataList = JSON.parse(`[${data}]`);
          labelList = dataList[0]
          for (let i = 0; i < list.value.length; i++) {
            let count= list.value[i].data.length
            for (let j = 0; j < count; j++) {
              for (let k = 0; k < list.value[i].data[j].quantity; k++){
                lastList.value.push(list.value[i].data[j])
              }
  console.log(printType)
  if(printType==1){
    request.post(`/processCard/getSelectPrintCustomLabel/${type}/1`, data.value).then((res) => {
      if (res.code == 200) {
        produceList.value = deepClone(res.data.title)
        list.value = deepClone(res.data.data)
        const data = produceList.value[0].value
        dataList = JSON.parse(`[${data}]`);
        labelList = dataList[0]
        for (let i = 0; i < list.value.length; i++) {
          let count= list.value[i].data.length
          for (let j = 0; j < count; j++) {
            for (let k = 0; k < list.value[i].data[j].quantity; k++){
              lastList.value.push(list.value[i].data[j])
            }
          }
        } else {
          ElMessage.warning(res.msg)
          router.push("/login")
        }
      })
      } else {
        ElMessage.warning(res.msg)
        router.push("/login")
      }
    })
  }else if(printType==2){
    request.post(`/processCard/getSelectPrintCustomLabelDetails/${type}/1`, data.value).then((res) => {
      if (res.code == 200) {
        produceList.value = deepClone(res.data.title)
        list.value = deepClone(res.data.data)
        const data = produceList.value[0].value
        dataList = JSON.parse(`[${data}]`);
    }
        labelList = dataList[0]
)
        for (let i = 0; i < list.value.length; i++) {
          let count = list.value[i].data.length
          for (let j = 0; j < count; j++) {
            for (let k = 0; k < list.value[i].data[j].quantity; k++) {
              lastList.value.push(list.value[i].data[j])
            }
          }
        }
      } else {
        ElMessage.warning(res.msg)
      }
    })
  }
})
// 打印方法
north-glass-erp/northglass-erp/src/views/pp/processCard/PrintCustomLabelSemi1.vue
@@ -33,32 +33,56 @@
const type = route.query.type
const faceOrientation = route.query.faceOrientation
const lableType = route.query.lableType
const printType=route.query.printType
onMounted(() => {
      request.post(`/processCard/getSelectPrintCustomLabel/${type}/1`, data.value).then((res) => {
        if (res.code == 200) {
          produceList.value = deepClone(res.data.title)
          list.value = deepClone(res.data.data)
          const data = produceList.value[0].value
          dataList = JSON.parse(`[${data}]`);
          labelList = dataList[0]
          for (let i = 0; i < list.value.length; i++) {
            let count= list.value[i].data.length
            for (let j = 0; j < count; j++) {
              for (let k = 0; k < list.value[i].data[j].quantity; k++){
                lastList.value.push(list.value[i].data[j])
              }
  if (printType == 1) {
    request.post(`/processCard/getSelectPrintCustomLabel/${type}/1`, data.value).then((res) => {
      if (res.code == 200) {
        produceList.value = deepClone(res.data.title)
        list.value = deepClone(res.data.data)
        const data = produceList.value[0].value
        dataList = JSON.parse(`[${data}]`);
        labelList = dataList[0]
        for (let i = 0; i < list.value.length; i++) {
          let count = list.value[i].data.length
          for (let j = 0; j < count; j++) {
            for (let k = 0; k < list.value[i].data[j].quantity; k++) {
              lastList.value.push(list.value[i].data[j])
            }
          }
        } else {
          ElMessage.warning(res.msg)
          router.push("/login")
        }
      })
      } else {
        ElMessage.warning(res.msg)
        router.push("/login")
      }
    })
    }
  }else if(printType==2){
    request.post(`/processCard/getSelectPrintCustomLabelDetails/${type}/1`, data.value).then((res) => {
      if (res.code == 200) {
        produceList.value = deepClone(res.data.title)
        list.value = deepClone(res.data.data)
        const data = produceList.value[0].value
        dataList = JSON.parse(`[${data}]`);
)
        labelList = dataList[0]
        for (let i = 0; i < list.value.length; i++) {
          let count = list.value[i].data.length
          for (let j = 0; j < count; j++) {
            for (let k = 0; k < list.value[i].data[j].quantity; k++) {
              lastList.value.push(list.value[i].data[j])
            }
          }
        }
      } else {
        ElMessage.warning(res.msg)
      }
    })
  }
})
// 打印方法
@@ -161,7 +185,7 @@
  height: 35px;
}
.row1 span {
  font-size: 14pt;
  font-size: 15pt;
}
.row2 {
north-glass-erp/northglass-erp/src/views/pp/processCard/PrintCustomLabelSemi2.vue
@@ -33,29 +33,49 @@
const type = route.query.type
const faceOrientation = route.query.faceOrientation
const lableType = route.query.lableType
const printType=route.query.printType
onMounted(() => {
  request.post(`/processCard/getSelectPrintLabel1`,data.value).then((res) => {
    if (res.code == 200) {
      produceList.value = deepClone(res.data.data)
      for (let i = 0; i < produceList.value.length; i++) {
        let count= produceList.value[i].data.length
        for (let j = 0; j < count; j++) {
          for (let k = 0; k < produceList.value[i].data[j].quantity; k++){
            labelList.value.push(produceList.value[i].data[j])
  if (printType == 1) {
    request.post(`/processCard/getSelectPrintLabel1`, data.value).then((res) => {
      if (res.code == 200) {
        produceList.value = deepClone(res.data.data)
        for (let i = 0; i < produceList.value.length; i++) {
          let count = produceList.value[i].data.length
          for (let j = 0; j < count; j++) {
            for (let k = 0; k < produceList.value[i].data[j].quantity; k++) {
              labelList.value.push(produceList.value[i].data[j])
            }
          }
        }
      } else {
        ElMessage.warning(res.msg)
        router.push("/login")
      }
    } else {
      ElMessage.warning(res.msg)
      router.push("/login")
    }
  })
    })
    }
  }else if(printType==2){
    request.post(`/processCard/getSelectPrintLabelDetails`, data.value).then((res) => {
      if (res.code == 200) {
        produceList.value = deepClone(res.data.data)
        for (let i = 0; i < produceList.value.length; i++) {
          let count = produceList.value[i].data.length
          for (let j = 0; j < count; j++) {
            for (let k = 0; k < produceList.value[i].data[j].quantity; k++) {
              labelList.value.push(produceList.value[i].data[j])
            }
)
          }
        }
      } else {
        ElMessage.warning(res.msg)
        router.push("/login")
      }
    })
  }
})
// 打印方法
@@ -163,7 +183,7 @@
  height: 35px;
}
.row1 span {
  font-size: 14pt;
  font-size: 15pt;
}
.row2 {
  font-size: 12pt;
north-glass-erp/northglass-erp/src/views/pp/processCard/PrintFlowCard.vue
@@ -414,7 +414,10 @@
              id += selectRecords[i].id + "|"
            }
          }
          router.push({path: '/main/processCard/PrintLabel', query: {printList: JSON.stringify(selectRecords)}})
          router.push({
            path: '/main/processCard/PrintLabel',
            query: {printList: JSON.stringify(selectRecords),printType:1}
          })
          break
        }
@@ -434,7 +437,7 @@
          }
          router.push({
            path: '/main/processCard/PrintCustomLabelSemi2',
            query: {printList: JSON.stringify(selectRecords)}
            query: {printList: JSON.stringify(selectRecords),printType:1}
          })
          break
@@ -506,7 +509,8 @@
                  type: type,
                  faceOrientation: faceOrientation,
                  lableType: lableTypes,
                  printList: JSON.stringify(selectRecords)
                  printList: JSON.stringify(selectRecords),
                  printType:1
                }
              })
            }
@@ -525,7 +529,8 @@
                  type: type,
                  faceOrientation: faceOrientation,
                  lableType: lableTypes,
                  printList: JSON.stringify(selectRecords)
                  printList: JSON.stringify(selectRecords),
                  printType:1
                }
              })
            }
@@ -536,7 +541,8 @@
                type: type,
                faceOrientation: faceOrientation,
                lableType: lableTypes,
                printList: JSON.stringify(selectRecords)
                printList: JSON.stringify(selectRecords),
                printType:1
              }
            })
north-glass-erp/northglass-erp/src/views/pp/processCard/PrintFlowCardDetails.vue
@@ -35,7 +35,7 @@
const printVisible = ref(false)
let selectRecords = ref(null)
let titleStyleVisible = ref(false)
let lastList = ref([])
const selectRecordsData = ref({
  printList: []
})
@@ -125,7 +125,18 @@
    value: '1',
    label: t('processCard.finishedProductLabel'),
  },
  /*  {
      value: '2',
      label: t('processCard.halfProductLabel'),
    },*/
  {
    value: `${company.printLabel.labelValue}`,
    label: `${company.printLabel.labelType}`,
  },
  {
    value: `${company.printLabel.labelValue3}`,
    label: `${company.printLabel.labelType3}`,
  },
]
let hidePrintLabels = company.printLabel.hideButton;
@@ -321,8 +332,8 @@
      {code: 'customLabel', name: t('processCard.customLabelPrinting'), status: 'primary'},
      {code: 'printLabel', name: t('processCard.labelPrinting'), status: 'primary'},
      {code: 'printLabel2', name: t('processCard.labelPrinting2'), status: 'primary'},
      {code: 'printLabel3', name: '标签打印2', status: 'primary'},
      {code: 'printTest', name: "测试打印", status: 'primary'},
      {code: 'printLabel3', name: '成品打印2', status: 'primary'},
      {code: 'printTest', name: "可编辑打印", status: 'primary'},
      // {code: 'printLike', name: "同配置打印", status: 'primary'},
    ],
    // import: false,
@@ -400,7 +411,10 @@
              id += selectRecords[i].id + "|"
            }
          }
          router.push({path: '/main/processCard/PrintLabel', query: {printList: JSON.stringify(selectRecords)}})
          router.push({
            path: '/main/processCard/PrintLabel',
            query: {printList: JSON.stringify(selectRecords),printType:2}
          })
          break
        }
@@ -420,7 +434,7 @@
          }
          router.push({
            path: '/main/processCard/PrintCustomLabelSemi2',
            query: {printList: JSON.stringify(selectRecords)}
            query: {printList: JSON.stringify(selectRecords),printType:2}
          })
          break
@@ -472,21 +486,23 @@
            }
          }
          if (lableTypes == 1) {
            console.log(company.label)
            labelRow.value.list = JSON.stringify(selectRecords)
            labelRow.value.faceOrientation = faceOrientation
            labelRow.value.type = type
            labelRow.value.lableType = lableTypes
            lastList.value = []
            if (company.label === 1) {
              dialogTableVisibleLabel.value = true
            } else if (company.label === 2) {
              router.push({
                path: '/main/processCard/PrintCustomLabel',
                path: '/main/processCard/PrintCustomLabelCZ',
                query: {
                  type: type,
                  faceOrientation: faceOrientation,
                  lableType: lableTypes,
                  printList: JSON.stringify(selectRecords)
                  printList: JSON.stringify(selectRecords),
                  printType:2
                }
              })
            }
@@ -496,16 +512,18 @@
            labelRow.value.faceOrientation = faceOrientation
            labelRow.value.type = type
            labelRow.value.lableType = lableTypes
            lastList.value = []
            if (company.label === 1) {
              dialogTableVisibleCustomLabel.value = true
            } else if (company.label === 2) {
              router.push({
                path: '/main/processCard/PrintCustomLabelSemi',
                path: '/main/processCard/PrintCustomLabelSemiCZ',
                query: {
                  type: type,
                  faceOrientation: faceOrientation,
                  lableType: lableTypes,
                  printList: JSON.stringify(selectRecords)
                  printList: JSON.stringify(selectRecords),
                  printType:2
                }
              })
            }
@@ -516,7 +534,8 @@
                type: type,
                faceOrientation: faceOrientation,
                lableType: lableTypes,
                printList: JSON.stringify(selectRecords)
                printList: JSON.stringify(selectRecords),
                printType:2
              }
            })
@@ -627,7 +646,7 @@
    if (hidePrintLabels == 'true') {
      return button.code !== 'printLabel' && button.code !== 'printLabel2';
    } else {
      return true && button.code !== 'printLike'; // 显示该按钮
      return true && button.code !== 'printLike' && button.code !== 'printLabel3'&& button.code !== 'printTest'; // 显示该按钮
    }
  })
}
@@ -759,6 +778,7 @@
        <el-button v-print="printContentLabel" :icon="Printer" circle/>
      </template>
      <print-custom-label id="childLabel"
                          :lastList = 'lastList'
                          :faceOrientation="labelRow.faceOrientation"
                          :lableType="labelRow.lableType"
                          :list="labelRow.list"
north-glass-erp/northglass-erp/src/views/pp/processCard/PrintLabel.vue
@@ -24,8 +24,10 @@
const {currentRoute} = useRouter()
const route = currentRoute.value
const printType=route.query.printType
projectNo.value = route.query.projectNo
type.value = route.query.type
onMounted(() => {
  if(projectNo.value!=null){
    request.post(`/processCard/getSelectPrintLabel/${projectNo.value}/${type.value}`).then((res) => {
@@ -37,25 +39,48 @@
      }
    })
  }else{
    data.value.printList = JSON.parse(route.query.printList)
    request.post(`/processCard/getSelectPrintLabel1`,data.value).then((res) => {
      if (res.code == 200) {
        produceList.value = deepClone(res.data.data)
        for (let i = 0; i < produceList.value.length; i++) {
         let count= produceList.value[i].data.length
          for (let j = 0; j < count; j++) {
            for (let k = 0; k < produceList.value[i].data[j].quantity; k++){
              labelList.value.push(produceList.value[i].data[j])
    console.log(printType)
    if (printType == 1) {
      data.value.printList = JSON.parse(route.query.printList)
      request.post(`/processCard/getSelectPrintLabel1`,data.value).then((res) => {
        if (res.code == 200) {
          produceList.value = deepClone(res.data.data)
          for (let i = 0; i < produceList.value.length; i++) {
            let count= produceList.value[i].data.length
            for (let j = 0; j < count; j++) {
              for (let k = 0; k < produceList.value[i].data[j].quantity; k++){
                labelList.value.push(produceList.value[i].data[j])
              }
            }
          }
        } else {
          ElMessage.warning(res.msg)
          router.push("/login")
        }
      } else {
        ElMessage.warning(res.msg)
        router.push("/login")
      }
    })
      })
    }else if(printType==2){
      data.value.printList = JSON.parse(route.query.printList)
      request.post(`/processCard/getSelectPrintLabelDetails`, data.value).then((res) => {
        if (res.code == 200) {
          produceList.value = deepClone(res.data.data)
          for (let i = 0; i < produceList.value.length; i++) {
            let count = produceList.value[i].data.length
            for (let j = 0; j < count; j++) {
              for (let k = 0; k < produceList.value[i].data[j].quantity; k++) {
                labelList.value.push(produceList.value[i].data[j])
              }
            }
          }
        } else {
          ElMessage.warning(res.msg)
          router.push("/login")
        }
      })
    }
  }
@@ -193,7 +218,7 @@
  height: 20px;
}
.row1 span {
  font-size: 8pt;
  font-size: 10pt;
  font-weight: bold;
}
north-glass-erp/northglass-erp/src/views/pp/processCard/PrintLabel1.vue
@@ -32,32 +32,56 @@
const type = route.query.type
const faceOrientation = route.query.faceOrientation
const lableType = route.query.lableType
const printType=route.query.printType
onMounted(() => {
      request.post(`/processCard/getSelectPrintCustomLabel/${type}/1`, data.value).then((res) => {
        if (res.code == 200) {
          produceList.value = deepClone(res.data.title)
          list.value = deepClone(res.data.data)
          const data = produceList.value[0].value
          dataList = JSON.parse(`[${data}]`);
          labelList = dataList[0]
          for (let i = 0; i < list.value.length; i++) {
            let count= list.value[i].data.length
            for (let j = 0; j < count; j++) {
              for (let k = 0; k < list.value[i].data[j].quantity; k++){
                lastList.value.push(list.value[i].data[j])
              }
  if (printType == 1) {
    request.post(`/processCard/getSelectPrintCustomLabel/${type}/1`, data.value).then((res) => {
      if (res.code == 200) {
        produceList.value = deepClone(res.data.title)
        list.value = deepClone(res.data.data)
        const data = produceList.value[0].value
        dataList = JSON.parse(`[${data}]`);
        labelList = dataList[0]
        for (let i = 0; i < list.value.length; i++) {
          let count = list.value[i].data.length
          for (let j = 0; j < count; j++) {
            for (let k = 0; k < list.value[i].data[j].quantity; k++) {
              lastList.value.push(list.value[i].data[j])
            }
          }
        } else {
          ElMessage.warning(res.msg)
          router.push("/login")
        }
      })
      } else {
        ElMessage.warning(res.msg)
        router.push("/login")
      }
    })
    }
  }else if(printType==2){
    request.post(`/processCard/getSelectPrintCustomLabelDetails/${type}/1`, data.value).then((res) => {
      if (res.code == 200) {
        produceList.value = deepClone(res.data.title)
        list.value = deepClone(res.data.data)
        const data = produceList.value[0].value
        dataList = JSON.parse(`[${data}]`);
)
        labelList = dataList[0]
        for (let i = 0; i < list.value.length; i++) {
          let count = list.value[i].data.length
          for (let j = 0; j < count; j++) {
            for (let k = 0; k < list.value[i].data[j].quantity; k++) {
              lastList.value.push(list.value[i].data[j])
            }
          }
        }
      } else {
        ElMessage.warning(res.msg)
      }
    })
  }
})
// 打印方法
north-glass-erp/northglass-erp/src/views/pp/report/CrossProcessBreaking.vue
@@ -14,7 +14,7 @@
    {field: 'thisProcess',width: 120, title: t('reportingWorks.reportingProcess'), sortable: true,showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'responsibleProcess',width: 120, title: t('reportingWorks.responsibleProcess'), sortable: true,showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'responsibleTeam', width: 130,title: t('reportingWorks.responsibleTeam'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'breakageType', width: 100,title: t('reportingWorks.breakageType'), sortable: true,showOverflow:"ellipsis"},
    {field: 'breakageType', width: 120,title: t('reportingWorks.breakageType'), sortable: true,showOverflow:"ellipsis",filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
    {field: 'breakageReason', width: 100,title: t('reportingWorks.breakageReason'), sortable: true,showOverflow:"ellipsis"},
    {field: 'breakageQuantity', width: 100,title: t('reportingWorks.quantityBroken'), sortable: true},
    {field: 'area',width: 100, title: t('reportingWorks.wornArea'), sortable: true},
north-glass-erp/northglass-erp/src/views/pp/reportingWorks/AddReportingWork.vue
@@ -103,6 +103,10 @@
        titleSelectJson.value = res.data.basic
        layer= res.data.layer
        //添加补片状态列
        let column = {field: 'patchStatusOther', width: 90,title: res.data.title}
        gridOptions.columns.push(column)
        const s01Values = [];
        for (let i = 0; i < res.data.reportingWorkDetails.length; i++) {
          const s01Values = [];
@@ -145,7 +149,6 @@
})
const data = [{id:1,num:2},{id:1,num:3},{id:2,num:2},{id:1,num:2}];
//表尾求和
const sumNum = (list, field) => {
@@ -428,12 +431,12 @@
        }
        case 'update':  {
          //根据补片状态判断是否能修改
          request.post(`/reportingWork/getPatchCondition/${route.query.reportingWorkId}`).then(async (res) => {
            if (res.code == 200) {
              if (res.data > 0) {
                ElMessage.error("该报工包含已补片数据,不可修改!")
                return
              } else {
          // request.post(`/reportingWork/getPatchCondition/${route.query.reportingWorkId}`).then(async (res) => {
          //   if (res.code == 200) {
          //     if (res.data > 0) {
          //       ElMessage.error("该报工包含已补片数据,不可修改!")
          //       return
          //     } else {
                getQuantity()
                const errMap = await $grid.validate(true)
                if (errMap) {
@@ -441,11 +444,11 @@
                  return
                }
                saveReportingWork(0, 'update')
              }
            } else {
              ElMessage.warning(res.msg)
            }
          })
           //   }
          //   } else {
          //     ElMessage.warning(res.msg)
          //   }
          // })
          break
        }
@@ -463,7 +466,9 @@
    const { rows, column, cell } = params; // 解构获取行、列和单元格信息
    //点击次破数量时打开明细界面
    if(column.field=="breakageQuantity"){
      brokenVisible.value = true
      if (row.patchStatusOther!="已补片"){
        brokenVisible.value = true
      }
    }
  },
  menuClick({menu, row, column}) {
@@ -788,13 +793,12 @@
//第一次加载数据
let groupChangeProcess = ref(false)//用于本班组显示问题
request.post(`/reportingWork/selectProcess`).then((res) => {
request.post(`/reportingWork/selectProcess/${user.user.userId}`).then((res) => {
  if (res.code == 200) {
    titleSelectJson.value.processType = res.data.process
    if(user.user.address!==null && user.user.address!==''){
      titleUploadData.value.thisProcess = user.user.address
      titleUploadData.value.teamsGroupsName = user.user.userName
      console.log(user.user.address)
      groupChangeProcess.value = true
      if (user.user.address==='技术部多曲' || user.user.address==='夹胶'){
        groupChangeProcess.value = false
@@ -1295,6 +1299,16 @@
    return row?.rowClass
}
const editConfigDisable = reactive({
  trigger: 'click',
  mode: 'cell',
  beforeEditMethod ({ row }) {
    if (row.patchStatusOther === '已补片') {
      return false
    }
    return true
  }
})
</script>
@@ -1472,6 +1486,7 @@
          v-on="gridEvents"
          @edit-closed="editClosedEvent"
          :cell-class-name="cellClassName"
          :edit-config="editConfigDisable"
      >
north-glass-erp/src/main/java/com/example/erp/controller/mm/MaterialInventoryController.java
@@ -28,12 +28,9 @@
    @SaCheckPermission("CreateOutbound.add")
    @PostMapping("/saveMaterialOutbound")
    public Result saveMaterialOutbound( @RequestBody Map<String,Object>  object){
        if(materialInventoryService.saveMaterialOutbound(object)){
            return Result.seccess();
        }else {
            throw new ServiceException(Constants.Code_500,"保存失败");
        }
        return Result.seccess(materialInventoryService.saveMaterialOutbound(object));
    }
    @ApiOperation("物料新增接口")
north-glass-erp/src/main/java/com/example/erp/controller/pp/ProcessCardController.java
@@ -201,6 +201,12 @@
        return Result.seccess(flowCardService.getSelectPrintLabelSv1(object));
    }
    @ApiOperation("打印标签明细查询接口")
    @PostMapping("/getSelectPrintLabelDetails")
    public Result getSelectPrintLabelDetails(@RequestBody Map<String, Object> object) {
        return Result.seccess(flowCardService.getSelectPrintLabelDetails(object));
    }
    @ApiOperation("打印自定义标签数据查询接口")
    @PostMapping("/getSelectPrintCustomLabel/{type}/{lableType}")
    public Result getSelectPrintCustomLabel( @PathVariable String type,
north-glass-erp/src/main/java/com/example/erp/controller/pp/ReportingWorkController.java
@@ -40,9 +40,9 @@
        return  Result.seccess(reportingWorkService.AddSelectLastWorkSv(processIdStr,technologyStr,process,reportType));
    }
    @ApiOperation("查询工序")
    @PostMapping  ("/selectProcess")
    public Result SelectProcess()  {
        return  Result.seccess(reportingWorkService.SelectProcessSv());
    @PostMapping  ("/selectProcess/{userId}")
    public Result SelectProcess(@PathVariable String userId)  {
        return  Result.seccess(reportingWorkService.SelectProcessSv(userId));
    }
    @ApiOperation("报工新增")
north-glass-erp/src/main/java/com/example/erp/entity/pp/ReportingWorkDetail.java
@@ -69,6 +69,10 @@
    //返工面积
   // private double reworkArea;
    //报工修改用补片状态
    @TableField(select = false,exist= false)
    private String patchStatusOther;
    //次破列表
    @TableField(select = false,exist= false)
    private List<DamageDetails>
north-glass-erp/src/main/java/com/example/erp/mapper/mm/FinishedGoodsInventoryMapper.java
@@ -3,6 +3,7 @@
import com.example.erp.entity.mm.FinishedGoodsInventory;
import com.example.erp.entity.mm.FinishedOperateLog;
import com.example.erp.entity.pp.FlowCard;
import com.example.erp.entity.sd.DeliveryDetail;
import com.example.erp.entity.sd.Order;
import com.example.erp.entity.sd.OrderDetail;
import com.example.erp.entity.sd.Product;
@@ -128,6 +129,11 @@
    Boolean updateOrderInventory(@Param("orderDetail") OrderDetail orderDetail);
    FlowCard findFlowCard(FlowCard flowCard);
    DeliveryDetail findDeliverydetail(@Param("orderId") String orderId,
                                      @Param("orderNumber") Integer orderNumber,@Param("deliveryId") String deliveryId);
}
north-glass-erp/src/main/java/com/example/erp/mapper/mm/MaterialInventoryMapper.java
@@ -208,4 +208,6 @@
    List<Map<String,Object>> getPrintCreateOutboundDetail(String materialOutboundId);
    MaterialInventory getMaterialInventoryById(@Param("id") Long id);
}
north-glass-erp/src/main/java/com/example/erp/mapper/pp/FlowCardMapper.java
@@ -88,6 +88,8 @@
    List<Map<String, String>> getPrintLabel1(String processId,Integer technologyNumber);
    List<Map<String, String>> getPrintLabelDetail(String processId,Integer orderNumber);
    List<Map<String, String>> printFlowCardDetailsMp(String processId, String technologyNumber, String process, FlowCard flowCard);
    Boolean printSortMp(String processId, Integer orderNumber, Integer technologyNumber, Integer sort);
north-glass-erp/src/main/java/com/example/erp/mapper/pp/ReportingWorkMapper.java
@@ -88,4 +88,10 @@
    Boolean updateRWPatchNum(String reportingWorkId, Integer patchNum);
    Boolean updateRWDPatchNum(String reportingWorkId, String orderSort, Integer technologyNumber, Integer patchNum);
    String selectUserProcess(String userId);
    List<Map<String,String>> getSelectProcessJiajiao();
    List<Map<String,String>> getSelectProcessDuoqu();
}
north-glass-erp/src/main/java/com/example/erp/service/mm/FinishedGoodsInventoryService.java
@@ -8,6 +8,7 @@
import com.example.erp.entity.mm.FinishedGoodsInventory;
import com.example.erp.entity.mm.FinishedOperateLog;
import com.example.erp.entity.pp.FlowCard;
import com.example.erp.entity.sd.DeliveryDetail;
import com.example.erp.entity.sd.Order;
import com.example.erp.entity.sd.OrderDetail;
import com.example.erp.entity.userInfo.Log;
@@ -66,8 +67,8 @@
        return map;
    }
    public Boolean addSelectWarehousing(Map<String,Object> object) {
        boolean saveState = true;
    public String addSelectWarehousing(Map<String,Object> object) {
        String saveState = "true";
        Object savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint();
        try {
            //定义前端传输的数据
@@ -110,42 +111,51 @@
                    Integer finishedGoodsInventorycount = finishedGoodsInventoryMapper.findOrderNumberdcount(flowCard.getOrder().getOrderId(),flowCard.getOrderNumber());
                    Integer ordersum = finishedGoodsInventoryMapper.findOrderQuantity(flowCard.getOrder().getOrderId());
                    Integer ordernumbersum = finishedGoodsInventoryMapper.findOrderNumberdsum(flowCard.getOrder().getOrderId());
                    /*System.out.println("订单总数:" + ordersum + "已入库数量:" + ordernumbersum + "准备入库数量" + flowCard.getInventoryQuantity());*/
                    if (finishedGoodsInventorycount > 0) {
                        //修改库存表入库数量
                        finishedGoodsInventoryMapper.updateInventory(flowCard,storageRegion, remark);
                        //修改流程卡表入库数量
                        finishedGoodsInventoryMapper.updateflowcard(flowCard);
                        //修改订单表入库状态
                        finishedGoodsInventoryMapper.updateOrderWarehousingState(flowCard.getOrder().getOrderId(),1);
                        //修改订单明细表入库数量
                        finishedGoodsInventoryMapper.updateIntOrderNumberConut(flowCard.getOrder().getOrderId(),flowCard.getOrderNumber(), Long.valueOf(flowCard.getInventoryQuantity()));
                        //判断订单是否全部入库
                        if (ordersum == (ordernumbersum + flowCard.getInventoryQuantity())) {
                            //修改订单表入库状态
                            finishedGoodsInventoryMapper.updateOrderWarehousingState(flowCard.getOrder().getOrderId(),2);
                        }
                    } else {
                        if (finishedGoodsInventoryMapper.insertFinishedGoodsInventory(flowCard, storageRegion, remark)) {
                    FlowCard flowCard1=finishedGoodsInventoryMapper.findFlowCard(flowCard);
                    //判断库存数是否大于未入库数
                    if(flowCard1.getReceivedQuantity()+flowCard.getInventoryQuantity()<=flowCard1.getInventoryQuantity()){
                        /*System.out.println("订单总数:" + ordersum + "已入库数量:" + ordernumbersum + "准备入库数量" + flowCard.getInventoryQuantity());*/
                        if (finishedGoodsInventorycount > 0) {
                            //修改库存表入库数量
                            finishedGoodsInventoryMapper.updateInventory(flowCard,storageRegion, remark);
                            //修改流程卡表入库数量
                            finishedGoodsInventoryMapper.updateflowcard(flowCard);
                            //修改订单表入库状态
                            finishedGoodsInventoryMapper.updateOrderWarehousingState(flowCard.getOrder().getOrderId(),1);
                            //修改订单明细表入库数量
                            finishedGoodsInventoryMapper.updateIntOrderNumberConut(flowCard.getOrder().getOrderId(),flowCard.getOrderNumber(), Long.valueOf(flowCard.getInventoryQuantity()));
                            //判断订单是否全部入库
                            if (ordersum == (ordernumbersum + flowCard.getInventoryQuantity())) {
                                //修改订单表入库状态
                                finishedGoodsInventoryMapper.updateOrderWarehousingState(flowCard.getOrder().getOrderId(),2);
                            }else{
                                //修改订单表入库状态
                                finishedGoodsInventoryMapper.updateOrderWarehousingState(flowCard.getOrder().getOrderId(),1);
                            }
                        } else {
                            if (finishedGoodsInventoryMapper.insertFinishedGoodsInventory(flowCard, storageRegion, remark)) {
                                //修改流程卡表入库数量
                                finishedGoodsInventoryMapper.updateflowcard(flowCard);
                                //修改订单明细表入库数量
                                finishedGoodsInventoryMapper.updateIntOrderNumberConut(flowCard.getOrder().getOrderId(),flowCard.getOrderNumber(), Long.valueOf(flowCard.getInventoryQuantity()));
                                if (ordersum == (ordernumbersum + flowCard.getInventoryQuantity())) {
                                    //修改订单表入库状态
                                    finishedGoodsInventoryMapper.updateOrderWarehousingState(flowCard.getOrder().getOrderId(),2);
                                }else{
                                    //修改订单表入库状态
                                    finishedGoodsInventoryMapper.updateOrderWarehousingState(flowCard.getOrder().getOrderId(),1);
                                }
                            }
                        }
                    }else{
                        TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);
                        return "false1";
                    }
                }
            }else{
                return false;
                TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);
                return "false2";
            }
        } catch (Exception e) {
@@ -155,7 +165,7 @@
            sysError.setError(e+Arrays.toString(e.getStackTrace()));
            sysError.setFunc("addSelectWarehousing");
            sysErrorService.insert(sysError);
            saveState = false;
            saveState = "false";
        }
@@ -173,8 +183,8 @@
    }
    public Boolean addDeliveryDetail(Map<String,Object> object) {
        boolean saveState = true;
    public String addDeliveryDetail(Map<String,Object> object) {
        String saveState = "true";
        //设置回滚点
        Object savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint();
        try {
@@ -212,36 +222,45 @@
                        deliverydetailsum=0;
                    }
                    DeliveryDetail deliveryDetail=finishedGoodsInventoryMapper.findDeliverydetail(orderDetail.getDeliveryDetail().getOrderId(),orderDetail.getDeliveryDetail().getOrderNumber(),orderDetail.getDeliveryDetail().getDeliveryId());
                    /*System.out.println("订单总数:" + ordersum + "订单库存数:" + orderNumberdsum + "准备出库数量" +
                            orderDetail.getWarehouseNum()+ "发货数量" + orderDetail.getDeliveryDetail().getQuantity()+ "发货总数" +
                            deliverysum+ "已发数量" + deliverydetailsum);*/
                    //判断发货单的库存是否存在
                    if (finishedGoodsInventorycount > 0) {
                        if(orderDetail.getWarehouseNum()>=orderDetail.getDeliveryDetail().getQuantity()){
                            //修改库存表库存数量
                            finishedGoodsInventoryMapper.updateInventoryInventoryOut(orderDetail.getDeliveryDetail().getOrderId(),orderDetail.getDeliveryDetail().getOrderNumber(),orderDetail.getDeliveryDetail().getQuantity());
                            //修改发货明细表状态
                            finishedGoodsInventoryMapper.updateDeliveryDetailState(orderDetail.getDeliveryDetail().getOrderId(),orderDetail.getDeliveryDetail().getOrderNumber(),orderDetail.getDeliveryDetail().getDeliveryId(),0);
                            //修改发货表状态
                            finishedGoodsInventoryMapper.updateDeliveryDeliveryState(orderDetail.getDeliveryDetail().getDeliveryId(),1);
                            //修改订单明细表发货数量
                            finishedGoodsInventoryMapper.updateOutOrderNumberConut(orderDetail.getDeliveryDetail().getOrderId(),orderDetail.getDeliveryDetail().getOrderNumber(),orderDetail.getDeliveryDetail().getQuantity());
                            //修改订单表发货状态
                            finishedGoodsInventoryMapper.updateOrderDeliveryState(orderDetail.getDeliveryDetail().getOrderId(),1);
                            //判断订单是否全部发货
                            if (orderNumberdsum == orderDetail.getWarehouseNum()) {
                                //if (ordersum == (orderDeliveryQuantitySum + orderDetail.getWarehouseNum())) {
                                //修改订单表发货状态
                                finishedGoodsInventoryMapper.updateOrderDeliveryState(orderDetail.getDeliveryDetail().getOrderId(),2);
                            }
                            if (deliverysum==deliverydetailsum+orderDetail.getDeliveryDetail().getQuantity()) {
                        //判断发货单是否已出库
                        if(deliveryDetail==null){
                            if(orderDetail.getWarehouseNum()>=orderDetail.getDeliveryDetail().getQuantity()){
                                //修改库存表库存数量
                                finishedGoodsInventoryMapper.updateInventoryInventoryOut(orderDetail.getDeliveryDetail().getOrderId(),orderDetail.getDeliveryDetail().getOrderNumber(),orderDetail.getDeliveryDetail().getQuantity());
                                //修改发货明细表状态
                                finishedGoodsInventoryMapper.updateDeliveryDetailState(orderDetail.getDeliveryDetail().getOrderId(),orderDetail.getDeliveryDetail().getOrderNumber(),orderDetail.getDeliveryDetail().getDeliveryId(),0);
                                //修改发货表状态
                                finishedGoodsInventoryMapper.updateDeliveryDeliveryState(orderDetail.getDeliveryDetail().getDeliveryId(),2);
                                finishedGoodsInventoryMapper.updateDeliveryDeliveryState(orderDetail.getDeliveryDetail().getDeliveryId(),1);
                                //修改订单明细表发货数量
                                finishedGoodsInventoryMapper.updateOutOrderNumberConut(orderDetail.getDeliveryDetail().getOrderId(),orderDetail.getDeliveryDetail().getOrderNumber(),orderDetail.getDeliveryDetail().getQuantity());
                                //修改订单表发货状态
                                finishedGoodsInventoryMapper.updateOrderDeliveryState(orderDetail.getDeliveryDetail().getOrderId(),1);
                                //判断订单是否全部发货
                                if (orderNumberdsum == orderDetail.getWarehouseNum()) {
                                    //if (ordersum == (orderDeliveryQuantitySum + orderDetail.getWarehouseNum())) {
                                    //修改订单表发货状态
                                    finishedGoodsInventoryMapper.updateOrderDeliveryState(orderDetail.getDeliveryDetail().getOrderId(),2);
                                }
                                if (deliverysum==deliverydetailsum+orderDetail.getDeliveryDetail().getQuantity()) {
                                    //修改发货表状态
                                    finishedGoodsInventoryMapper.updateDeliveryDeliveryState(orderDetail.getDeliveryDetail().getDeliveryId(),2);
                                }
                            }
                        }else{
                            TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);
                            return "false1";
                        }
                    }else{
                        TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);
                        saveState = false;
                        return "false2";
                    }
                }
            }
@@ -253,7 +272,7 @@
            sysError.setError(e+Arrays.toString(e.getStackTrace()));
            sysError.setFunc("addDeliveryDetail");
            sysErrorService.insert(sysError);
            saveState = false;
            saveState = "false";
        }
        return saveState;
north-glass-erp/src/main/java/com/example/erp/service/mm/MaterialInventoryService.java
@@ -45,8 +45,8 @@
    @Autowired
    LogService logService;
    public Boolean saveMaterialOutbound(Map<String,Object> object) {
        boolean saveState = true;
    public String saveMaterialOutbound(Map<String,Object> object) {
        String saveState = "true";
        //设置回滚点
        Object savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint();
        String materialOutboundId = "";
@@ -67,7 +67,7 @@
                if (!materialOutboundDetailLists.isEmpty()) {
                    for (MaterialOutboundDetail materialOutboundDetail : materialOutboundDetailLists) {
                        //还原物料库存数
                        materialInventoryMapper.updateMaterialInventoryAvailableInt(materialOutboundDetail.getId(), materialOutboundDetail.getOutboundQuantity());
                        materialInventoryMapper.updateMaterialInventoryAvailableInt(materialOutboundDetail.getInventoryId(), materialOutboundDetail.getOutboundQuantity());
                        /*if(materialOutboundDetail.getUseId()!=null){
                            //还原优化工程库存数
                            materialInventoryMapper.updateMaterialInventoryAvailableOptInt(materialOutboundDetail.getUseId(), materialOutboundDetail.getOutboundQuantity());
@@ -95,12 +95,13 @@
            if (!materialOutboundDetailList.isEmpty()) {
                for (MaterialOutboundDetail materialOutboundDetail : materialOutboundDetailList) {
                    Integer materialOutboundDetailMaximum = materialInventoryMapper.getMaterialOutboundDetailMaximum(oddNumber);
                    //新增材料出库明细数据
                    materialInventoryMapper.insertMaterialOutboundDetail(materialOutboundDetail, oddNumber, materialOutboundDetailMaximum + 1);
                    //修改物料库存表出库数量
                    materialInventoryMapper.updateMaterialInventoryAvailableOut(materialOutboundDetail.getId(), materialOutboundDetail.getOutboundQuantity());
                    MaterialInventory materialInventory = materialInventoryMapper.getMaterialInventoryById(materialOutboundDetail.getId());
                    if(materialInventory.getAvailableQuantity()>=materialOutboundDetail.getOutboundQuantity()){
                        Integer materialOutboundDetailMaximum = materialInventoryMapper.getMaterialOutboundDetailMaximum(oddNumber);
                        //新增材料出库明细数据
                        materialInventoryMapper.insertMaterialOutboundDetail(materialOutboundDetail, oddNumber, materialOutboundDetailMaximum + 1);
                        //修改物料库存表出库数量
                        materialInventoryMapper.updateMaterialInventoryAvailableOut(materialOutboundDetail.getId(), materialOutboundDetail.getOutboundQuantity());
                    /*if(materialOutboundDetail.getUseId()!=null){
                        //修改优化工程表出库数量
                        materialInventoryMapper.updateMaterialInventoryAvailableOptOut(materialOutboundDetail.getUseId(), materialOutboundDetail.getOutboundQuantity());
@@ -108,6 +109,12 @@
                        //修改物料库存表出库数量
                        materialInventoryMapper.updateMaterialInventoryAvailableOut(materialOutboundDetail.getId(), materialOutboundDetail.getOutboundQuantity());
                    }*/
                    }else{
                        TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);
                        return "false1";
                    }
                }
@@ -122,7 +129,7 @@
            sysError.setError(e+Arrays.toString(e.getStackTrace()));
            sysError.setFunc("saveMaterialOutbound");
            sysErrorService.insert(sysError);
            saveState = false;
            saveState = "false1";
        }
        return saveState;
north-glass-erp/src/main/java/com/example/erp/service/pp/FlowCardService.java
@@ -407,6 +407,27 @@
        return map;
    }
    public Map<String, Object> getSelectPrintLabelDetails(Map<String, Object> object) {
        Map<String, Object> map = new HashMap<>();
        List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();//最终结果
        List<FlowCard> flowCardList = JSONArray.parseArray(JSONObject.toJSONString(object.get("printList")), FlowCard.class);
        if (!flowCardList.isEmpty()) {
            for (FlowCard flowCard : flowCardList) {
                // Integer count=flowCardMapper.getPrintLabelCount(flowCard.getProcessId(), flowCard.getTechnologyNumber());
                Map<String, Object> itemmap = new HashMap<>();
                // for (int i = 0; i < count; i++) {
                itemmap.put("data", flowCardMapper.getPrintLabelDetail(flowCard.getProcessId(), flowCard.getOrderNumber()));
                list.add(itemmap);
                //}
            }
        }
        map.put("data", list);
        return map;
    }
    public Map<String, Object> printFlowCardDetailsSv(String processId, String technologyNumber, String process, FlowCard flowCard) {
        Map<String, Object> map = new HashMap<>();
        map.put("data", flowCardMapper.printFlowCardDetailsMp(processId, technologyNumber,process, flowCard));
north-glass-erp/src/main/java/com/example/erp/service/pp/ReportingWorkService.java
@@ -25,7 +25,6 @@
import com.example.erp.service.userInfo.LogService;
import com.example.erp.service.userInfo.SysErrorService;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
@@ -178,9 +177,21 @@
    }
    //查询工序
    public Map<String, Object> SelectProcessSv() {
    public Map<String, Object> SelectProcessSv(String userId) {
        Map<String, Object> map = new HashMap<>();
        map.put("process", reportingWorkMapper.SelectProcessMp());
        String process = reportingWorkMapper.selectUserProcess(userId);
        if (process==null) {
            map.put("process", reportingWorkMapper.SelectProcessMp());
        }
        else {
            if (process.equals("夹胶")){
                map.put("process",reportingWorkMapper.getSelectProcessJiajiao() );
            }
            if (process.equals("技术部多曲")){
                map.put("process",reportingWorkMapper.getSelectProcessDuoqu() );
            }
        }
        return map;
    }
@@ -392,7 +403,7 @@
        //根据报工编号获取层
        map.put("layer", reportingWorkMapper.selectLayerByReportingWorkId(reportingWorkId));
        map.put("numberList", flowCardMapper.getGlassNumber(reportingWorkMapper.selectLayerByReportingWorkId(reportingWorkId),reportingWork.getProcessId()));
        map.put("title", "补片状态");
        return map;
    }
north-glass-erp/src/main/resources/mapper/mm/FinishedGoodsInventory.xml
@@ -885,6 +885,16 @@
        where order_number=#{orderDetail.orderNumber}  and order_id=#{orderDetail.orderId}
    </update>
    <select id="findFlowCard">
        select * from pp.flow_card
        where order_number=#{orderNumber} and process_id=#{processId} and order_id=#{order.orderId} group by process_id
    </select>
    <select id="findDeliverydetail">
        select * from sd.delivery_detail
        where order_number=#{orderNumber}  and order_id=#{orderId} and delivery_id=#{deliveryId} and delivery_detail_state=0
    </select>
north-glass-erp/src/main/resources/mapper/mm/MaterialInventory.xml
@@ -906,5 +906,12 @@
        where modd.material_outbound_id = #{materialOutboundId}
    </select>
    <select id="getMaterialInventoryById" >
        select
            *
        from mm.material_inventory mi
        where mi.id = #{id}
    </select>
</mapper>
north-glass-erp/src/main/resources/mapper/pp/FolwCard.xml
@@ -796,6 +796,38 @@
        group by od.order_number, od.width, od.height
    </select>
    <select id="getPrintLabelDetail">
        select o.order_id,
               o.project,
               o.customer_id,
               ogd.child_width                as width,
               ogd.child_height               as height,
               fc.quantity,
               od.order_number                as orderNumber,
               fc.technology_number           as technologyNumber,
               ogd.glass_child,
               ogd.process,
               c.customer_abbreviation        as customer_name,
               ifnull(od.processing_note, '') as processing_note,
               bgt.type_name,
               od.other_columns,
               od.building_number,
               od.bend_radius
        from sd.order as o
                 left join sd.order_detail as od on o.order_id = od.order_id
                 left join sd.order_glass_detail as ogd
                           on ogd.order_id = od.order_id and ogd.order_number = od.order_number
                 left join pp.flow_card as fc on o.order_id = fc.order_id and
                                                 od.order_number = fc.order_number and
                                                 fc.technology_number = ogd.technology_number
                 left join sd.product pt on pt.id = od.product_id
                 left join sd.customer c on c.id = o.customer_id
                 left join sd.basic_glass_type bgt on bgt.type_id = pt.type_id
        where fc.process_id = #{processId}
          and fc.order_number = #{orderNumber}
        group by od.order_number, od.width, od.height
    </select>
    <select id="printFlowCardDetailsMp">
        SELECT fc.process_id,
               fc.order_number,
@@ -1246,7 +1278,8 @@
               pl.patch_type,
               pl.patch_reason,
               pl.patch_processes,
               pl.responsible_team
               pl.responsible_team,
               pl.responsible_personnel
        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
@@ -1420,7 +1453,8 @@
               pl.rework_reason as patch_reason,
               pl.rework_processes as patch_processes,
               pl.responsible_team,
               pl.rework_team
               pl.rework_team,
               pl.responsible_personnel
        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
north-glass-erp/src/main/resources/mapper/pp/Report.xml
@@ -254,6 +254,9 @@
        <if test="crossProcessBreakingDTO.glassChild != null and crossProcessBreakingDTO.glassChild != ''">
            and ogd.glass_child regexp #{crossProcessBreakingDTO.glassChild}
        </if>
        <if test="crossProcessBreakingDTO.breakageType != null and crossProcessBreakingDTO.breakageType != ''">
            and dd.breakage_type regexp #{crossProcessBreakingDTO.breakageType}
        </if>
        GROUP BY dd.id
        order by dd.id desc
        limit #{offset},#{pageSize}
north-glass-erp/src/main/resources/mapper/pp/ReportingWork.xml
@@ -424,6 +424,8 @@
            ifnull(f.completed_quantity,0) as thisQuantitySum ,-- 本工序完工和
            if(c.quantity-f.completed_quantity = 0 ,true,false) as saveFlag,
            e.other_columns,
        IF(count(pl.id)>0,'已补片','') as patchStatusOther,
            <if test="nextProcess != null and nextProcess != ''">  -- 非最后一道工序
                ifnull(g.completed_quantity,0) as nextQuantitySum,  -- 后工序已完成
                if((f.completed_quantity
@@ -463,6 +465,8 @@
                and d.technology_number = c.technology_number
            left join sd.order_detail as e
                on e.order_id = d.order_id and e.order_number = d.order_number
              left join patch_log as pl on pl.reporting_work_id=b.reporting_work_id
              and pl.order_sort=a.order_number and pl.technology_number=a.technology_number
            left join (select sum(completed_quantity) as completed_quantity ,
                              rw.process_id,
@@ -513,9 +517,9 @@
               o.batch,
               rw.this_process,
               rw.this_completed_quantity,
               round(ogd.area * rw.this_completed_quantity,2) as completedArea,
               round(ogd.child_width*ogd.child_height * rw.this_completed_quantity/1000000,2) as completedArea,
               rw.this_worn_quantity,
               round(ogd.area * rw.this_worn_quantity,2)      as wornArea,
               round(ogd.child_width*ogd.child_height * rw.this_worn_quantity/1000000,2)      as wornArea,
               rw.device_name,
               rw.teams_groups_name,
               rw.reviewed_state,
@@ -882,4 +886,32 @@
        where reporting_work_id=#{reportingWorkId} and order_number = #{orderSort}
          and technology_number = #{technologyNumber}
    </update>
    <select id="selectUserProcess">
        select address from erp_user_info.user where login_name=#{userId}
    </select>
    <select id="getSelectProcessJiajiao">
        SELECT * FROM (
                          SELECT * FROM sd.basic_data
                          WHERE basic_type='product' AND basic_category='process' AND basic_name='夹胶'
                          UNION
                          SELECT * FROM sd.basic_data
                          WHERE basic_type='product' AND basic_category='process' AND basic_name='均质'
                      ) AS combined_results;
    </select>
    <select id="getSelectProcessDuoqu">
        SELECT * FROM (
                          SELECT * FROM sd.basic_data
                          WHERE basic_type='product' AND basic_category='process' AND basic_name='技术部多曲'
                          UNION
                          SELECT * FROM sd.basic_data
                          WHERE basic_type='product' AND basic_category='process' AND basic_name='钢化'
                      ) AS combined_results;
    </select>
</mapper>
north-glass-erp/src/main/resources/mapper/sd/CustomerMapper.xml
@@ -77,7 +77,7 @@
        o.customer_id,
        o.customer_name,
        sum(od.quantity) as quantity,
        sum(od.area) as area,
        sum(od.compute_gross_area) as area,
        od.shape,
        od.width,
        od.height,
@@ -276,7 +276,7 @@
               od.product_name,
               o.customer_name,
               sum(od.quantity)     as quantity,
               sum(od.area)         as area,
               sum(od.compute_gross_area)         as area,
               od.price,
               sum(od.gross_amount) as money,
               date(o.create_time)  as create_time