喻忠伟 1 year ago
commit 5010af7261
  1. 58
      ant-design-vue-jeecg/src/views/shopping/shopHome.vue
  2. 7
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/largeScreen/controller/ProductionLargeScreenController.java
  3. 2
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/largeScreen/service/ProductionLargeService.java
  4. 119
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/largeScreen/service/impl/ProductionLargeServiceImpl.java
  5. 12
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/largeScreen/vo/ProductRecordVo.java
  6. 8
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/entity/ZySpeechMessage.java
  7. 2
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/productplan/controller/ZyProductPlanController.java

@ -74,7 +74,16 @@
<div class="orange"></div> <div class="orange"></div>
<p class="desc">Recommending Commodities</p> <p class="desc">Recommending Commodities</p>
</div> </div>
<a-carousel arrows :slides-to-show="3" :slides-to-scroll="1"> <!-- <el-carousel :interval="4000" type="card">-->
<!-- <el-carousel-item v-for="(item, index) in clothList2" :key="index" @click="tjspxq1(item.id,item.title)">-->
<!-- <div class="box" >-->
<!-- <img :src="item.imgUrl" alt="" />-->
<!-- <p class="box1">{{item.title}}</p>-->
<!-- <p class="box2">{{item.time}}</p>-->
<!-- </div>-->
<!-- </el-carousel-item>-->
<!-- </el-carousel>-->
<a-carousel arrows :slides-to-show="3" :slides-to-scroll="1" >
<div <div
slot="prevArrow" slot="prevArrow"
slot-scope="props" slot-scope="props"
@ -89,7 +98,7 @@
<div class="box" v-for="(item, index) in clothList2" :key="index" @click="tjspxq1(item.id,item.title)"> <div class="box" v-for="(item, index) in clothList2" :key="index" @click="tjspxq1(item.id,item.title)">
<img :src="item.imgUrl" alt="" /> <img :src="item.imgUrl" alt="" />
<p class="box1">{{item.title}}</p> <p class="box1">{{item.title}}</p>
<p class="box2">{{item.time}}</p> <p class="box2">价格:{{item.time}}</p>
</div> </div>
</a-carousel> </a-carousel>
<div class="more d-flex" style="padding-top: 20px"> <div class="more d-flex" style="padding-top: 20px">
@ -693,20 +702,37 @@
@import './assets/common.css'; @import './assets/common.css';
</style> </style>
<style scoped> <style scoped>
.box { /*.box {*/
position: relative; /* position: relative;*/
} /* }*/
.img { /*.img {*/
position: absolute; /* position: absolute;*/
top: 0; /* top: 0;*/
} /*}*/
.box1 { /*.box1 {*/
position: absolute; /* position: absolute;*/
bottom: 20%; /* bottom: 20%;*/
} /*}*/
.box2 { /*.box2 {*/
position: absolute; /* position: absolute;*/
bottom: 5%; /* bottom: 5%;*/
/*}*/
/*.slick-slide.slick-active:nth-child(2) img{*/
/* height: 450px;*/
/* width: 100%;*/
/*}*/
.box img{
width: 90%;
height: 400px;
}
.box .box1{
width: 90%;
margin-top: 20px;
letter-spacing: 0.1em;
font-size: 24px;color: #1B1B1B;
}
.box .box2{
font-size: 18px;color: #1B1B1B;text-align: right;padding-right: 80px;
} }
.more { .more {
align-items: center; align-items: center;

@ -33,4 +33,11 @@ public class ProductionLargeScreenController {
return Result.OK(data); return Result.OK(data);
} }
@ApiOperation(value = "获取生产设备大屏数据", notes = "获取生产设备大屏数据")
@GetMapping("/shengchanxian_data")
public Result<?> shengchanxian_data() {
Map<String, Object> data = productionLargeService.shengchanxian_data();
return Result.OK(data);
}
} }

@ -5,4 +5,6 @@ import java.util.Map;
public interface ProductionLargeService { public interface ProductionLargeService {
Map<String, Object> getData(); Map<String, Object> getData();
Map<String, Object> shengchanxian_data();
} }

@ -64,7 +64,71 @@ public class ProductionLargeServiceImpl implements ProductionLargeService {
resultMap.put("diaogua_data", diaoguaData);*/ resultMap.put("diaogua_data", diaoguaData);*/
//2,生产线实时状态 // //2,生产线实时状态
// List<Station> stationGroup = iStationService.list(new LambdaQueryWrapper<Station>().groupBy(Station::getDepartId));
// Map<String, Object> shengchanxianMap = new LinkedHashMap<>();
// if (!ObjectUtils.isEmpty(stationGroup)) {
// stationGroup.stream().forEach(station -> {
// Map<String, Object> departMap = new LinkedHashMap<>();
// //每个车间的工位
// List<Station> stationList = iStationService.list(new LambdaQueryWrapper<Station>()
// .eq(Station::getDepartId, station.getDepartId())
// .orderByAsc(Station::getStationNum)
// );
// /**
// * 取每个工位的,生产记录状态0(生产中)的最新一条数据
// */
// List<ProductRecordVo> productRecordVos = new LinkedList<>();
// Optional.ofNullable(stationList).orElse(new LinkedList<>()).forEach(obj -> {
// ProductRecord productRecord = iProductRecordService.getOne(new LambdaQueryWrapper<ProductRecord>()
// .eq(ProductRecord::getStationId, obj.getId())
// .eq(ProductRecord::getStatus, "0")
// .orderByDesc(ProductRecord::getCreateTime)
// .last("limit 1")
// );
// if (!ObjectUtils.isEmpty(productRecord)) {
// ZyProductPlan productPlan = iZyProductPlanService.getOne(new LambdaQueryWrapper<ZyProductPlan>().eq(ZyProductPlan::getProductCode, productRecord.getOrderCode()));
// Optional.ofNullable(productPlan).orElseThrow(() -> new JeecgBootException("工单编号:" + productRecord.getOrderCode() + "不存在!"));
// List<ZyPlanProcess> zyPlanProcessList = iZyPlanProcessService.list(new LambdaQueryWrapper<ZyPlanProcess>()
// .eq(ZyPlanProcess::getPlanId, productPlan.getId())
// .eq(ZyPlanProcess::getStationId, obj.getId())
// );
// if (!ObjectUtils.isEmpty(zyPlanProcessList)) {
// ZyPlanProcess zyPlanProcess = zyPlanProcessList.get(0);
// ProductRecordVo vo = new ProductRecordVo();
// vo.setProductCode(productRecord.getOrderCode());
// vo.setProcessName(zyPlanProcess.getProcessName());
// vo.setStationName(zyPlanProcess.getStationName());
// vo.setMachineNames(zyPlanProcess.getMachineNames());
// vo.setStationNum(zyPlanProcess.getStationNum());
// productRecordVos.add(vo);
// } else {
// ProductRecordVo vo = new ProductRecordVo();
// vo.setStationName(obj.getStationName());
// vo.setStationNum(obj.getStationNum());
// productRecordVos.add(vo);
// }
// } else {
// ProductRecordVo vo = new ProductRecordVo();
// vo.setStationName(obj.getStationName());
// vo.setStationNum(obj.getStationNum());
// productRecordVos.add(vo);
// }
// });
// SysDepart depart = iSysDepartService.getOne(new LambdaQueryWrapper<SysDepart>().eq(SysDepart::getId, station.getDepartId()));
//// productRecordVos.stream().map(o -> o.getStationNum()).collect(Collectors.toList());
// departMap.put(depart.getDepartName(), productRecordVos);
// shengchanxianMap.putAll(departMap);
// });
// }
// resultMap.put("shengchanxian_data", shengchanxianMap);
return resultMap;
}
@Override
public Map<String, Object> shengchanxian_data() {
Map<String, Object> resultMap = new HashMap<>();
List<Station> stationGroup = iStationService.list(new LambdaQueryWrapper<Station>().groupBy(Station::getDepartId)); List<Station> stationGroup = iStationService.list(new LambdaQueryWrapper<Station>().groupBy(Station::getDepartId));
Map<String, Object> shengchanxianMap = new LinkedHashMap<>(); Map<String, Object> shengchanxianMap = new LinkedHashMap<>();
if (!ObjectUtils.isEmpty(stationGroup)) { if (!ObjectUtils.isEmpty(stationGroup)) {
@ -80,34 +144,32 @@ public class ProductionLargeServiceImpl implements ProductionLargeService {
*/ */
List<ProductRecordVo> productRecordVos = new LinkedList<>(); List<ProductRecordVo> productRecordVos = new LinkedList<>();
Optional.ofNullable(stationList).orElse(new LinkedList<>()).forEach(obj -> { Optional.ofNullable(stationList).orElse(new LinkedList<>()).forEach(obj -> {
ProductRecord productRecord = iProductRecordService.getOne(new LambdaQueryWrapper<ProductRecord>() // ProductRecord productRecord = iProductRecordService.getOne(new LambdaQueryWrapper<ProductRecord>()
.eq(ProductRecord::getStationId, obj.getId()) // .eq(ProductRecord::getStationId, obj.getId())
.eq(ProductRecord::getStatus, "0") // .eq(ProductRecord::getStatus, "0")
.orderByDesc(ProductRecord::getCreateTime) // .orderByDesc(ProductRecord::getCreateTime)
.last("limit 1") // .last("limit 1")
); // );
if (!ObjectUtils.isEmpty(productRecord)) { //查询生产计划工序表,对应设备状态 为生产中的数据
ZyProductPlan productPlan = iZyProductPlanService.getOne(new LambdaQueryWrapper<ZyProductPlan>().eq(ZyProductPlan::getProductCode, productRecord.getOrderCode())); ZyPlanProcess zyPlanProcess = iZyPlanProcessService.getOne(new LambdaQueryWrapper<ZyPlanProcess>()
Optional.ofNullable(productPlan).orElseThrow(() -> new JeecgBootException("工单编号:" + productRecord.getOrderCode() + "不存在!")); .eq(ZyPlanProcess::getStationId, obj.getId())
List<ZyPlanProcess> zyPlanProcessList = iZyPlanProcessService.list(new LambdaQueryWrapper<ZyPlanProcess>() // .eq(ZyPlanProcess::getStatus,"1"))
.eq(ZyPlanProcess::getPlanId, productPlan.getId()) .orderByDesc(ZyPlanProcess::getUpdateTime)
.eq(ZyPlanProcess::getStationId, obj.getId()) .last("limit 1"));
); if (!ObjectUtils.isEmpty(zyPlanProcess)) {
if (!ObjectUtils.isEmpty(zyPlanProcessList)) { ZyProductPlan productPlan = iZyProductPlanService.getById(zyPlanProcess.getPlanId());
ZyPlanProcess zyPlanProcess = zyPlanProcessList.get(0); // Optional.ofNullable(productPlan).orElseThrow(() -> new JeecgBootException("生产计划:" + zyPlanProcess.getPlanId() + "不存在!"));
ProductRecordVo vo = new ProductRecordVo(); ProductRecordVo vo = new ProductRecordVo();
vo.setProductCode(productRecord.getOrderCode()); if (!ObjectUtils.isEmpty(productPlan)) {
vo.setProcessName(zyPlanProcess.getProcessName()); vo.setWorkOrder(productPlan.getProductNo());
vo.setStationName(zyPlanProcess.getStationName());
vo.setMachineNames(zyPlanProcess.getMachineNames());
vo.setStationNum(zyPlanProcess.getStationNum());
productRecordVos.add(vo);
} else {
ProductRecordVo vo = new ProductRecordVo();
vo.setStationName(obj.getStationName());
vo.setStationNum(obj.getStationNum());
productRecordVos.add(vo);
} }
vo.setProcessName(zyPlanProcess.getProcessName());
vo.setStationName(zyPlanProcess.getStationName());
vo.setMachineNames(zyPlanProcess.getMachineNames());
vo.setStationNum(zyPlanProcess.getStationNum());
vo.setProcessStatus(zyPlanProcess.getStatus());
vo.setPlanProcessInfo(zyPlanProcess);
productRecordVos.add(vo);
} else { } else {
ProductRecordVo vo = new ProductRecordVo(); ProductRecordVo vo = new ProductRecordVo();
vo.setStationName(obj.getStationName()); vo.setStationName(obj.getStationName());
@ -116,7 +178,6 @@ public class ProductionLargeServiceImpl implements ProductionLargeService {
} }
}); });
SysDepart depart = iSysDepartService.getOne(new LambdaQueryWrapper<SysDepart>().eq(SysDepart::getId, station.getDepartId())); SysDepart depart = iSysDepartService.getOne(new LambdaQueryWrapper<SysDepart>().eq(SysDepart::getId, station.getDepartId()));
// productRecordVos.stream().map(o -> o.getStationNum()).collect(Collectors.toList());
departMap.put(depart.getDepartName(), productRecordVos); departMap.put(depart.getDepartName(), productRecordVos);
shengchanxianMap.putAll(departMap); shengchanxianMap.putAll(departMap);
}); });

@ -1,12 +1,15 @@
package org.jeecg.modules.largeScreen.vo; package org.jeecg.modules.largeScreen.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import org.jeecg.modules.productplan.entity.ZyPlanProcess;
import org.jeecgframework.poi.excel.annotation.Excel; import org.jeecgframework.poi.excel.annotation.Excel;
import java.io.Serializable; import java.io.Serializable;
@Data @Data
@ApiModel(value="生产大屏-生产线实时状态", description="生产大屏-生产线实时状态")
public class ProductRecordVo implements Serializable { public class ProductRecordVo implements Serializable {
private static final long serialVersionUID = 007555; private static final long serialVersionUID = 007555;
@ -21,6 +24,7 @@ public class ProductRecordVo implements Serializable {
// @ApiModelProperty(value = "设备id列表") // @ApiModelProperty(value = "设备id列表")
// @Dict(dictTable = "zy_device", dicText = "name", dicCode = "id") // @Dict(dictTable = "zy_device", dicText = "name", dicCode = "id")
// private String machineIds; // private String machineIds;
private String machineNames; private String machineNames;
@ -44,7 +48,13 @@ public class ProductRecordVo implements Serializable {
@Excel(name = "工单编号", width = 15) @Excel(name = "工单编号", width = 15)
@ApiModelProperty(value = "工单编号") @ApiModelProperty(value = "工单编号")
private String productCode; private String workOrder;
private Integer stationNum; private Integer stationNum;
@ApiModelProperty(value = "工位工序状态")
private Integer processStatus;
@ApiModelProperty(value = "工序信息")
private ZyPlanProcess planProcessInfo;
} }

@ -30,6 +30,9 @@ import java.util.Date;
public class ZySpeechMessage implements Serializable { public class ZySpeechMessage implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
public static final int XIAOSHOU = 1;
public static final int SHENGCHAN = 2;
/** /**
* 主键 * 主键
*/ */
@ -89,4 +92,9 @@ public class ZySpeechMessage implements Serializable {
@Excel(name = "消息", width = 15) @Excel(name = "消息", width = 15)
@ApiModelProperty(value = "消息") @ApiModelProperty(value = "消息")
private String message; private String message;
@Excel(name = "消息类型", width = 15)
@ApiModelProperty(value = "消息类型")
// 1:销售类(订单) 2:生产(生产计划/工单)',
private Integer messageType;
} }

@ -101,6 +101,8 @@ public class ZyProductPlanController extends JeecgController<ZyProductPlan, IZyP
String productCode = zyProductPlan.getProductCode(); String productCode = zyProductPlan.getProductCode();
String code = productCode.substring(productCode.length() - 6); String code = productCode.substring(productCode.length() - 6);
String mess = "工单尾号" + code + ",生产计划已完成制定,请跟进后续生产作业."; String mess = "工单尾号" + code + ",生产计划已完成制定,请跟进后续生产作业.";
//生产类型的消息,保存工单id,播报工单id
zySpeechMessage.setMessageType(ZySpeechMessage.SHENGCHAN);
zySpeechMessage.setMessage(mess); zySpeechMessage.setMessage(mess);
zySpeechMessage.setWorkorderId(productCode); zySpeechMessage.setWorkorderId(productCode);
iZySpeechMessageService.save(zySpeechMessage); iZySpeechMessageService.save(zySpeechMessage);

Loading…
Cancel
Save