diff --git a/RuoYi-App-master/pages/in/menu.vue b/RuoYi-App-master/pages/in/menu.vue
index 72677f0..9023a91 100644
--- a/RuoYi-App-master/pages/in/menu.vue
+++ b/RuoYi-App-master/pages/in/menu.vue
@@ -7,6 +7,7 @@
{{ $t('inbound.qualityCheck.title') }}
+
{{ $t('inbound.qualityCheck.desc') }}
@@ -25,6 +26,7 @@
{{ $t('inbound.emptyPalletBox.title') }}
+
{{ $t('inbound.emptyPalletBox.desc') }}
@@ -34,6 +36,7 @@
{{ $t('inbound.inorder.title') }}
+
{{ $t('inbound.inorder.desc') }}
@@ -43,6 +46,7 @@
{{ $t('inbound.bindMsg.title') }}
+
{{ $t('inbound.bindMsg.desc') }}
@@ -52,6 +56,7 @@
{{ $t('inbound.backIn.title') }}
+
{{ $t('inbound.backIn.desc') }}
@@ -70,7 +75,7 @@ export default {
navigateTo(url) {
tab.navigateTo(url)
}
- }
+ },
}
@@ -93,16 +98,18 @@ export default {
background-color: #fff;
padding: 32rpx;
border-radius: 16rpx;
- box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.08);
+ box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.18);
transition: all 0.3s ease;
+ animation: slideInFromRight 0.3s ease-out forwards;
+ opacity: 0;
&:hover {
- transform: translateY(-4rpx);
- box-shadow: 0 8rpx 24rpx rgba(0, 0, 0, 0.12);
+ transform: translateY(0rpx);
+ box-shadow: 0 8rpx 24rpx rgba(0, 0, 0, 0.52);
}
&:active {
- transform: translateY(0);
+ transform: translateY(0) scale(0.95);
box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.08);
}
}
@@ -151,9 +158,29 @@ export default {
}
.desc {
- font-size: 26rpx;
- color: #7f8c8d;
+ font-size: 24rpx;
+ color: #99a9aa;
letter-spacing: 0.5rpx;
}
}
+
+
+@keyframes slideInFromRight {
+ from {
+ transform: translateX(100%);
+ opacity: 0;
+ }
+ to {
+ transform: translateX(0);
+ opacity: 1;
+ }
+}
+
+.function-item:nth-child(1) { animation-delay: 0.1s; }
+.function-item:nth-child(2) { animation-delay: 0.2s; }
+.function-item:nth-child(3) { animation-delay: 0.3s; }
+.function-item:nth-child(4) { animation-delay: 0.4s; }
+.function-item:nth-child(5) { animation-delay: 0.5s; }
+
+
diff --git a/RuoYi-App-master/pages/in/qualityCheck.vue b/RuoYi-App-master/pages/in/qualityCheck.vue
index 6bf6c7e..4cc390e 100644
--- a/RuoYi-App-master/pages/in/qualityCheck.vue
+++ b/RuoYi-App-master/pages/in/qualityCheck.vue
@@ -293,7 +293,7 @@ export default {
&.expanded {
color: #909399;
- transform: translateY(-50%) rotate(180deg);
+ transform: translateY(-50%) rotate(0deg);
}
}
}
@@ -309,10 +309,11 @@ export default {
border-bottom: 1px solid #EBEEF5;
.check-all-button {
- background-color: #409EFF;
+ // background-color: #409EFF;
+ background: linear-gradient(to bottom, #6cd3ff 0%, #3c80ff 70%,);
color: #fff;
border: none;
- border-radius: 4rpx;
+ border-radius: 10rpx;
padding: 12rpx 24rpx;
font-size: 26rpx;
cursor: pointer;
@@ -360,10 +361,11 @@ export default {
}
.check-button {
- background-color: #409EFF;
+ // background-color: #409EFF;
+ background: linear-gradient(to bottom, #6cd3ff 0%, #3c80ff 70%,);
color: #fff;
border: none;
- border-radius: 4rpx;
+ border-radius: 10rpx;
padding: 12rpx 24rpx;
font-size: 26rpx;
cursor: pointer;
@@ -404,10 +406,10 @@ export default {
}
.material-status {
- font-size: 26rpx;
+ font-size: 20rpx;
padding: 4rpx 12rpx;
- border-radius: 4rpx;
- background-color: #e6a23c;
+ border-radius: 30rpx;
+ background-color: #ffaa00;
color: #fff;
&.status-checked {
diff --git a/RuoYi-App-master/pages/out/menu.vue b/RuoYi-App-master/pages/out/menu.vue
index e1be8cc..887d2c9 100644
--- a/RuoYi-App-master/pages/out/menu.vue
+++ b/RuoYi-App-master/pages/out/menu.vue
@@ -7,7 +7,8 @@
{{ $t('outbound.emptyPalletBox.title') }}
- {{ $t('outbound.emptyPalletBox.desc') }}
+
+ {{ $t('outbound.emptyPalletBox.desc') }}
@@ -16,7 +17,8 @@
{{ $t('outbound.pkout.title') }}
- {{ $t('outbound.pkout.desc') }}
+
+ {{ $t('outbound.pkout.desc') }}
@@ -25,7 +27,8 @@
{{ $t('outbound.ckMakeSureByTray.title') }}
- {{ $t('outbound.ckMakeSureByTray.desc') }}
+
+ {{ $t('outbound.ckMakeSureByTray.desc') }}
@@ -34,7 +37,8 @@
{{ $t('outbound.bindShelf.title') }}
- {{ $t('outbound.bindShelf.desc') }}
+
+ {{ $t('outbound.bindShelf.desc') }}
@@ -43,7 +47,8 @@
{{ $t('outbound.exception.title') }}
- {{ $t('outbound.exception.desc') }}
+
+ {{ $t('outbound.exception.desc') }}
@@ -52,7 +57,8 @@
{{ $t('outbound.move.title') }}
- {{ $t('outbound.move.desc') }}
+
+ {{ $t('outbound.move.desc') }}
@@ -95,6 +101,8 @@ export default {
border-radius: 16rpx;
box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.08);
transition: all 0.3s ease;
+ animation: slideInFromBottom 0.3s ease-out forwards;
+ opacity: 0;
&:hover {
transform: translateY(-4rpx);
@@ -150,4 +158,23 @@ export default {
letter-spacing: 0.5rpx;
}
}
+
+@keyframes slideInFromBottom {
+ from {
+ transform: translateY(100%);
+ opacity: 0;
+ }
+ to {
+ transform: translateY(0);
+ opacity: 1;
+ }
+}
+
+.function-item:nth-child(1) { animation-delay: 0.1s; }
+.function-item:nth-child(2) { animation-delay: 0.2s; }
+.function-item:nth-child(3) { animation-delay: 0.3s; }
+.function-item:nth-child(4) { animation-delay: 0.4s; }
+.function-item:nth-child(5) { animation-delay: 0.5s; }
+.function-item:nth-child(6) { animation-delay: 0.6s; }
+
diff --git a/RuoYi-App-master/pages/task/taskList.vue b/RuoYi-App-master/pages/task/taskList.vue
index ba8142d..0db3b66 100644
--- a/RuoYi-App-master/pages/task/taskList.vue
+++ b/RuoYi-App-master/pages/task/taskList.vue
@@ -215,16 +215,20 @@ export default {
.action-button {
font-size: 24rpx;
padding: 10rpx 20rpx;
- border-radius: 4rpx;
+ border-radius: 10rpx;
border: none;
color: #fff;
&.in-button {
- background-color: #4285f4;
+ // background-color: #4285f4;
+ // background: linear-gradient(to bottom, #6ea8f4 0%, #3e59f4 70%);
+ background: linear-gradient(to bottom, #75d98d 0%, #2c9a36 70%);
}
&.out-button {
- background-color: #34a853;
+ // background-color: #34a853;
+ // background: linear-gradient(to bottom, #75d98d 0%, #34a853 70%);
+ background: linear-gradient(to bottom, #ffd165 0%, #e3900a 70%);
}
&:active {
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java b/ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java
index d4af5cf..19cd140 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java
@@ -13,6 +13,7 @@ import org.springframework.scheduling.annotation.EnableScheduling;
*/
@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })
@EnableScheduling
+@MapperScan("com.ruoyi.**.mapper")
public class RuoYiApplication
{
public static void main(String[] args)
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ToWcsServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ToWcsServiceImpl.java
index 3660b81..d16510f 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ToWcsServiceImpl.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ToWcsServiceImpl.java
@@ -72,6 +72,7 @@ public class ToWcsServiceImpl implements IToWcsService {
List outMydoJobs = mydoJobService.selectMydoJobListApi(mydoJobParam);
for (MydoJob outMydoJob : outMydoJobs) {
RequestLog requestLog = requestLogService.getRequestLog(PUSH_OUT_MYDO_JOB, JSONUtil.toJsonStr(outMydoJob), "推送出库任务");
+ //推送成功更新任务状态
if ("1".equals(requestLog.getIsSuccessful())){
outMydoJob.setStatus("2");
//outMydoJob.setStartTime(DateUtil.formatDateTime(DateUtil.date()));
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ToWmsServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ToWmsServiceImpl.java
index c720340..7c89215 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ToWmsServiceImpl.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ToWmsServiceImpl.java
@@ -67,6 +67,8 @@ public class ToWmsServiceImpl implements IToWmsService {
@Override
public AjaxResult requestEnterByTrayCode(RequestEnter requestEnter) {
+
+ //托盘号查找任务
MydoJob mydoJobParam = new MydoJob();
mydoJobParam.setTrayCode(requestEnter.getTrayCode());
List mydoJobs = mydoJobService.selectMydoJobListApi(mydoJobParam);
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/out/outStockout/domain/OutStockout.java b/ruoyi-admin/src/main/java/com/ruoyi/out/outStockout/domain/OutStockout.java
index 2b08be1..c162f49 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/out/outStockout/domain/OutStockout.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/out/outStockout/domain/OutStockout.java
@@ -5,6 +5,8 @@ import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
+import java.time.LocalDateTime;
+import java.util.Date;
import java.util.List;
/**
@@ -31,7 +33,7 @@ public class OutStockout extends BaseEntity
/** 创建时间 */
@Excel(name = "创建时间")
- private String createDate;
+ private String createDate = LocalDateTime.now().toString().replace("T", " ");
/** 部门编号 */
@Excel(name = "部门编号")
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/out/outStockout/service/impl/OutStockoutServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/out/outStockout/service/impl/OutStockoutServiceImpl.java
index 85238b3..bc4cbe1 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/out/outStockout/service/impl/OutStockoutServiceImpl.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/out/outStockout/service/impl/OutStockoutServiceImpl.java
@@ -161,6 +161,11 @@ public class OutStockoutServiceImpl implements IOutStockoutService
return stringBuilder.toString();
}
+ /**
+ * 分配出库单据
+ * @param stockoutId
+ * @return
+ */
@Override
public AjaxResult autoAllot(String stockoutId) {
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/pda/domain/TrayCodeMakeSure.java b/ruoyi-admin/src/main/java/com/ruoyi/pda/domain/TrayCodeMakeSure.java
index b35dc49..930dcfa 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/pda/domain/TrayCodeMakeSure.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/pda/domain/TrayCodeMakeSure.java
@@ -23,10 +23,16 @@ public class TrayCodeMakeSure {
private String exitId;
private String pickId;
- //拣选详情列表
+ /**
+ * 拣选详情列表
+ */
private List mydoJobDetailList;
- //盘点详情列表
+ /**
+ * 盘点详情列表
+ */
private List materials;
- //异常详情列表
+ /**
+ * 异常详情列表
+ */
private List materialDetails;
}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/pda/service/PdaServiceImp.java b/ruoyi-admin/src/main/java/com/ruoyi/pda/service/PdaServiceImp.java
index 53b9cae..d05fd0a 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/pda/service/PdaServiceImp.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/pda/service/PdaServiceImp.java
@@ -433,13 +433,22 @@ public class PdaServiceImp implements PdaService {
}
+ /**
+ * 盘点出库确认
+ * @param trayCodeMakeSure
+ * @return
+ */
@Override
@Transactional(rollbackFor = Exception.class)
public AjaxResult checkMakeSure(TrayCodeMakeSure trayCodeMakeSure) {
+
+ //获取盘点出库料箱
MydoJob mydoJob = mydoJobService.selectMydoJobByTrayCode(trayCodeMakeSure.getTrayCode());
if (mydoJob == null) {
return AjaxResult.warn(MessageUtils.message("warn.message"));
}
+
+ //获取库区编码
BasWarehouse basWarehouse = basWarehouseService.selectBasWarehouseByWarehouseId(mydoJob.getWarehouseId());
List mydoJobDetailList = trayCodeMakeSure.getMaterials();
if (CollUtil.isNotEmpty(mydoJobDetailList)) {
@@ -458,6 +467,7 @@ public class PdaServiceImp implements PdaService {
checkCommitRecord.setSpare3(mydoJobDetail.getOutQuantity());
checkCommitRecordService.insertCheckCommitRecord(checkCommitRecord);
+ //修改spare3:1-盘点完成
mydoJobDetail.setSpare3("1");
mydoJobDetailService.updateMydoJobDetail(mydoJobDetail);
if ("2".equals(basWarehouse.getWarehouseType())){
@@ -465,11 +475,15 @@ public class PdaServiceImp implements PdaService {
}
}
}
+
+ //获取【盘点完成】的作业
List mydoJobDetails = mydoJobDetailService.selectMydoJobDetailListByJobId(mydoJob.getJobId());
if (mydoJobDetails.stream().allMatch(x -> "1".equals(x.getSpare3()))) {
HashMap map = new HashMap<>();
map.put("v_tray_code", trayCodeMakeSure.getTrayCode());
+
+ //执行【盘点确认出库】过程
pdaMapper.checkMakeSure(map);
//iToWcsService.pushInMydoJob();
String result = map.get("v_result").toString();
@@ -495,6 +509,7 @@ public class PdaServiceImp implements PdaService {
List tagTasks = tagTaskService.selectTagTaskList(param);
if (CollUtil.isNotEmpty(tagTasks)) {
TagTask tagTask = tagTasks.get(0);
+ //更新状态2:已拣选
tagTask.setStatus("2");
tagTaskService.updateTagTask(tagTask);
}
@@ -508,12 +523,18 @@ public class PdaServiceImp implements PdaService {
* @param basWarehouse
*/
private void deleteTagTask(TrayCodeMakeSure trayCodeMakeSure, BasWarehouse basWarehouse, MydoJob mydoJob) {
+
+ //校验【仓库类型】和【任务类型】
if ("2".equals(basWarehouse.getWarehouseType()) && "23".equals(mydoJob.getInOrOut())) {
+
+ //获取电子标签工位的容器条码
BasTag basTag = basTagService.selectBasTagByTrayCode(trayCodeMakeSure.getTrayCode());
if (ObjUtil.isNotNull(basTag)){
basTag.setTrayCode("");
+ //更新下发完成: 0-否 1-是
basTag.setSendCompleted("0");
basTagService.updateBasTag(basTag);
+
//删除电子标签
TagTask param = new TagTask();
param.setTagId(basTag.getId());
@@ -552,6 +573,11 @@ public class PdaServiceImp implements PdaService {
}
}
+ /**
+ * 出库异常
+ * @param trayCodeMakeSure
+ * @return
+ */
@Override
@Transactional(rollbackFor = Exception.class)
public AjaxResult outException(TrayCodeMakeSure trayCodeMakeSure) {
@@ -564,9 +590,10 @@ public class PdaServiceImp implements PdaService {
}
List pickInfoList = trayCodeMakeSure.getMaterialDetails();
+ //获取异常出库任务
MydoJob mydoJob = mydoJobList.get(0);
- //判断拣选数量
+ //获取作业子表记录 - 判断拣选数量
MydoJobDetail param = new MydoJobDetail();
param.setJobId(mydoJob.getJobId());
List mydoJobDetails = mydoJobDetailService.selectMydoJobDetailList(param);
@@ -575,10 +602,13 @@ public class PdaServiceImp implements PdaService {
String stockOutId = "";
+ //获取指定jobid下的作业的所有明细
for (MydoJobDetail mydoJobDetail : mydoJobDetails) {
- //修改拣选数量
+
+ //已存在该作业明细
Optional first = pickInfoList.stream().filter(x -> x.getJobDetailId().equals(mydoJobDetail.getJobDetailId())).findFirst();
if (first.isPresent()) {
+ //修改拣选数量
mydoJobDetail.setPickQuantity(first.get().getPickQuantity());
mydoJobDetailService.updateMydoJobDetail(mydoJobDetail);
}
@@ -586,7 +616,10 @@ public class PdaServiceImp implements PdaService {
//修改单据实际分配数量
BigDecimal pickQuantity = Convert.toBigDecimal(mydoJobDetail.getPickQuantity());
BigDecimal outQuantity = Convert.toBigDecimal(mydoJobDetail.getOutQuantity());
+ //出库数量-拣选数量
BigDecimal subQuantity = outQuantity.subtract(pickQuantity);
+
+ //***************更新出库单明细***************
//修改分配数量为 当前分配数量-缺失数量
OutStockoutDetail outStockoutDetail = outStockoutDetailService.selectOutStockoutDetailByStockoutDetailId(mydoJobDetail.getInOrOutDId());
outStockoutDetail.setAllotQuantity(outStockoutDetail.getAllotQuantity().subtract(subQuantity));
@@ -606,6 +639,7 @@ public class PdaServiceImp implements PdaService {
//将数据存入中间表
insertPickSubmitData(mydoJob, mydoJobDetail);
}
+
//生成回流任务,标记productStatus为异常状态
HashMap map = new HashMap<>();
map.put("v_tray_code", trayCodeMakeSure.getTrayCode());
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/pda/trayMsg/mapper/TrayMsgMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/pda/trayMsg/mapper/TrayMsgMapper.java
index f9c46ff..4ad422e 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/pda/trayMsg/mapper/TrayMsgMapper.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/pda/trayMsg/mapper/TrayMsgMapper.java
@@ -2,6 +2,7 @@ package com.ruoyi.pda.trayMsg.mapper;
import java.util.List;
import com.ruoyi.pda.trayMsg.domain.TrayMsg;
+import org.springframework.stereotype.Component;
/**
* trayMsgMapper接口
@@ -9,6 +10,7 @@ import com.ruoyi.pda.trayMsg.domain.TrayMsg;
* @author ruoyi
* @date 2025-06-11
*/
+@Component
public interface TrayMsgMapper
{
/**