From 74863c38a407b1e0f36250dfa0c63e5da7fe5f66 Mon Sep 17 00:00:00 2001
From: pang.jiabao <pang_jiabao@163.com>
Date: 星期一, 19 一月 2026 18:06:51 +0800
Subject: [PATCH] WMS功能完善
---
src/main/java/com/zy/asrs/service/impl/DigitalTwinServiceImpl.java | 187 ++++++++++++++++++++++++++++++----------------
1 files changed, 123 insertions(+), 64 deletions(-)
diff --git a/src/main/java/com/zy/asrs/service/impl/DigitalTwinServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/DigitalTwinServiceImpl.java
index 0a14629..48197f3 100644
--- a/src/main/java/com/zy/asrs/service/impl/DigitalTwinServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/DigitalTwinServiceImpl.java
@@ -3,6 +3,7 @@
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.Cools;
import com.core.common.R;
+import com.zy.asrs.entity.BasCrnp;
import com.zy.asrs.entity.LocCount;
import com.zy.asrs.entity.LocDetl;
import com.zy.asrs.entity.LocMast;
@@ -10,12 +11,16 @@
import com.zy.asrs.entity.mes.StockDetl;
import com.zy.asrs.mapper.DigitalTwinMapper;
import com.zy.asrs.mapper.LocCountMapper;
+import com.zy.asrs.service.BasCrnpService;
import com.zy.asrs.service.DigitalTwinService;
import com.zy.asrs.service.LocDetlService;
import com.zy.asrs.service.LocMastService;
+import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
+import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
@@ -63,24 +68,32 @@
*/
public List<DtOrderVo> order(String startDate, String endDate) {
- String startTime;
- String endTime;
+ Date startTime = new Date();
+ Date endTime = new Date();
if (startDate == null || endDate == null || startDate.isEmpty() || endDate.isEmpty()){
Date now = new Date();
Calendar calendar = Calendar.getInstance();
calendar.setTime(now);
calendar.add(Calendar.DAY_OF_MONTH, -7);
- Date start = calendar.getTime();
+ startTime = calendar.getTime();
+ endTime = now;
- SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
- endDate = sdf.format(now);
- startDate = sdf.format(start);
+ } else {
+ SimpleDateFormat sdf =
+ new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
+
+ try {
+ startTime = sdf.parse(startDate);
+ endTime = sdf.parse(endDate);
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
}
- startTime = startDate.substring(0, 4) + "-" + startDate.substring(4, 6) + "-" + startDate.substring(6, 8) + "00:00:00";
- endTime = endDate.substring(0, 4) + "-" + endDate.substring(4, 6) + "-" + endDate.substring(6, 8) + "00:00:00";
List<DtOrderVo> dbOrder = digitalTwinMapper.recentOrder(startTime, endTime);
// 绌烘棩鏈熻ˉ鍏�
-
+ for (DtOrderVo dtOrderVo : dbOrder) {
+ dtOrderVo.setOrderDate(dtOrderVo.getOrderDate());
+ }
return dbOrder;
}
@@ -95,27 +108,34 @@
*/
public List<DtInAndOutBoundVo> inAndOutBound(String areaId, String startDate, String endDate) {
- List<DtInAndOutBoundVo> dtInAndOutBoundVos = new ArrayList<>();
-
- String startTime;
- String endTime;
+ Date startTime = new Date();
+ Date endTime = new Date();
if (startDate == null || endDate == null || startDate.isEmpty() || endDate.isEmpty()){
Date now = new Date();
Calendar calendar = Calendar.getInstance();
calendar.setTime(now);
calendar.add(Calendar.DAY_OF_MONTH, -7);
- Date start = calendar.getTime();
+ startTime = calendar.getTime();
+ endTime = now;
- SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
- endDate = sdf.format(now);
- startDate = sdf.format(start);
+ } else {
+ SimpleDateFormat sdf =
+ new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
+
+ try {
+ startTime = sdf.parse(startDate);
+ endTime = sdf.parse(endDate);
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
}
- startTime = startDate.substring(0, 4) + "-" + startDate.substring(4, 6) + "-" + startDate.substring(6, 8) + "00:00:00";
- endTime = endDate.substring(0, 4) + "-" + endDate.substring(4, 6) + "-" + endDate.substring(6, 8) + "00:00:00";
+
List<DtInAndOutBoundVo> dtInBoundVos = digitalTwinMapper.recentInBound(areaId, startTime, endTime);
List<DtInAndOutBoundVo> dtOutBoundVos = digitalTwinMapper.recentOutBound(areaId, startTime, endTime);
// 鏍煎紡鏁寸悊
+ List<DtInAndOutBoundVo> dtInAndOutBoundVos = new ArrayList<>(dtInBoundVos);
+ dtInAndOutBoundVos.addAll(dtOutBoundVos);
return dtInAndOutBoundVos;
}
@@ -140,12 +160,10 @@
calendar.setTime(now);
calendar.add(Calendar.DAY_OF_MONTH, -overDayNum);
Date start = calendar.getTime();
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- String startTime = sdf.format(start);
+// SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+// Date startTime = sdf.parse(start);
- List<DtDetainMatVo> dbDetainMats = digitalTwinMapper.recentDetainMat(areaId, startTime, pageIndex, pageSize);
-
- return dbDetainMats;
+ return digitalTwinMapper.recentDetainMat(areaId, start, pageIndex, pageSize);
}
@Resource
@@ -160,36 +178,73 @@
* @param areaId
* @return
*/
+ public List<DtLocDetailVo> warehouseDetail2(String areaId) {
+ List<LocMast> locMastList = locMastService.selectList(new EntityWrapper<>());
+ return locMastList.stream()
+ .map(loc -> {
+ DtLocDetailVo vo = new DtLocDetailVo();
+ BeanUtils.copyProperties(loc, vo);
+ return vo;
+ })
+ .collect(Collectors.toList());
+ }
+
+ /**
+ * 鏌ヨ搴撳瓨鍜屽簱浣嶈缁嗕俊鎭�
+ *
+ * @param areaId
+ * @return
+ */
public R warehouseDetail(String areaId) {
- List<LocDetl> locDetls;
- locDetls = locDetlService.selectList(new EntityWrapper<>());
+ List<DtLocDetailVo> locDetailVos = new ArrayList<>();
- List<String> locNoList = locDetls.stream().map(LocDetl::getLocNo).distinct().collect(Collectors.toList());
- List<DtLocDetailVo> dtLocDetailVoList = new ArrayList<>();
- for (String locNo: locNoList) {
-
- LocMast locMast = locMastService.selectById(locNo);
+ List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>().eq("loc_sts","F"));
+ List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<>());
+ for (LocMast locMast : locMasts) {
DtLocDetailVo dtLocDetailVo = new DtLocDetailVo();
- dtLocDetailVo.setLocNo(locNo);
+ dtLocDetailVo.setLocMast(locMast);
+ dtLocDetailVo.setLocNo(locMast.getLocNo());
dtLocDetailVo.setLocSts(locMast.getLocSts());
dtLocDetailVo.setRow1(locMast.getRow1());
dtLocDetailVo.setBay1(locMast.getBay1());
dtLocDetailVo.setLev1(locMast.getLev1());
-
- List<LocDetl> locDetlList2 = locDetls.parallelStream().filter(o-> o.getLocNo().equals(locNo)).collect(Collectors.toList());
- List<StockDetl> stockDetls = new ArrayList<>();
- for(LocDetl locDetl:locDetlList2) {
- StockDetl stockDetl = new StockDetl();
- stockDetl.setMatnr(locDetl.getMatnr());
- stockDetl.setMaktx(locDetl.getMaktx());
- stockDetl.setAnfme(locDetl.getAnfme());
- stockDetls.add(stockDetl);
+ for (LocDetl locDetl : locDetls) {
+ List<LocDetl> locDetl1 = locDetls.parallelStream().filter(a -> a.getLocNo().equals(locDetl.getLocNo())).collect(Collectors.toList());
+ if (locDetl1.size() == 1) {
+ dtLocDetailVo.setLocDetl(locDetl1.get(0));
+// dtLocDetailVo.setAreaId(locDetl.getAreaId());
+// dtLocDetailVo.setAreaName(locDetl.getAreaName());
+ }
}
- dtLocDetailVo.setLocDetl(stockDetls);
- dtLocDetailVoList.add(dtLocDetailVo);
+ locDetailVos.add(dtLocDetailVo);
}
- return R.ok(dtLocDetailVoList);
+ return R.ok(locDetailVos);
+// List<DtLocDetailVo> locDetailVos = new ArrayList<>();
+//
+// List<LocMast> locMasts = new ArrayList<>();
+// List<LocDetl> locDetls = new ArrayList<>();
+//
+// for (LocMast locMast : locMasts) {
+// DtLocDetailVo dtLocDetailVo = new DtLocDetailVo();
+// dtLocDetailVo.setLocMast(locMast);
+// dtLocDetailVo.setLocNo(locMast.getLocNo());
+// dtLocDetailVo.setLocSts(locMast.getLocSts());
+// dtLocDetailVo.setRow1(locMast.getRow1());
+// dtLocDetailVo.setBay1(locMast.getBay1());
+// dtLocDetailVo.setLev1(locMast.getLev1());
+// for (LocDetl locDetl : locDetls) {
+// List<LocDetl> locDetl1 = locDetls.parallelStream().filter(a -> a.getLocNo().equals(locDetl.getLocNo())).collect(Collectors.toList());
+// if (locDetl1 != null && locDetl1.size() == 1) {
+// dtLocDetailVo.setLocDetl(locDetl1.get(0));
+// dtLocDetailVo.setAreaId(locDetl.getAreaId());
+// dtLocDetailVo.setAreaName(locDetl.getAreaName());
+// }
+// }
+// locDetailVos.add(dtLocDetailVo);
+// }
+//
+// return locDetailVos;
}
/**
@@ -217,11 +272,11 @@
}
List<LocCount> locCounts;
- if(areaId.isEmpty()){
+// if(areaId.isEmpty()){
locCounts = locCountMapper.getByDate(Integer.parseInt(startDate), Integer.parseInt(endDate));
- } else {
- locCounts = locCountMapper.getByAreaAndDate(areaId, Integer.parseInt(startDate), Integer.parseInt(endDate));
- }
+// } else {
+// locCounts = locCountMapper.getByAreaAndDate(areaId, Integer.parseInt(startDate), Integer.parseInt(endDate));
+// }
for (LocCount locCount : locCounts) {
String date = locCount.getDate().toString();
@@ -240,30 +295,34 @@
* 瀹氭湡缁熻鍓╀綑搴撳瓨
*
*/
+ @Transactional
public void locNumCount() {
- List<LocCount> result = new ArrayList<>();
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
String date = sdf.format(new Date());
List<LocCount> totalLoc = locCountMapper.totalLoc();
List<LocCount> useLoc = locCountMapper.useLoc();
- for (LocCount locCount : totalLoc) {
- LocCount locCount1 = new LocCount();
- locCount1.setDate(Integer.valueOf(date));
- locCount1.setAreaId(locCount.getAreaId());
- locCount1.setLocNum(locCount1.getLocNum());
- for (LocCount locCount2 : useLoc) {
- if(locCount1.getAreaId().equals(locCount2.getAreaId())){
- locCount1.setRemainNum(locCount1.getLocNum() - locCount2.getLocNum());
- }
- }
- result.add(locCount1);
- }
- for (LocCount locCount : result) {
- locCountMapper.insertOrUpdate(locCount);
- }
+ LocCount locCount1 = new LocCount();
+ locCount1.setDate(Integer.valueOf(date));
+ locCount1.setLocNum(totalLoc.get(0).getLocNum());
+ locCount1.setRemainNum(locCount1.getLocNum() - useLoc.get(0).getLocNum());
+
+ locCountMapper.insertOrUpdate(locCount1);
+ }
+
+ @Resource
+ private BasCrnpService basCrnpService;
+
+ @Override
+ public DtEquipmentVo equipment(String areaId) {
+ return new DtEquipmentVo();
+// BasCrnp crnp = basCrnpService.selectOne(new EntityWrapper<>());
+// return DtEquipmentVo.builder()
+// .equipmentId("1").equipmentName("鍫嗗灈鏈�1").equipmentType(1)
+// .belongAreaId("A").belongAreaName("鍔犲伐搴�").verticalSpeed(Integer.valueOf(crnp.getCtlHp()))
+// .horizontalSpeed(Integer.valueOf(crnp.getCtlRest())).voltage(220).status(crnp.getCrnErr() == 0 ? 1 : 3).operateMethod(crnp.getCrnSts() == 3 ? 1 : 3).build();
}
--
Gitblit v1.9.1