From d4f4376ab5aef071cb841de0f9a9b7f6cb16c651 Mon Sep 17 00:00:00 2001 From: yyt <306727702@qq.com> Date: 星期一, 20 五月 2024 09:39:48 +0800 Subject: [PATCH] 增加380新产品 --- jcdm-main/src/main/java/com/jcdm/main/plcserver/conf/OPCElement.java | 3 jcdm-quartz/src/main/java/com/jcdm/quartz/task/RyTask.java | 6 jcdm-main/src/main/resources/mapper/bs/orderScheduling/BsOrderSchedulingMapper.xml | 52 ++ jcdm-main/src/main/java/com/jcdm/main/bs/orderScheduling/controller/BsOrderSchedulingController.java | 139 +++++++ jcdm-main/src/main/java/com/jcdm/main/bs/orderScheduling/service/IBsOrderSchedulingService.java | 1 jcdm-main/src/main/java/com/jcdm/main/bs/orderScheduling/common/Constants.java | 5 jcdm-ui/src/views/main/om/productionOrde/index.vue | 41 + jcdm-main/src/main/java/com/jcdm/main/om/productionOrde/service/impl/OmProductionOrdeInfoServiceImpl.java | 12 jcdm-ui/src/api/main/bs/orderScheduling/orderScheduling.js | 26 + jcdm-ui/src/views/main/kb/BalanceShaft/index.vue | 281 ++++++++++++++ jcdm-main/src/main/java/com/jcdm/main/om/productionOrde/mapper/OmProductionOrdeInfoMapper.java | 9 jcdm-main/src/main/java/com/jcdm/main/om/productionOrde/service/IOmProductionOrdeInfoService.java | 8 jcdm-main/src/main/java/com/jcdm/main/bs/orderScheduling/service/impl/BsOrderSchedulingServiceImpl.java | 12 jcdm-ui/src/views/main/om/productionOrde/detail.vue | 184 +++++++++ jcdm-main/src/main/java/com/jcdm/main/da/opcuaconfig/controller/DaOpcuaConfigController.java | 9 jcdm-ui/src/views/login.vue | 4 jcdm-main/src/main/java/com/jcdm/main/bs/orderScheduling/mapper/BsOrderSchedulingMapper.java | 2 jcdm-ui/src/views/main/kb/crankshaft/index.vue | 243 ++++++++++++ jcdm-main/src/main/resources/mapper/da/paramCollection/DaParamCollectionMapper.xml | 1 jcdm-main/src/main/java/com/jcdm/main/bs/orderScheduling/vo/SumDataVO.java | 10 jcdm-main/src/main/java/com/jcdm/main/om/productionOrde/controller/OmProductionOrdeInfoController.java | 16 jcdm-main/src/main/java/com/jcdm/main/plcserver/sub/OPCUaSubscription.java | 11 jcdm-main/src/main/resources/mapper/om/productionOrde/OmProductionOrdeInfoMapper.xml | 9 23 files changed, 1,064 insertions(+), 20 deletions(-) diff --git a/jcdm-main/src/main/java/com/jcdm/main/bs/orderScheduling/common/Constants.java b/jcdm-main/src/main/java/com/jcdm/main/bs/orderScheduling/common/Constants.java index 9936b00..45a01ce 100644 --- a/jcdm-main/src/main/java/com/jcdm/main/bs/orderScheduling/common/Constants.java +++ b/jcdm-main/src/main/java/com/jcdm/main/bs/orderScheduling/common/Constants.java @@ -10,4 +10,9 @@ public static final String IS_REPAIR = "鏄�"; public static final String IS_NOT_REPAIR = "鍚�"; + public static final String UN_QUALIFIED = "0"; + + public static final String ORDER_STATUS_ING = "2"; + public static final String WAIT_PRODUCTION = "1"; + public static final String FINISH_PRODUCTION = "3"; } diff --git a/jcdm-main/src/main/java/com/jcdm/main/bs/orderScheduling/controller/BsOrderSchedulingController.java b/jcdm-main/src/main/java/com/jcdm/main/bs/orderScheduling/controller/BsOrderSchedulingController.java index e263ecb..e20f269 100644 --- a/jcdm-main/src/main/java/com/jcdm/main/bs/orderScheduling/controller/BsOrderSchedulingController.java +++ b/jcdm-main/src/main/java/com/jcdm/main/bs/orderScheduling/controller/BsOrderSchedulingController.java @@ -12,26 +12,36 @@ import com.jcdm.common.core.domain.entity.SysDictData; import com.jcdm.common.core.page.TableDataInfo; import com.jcdm.common.enums.BusinessType; +import com.jcdm.common.utils.SecurityUtils; import com.jcdm.common.utils.StringUtils; import com.jcdm.common.utils.poi.ExcelUtil; +import com.jcdm.main.bs.orderScheduling.common.Constants; import com.jcdm.main.bs.orderScheduling.domain.BsOrderScheduling; import com.jcdm.main.bs.orderScheduling.service.IBsOrderSchedulingService; import com.jcdm.main.bs.orderScheduling.vo.FollowReportVO; import com.jcdm.main.bs.orderScheduling.vo.LineChartVO; +import com.jcdm.main.bs.orderScheduling.vo.SumDataVO; import com.jcdm.main.da.paramCollection.domain.DaParamCollection; +import com.jcdm.main.da.paramCollection.mapper.DaParamCollectionMapper; +import com.jcdm.main.da.paramCollection.service.IDaParamCollectionService; import com.jcdm.main.da.passingStationCollection.domain.DaPassingStationCollection; +import com.jcdm.main.om.productionOrde.domain.OmProductionOrdeInfo; +import com.jcdm.main.om.productionOrde.service.impl.OmProductionOrdeInfoServiceImpl; import com.jcdm.main.plcserver.conf.OPCElement; +import com.jcdm.main.plcserver.sub.OPCUaSubscription; import com.jcdm.system.service.ISysDictDataService; import com.kangaroohy.milo.model.ReadWriteEntity; import com.kangaroohy.milo.service.MiloService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.io.IOException; +import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; @@ -53,6 +63,10 @@ @Resource private ISysDictDataService iSysDictDataService; + @Resource + private OmProductionOrdeInfoServiceImpl productionOrdeInfoService; + @Resource + private DaParamCollectionMapper daParamCollectionService; @Autowired MiloService miloService; @@ -182,6 +196,21 @@ return getDataTable(list); } + @GetMapping("/list3") + public TableDataInfo list3(BsOrderScheduling bsOrderScheduling) + { + startPage(); + List<BsOrderScheduling> list = new ArrayList<>(); + if (StringUtils.isNotEmpty(bsOrderScheduling.getOrderNo())){ + list = bsOrderSchedulingService.selectBsOrderSchedulingPage(bsOrderScheduling); + } + List<BsOrderScheduling> collect = list.stream().filter(x -> Constants.UN_QUALIFIED.equals(x.getQualityStatus())).collect(Collectors.toList()); + if (CollUtil.isNotEmpty(collect)){ + String.valueOf(collect.size()); + } + return getDataTable(list); + } + /** * 瀵煎嚭璁㈠崟鎺掍骇鍒楄〃 */ @@ -237,4 +266,114 @@ { return toAjax(bsOrderSchedulingService.deleteBsOrderSchedulingByIds(ids)); } + @GetMapping("/getSumData") + public R getSumData(BsOrderScheduling bsOrderScheduling){ + List<BsOrderScheduling> list = new ArrayList<>(); + int onlineNum = 0; + int finishNum = 0; + if (StringUtils.isNotEmpty(bsOrderScheduling.getOrderNo())){ + + list = bsOrderSchedulingService.selectBsOrderSchedulingPage(bsOrderScheduling); + List<BsOrderScheduling> onlineNumList = list.stream().filter(x -> Constants.ORDER_STATUS_ING.equals(x.getProductionStatus())).collect(Collectors.toList()); + if (CollUtil.isNotEmpty(onlineNumList)){ + onlineNum = onlineNumList.size(); + } + List<BsOrderScheduling> finishNumList = list.stream().filter(x -> Constants.FINISH_PRODUCTION.equals(x.getProductionStatus())).collect(Collectors.toList()); + if (CollUtil.isNotEmpty(finishNumList)){ + finishNum = finishNumList.size(); + } + } + List<BsOrderScheduling> collect = list.stream().filter(x -> Constants.UN_QUALIFIED.equals(x.getQualityStatus())).collect(Collectors.toList()); + String unqualified = "0"; + if (CollUtil.isNotEmpty(collect)){ + unqualified = String.valueOf(collect.size()); + } + SumDataVO vo = new SumDataVO(); + vo.setFinishNum(finishNum); + vo.setOnlineNum(onlineNum); + vo.setUnqualified(unqualified); + return R.ok(vo); + } + + /** + * 鏍¢獙鍙戝姩鏈哄彿鏄惁鍜屾満鍨嬪尮閰嶃�佹槸鍚﹂噸澶嶆壂鎻忋�佹槸鍚﹁秴鍑鸿鍒掓暟閲� + * @param engineNo 绠变綋鐮� + * @param model 鏈哄瀷 + * @return boolean + */ + @Transactional(rollbackFor = Exception.class) + @GetMapping("/engineNoIsInModel") + public R engineNoIsInModel(String engineNo,String model,String orderNo) throws Exception { + + if (StringUtils.isEmpty(engineNo)){ + return R.ok(500,"绠变綋鐮佷负绌烘垨宸插瓨鍦紝璇烽噸璇�"); + } + + BsOrderScheduling bsOrderScheduling = new BsOrderScheduling(); + bsOrderScheduling.setOrderNo(orderNo); + //bsOrderScheduling.setProductionStatus("1"); + List<BsOrderScheduling> allList = bsOrderSchedulingService.selectBsOrderSchedulingList(bsOrderScheduling); + List<BsOrderScheduling> dlist = allList.stream().filter(x->x.getProductionStatus().equals(Constants.WAIT_PRODUCTION)).collect(Collectors.toList()); + List<BsOrderScheduling> collect = allList.stream().filter(x -> x.getProductionStatus().equals(Constants.ORDER_STATUS_ING) + ||x.getProductionStatus().equals(Constants.FINISH_PRODUCTION)).collect(Collectors.toList()); + + BsOrderScheduling OrderScheduling=dlist.get(0); + + DaParamCollection daParamCollection = new DaParamCollection(); + daParamCollection.setParamValue(engineNo); + daParamCollection.setSfcCode("OP010"); + List<DaParamCollection> list = daParamCollectionService.selectDaParamCollectionList(daParamCollection); + if (CollUtil.isNotEmpty(list)){ + return R.ok(500,"宸插瓨鍦ㄦ绠变綋鐮侊紝璇峰嬁閲嶅鎵弿"); + } + + OmProductionOrdeInfo info = new OmProductionOrdeInfo(); + info.setWorkOrderNo(orderNo); + List<OmProductionOrdeInfo> omProductionOrdeInfos = productionOrdeInfoService.selectOmProductionOrdeInfoList(info); + if (CollUtil.isNotEmpty(omProductionOrdeInfos)){ + OmProductionOrdeInfo omProductionOrdeInfo = omProductionOrdeInfos.get(0); + Long planQty = omProductionOrdeInfo.getPlanQty(); + if (planQty<collect.size()){ + return R.ok(500,"瓒呭嚭璁″垝鏁伴噺锛岃妫�鏌ュ悗閲嶈瘯"); + } + } + //鎻掑叆鏁版嵁 + DaParamCollection saveData = new DaParamCollection(); + saveData.setSfcCode(OrderScheduling.getEngineNo()); + saveData.setParamValue(engineNo); + saveData.setLocationCode("OP010"); + saveData.setParamCode("XTM"); + saveData.setParamName("绠变綋鐮�"); + daParamCollectionService.insertDaParamCollection(saveData); + + //鏇存柊涓婄嚎鏁伴噺 + int onlineNum = 0; + List<BsOrderScheduling> onlineNumList = bsOrderSchedulingService.selectBsOrderSchedulingList(bsOrderScheduling) + .stream().filter(x -> Constants.ORDER_STATUS_ING.equals(x.getProductionStatus())||x.getProductionStatus().equals(Constants.FINISH_PRODUCTION)).collect(Collectors.toList()); + if (CollUtil.isNotEmpty(onlineNumList)){ + onlineNum = onlineNumList.size(); + } + OmProductionOrdeInfo omProductionOrdeInfo = new OmProductionOrdeInfo(); + omProductionOrdeInfo.setWorkOrderNo(orderNo); + List<OmProductionOrdeInfo> omList = productionOrdeInfoService.selectOmProductionOrdeInfoList(omProductionOrdeInfo); + if (CollUtil.isNotEmpty(omList)){ + OmProductionOrdeInfo omInfo = omList.get(0); + String s = String.valueOf(onlineNum); + long l = Long.parseLong(s); + omInfo.setActualOnlineQty(l); + productionOrdeInfoService.updateOmProductionOrdeInfo(omInfo); + } + + //OPC鎿嶄綔 + ReadWriteEntity entity = new ReadWriteEntity("CFL4HX.HOP010.Code", OrderScheduling.getEngineNo()); + OPCUaSubscription.miloService.writeToOpcUa(entity);//鍐橲N + ReadWriteEntity entity2 = new ReadWriteEntity("CFL4HX.HOP010.SNDoor", 1); + OPCUaSubscription.miloService.writeToOpcByte(entity2);//鍐欏畬鎴� + + OrderScheduling.setProductionStatus("2"); + bsOrderSchedulingService.updateBsOrderScheduling(OrderScheduling); + return R.ok(); + } + + } diff --git a/jcdm-main/src/main/java/com/jcdm/main/bs/orderScheduling/mapper/BsOrderSchedulingMapper.java b/jcdm-main/src/main/java/com/jcdm/main/bs/orderScheduling/mapper/BsOrderSchedulingMapper.java index 9b6723e..e5d5adc 100644 --- a/jcdm-main/src/main/java/com/jcdm/main/bs/orderScheduling/mapper/BsOrderSchedulingMapper.java +++ b/jcdm-main/src/main/java/com/jcdm/main/bs/orderScheduling/mapper/BsOrderSchedulingMapper.java @@ -37,6 +37,8 @@ */ public List<BsOrderScheduling> selectBsOrderSchedulingList(BsOrderScheduling bsOrderScheduling); + public List<BsOrderScheduling> selectBsOrderSchedulingPage(BsOrderScheduling bsOrderScheduling); + public Integer getProduceNumToday(BsOrderScheduling bsOrderScheduling); diff --git a/jcdm-main/src/main/java/com/jcdm/main/bs/orderScheduling/service/IBsOrderSchedulingService.java b/jcdm-main/src/main/java/com/jcdm/main/bs/orderScheduling/service/IBsOrderSchedulingService.java index 9c1801b..38642c0 100644 --- a/jcdm-main/src/main/java/com/jcdm/main/bs/orderScheduling/service/IBsOrderSchedulingService.java +++ b/jcdm-main/src/main/java/com/jcdm/main/bs/orderScheduling/service/IBsOrderSchedulingService.java @@ -36,6 +36,7 @@ * @return 璁㈠崟鎺掍骇闆嗗悎 */ public List<BsOrderScheduling> selectBsOrderSchedulingList(BsOrderScheduling bsOrderScheduling); + public List<BsOrderScheduling> selectBsOrderSchedulingPage(BsOrderScheduling bsOrderScheduling); public FollowReportVO getFollowReportList(BsOrderScheduling bsOrderScheduling); public List<LineChartVO> getOffLineNum(); diff --git a/jcdm-main/src/main/java/com/jcdm/main/bs/orderScheduling/service/impl/BsOrderSchedulingServiceImpl.java b/jcdm-main/src/main/java/com/jcdm/main/bs/orderScheduling/service/impl/BsOrderSchedulingServiceImpl.java index acb02f6..58411d3 100644 --- a/jcdm-main/src/main/java/com/jcdm/main/bs/orderScheduling/service/impl/BsOrderSchedulingServiceImpl.java +++ b/jcdm-main/src/main/java/com/jcdm/main/bs/orderScheduling/service/impl/BsOrderSchedulingServiceImpl.java @@ -92,6 +92,18 @@ } @Override + public List<BsOrderScheduling> selectBsOrderSchedulingPage(BsOrderScheduling bsOrderScheduling) + { + if(bsOrderScheduling.getDateConditions()!=null){ + String[] conditions = bsOrderScheduling.getDateConditions(); + bsOrderScheduling.setStartTime(conditions[0]); + bsOrderScheduling.setEndTime(conditions[1]); + } + return bsOrderSchedulingMapper.selectBsOrderSchedulingPage(bsOrderScheduling); + } + + + @Override public FollowReportVO getFollowReportList(BsOrderScheduling bsOrderScheduling) { FollowReportVO vo = new FollowReportVO(); diff --git a/jcdm-main/src/main/java/com/jcdm/main/bs/orderScheduling/vo/SumDataVO.java b/jcdm-main/src/main/java/com/jcdm/main/bs/orderScheduling/vo/SumDataVO.java new file mode 100644 index 0000000..e5fc024 --- /dev/null +++ b/jcdm-main/src/main/java/com/jcdm/main/bs/orderScheduling/vo/SumDataVO.java @@ -0,0 +1,10 @@ +package com.jcdm.main.bs.orderScheduling.vo; + +import lombok.Data; + +@Data +public class SumDataVO { + private Integer onlineNum; + private Integer finishNum; + private String unqualified; +} diff --git a/jcdm-main/src/main/java/com/jcdm/main/da/opcuaconfig/controller/DaOpcuaConfigController.java b/jcdm-main/src/main/java/com/jcdm/main/da/opcuaconfig/controller/DaOpcuaConfigController.java index 0f38e76..a4d16b5 100644 --- a/jcdm-main/src/main/java/com/jcdm/main/da/opcuaconfig/controller/DaOpcuaConfigController.java +++ b/jcdm-main/src/main/java/com/jcdm/main/da/opcuaconfig/controller/DaOpcuaConfigController.java @@ -6,6 +6,8 @@ import com.jcdm.main.da.opcuaconfig.domain.DaOpcuaConfig; import com.jcdm.main.da.opcuaconfig.domain.NodeEntity; import com.jcdm.main.da.opcuaconfig.service.IDaOpcuaConfigService; +import com.jcdm.main.plcserver.sub.OPCUaSubscription; +import com.kangaroohy.milo.model.ReadWriteEntity; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; @@ -110,14 +112,13 @@ @PreAuthorize("@ss.hasPermi('da:opcuaconfig:query')") @GetMapping(value = "/SNCode/{SNCode}/{locationCode}") public AjaxResult setSNCode(@PathVariable("SNCode") String SNCode,@PathVariable("locationCode") String locationCode) { - //NodeEntity node= NodeEntity.builder().index(2).identifier("CFL4CVT"+"."+locationCode+".SNCode").value(SNCode).type("string").build(); - Boolean out= null; + ReadWriteEntity entity = new ReadWriteEntity("CFL4HX."+locationCode+".SNCode", SNCode); + Boolean out= true; try { - // out = ClientHandler.write(node); + OPCUaSubscription.miloService.writeToOpcUa(entity);//鍐橲N } catch (Exception e) { throw new RuntimeException(e); } - return toAjax(out); } } diff --git a/jcdm-main/src/main/java/com/jcdm/main/om/productionOrde/controller/OmProductionOrdeInfoController.java b/jcdm-main/src/main/java/com/jcdm/main/om/productionOrde/controller/OmProductionOrdeInfoController.java index 4e82039..cd3e7fe 100644 --- a/jcdm-main/src/main/java/com/jcdm/main/om/productionOrde/controller/OmProductionOrdeInfoController.java +++ b/jcdm-main/src/main/java/com/jcdm/main/om/productionOrde/controller/OmProductionOrdeInfoController.java @@ -81,11 +81,21 @@ /** * 鑾峰彇鐢熶骇宸ュ崟璇︾粏淇℃伅 */ +// @PreAuthorize("@ss.hasPermi('om:productionOrde:query')") +// @GetMapping(value = "/{id}") +// public AjaxResult getInfo(@PathVariable("id") Long id) +// { +// return success(omProductionOrdeInfoService.selectOmProductionOrdeInfoById(id)); +// } + + /** + * 鑾峰彇鐢熶骇宸ュ崟璇︾粏淇℃伅 + */ @PreAuthorize("@ss.hasPermi('om:productionOrde:query')") - @GetMapping(value = "/{id}") - public AjaxResult getInfo(@PathVariable("id") Long id) + @GetMapping("/{ids}") + public AjaxResult getInfo(@PathVariable Long[] ids) { - return success(omProductionOrdeInfoService.selectOmProductionOrdeInfoById(id)); + return success(omProductionOrdeInfoService.selectOmProductionOrdeInfoByIds(ids)); } /** diff --git a/jcdm-main/src/main/java/com/jcdm/main/om/productionOrde/mapper/OmProductionOrdeInfoMapper.java b/jcdm-main/src/main/java/com/jcdm/main/om/productionOrde/mapper/OmProductionOrdeInfoMapper.java index fcecab3..d1a993c 100644 --- a/jcdm-main/src/main/java/com/jcdm/main/om/productionOrde/mapper/OmProductionOrdeInfoMapper.java +++ b/jcdm-main/src/main/java/com/jcdm/main/om/productionOrde/mapper/OmProductionOrdeInfoMapper.java @@ -21,6 +21,15 @@ public OmProductionOrdeInfo selectOmProductionOrdeInfoById(Long id); /** + * 鏌ヨ鐢熶骇宸ュ崟 + * + * @param ids 鐢熶骇宸ュ崟涓婚敭 + * @return 鐢熶骇宸ュ崟 + */ + public OmProductionOrdeInfo selectOmProductionOrdeInfoByIds(Long[] ids); + + + /** * 鏌ヨ鐢熶骇宸ュ崟鍒楄〃 * * @param omProductionOrdeInfo 鐢熶骇宸ュ崟 diff --git a/jcdm-main/src/main/java/com/jcdm/main/om/productionOrde/service/IOmProductionOrdeInfoService.java b/jcdm-main/src/main/java/com/jcdm/main/om/productionOrde/service/IOmProductionOrdeInfoService.java index 8f5ce40..9a73017 100644 --- a/jcdm-main/src/main/java/com/jcdm/main/om/productionOrde/service/IOmProductionOrdeInfoService.java +++ b/jcdm-main/src/main/java/com/jcdm/main/om/productionOrde/service/IOmProductionOrdeInfoService.java @@ -22,6 +22,14 @@ public OmProductionOrdeInfo selectOmProductionOrdeInfoById(Long id); /** + * 鏌ヨ鐢熶骇宸ュ崟 + * + * @param ids 鐢熶骇宸ュ崟涓婚敭 + * @return 鐢熶骇宸ュ崟 + */ + public OmProductionOrdeInfo selectOmProductionOrdeInfoByIds(Long[] ids); + + /** * 鏌ヨ鐢熶骇宸ュ崟鍒楄〃 * * @param omProductionOrdeInfo 鐢熶骇宸ュ崟 diff --git a/jcdm-main/src/main/java/com/jcdm/main/om/productionOrde/service/impl/OmProductionOrdeInfoServiceImpl.java b/jcdm-main/src/main/java/com/jcdm/main/om/productionOrde/service/impl/OmProductionOrdeInfoServiceImpl.java index 8a0139e..23a4a84 100644 --- a/jcdm-main/src/main/java/com/jcdm/main/om/productionOrde/service/impl/OmProductionOrdeInfoServiceImpl.java +++ b/jcdm-main/src/main/java/com/jcdm/main/om/productionOrde/service/impl/OmProductionOrdeInfoServiceImpl.java @@ -39,6 +39,18 @@ } /** + * 鏌ヨ鐢熶骇宸ュ崟 + * + * @param ids 鐢熶骇宸ュ崟涓婚敭 + * @return 鐢熶骇宸ュ崟 + */ + @Override + public OmProductionOrdeInfo selectOmProductionOrdeInfoByIds(Long[] ids) + { + return omProductionOrdeInfoMapper.selectOmProductionOrdeInfoByIds(ids); + } + + /** * 鏌ヨ鐢熶骇宸ュ崟鍒楄〃 * * @param omProductionOrdeInfo 鐢熶骇宸ュ崟 diff --git a/jcdm-main/src/main/java/com/jcdm/main/plcserver/conf/OPCElement.java b/jcdm-main/src/main/java/com/jcdm/main/plcserver/conf/OPCElement.java index f471807..2f5af93 100644 --- a/jcdm-main/src/main/java/com/jcdm/main/plcserver/conf/OPCElement.java +++ b/jcdm-main/src/main/java/com/jcdm/main/plcserver/conf/OPCElement.java @@ -22,12 +22,15 @@ private static final String OP020_ITEM = "OP.OP100.";// private static final String OP120_ITEM_HX = "CFL4HX.OP120.";// private static final String OP120_ITEM_ZZ = "CFL4ZZ.OP120.";// + private static final String OP020_ITEM_HX = "CFL4HX.HOP020.";// private static final String OP121_ITEM_ZZ = "CFL4ZZ.OP121.";// public static final String OP020_SaveRequest = OP020_ITEM + "SaveRequest";//璇锋眰淇濆瓨 public static final String OP120_SaveRequestLast = OP120_ITEM_HX + "SaveRequestLast";//璇锋眰淇濆瓨 public static final String OP020_MesSaveFeed = OP020_ITEM + "MesSaveFeed";//Mes淇濆瓨瀹屾垚 public static final String OP120_ZZ_CODE_CHECK = OP120_ITEM_ZZ + "CodeCheck";//璇锋眰淇濆瓨 + + public static final String OP020_HX_CODE_CHECK = OP020_ITEM_HX + "CodeCheck";//璇锋眰淇濆瓨 public static final String OP121_ZZ_CODE_CHECK = OP121_ITEM_ZZ + "CodeCheckFeed";//璇锋眰淇濆瓨 public static final String OP050_HX_CODE_CHECK = "CFL4HX.OP050.CodeCheck";//璇锋眰淇濆瓨 diff --git a/jcdm-main/src/main/java/com/jcdm/main/plcserver/sub/OPCUaSubscription.java b/jcdm-main/src/main/java/com/jcdm/main/plcserver/sub/OPCUaSubscription.java index a77d4cc..52c5212 100644 --- a/jcdm-main/src/main/java/com/jcdm/main/plcserver/sub/OPCUaSubscription.java +++ b/jcdm-main/src/main/java/com/jcdm/main/plcserver/sub/OPCUaSubscription.java @@ -199,6 +199,14 @@ || OPCElement.OP695_ZZ_CODE_CHECK.equals(Node) || OPCElement.OP755_ZZ_CODE_CHECK.equals(Node)){ rework(SNCode,Node,daPassingStationCollections,rmRepairRecords); } + if (OPCElement.OP020_HX_CODE_CHECK.equals(Node)) { + //婵�鍏夋墦鐮� + String[] printcode=SNCode.split("\\s+"); + ReadWriteEntity entity3 = new ReadWriteEntity("CFL4HX.HOP020.PrintCode1", printcode[0]); + OPCUaSubscription.miloService.writeToOpcUa(entity3);//鍐橲N + ReadWriteEntity entity5 = new ReadWriteEntity("CFL4HX.HOP020.PrintCode2", printcode[1]); + OPCUaSubscription.miloService.writeToOpcUa(entity5);//鍐橲N + } System.out.println(entity); } @@ -461,7 +469,7 @@ //鏇存柊宸ュ崟鐘舵�� if ("OP790".equals(parts[1])) { - bsOrderScheduling.setReport20("0"); + //bsOrderScheduling.setReport20("0"); bsOrderScheduling.setProductionStatus("3"); bsOrderScheduling.setFinalAssemblyOfflineTime(new Date()); }else if("OP050".equals(parts[1])){ @@ -469,6 +477,7 @@ bsOrderScheduling.setProductionStatus("2"); bsOrderScheduling.setBoxClosingOnlineTime(new Date()); }else if("OP120".equals(parts[1])){ + bsOrderScheduling.setReport20("0"); bsOrderScheduling.setFinalAssemblyLaunchTime(new Date()); bsOrderScheduling.setClosingBoxOfflineTime(new Date()); } diff --git a/jcdm-main/src/main/resources/mapper/bs/orderScheduling/BsOrderSchedulingMapper.xml b/jcdm-main/src/main/resources/mapper/bs/orderScheduling/BsOrderSchedulingMapper.xml index 6cada42..c6bcddd 100644 --- a/jcdm-main/src/main/resources/mapper/bs/orderScheduling/BsOrderSchedulingMapper.xml +++ b/jcdm-main/src/main/resources/mapper/bs/orderScheduling/BsOrderSchedulingMapper.xml @@ -94,6 +94,58 @@ </if> </where> </select> + + <select id="selectBsOrderSchedulingPage" parameterType="BsOrderScheduling" resultMap="BsOrderSchedulingResult"> + <include refid="selectBsOrderSchedulingVo"/> + <where> + <if test="orderNo != null and orderNo != ''"> and order_no = #{orderNo}</if> + <if test="engineNo != null and engineNo != ''"> and engine_no = #{engineNo}</if> + <if test="productType != null and productType != ''"> and product_type = #{productType}</if> + <if test="model != null and model != ''"> and model = #{model}</if> + <if test="productionStatus != null and productionStatus != ''"> and production_status = #{productionStatus}</if> + <if test="workingHours != null and workingHours != ''"> and working_hours = #{workingHours}</if> + <if test="currentWorkstation != null and currentWorkstation != ''"> and current_workstation = #{currentWorkstation}</if> + <if test="qualityStatus != null and qualityStatus != ''"> and quality_status = #{qualityStatus}</if> + <if test="whetherOrPrint != null and whetherOrPrint != ''"> and whether_or_print = #{whetherOrPrint}</if> + <if test="report10 != null and report10 != ''"> and report_10 = #{report10}</if> + <if test="report20 != null and report20 != ''"> and report_20 = #{report20}</if> + <if test="combinedBoxTime != null and combinedBoxTime != ''"> and combined_box_time = #{combinedBoxTime}</if> + <if test="finalAssemblyTime != null and finalAssemblyTime != ''"> and final_assembly_time = #{finalAssemblyTime}</if> + <if test="operator != null and operator != ''"> and operator = #{operator}</if> + <if test="operateTime != null and operateTime != ''"> and operate_time = #{operateTime}</if> + <if test="status != null and status != ''"> and status = #{status}</if> + <if test="spareField1 != null and spareField1 != ''"> and spare_field_1 = #{spareField1}</if> + <if test="spareField2 != null and spareField2 != ''"> and spare_field_2 = #{spareField2}</if> + <if test="spareField3 != null and spareField3 != ''"> and spare_field_3 = #{spareField3}</if> + <if test="spareField4 != null and spareField4 != ''"> and spare_field_4 = #{spareField4}</if> + <if test="createUser != null and createUser != ''"> and create_user = #{createUser}</if> + <if test="updateUser != null and updateUser != ''"> and update_user = #{updateUser}</if> + <if test="remarks != null and remarks != ''"> and remarks = #{remarks}</if> + <if test="report30 != null and report30 != ''"> and report_30 = #{report30}</if> + <if test="dateConditions != null and dateConditions != ''"> and operate_time BETWEEN #{startTime} AND #{endTime}</if> + <if test="boxClosingOnlineTime != null and boxClosingOnlineTime != ''"> and box_closing_online_time = #{boxClosingOnlineTime}</if> + <if test="closingBoxOfflineTime != null and closingBoxOfflineTime != ''"> and closing_box_offline_time = #{closingBoxOfflineTime}</if> + <if test="finalAssemblyLaunchTime != null and finalAssemblyLaunchTime != ''"> and final_assembly_launch_time = #{finalAssemblyLaunchTime}</if> + <if test="finalAssemblyOfflineTime != null and finalAssemblyOfflineTime != ''"> and final_assembly_offline_time = #{finalAssemblyOfflineTime}</if> + <if test="cvtLaunchTime != null and cvtLaunchTime != ''"> and cvt_launch_time = #{cvtLaunchTime}</if> + <if test="cvtOfflineTime != null and cvtOfflineTime != ''"> and cvt_offline_time = #{cvtOfflineTime}</if> + <if test="startTime != null and startTime != '' and endTime != null and endTime != ''"> and cvt_offline_time between #{startTime} and #{endTime}</if> + <if test="engineNoList != null and engineNoList.size() > 0"> + and engine_no in + <foreach collection="engineNoList" open="(" close=")" separator="," item="engine"> + #{engine} + </foreach> + </if> + <if test="engineNoListExcel != null and engineNoListExcel.size() > 0"> + and engine_no in + <foreach collection="engineNoListExcel" open="(" close=")" separator="," item="engine"> + #{engine} + </foreach> + </if> + and (production_status = '2' or production_status = '3') + </where> + order by create_time DESC + </select> <select id="selectBsOrderSchedulingById" parameterType="Long" resultMap="BsOrderSchedulingResult"> <include refid="selectBsOrderSchedulingVo"/> diff --git a/jcdm-main/src/main/resources/mapper/da/paramCollection/DaParamCollectionMapper.xml b/jcdm-main/src/main/resources/mapper/da/paramCollection/DaParamCollectionMapper.xml index bea39b4..440aa5c 100644 --- a/jcdm-main/src/main/resources/mapper/da/paramCollection/DaParamCollectionMapper.xml +++ b/jcdm-main/src/main/resources/mapper/da/paramCollection/DaParamCollectionMapper.xml @@ -46,6 +46,7 @@ <if test="locationCode != null and locationCode != ''"> and location_code = #{locationCode}</if> <if test="equipmentNo != null and equipmentNo != ''"> and equipment_no = #{equipmentNo}</if> <if test="paramCode != null and paramCode != ''"> and param_code = #{paramCode}</if> + <if test="paramValue != null and paramValue != ''"> and param_value = #{paramValue}</if> <if test="dateConditions != null and dateConditions != ''"> and collection_time BETWEEN #{startTime} AND #{endTime}</if> </where> </select> diff --git a/jcdm-main/src/main/resources/mapper/om/productionOrde/OmProductionOrdeInfoMapper.xml b/jcdm-main/src/main/resources/mapper/om/productionOrde/OmProductionOrdeInfoMapper.xml index daf203e..983bd68 100644 --- a/jcdm-main/src/main/resources/mapper/om/productionOrde/OmProductionOrdeInfoMapper.xml +++ b/jcdm-main/src/main/resources/mapper/om/productionOrde/OmProductionOrdeInfoMapper.xml @@ -82,6 +82,15 @@ <include refid="selectOmProductionOrdeInfoVo"/> where id = #{id} </select> + + <select id="selectOmProductionOrdeInfoByIds" parameterType="String" resultMap="OmProductionOrdeInfoResult"> + select type_z,product_code,line_code,route_code, bom_code, recipe_code, sum(plan_qty) plan_qty,serial_number, order_status from om_production_orde_info + where id in + <foreach item="id" collection="array" open="(" separator="," close=")"> + #{id} + </foreach> + GROUP BY type_z,product_code,line_code,route_code, bom_code, recipe_code,serial_number, order_status + </select> <insert id="insertOmProductionOrdeInfo" parameterType="OmProductionOrdeInfo"> insert into om_production_orde_info diff --git a/jcdm-quartz/src/main/java/com/jcdm/quartz/task/RyTask.java b/jcdm-quartz/src/main/java/com/jcdm/quartz/task/RyTask.java index f21c65f..8780f63 100644 --- a/jcdm-quartz/src/main/java/com/jcdm/quartz/task/RyTask.java +++ b/jcdm-quartz/src/main/java/com/jcdm/quartz/task/RyTask.java @@ -54,6 +54,7 @@ orderScheduling.setReport10("1"); int i = bsOrderSchedulingService.updateBsOrderScheduling(orderScheduling); System.out.println("鏇存柊鐘舵�佹垚鍔�"); + //logger.info("{}鍚堢鎶ュ伐鎴愬姛",orderScheduling.getOrderNo()); } } } @@ -63,12 +64,13 @@ bsOrderScheduling.setReport20("0"); List<BsOrderScheduling> bsOrderSchedulings = bsOrderSchedulingService.selectBsOrderSchedulingList(bsOrderScheduling); for (BsOrderScheduling orderScheduling : bsOrderSchedulings) { - String xmlResult = ReceivingServices.getInterfaceInformationXml(url, getProductionPlanInformationXml(orderScheduling.getOrderNo(), "0790")); + String xmlResult = ReceivingServices.getInterfaceInformationXml(url, getProductionPlanInformationXml(orderScheduling.getOrderNo(), "0020")); String status = ReceivingServices.xmlToJSON3(xmlResult); if(status.equals("1")){ orderScheduling.setReport20("1"); int i = bsOrderSchedulingService.updateBsOrderScheduling(orderScheduling); System.out.println("鏇存柊鐘舵�佹垚鍔�"); + //logger.info("{}鎬昏鎶ュ伐鎴愬姛",orderScheduling.getOrderNo()); } } } @@ -86,7 +88,7 @@ " </urn:ZPP_BC_001>\n" + " </soapenv:Body>\n" + "</soapenv:Envelope>"; - logger.info("{}",content); + //logger.info("{}",content); return content; } } diff --git a/jcdm-ui/src/api/main/bs/orderScheduling/orderScheduling.js b/jcdm-ui/src/api/main/bs/orderScheduling/orderScheduling.js index a6a3172..b1bbdc5 100644 --- a/jcdm-ui/src/api/main/bs/orderScheduling/orderScheduling.js +++ b/jcdm-ui/src/api/main/bs/orderScheduling/orderScheduling.js @@ -42,6 +42,32 @@ params: query }) } + +export function listOrderScheduling3(query) { + return request({ + url: '/bs/orderScheduling/list3', + method: 'get', + params: query + }) +} + +export function getSumDataMethod(query) { + return request({ + url: '/bs/orderScheduling/getSumData', + method: 'get', + params: query + }) +} + + +export function engineNoIsInModel(param) { + return request({ + url: '/bs/orderScheduling/engineNoIsInModel', + method: 'get', + params: param + }) +} + // 鏌ヨ璁㈠崟鎺掍骇璇︾粏 export function getOrderScheduling(id) { return request({ diff --git a/jcdm-ui/src/views/login.vue b/jcdm-ui/src/views/login.vue index bb9ea3c..19d39b8 100644 --- a/jcdm-ui/src/views/login.vue +++ b/jcdm-ui/src/views/login.vue @@ -77,8 +77,8 @@ return { codeUrl: "", loginForm: { - username: "admin", - password: "admin123", + username: "SC001", + password: "123456", rememberMe: false, code: "", uuid: "" diff --git a/jcdm-ui/src/views/main/kb/BalanceShaft/index.vue b/jcdm-ui/src/views/main/kb/BalanceShaft/index.vue new file mode 100644 index 0000000..cf70f24 --- /dev/null +++ b/jcdm-ui/src/views/main/kb/BalanceShaft/index.vue @@ -0,0 +1,281 @@ +<template> + <div class="app-container"> + <el-row :gutter="3"> + <el-col :span="6"> + <el-card shadow="always" class="boxSize"> + <div class="centerImg"> + <img style="width: 140px;height: 30px;" src="@/assets/logo/jcdm2.png" alt="dark"> + <!-- <span class="nextLine" style="font-weight: bold">{{currentTime}}</span>--> + </div> + + </el-card> + </el-col> + <el-col :span="3"> + <el-card shadow="always" class="boxSize"> + <span class="centerText" style="height: 60px">{{locationCode}}</span> + </el-card> + </el-col> + <el-col :span="15"> + <el-card shadow="always" class="boxSize"> + <span class="centerText" >{{locationName}}</span> + </el-card> + </el-col> + </el-row> + <el-row :gutter="0" > + <el-col :span="14"> + <el-card class="box-card" style="margin-top: 5px" > + <el-form ref="form" :model="form" label-width="25%" > + <el-form-item prop="engineNo" style="margin-top: 16px"> + <span slot="label" style="font-size:22px;color:black;"><strong>骞宠 杞寸爜</strong></span> + <el-input style="font-size:20px" v-model="form.engineNo" placeholder="璇锋壂鎻忓钩琛¤酱鐮�" clearable @input="EngineNohandleChange"> + <el-button slot="append" plain type="info" @click="EngineNohandleChange" icon="el-icon-search"></el-button> + </el-input> + </el-form-item> + </el-form> + <el-form ref="form" :model="form" label-width="25%" > + <el-form-item prop="productType"style="margin-top: 30px" > + <span slot="label" style="font-size:22px;color:black"><strong>鏈哄瀷</strong></span> + <el-input disabled style="font-size:20px" value="form.productType" v-model="form.productType" placeholder="" /> + </el-form-item> + </el-form> + <el-form ref="form" :model="form" label-width="25%" > + <el-form-item prop="orderNo" style="margin-top: 30px"> + <span slot="label" style="font-size:22px;color:black"><strong>宸ュ崟缂栧彿</strong></span> + <el-input disabled style="font-size:20px" v-model="form.orderNo" placeholder="" /> + </el-form-item> + </el-form> + <el-form ref="form" :model="form" label-width="25%" > + <el-form-item prop="currentWorkstation" style="margin-top: 30px"> + <span slot="label" style="font-size:22px;color:black"><strong>璐ㄩ噺鐘舵��</strong></span> + <el-input disabled style="font-size:20px" v-model:value="form.add" placeholder="" /> + </el-form-item> + </el-form> + <el-divider></el-divider> + + <el-row :gutter="10" class="mb8" type="flex" justify="center" style="text-align: center"> + <el-col :span="1.5"> + <el-button plain :disabled="buttondisabled" type="primary" style="width:400px;height:160px" v-hasPermi="['bs:formula:add']" @click="forceOnline"> + <span class="el-icon-thumb" style="font-size:40px;color:black"></span> + <span style="font-size:45px;color:black"><strong>寮哄埗涓婄嚎</strong></span> + </el-button> + </el-col> + </el-row> + </el-card> + </el-col> + + <el-col :span="10" inline style="margin-top: 5px"> + <el-card class="custom-content" style="height: 530px" > + <el-col :span="14"style=" "> + <span style="font-size:25px"><strong>璐ㄩ噺鏁版嵁</strong></span> + <el-divider></el-divider> + {{this.form.engineCheckList}} + </el-col> + </el-card> + </el-col> + </el-row> + </div> +</template> +<script> + +import { listOrderScheduling, getOrderScheduling, delOrderScheduling, addOrderScheduling, updateOrderScheduling } from "@/api/main/bs/orderScheduling/orderScheduling"; +import { listPassingStationCollection, getPassingStationCollection, delPassingStationCollection, addPassingStationCollection, updatePassingStationCollection } from "@/api/main/da/passingStationCollection/passingStationCollection"; +import {listLineInfo} from "@/api/main/bs/lineInfo/lineInfo"; +import { setSNCode } from "@/api/main/da/opcuaconfig/opcuaconfig"; +import {getIp, listStationConf} from "@/api/main/sc/stationConf"; + +export default { + components: { }, + options: [], + props: [], + data() { + return { + options: [], + total: 0, + engineCheckList:[], + showFlag:false, + buttondisabled:true, + locationCode: "鏈厤缃�", + locationName: "鏈厤缃伐浣�", + + codeValue: "", + code: "", + lastTime: "", + nextTime: "", + lastCode: "", + nextCode: "", + dtmainId: "", + + // 鏌ヨ鍙傛暟 + queryParams: { + pageNum: 1, + pageSize: 10, + engineNo: null, + productType:null, + orderNo:null, + qualityStatus:null, + currentWorkstation: null, + add: null, + engineCheckList:'鏆傛棤鏁版嵁', + }, + // 琛ㄥ崟鍙傛暟 + form: { + engineNo: null, + productType:null, + orderNo:null, + qualityStatus:null, + currentWorkstation: null, + add: null, + engineCheckList:'鏆傛棤鏁版嵁', + }, + add: null, + }; + }, + computed: {}, + watch: {}, + created() { + window.document.onkeypress = (e) => { + if (window.event) { + this.nextCode = e.keyCode; + } else if (e.which) { + this.nextCode = e.which; + } + if (e.which === 13) { + // 閿洏鍥炶溅浜嬩欢 + if (this.code.length < 3) return; // 鎵爜鏋殑閫熷害寰堝揩锛屾墜鍔ㄨ緭鍏ョ殑鏃堕棿涓嶄細璁ヽode鐨勯暱搴﹀ぇ浜�2锛屾墍浠ヨ繖閲屼笉浼氬鎵爜鏋湁鏁� + this.parseQRCode(this.code); // 鑾峰彇鍒版壂鐮佹灙杈撳叆鐨勫唴瀹癸紝鍋氬埆鐨勬搷浣� + this.lastCode = ""; + this.lastTime = ""; + return; + } + this.nextTime = new Date().getTime(); + if (!this.lastTime && !this.lastCode) { + this.code = ""; // 娓呯┖涓婃鐨勬潯褰㈢爜 + this.code += e.key; + } + if (this.lastCode && this.lastTime && this.nextTime - this.lastTime > 500) { + // 褰撴壂鐮佸墠鏈塳eypress浜嬩欢鏃�,闃叉棣栧瓧缂哄け + this.code = e.key; + } else if (this.lastCode && this.lastTime) { + this.code += e.key; + } + this.lastCode = this.nextCode; + this.lastTime = this.nextTime; + }; + }, + mounted() { + this.getStationConf(); + }, + methods: { + getStationConf() { + getIp().then(response => { + let queryParams = { + ipAddress: response.msg, + } + listStationConf(queryParams).then(response => { + this.locationName = response.rows[0].processesName + this.locationCode = response.rows[0].processesCode + }); + + }); + + }, + reset() { + this.form = { + engineNo:null, + productType:null, + orderNo:null, + qualityStatus:null, + currentWorkstation: null, + add: null, + engineCheckList:'鏆傛棤鏁版嵁', + }; + this.resetForm("form"); + }, + EngineNohandleChange(){ + if(this.form.engineNo !== null && this.form.engineNo !== undefined){ + //let OrderSchedulingParam = {engineNo: null} + setSNCode(this.form.engineNo,this.locationCode) + //OrderSchedulingParam.engineNo = this.form.engineNo; + /* listOrderScheduling(OrderSchedulingParam).then(response => { + if(response.total === 1 ){ + this.form.productType = response.rows[0].model + this.form.orderNo = response.rows[0].orderNo + this.form.qualityStatus = response.rows[0].qualityStatus + this.form.currentWorkstation = response.rows[0].currentWorkstation + this.form.add= response.rows[0].currentWorkstation+ response.rows[0].qualityStatus + if(this.form.qualityStatus ==='涓嶅悎鏍�'){ + this.buttondisabled = false; + } + else{ + this.buttondisabled = true; + } + } + else{ + this.reset(); + this.buttondisabled = true + const h = this.$createElement; + this.$message({ + message: h('p',null, [ + h('span', null, '璀﹀憡 '), + h('i', { style: 'color: black' }, '杈撳叆鐨勫彂鍔ㄦ満鍙锋湁璇�'), + h()]), + type: 'error', + center: true, + offset:300 + }); + } + });*/ + /*let PassingStationCollectionParam = {sfcCode: null} + PassingStationCollectionParam.sfcCode = this.form.engineNo; + listPassingStationCollection(PassingStationCollectionParam).then(ponse =>{ + this.engineCheckList = ponse.rows.locationCode ; + if(ponse.rows.length >= 1 && this.form.engineNo !== undefined){ + this.form.engineCheckList = '' + for (let i = 0; i < ponse.rows.length; i++) { + this.form.engineCheckList += ' 宸ヤ綅:'+ ponse.rows[i].locationCode+'['+ponse.rows[i].outRsSign+']' + } + } + else{ + this.form.engineCheckList = '鏆傛棤鏁版嵁' + } + });*/ + } + }, + + parseQRCode(code) { + this.form.engineNo = code; + }, + }, + } + + +</script> +<style scoped> +::v-deep .el-input__inner{ + height: 40px; +} +::v-deep .el-form-item__label { + line-height: 40px; +} +.custom-content { + height: 50%; /* 璁剧疆楂樺害涓�50% */ +} + +.boxSize{ + height: 60px; +} +.centerText{ + color: black; + font-weight: bold; + font-size: 20px; + display: flex; + justify-content: center; + margin-top: 5px +} +/*.my-custom-modal .el-dialog__wrapper {*/ +/* width: 400px; !* 璁剧疆瀹藉害 *!*/ +/* height: 200px; !* 璁剧疆楂樺害 *!*/ +/* top: 50px; !* 璁剧疆璺濈椤甸潰椤堕儴鐨勪綅缃� *!*/ +/* left: 50px; !* 璁剧疆璺濈椤甸潰宸︿晶鐨勪綅缃� *!*/ +/*}*/ +</style> diff --git a/jcdm-ui/src/views/main/kb/crankshaft/index.vue b/jcdm-ui/src/views/main/kb/crankshaft/index.vue new file mode 100644 index 0000000..c29e4b7 --- /dev/null +++ b/jcdm-ui/src/views/main/kb/crankshaft/index.vue @@ -0,0 +1,243 @@ +<template> + <div class="app-container"> + <el-card class="box-card" style="height: 60px" > + <template> + <div class="container" type="flex" justify="center" style="text-align:center"> + <!-- <el-row type="flex" justify="center" style="text-align:center;height: 12px" >--> + <!-- <el-col type="flex" justify="center" :span="14" style="text-align:center">--> + <el-divider><span style="font-size:30px;color:black"><strong>鏇茶酱鐮佹壂鐮佷笂绾�</strong></span></el-divider> + <!-- </el-col>--> + <!-- </el-row>--> + </div> + </template> + </el-card> + <el-row :gutter="3"> + <el-col :span="6"> + <el-card shadow="always" class="boxSize"> + <div class="centerImg"> + <img style="width: 140px;height: 30px;" src="@/assets/logo/jcdm2.png" alt="dark"> + </div> + </el-card> + </el-col> + <el-col :span="3"> + <el-card shadow="always" class="boxSize"> + <span class="centerText" style="height: 60px">{{locationCode}}</span> + </el-card> + </el-col> + <el-col :span="15"> + <el-card shadow="always" class="boxSize"> + <span class="centerText" >{{locationName}}</span> + </el-card> + </el-col> + </el-row> + <el-row :gutter="0" > + <el-col :span="14"> + <el-card class="box-card" style="margin-top: 5px" > + <el-form ref="form" :model="form" label-width="25%" > + <el-form-item prop="engineNo" style="margin-top: 16px"> + <span slot="label" style="font-size:22px;color:black;"><strong>鏇茶酱鐮�</strong></span> + <el-input style="font-size:20px" v-model="form.engineNo" placeholder="璇锋壂鎻忔洸杞寸爜" clearable @input="EngineNohandleChange"> + <el-button slot="append" plain type="info" @click="EngineNohandleChange" icon="el-icon-search"></el-button> + </el-input> + </el-form-item> + </el-form> + <el-form ref="form" :model="form" label-width="25%" > + <el-form-item prop="productType"style="margin-top: 30px" > + <span slot="label" style="font-size:22px;color:black"><strong>鏈哄瀷</strong></span> + <el-input disabled style="font-size:20px" value="form.productType" v-model="form.productType" placeholder="" /> + </el-form-item> + </el-form> + <el-form ref="form" :model="form" label-width="25%" > + <el-form-item prop="orderNo" style="margin-top: 30px"> + <span slot="label" style="font-size:22px;color:black"><strong>宸ュ崟缂栧彿</strong></span> + <el-input disabled style="font-size:20px" v-model="form.orderNo" placeholder="" /> + </el-form-item> + </el-form> + <el-form ref="form" :model="form" label-width="25%" > + <el-form-item prop="currentWorkstation" style="margin-top: 30px"> + <span slot="label" style="font-size:22px;color:black"><strong>璐ㄩ噺鐘舵��</strong></span> + <el-input disabled style="font-size:20px" v-model:value="form.add" placeholder="" /> + </el-form-item> + </el-form> + <el-divider></el-divider> + + <el-row :gutter="10" class="mb8" type="flex" justify="center" style="text-align: center"> + <el-col :span="1.5"> + <el-button plain :disabled="buttondisabled" type="primary" style="width:400px;height:160px" v-hasPermi="['bs:formula:add']" @click="forceOnline"> + <span class="el-icon-thumb" style="font-size:40px;color:black"></span> + <span style="font-size:45px;color:black"><strong>寮哄埗涓婄嚎</strong></span> + </el-button> + </el-col> + </el-row> + </el-card> + </el-col> + + <el-col :span="10" inline style="margin-top: 5px"> + <el-card class="custom-content" style="height: 264px"> + <el-col :span="14"> + <span style="font-size:25px"><strong>璐ㄩ噺鐘舵��</strong></span> + <el-divider></el-divider> + {{this.form.engineCheckList}} + </el-col> + </el-card> + <el-card class="custom-content" style="height: 264px" > + <el-col :span="14"style=" "> + <span style="font-size:25px"><strong>鏈�缁堢粨鏋�</strong></span> + <el-divider></el-divider> + {{queryParams.productType}} + </el-col> + </el-card> + </el-col> + </el-row> + </div> +</template> +<script> + +import { listOrderScheduling, getOrderScheduling, delOrderScheduling, addOrderScheduling, updateOrderScheduling } from "@/api/main/bs/orderScheduling/orderScheduling"; +import { listPassingStationCollection, getPassingStationCollection, delPassingStationCollection, addPassingStationCollection, updatePassingStationCollection } from "@/api/main/da/passingStationCollection/passingStationCollection"; +import {listLineInfo} from "@/api/main/bs/lineInfo/lineInfo"; +import { setSNCode } from "@/api/main/da/opcuaconfig/opcuaconfig"; +import {getIp, listStationConf} from "@/api/main/sc/stationConf"; + +export default { + components: { }, + options: [], + props: [], + data() { + return { + options: [], + total: 0, + engineCheckList:[], + showFlag:false, + buttondisabled:true, + locationCode: "鏈厤缃�", + locationName: "鏈厤缃伐浣�", + + codeValue: "", + code: "", + lastTime: "", + nextTime: "", + lastCode: "", + nextCode: "", + dtmainId: "", + + // 鏌ヨ鍙傛暟 + queryParams: { + pageNum: 1, + pageSize: 10, + engineNo: null, + productType:null, + orderNo:null, + qualityStatus:null, + currentWorkstation: null, + add: null, + engineCheckList:'鏆傛棤鏁版嵁', + }, + // 琛ㄥ崟鍙傛暟 + form: { + engineNo: null, + productType:null, + orderNo:null, + qualityStatus:null, + currentWorkstation: null, + add: null, + engineCheckList:'鏆傛棤鏁版嵁', + }, + add: null, + }; + }, + computed: {}, + watch: {}, + created() { + window.document.onkeypress = (e) => { + if (window.event) { + this.nextCode = e.keyCode; + } else if (e.which) { + this.nextCode = e.which; + } + if (e.which === 13) { + // 閿洏鍥炶溅浜嬩欢 + if (this.code.length < 3) return; // 鎵爜鏋殑閫熷害寰堝揩锛屾墜鍔ㄨ緭鍏ョ殑鏃堕棿涓嶄細璁ヽode鐨勯暱搴﹀ぇ浜�2锛屾墍浠ヨ繖閲屼笉浼氬鎵爜鏋湁鏁� + this.parseQRCode(this.code); // 鑾峰彇鍒版壂鐮佹灙杈撳叆鐨勫唴瀹癸紝鍋氬埆鐨勬搷浣� + this.lastCode = ""; + this.lastTime = ""; + return; + } + this.nextTime = new Date().getTime(); + if (!this.lastTime && !this.lastCode) { + this.code = ""; // 娓呯┖涓婃鐨勬潯褰㈢爜 + this.code += e.key; + } + if (this.lastCode && this.lastTime && this.nextTime - this.lastTime > 500) { + // 褰撴壂鐮佸墠鏈塳eypress浜嬩欢鏃�,闃叉棣栧瓧缂哄け + this.code = e.key; + } else if (this.lastCode && this.lastTime) { + this.code += e.key; + } + this.lastCode = this.nextCode; + this.lastTime = this.nextTime; + }; + }, + mounted() { + this.getStationConf(); + }, + methods: { + getStationConf() { + getIp().then(response => { + let queryParams = { + ipAddress: response.msg, + } + listStationConf(queryParams).then(response => { + this.locationName = response.rows[0].processesName + this.locationCode = response.rows[0].processesCode + }); + }); + }, + reset() { + this.form = { + engineNo:null, + productType:null, + orderNo:null, + qualityStatus:null, + currentWorkstation: null, + add: null, + engineCheckList:'鏆傛棤鏁版嵁', + }; + this.resetForm("form"); + }, + EngineNohandleChange(){ + if(this.form.engineNo !== null && this.form.engineNo !== undefined){ + setSNCode(this.form.engineNo,this.locationCode) + } + }, + parseQRCode(code) { + this.form.engineNo = code; + }, + }, + } + + +</script> +<style scoped> +::v-deep .el-input__inner{ + height: 40px; +} +::v-deep .el-form-item__label { + line-height: 40px; +} +.custom-content { + height: 50%; /* 璁剧疆楂樺害涓�50% */ +} + +.boxSize{ + height: 60px; +} +.centerText{ + color: black; + font-weight: bold; + font-size: 20px; + display: flex; + justify-content: center; + margin-top: 5px +} +</style> diff --git a/jcdm-ui/src/views/main/om/productionOrde/detail.vue b/jcdm-ui/src/views/main/om/productionOrde/detail.vue new file mode 100644 index 0000000..6bb028e --- /dev/null +++ b/jcdm-ui/src/views/main/om/productionOrde/detail.vue @@ -0,0 +1,184 @@ +<template> + <div class="app-container"> + <div style="height: 100%;width: 100%"> + <el-card class="box-card"> + <el-form :model="queryParams" size="large" :inline="true" label-width="68px" @submit.native.prevent> + <el-form-item label-width="200" label="绠变綋鐮�" :prop="queryParams.productionNotice" style="align-content: center"> + <input v-model="queryParams.productionNotice" + ref="inputdata" + style="height: 39px; width: 300px" + placeholder="璇锋壂鎻忕浣撶爜" + /> + </el-form-item> +<!-- <el-button size="large" type="primary" >涓婄嚎</el-button>--> +<!-- <el-button size="large" type="danger">涓嬬嚎</el-button>--> + <el-button size="large" type="info" @click="refresh">杩斿洖</el-button> + </el-form> + </el-card> + <el-row :gutter="0"> + <el-col :span="6"> + <div > + <el-card style="height: 460px"> + <el-descriptions class="margin-top" :column="1" direction="horizontal"> + <el-descriptions-item label="鐢熶骇璁㈠崟">{{singleSelect.workOrderNo}}</el-descriptions-item> + <el-descriptions-item label="鏈哄瀷" :span="2">{{singleSelect.typeZ}}</el-descriptions-item> + <el-descriptions-item label="璁″垝鏁伴噺"> + {{singleSelect.planQty}} + </el-descriptions-item> + <el-descriptions-item label="涓婄嚎鏁伴噺">{{onlineNum}}</el-descriptions-item> + <el-descriptions-item label="瀹屾垚鏁伴噺">{{finishNum}}</el-descriptions-item> + <el-descriptions-item label="涓嶅悎鏍兼暟">{{unReachNum}}</el-descriptions-item> + </el-descriptions> + </el-card> + </div> + </el-col> + <el-col :span="18"> + <div> + <el-card style="height: 460px; overflow: auto"> + <el-table border :data="orderSchedulingList"> + <el-table-column + type="index" + label="搴忓彿" + width="50"></el-table-column> + <el-table-column label="鐢熶骇璁㈠崟" align="center" prop="orderNo" width="130"> + + </el-table-column> + <el-table-column label="鍙戝姩鏈哄彿" align="center" prop="engineNo" width="150"> + + </el-table-column> + <el-table-column label="鏈哄瀷" align="center" prop="model"> + + </el-table-column> + <el-table-column label="鐢熶骇鐘舵��" align="center" prop="productionStatus"> + <template slot-scope="scope"> + <dict-tag :options="dict.type.order_scheduling_produce_status" :value="scope.row.productionStatus"/> + </template> + </el-table-column> + <el-table-column label="璐ㄩ噺鐘舵��" align="center" prop="qualityStatus"> + <template slot-scope="scope"> + <dict-tag :options="dict.type.quality_status" :value="scope.row.qualityStatus"/> + </template> + </el-table-column> + + + <el-table-column label="鎿嶄綔浜�" align="center" prop="operator"> + </el-table-column> + <el-table-column label="鎿嶄綔鏃堕棿" align="center" prop="operateTime" width="160"> + <template slot-scope="scope"> + <span>{{ parseTime(scope.row.operateTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span> + </template> + </el-table-column> + + </el-table> + <pagination + v-show="total>0" + :total="total" + :page.sync="queryParams.pageNum" + :limit.sync="queryParams.pageSize" + @pagination="getListData" + /> + </el-card> + </div> + </el-col> + </el-row> + </div> + </div> +</template> + +<script> + +import { engineNoIsInModel, getSumDataMethod, listOrderScheduling3 } from "../../../../api/main/bs/orderScheduling/orderScheduling"; +export default { + name: 'Detail', + props: ['singleSelect'], + dicts: ['order_scheduling_produce_status','quality_status','print_status','material_type'], + data(){ + return{ + // 鎬绘潯鏁� + total: 0, + queryParams: { + orderNo:'', + pageNum: 1, + pageSize: 10, + }, + orderSchedulingList: [], + onlineNum: 0, + finishNum: 0, + unReachNum: 0, + scannerFlag: false + } + }, + methods:{ + handleQuery(){ + + }, + refresh() { + location.reload(); + }, + setFocus(){ + this.$nextTick(()=>{ + this.$refs.inputdata.focus() + }) + }, + handleScannerInput(event){ + if (this.scannerFlag){ + this.queryParams.productionNotice = '' + this.$refs.inputdata.value = '' + this.scannerFlag = false + } + console.log('+++++++++++++++=++++++',event) + const input = event.target + const inputValue = input.value + this.queryParams.productionNotice = inputValue + console.log('----------------------',this.queryParams.productionNotice) + if (event.key === 'Enter'){ + this.scannerFlag = true + //鎵弿瀹屾垚 + engineNoIsInModel({engineNo:this.queryParams.productionNotice, + model:this.singleSelect.typeZ,orderNo:this.singleSelect.workOrderNo + }).then(res => { + console.log('rerrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrs----',res) + if (res.data===500){ + console.log('====---===') + this.$message({ + message:res.msg, + type:'warning' + }) + }else { + this.$message({ + message:'鎿嶄綔鎴愬姛', + type:'success' + }) + this.getListData() + } + }) + } + }, + //鏌ヨ鍒楄〃 + getListData(){ + console.log('this.queryParams.workOrderNo',this.singleSelect.workOrderNo) + this.queryParams.orderNo = this.singleSelect.workOrderNo + console.log('this.queryParams',this.queryParams) + listOrderScheduling3(this.queryParams).then(res => { + this.orderSchedulingList = res.rows + this.total = res.total + }) + getSumDataMethod(this.queryParams).then(res =>{ + console.log('res',res) + this.onlineNum = res.data.onlineNum + this.finishNum = res.data.finishNum + this.unReachNum = res.data.unqualified + }) + } + }, + mounted() { + console.log('singleSelect111',this.singleSelect) + this.getListData() + this.setFocus() + this.$refs.inputdata.addEventListener('keydown',this.handleScannerInput) + }, + beforeDestroy() { + this.$refs.inputdata.removeEventListener('keydown',this.handleScannerInput) + } +} +</script> diff --git a/jcdm-ui/src/views/main/om/productionOrde/index.vue b/jcdm-ui/src/views/main/om/productionOrde/index.vue index 5e8cb58..f3ddc64 100644 --- a/jcdm-ui/src/views/main/om/productionOrde/index.vue +++ b/jcdm-ui/src/views/main/om/productionOrde/index.vue @@ -1,5 +1,6 @@ <template> <div class="app-container"> + <div v-if="!showDetailFlag"> <el-card class="box-card"> <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> <el-form-item label-width="100" label="鐢熶骇閫氱煡鍗�" prop="productName"> @@ -113,6 +114,16 @@ @click="CreatehandleUpdate" v-hasPermi="['om:productionOrde:createUpdate']" >鐢熸垚</el-button> + </el-col> + <el-col :span="1.5"> + <el-button + type="warning" + plain + icon="el-icon-download" + size="mini" + :disabled="!single" + @click="goToPage" + >寮�濮嬩綔涓�</el-button> </el-col> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> @@ -301,7 +312,8 @@ <el-button @click="cancel">鍙� 娑�</el-button> </div> </el-dialog> - + </div> + <Detail v-if="showDetailFlag" :singleSelect="singleSelect"></Detail> </div> </template> @@ -322,15 +334,19 @@ } from "@/api/main/bs/orderScheduling/orderScheduling"; import {listMaterial} from "@/api/main/bs/material/material"; import {listModelNumber} from "@/api/main/bs/modelNumber/modelNumber"; +import Detail from "./detail.vue"; export default { name: "ProductionOrde", dicts: ['order_state','year','month','day','subscription_type', 'sys_yes_no', 'data_type','sys_normal_disable'], components: { ItemSelect , + Detail }, data() { return { + showDetailFlag: false, + singleSelect:{}, titleName: '', options: [], lineOptions: [], @@ -495,10 +511,10 @@ dateTimeRule = dateTimeRule + day; dateTimeRule = dateTimeRule + this.markNo; this.form.dateTimeRule = dateTimeRule;//姝ゅ璧嬪�间笉鍔犳満鍨� - dateTimeRule = dateTimeRule + this.form.typeZ;//姝ゅ鍔犳満鍨嬶紝椤哄簭涓嶈兘棰犲�� + dateTimeRule = this.form.typeZ +" "+dateTimeRule;//姝ゅ鍔犳満鍨嬶紝椤哄簭涓嶈兘棰犲�� //璧嬪�艰捣濮嬬紪鐮� - this.form.startEndCode = dateTimeRule + String(parseInt(startCode)).padStart(3, '0') + " " + dateTimeRule + String(parseInt(startCode) + parseInt(planQty)-1).padStart(3, '0') ; + this.form.startEndCode = dateTimeRule + String(parseInt(startCode)).padStart(3, '0') + " " + dateTimeRule + String(parseInt(startCode) + parseInt(planQty)-1).padStart(3, '0') ; } }, @@ -638,7 +654,8 @@ spareField3: null, typeZ: null, spareField4: null, - adds:null + adds:null, + idNums:null }; this.resetForm("form"); }, @@ -652,7 +669,7 @@ this.resetForm("queryForm"); this.handleQuery(); }, - // 澶氶�夋閫変腑鏁版嵁 + /** 澶氶�夋閫変腑鏁版嵁 */ handleSelectionChange(selection) { this.ids = selection.map(item => item.id) this.move = selection.length!==1 @@ -664,8 +681,10 @@ this.single = false this.multiple = false } + if(selection[0].orderStatus === '2' && selection.length === 1){ + this.singleSelect = selection[0] + } } - }, /** 鏂板鎸夐挳鎿嶄綔 */ @@ -689,6 +708,7 @@ this.form.typeL = response.rows[0].typeL; }); this.form = response.data; + this.form.idNums=id; this.Createopen = true; this.titleName = "鐢熸垚绠变綋鏉$爜"; // return Array.from({ length: parseInt(this.actualQty) }, (_, index) => index + 1); @@ -758,7 +778,7 @@ saveBoxCode(){ this.$refs["form"].validate(valid => { if (valid) { - if (this.form.id != null) { + if (this.form.idNums != null) { addOrderSchedulingForBoxCode(this.form).then(response => { this.$modal.msgSuccess("淇濆瓨鎴愬姛"); this.Createopen = false; @@ -785,7 +805,12 @@ ...this.queryParams }, `productionOrde_${new Date().getTime()}.xlsx`) }, - + goToPage() { + this.showDetailFlag=true + console.log('this.showDetailFlag',this.showDetailFlag) + //鏇存柊瀹為檯鐢熶骇鏃ユ湡 + //updateOrderInfo(this.singleSelect) + }, } }; </script> -- Gitblit v1.9.3