admin
2024-07-04 22c9e099d5e333e3c30316028cc2193db421e7c5
优化请求最后一条工单的方法
工位终端新增接收工单按钮
已修改11个文件
183 ■■■■ 文件已修改
jcdm-main/src/main/java/com/jcdm/main/om/productionOrde/controller/OmProductionOrdeInfoController.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-main/src/main/java/com/jcdm/main/om/productionOrde/mapper/OmProductionOrdeInfoMapper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-main/src/main/java/com/jcdm/main/om/productionOrde/service/IOmProductionOrdeInfoService.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-main/src/main/java/com/jcdm/main/om/productionOrde/service/impl/OmProductionOrdeInfoServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-main/src/main/java/com/jcdm/main/plcserver/sub/OPCUaSubscription.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-main/src/main/java/com/jcdm/main/restful/qingYan/service/ExternalInterface.java 60 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-main/src/main/resources/mapper/om/productionOrde/OmProductionOrdeInfoMapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-ui/src/api/main/om/productionOrde/productionOrde.js 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-ui/src/views/main/kb/heatingFilmTerminal/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-ui/src/views/main/kb/preInstalledTerminal/index.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-ui/src/views/main/kb/stationTerminal/index.vue 36 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-main/src/main/java/com/jcdm/main/om/productionOrde/controller/OmProductionOrdeInfoController.java
@@ -12,11 +12,14 @@
import com.jcdm.common.core.domain.model.LoginUser;
import com.jcdm.common.utils.ServletUtils;
import com.jcdm.common.utils.StringUtils;
import com.jcdm.framework.websocket.WebSocketUsers;
import com.jcdm.main.om.productionOrde.domain.OmProductionOrdeInfo;
import com.jcdm.main.om.productionOrde.domain.OmProductionOrdeInfoExcelImport;
import com.jcdm.main.om.productionOrde.mapper.OmProductionOrdeInfoMapper;
import com.jcdm.main.om.productionOrde.service.IOmProductionOrdeInfoService;
import com.jcdm.main.restful.factoryMes.service.RestfulService;
import com.kangaroohy.milo.model.ReadWriteEntity;
import com.kangaroohy.milo.service.MiloService;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.weaver.loadtime.Aj;
import org.slf4j.Logger;
@@ -54,6 +57,9 @@
    @Autowired
    private IOmProductionOrdeInfoService omProductionOrdeInfoService;
    @Autowired
    private MiloService miloService;
    /**
     * 查询生产工单列表
@@ -117,11 +123,8 @@
    {
        String paramProductNum = "";
        // 查询最新的工单信息
        List<OmProductionOrdeInfo> list = omProductionOrdeInfoService.list(new LambdaQueryWrapper<OmProductionOrdeInfo>().orderByAsc(OmProductionOrdeInfo::getCreateTime));
        if(list.size() > 0){
            paramProductNum = list.get(list.size()-1).getProductNum();
        }
        String orderJsonString = RestfulService.getProductionWorkOrderRequest(paramProductNum, "OP230");
        OmProductionOrdeInfo lastOrder = omProductionOrdeInfoService.getLastOrder();
        String orderJsonString = RestfulService.getProductionWorkOrderRequest(lastOrder.getProductNum(), "OP230");
        JSONObject jsonObject = new JSONObject(orderJsonString);
        // 从JSONObject中获取data对象
        JSONObject dataObject = jsonObject.getJSONObject("data");
@@ -153,6 +156,47 @@
        return AjaxResult.success(dataObject.getStr("productNum"));
    }
    @GetMapping("/mozuReceivingWorkOrders")
    public AjaxResult mozuReceivingWorkOrders(OmProductionOrdeInfo paramOrder)
    {
        String paramProductNum = "";
        OmProductionOrdeInfo lastOrder = omProductionOrdeInfoService.getLastOrder();
        String orderJsonString = RestfulService.getProductionWorkOrderRequest(lastOrder.getProductNum(), "OP230");
        JSONObject jsonObject = new JSONObject(orderJsonString);
        // 从JSONObject中获取data对象
        JSONObject dataObject = jsonObject.getJSONObject("data");
        String code = jsonObject.getStr("code");
        // 判断接单是否成功
        if(code.equals("success")){
            logger.info("请求工厂MES工单:入参pack{}出参pack:{}",paramProductNum,dataObject.getStr("productNum"));
            List<OmProductionOrdeInfo> check = omProductionOrdeInfoService.list(new LambdaQueryWrapper<OmProductionOrdeInfo>().eq(OmProductionOrdeInfo::getProductNum,dataObject.getStr("productNum")));
            if(check.size() == 0){
                try {
                    log.info("请求工厂MES工单:入参pack{}出参pack:{}", paramProductNum, dataObject.getStr("productNum"));
                    OmProductionOrdeInfo omProductionOrdeInfo = new OmProductionOrdeInfo();
                    omProductionOrdeInfo.setWorkOrderNo(dataObject.getStr("productionOrderNum"));
                    omProductionOrdeInfo.setProductNum(dataObject.getStr("productNum"));
                    omProductionOrdeInfo.setStationCode(dataObject.getStr("stationCode"));
                    omProductionOrdeInfo.setMaterialCode(dataObject.getStr("materialCode"));
                    omProductionOrdeInfo.setOnlineCompletionMark("0");
                    omProductionOrdeInfo.setSfResult("0");
                    omProductionOrdeInfo.setProductCode(dataObject.getStr("model"));
                    omProductionOrdeInfo.setCreateTime(new Date());
                    omProductionOrdeInfo.setCreateUser("工厂MES");
                    omProductionOrdeInfoService.save(omProductionOrdeInfo);
                    //写PLC
                    miloService.writeToOpcUa(ReadWriteEntity.builder().identifier("MOZU1." + paramOrder.getLineCode() + ".MES_WorkOrderNumber").value(dataObject.getStr("productionOrderNum")).build());
                    miloService.writeToOpcUa(ReadWriteEntity.builder().identifier("MOZU1." + paramOrder.getLineCode() + ".MES_ModuleCode").value(dataObject.getStr("productNum")).build());
                } catch (Exception e) {
                    throw new RuntimeException(e);
                }
            }
        }else {
            return AjaxResult.error("接单失败,请联系管理员");
        }
        return AjaxResult.success(dataObject.getStr("productNum"));
    }
    @GetMapping(value = "/jieBang/{id}")
    public AjaxResult jieBang(@PathVariable("id") Long id)
    {
jcdm-main/src/main/java/com/jcdm/main/om/productionOrde/mapper/OmProductionOrdeInfoMapper.java
@@ -62,4 +62,6 @@
    public int deleteOmProductionOrdeInfoByIds(Long[] ids);
    public Integer getMaxStreamNumber();
    OmProductionOrdeInfo getLastOrder();
}
jcdm-main/src/main/java/com/jcdm/main/om/productionOrde/service/IOmProductionOrdeInfoService.java
@@ -80,4 +80,5 @@
    void updateOrderByProductNum(String status,String productNum,String stationCode);
    OmProductionOrdeInfo getLastOrder();
}
jcdm-main/src/main/java/com/jcdm/main/om/productionOrde/service/impl/OmProductionOrdeInfoServiceImpl.java
@@ -235,4 +235,9 @@
        OmProductionOrdeInfo omProductionOrdeInfo = new OmProductionOrdeInfo();
        omProductionOrdeInfoService.update(omProductionOrdeInfo,updateWrapper);
    }
    @Override
    public OmProductionOrdeInfo getLastOrder() {
        return omProductionOrdeInfoMapper.getLastOrder();
    }
}
jcdm-main/src/main/java/com/jcdm/main/plcserver/sub/OPCUaSubscription.java
@@ -239,11 +239,8 @@
        String paramProductNum = "";
        try {
            // 查询最新的工单信息
            List<OmProductionOrdeInfo> list = omProductionOrdeInfoService.list(new LambdaQueryWrapper<OmProductionOrdeInfo>().orderByAsc(OmProductionOrdeInfo::getCreateTime));
            if(list.size() > 0){
                paramProductNum = list.get(list.size()-1).getProductNum();
            }
            String orderJsonString = RestfulService.getProductionWorkOrderRequest(paramProductNum, "OP230");
            OmProductionOrdeInfo lastOrder = omProductionOrdeInfoService.getLastOrder();
            String orderJsonString = RestfulService.getProductionWorkOrderRequest(lastOrder.getProductNum(), "OP230");
            JSONObject jsonObject = new JSONObject(orderJsonString);
            // 从JSONObject中获取data对象
            JSONObject dataObject = jsonObject.getJSONObject("data");
jcdm-main/src/main/java/com/jcdm/main/restful/qingYan/service/ExternalInterface.java
@@ -170,7 +170,12 @@
    @PostMapping("/sendWebSocket")
    public void sendWebSocket(@RequestBody BsFormulaChildInfo bsFormulaChildInfo)
    {
        WebSocketUsers.sendMessageToUserByText(map.get(bsFormulaChildInfo.getLocationCode()), bsFormulaChildInfo.getResults());
        CompletableFuture<Void> cp1 = CompletableFuture.runAsync(() -> {
            logger.info("接收电芯开始执行异步方法");
            WebSocketUsers.sendMessageToUserByText(map.get(bsFormulaChildInfo.getLocationCode()), bsFormulaChildInfo.getResults());
            logger.info("接收电芯异步方法执行结束");
        });
//        WebSocketUsers.sendMessageToUserByText(map.get(bsFormulaChildInfo.getLocationCode()), bsFormulaChildInfo.getResults());
    }
    /**
@@ -188,23 +193,42 @@
                String cellCheckListString = jsonNode.path("cellCheckList").toString();
                JsonNode cellCheckListNode = objectMapper.readValue(cellCheckListString, JsonNode.class);
                for (JsonNode checkNode : cellCheckListNode) {
                    DaCellData daCellData = new DaCellData();
                    daCellData.setSiteCode(jsonObject.getStr("siteCode"));
                    daCellData.setModuleSerial(jsonObject.getStr("moduleSerial"));
                    daCellData.setModuleModel(jsonObject.getStr("moduleModel"));
                    daCellData.setAbModule(jsonObject.getStr("ABModule"));
                    daCellData.setPackageNo(jsonObject.getStr("packageNo"));
                    daCellData.setSupplierModuleBarcode(jsonObject.getStr("supplierModuleBarcode"));
                    daCellData.setCustomerModuleBarcode(jsonObject.getStr("customerModuleBarcode"));
                    daCellData.setCellSerial(jsonNode.path("cellSerial").toString().replaceAll("\"", ""));
                    daCellData.setCellModel(jsonNode.path("cellModel").toString().replaceAll("\"", ""));
                    daCellData.setGbCellCode(jsonNode.path("GBCellCode").toString().replaceAll("\"", ""));
                    daCellData.setGbModuleCode(jsonNode.path("GBModuleCode").toString().replaceAll("\"", ""));
                    daCellData.setCellItem(checkNode.path("cellItem").toString().replaceAll("\"", ""));
                    daCellData.setCellValue(checkNode.path("cellValue").toString().replaceAll("\"", ""));
                    daCellData.setCreateUser("工厂MES");
                    daCellData.setCreateTime(new Date());
                    daCellDataList.add(daCellData);
                    if(checkNode.path("cellItem").toString().replaceAll("\"", "").equals("电芯挡位")){
                        DaCellData daCellData = new DaCellData();
                        daCellData.setSiteCode(jsonObject.getStr("siteCode"));
                        daCellData.setModuleSerial(jsonObject.getStr("moduleSerial"));
                        daCellData.setModuleModel(jsonObject.getStr("moduleModel"));
                        daCellData.setAbModule(jsonObject.getStr("ABModule"));
                        daCellData.setPackageNo(jsonObject.getStr("packageNo"));
                        daCellData.setSupplierModuleBarcode(jsonObject.getStr("supplierModuleBarcode"));
                        daCellData.setCustomerModuleBarcode(jsonObject.getStr("customerModuleBarcode"));
                        daCellData.setCellSerial(jsonNode.path("cellSerial").toString().replaceAll("\"", ""));
                        daCellData.setCellModel(jsonNode.path("cellModel").toString().replaceAll("\"", ""));
                        daCellData.setGbCellCode(jsonNode.path("GBCellCode").toString().replaceAll("\"", ""));
                        daCellData.setGbModuleCode(jsonNode.path("GBModuleCode").toString().replaceAll("\"", ""));
                        daCellData.setCellItem(checkNode.path("cellItem").toString().replaceAll("\"", ""));
                        daCellData.setCellValue(checkNode.path("cellValue").toString().replaceAll("\"", ""));
                        daCellData.setCreateUser("工厂MES");
                        daCellData.setCreateTime(new Date());
                        daCellDataList.add(daCellData);
                    }
//                    DaCellData daCellData = new DaCellData();
//                    daCellData.setSiteCode(jsonObject.getStr("siteCode"));
//                    daCellData.setModuleSerial(jsonObject.getStr("moduleSerial"));
//                    daCellData.setModuleModel(jsonObject.getStr("moduleModel"));
//                    daCellData.setAbModule(jsonObject.getStr("ABModule"));
//                    daCellData.setPackageNo(jsonObject.getStr("packageNo"));
//                    daCellData.setSupplierModuleBarcode(jsonObject.getStr("supplierModuleBarcode"));
//                    daCellData.setCustomerModuleBarcode(jsonObject.getStr("customerModuleBarcode"));
//                    daCellData.setCellSerial(jsonNode.path("cellSerial").toString().replaceAll("\"", ""));
//                    daCellData.setCellModel(jsonNode.path("cellModel").toString().replaceAll("\"", ""));
//                    daCellData.setGbCellCode(jsonNode.path("GBCellCode").toString().replaceAll("\"", ""));
//                    daCellData.setGbModuleCode(jsonNode.path("GBModuleCode").toString().replaceAll("\"", ""));
//                    daCellData.setCellItem(checkNode.path("cellItem").toString().replaceAll("\"", ""));
//                    daCellData.setCellValue(checkNode.path("cellValue").toString().replaceAll("\"", ""));
//                    daCellData.setCreateUser("工厂MES");
//                    daCellData.setCreateTime(new Date());
//                    daCellDataList.add(daCellData);
                }
            }
            CompletableFuture<Void> cp1 = CompletableFuture.runAsync(() -> {
jcdm-main/src/main/resources/mapper/om/productionOrde/OmProductionOrdeInfoMapper.xml
@@ -258,4 +258,8 @@
    <select id="getMaxStreamNumber" resultType="Integer">
        SELECT MAX(stream_number) AS streamNumber FROM om_production_orde_info
    </select>
    <select id="getLastOrder" resultMap="OmProductionOrdeInfoResult">
        select top 1 * from om_production_orde_info order by id desc
    </select>
</mapper>
jcdm-ui/src/api/main/om/productionOrde/productionOrde.js
@@ -44,6 +44,14 @@
  })
}
export function mozuReceivingWorkOrders(query) {
  return request({
    url: '/om/productionOrde/mozuReceivingWorkOrders',
    method: 'get',
    params: query
  })
}
export function importTemplate() {
  return request({
    url: '/om/productionOrde/importTemplate',
jcdm-ui/src/views/main/kb/heatingFilmTerminal/index.vue
@@ -331,7 +331,7 @@
      },
      content: '',
      activeName: 'first',
      url: "ws://192.168.2.76:8080/websocket/message/",
      url: "ws://192.168.10.100:8080/websocket/message/",
      message: "",
      text_content: "",
      ws: null,
jcdm-ui/src/views/main/kb/preInstalledTerminal/index.vue
@@ -261,8 +261,8 @@
      },
      content: '',
      activeName: 'first',
      url: "ws://10.103.210.248:8080/websocket/message/",
      // url: "ws://192.168.2.76:8080/websocket/message/",
      // url: "ws://10.103.210.248:8080/websocket/message/",
      url: "ws://192.168.10.100:8080/websocket/message/",
      message: "",
      text_content: "",
      ws: null,
jcdm-ui/src/views/main/kb/stationTerminal/index.vue
@@ -86,11 +86,9 @@
             <span style="display: none">{{cakeLamp.release}}</span>
             <span>&nbsp;允许放行</span>
           </el-col>
         </el-row>
         <el-row v-show="showInput" style="margin-top: 20px">
           <el-col></el-col>
             <span style="width: 130px;" class="head-font">预装总成号 : {{headContent.yzSfcCode}}</span>
         <el-row v-show="orderFlag" style="margin-top: 20px">
           <el-button @click="getWorkOrders" type="warning" size="mini">接收工单</el-button>
         </el-row>
<!--         <el-row v-show="showInput" style="margin-top: 20px">-->
<!--           <el-button @click="bindYzSfc" type="primary">绑定</el-button>-->
@@ -322,7 +320,7 @@
  bindYzSfcFlag,
  checkCarCode, checkYzSfcCode,
  findBytrolleyYardGetOne,
  listProductionOrde,
  listProductionOrde, mozuReceivingWorkOrders,
  receivingWorkOrders,
  trolleyYardBinDing
} from "@/api/main/om/productionOrde/productionOrde";
@@ -334,6 +332,7 @@
  saveCampaignTimeParameters,
  replaceAssemblyCode, checkRecordDataDone,
} from "@/api/main/da/paramCollection/paramCollection";
import {addFormula} from "@/api/main/bs/formula/formula";
export default {
  name: "stationTerminal",
@@ -392,7 +391,7 @@
      content: '',
      activeName: 'first',
      url: "ws://10.103.210.248:8080/websocket/message/",
      // url: "ws://192.168.2.76:8080/websocket/message/",
      // url: "ws://192.168.10.100:8080/websocket/message/",
      message: "",
      text_content: "",
      ws: null,
@@ -423,6 +422,7 @@
      originalArray: [],
      yzSfcFlag: 1,
      endYz: false,
      orderFlag: true
    }
  },
  beforeDestroy() {
@@ -459,6 +459,23 @@
    },
  },
  methods: {
    getWorkOrders(){
      if(this.headContent.sfcCode === '' || this.headContent.sfcCode === null){
        //接收工单
        const param = {
          lineCode: this.headContent.processesCode
        }
        mozuReceivingWorkOrders(param).then(response => {
          this.headContent.sfcCode = response.msg;
          this.queryParams.productNum = response.msg;
          this.getList()
          this.cakeLamp.scanFinish = 1
          this.cakeLamp.startWork = 1
        });
      }else {
        this.$message.error("已经有工单了,不能接收!");
      }
    },
    bindcardCode(scanValue){
      // this.$message('绑定成功!');
      let param = {
@@ -804,7 +821,12 @@
            });
          }
        }else if(event.data.includes("productNum")){
            self.headContent.sfcCode = event.data.split(',')[1];
          let productNum = event.data.split(',')[1];
          self.headContent.sfcCode = productNum;
          self.queryParams.productNum = productNum;
          self.getList()
          self.cakeLamp.scanFinish = 1
          self.cakeLamp.startWork = 1
        }
      };
    },