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 { /**