From 755aed47ee9dcabec5458117115e767eeb82318e Mon Sep 17 00:00:00 2001 From: skyouc Date: 星期一, 21 七月 2025 14:27:11 +0800 Subject: [PATCH] 保存新增盘点明细 --- rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/PdaCheckOrderServiceImpl.java | 94 +++++++++++++++++++++++++++++++++++++---------- 1 files changed, 74 insertions(+), 20 deletions(-) diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/PdaCheckOrderServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/PdaCheckOrderServiceImpl.java index 09def72..88a132a 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/PdaCheckOrderServiceImpl.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/PdaCheckOrderServiceImpl.java @@ -8,18 +8,22 @@ import com.vincent.rsf.server.api.service.PdaCheckOrderService; import com.vincent.rsf.server.manager.entity.*; import com.vincent.rsf.server.manager.enums.CheckDiffExceStatus; +import com.vincent.rsf.server.manager.enums.OrderType; +import com.vincent.rsf.server.manager.enums.OrderWorkType; import com.vincent.rsf.server.manager.enums.TaskStsType; import com.vincent.rsf.server.manager.service.*; import com.vincent.rsf.server.system.constant.DictTypeCode; import com.vincent.rsf.server.system.entity.DictData; import com.vincent.rsf.server.system.service.DictDataService; import com.vincent.rsf.server.system.service.DictTypeService; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.Date; import java.util.List; +import java.util.Objects; @Service public class PdaCheckOrderServiceImpl implements PdaCheckOrderService { @@ -39,33 +43,37 @@ private DictTypeService dictTypeService; @Autowired private DictDataService dictDataService; + @Autowired + private MatnrService matnrService; + @Autowired + private CheckOrderService checkOrderService; @Override public R getCheckList(String code) { LambdaQueryWrapper<CheckDiff> lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.eq(!Cools.isEmpty(code),CheckDiff::getOrderCode,code); + lambdaQueryWrapper.eq(!Cools.isEmpty(code), CheckDiff::getOrderCode, code); List<CheckDiff> waveList = checkDiffService.list(lambdaQueryWrapper); return R.ok(waveList); } @Override - public R getCheckTaskItemList(String barcode,String checkCode) { + public R getCheckTaskItemList(String barcode, String checkCode) { List<CheckDiffItem> checkDiffItems = checkDiffItemService.list(new LambdaQueryWrapper<CheckDiffItem>() .eq(CheckDiffItem::getBarcode, barcode) .eq(CheckDiffItem::getOrderCode, checkCode) ); - if (checkDiffItems.isEmpty()){ + if (checkDiffItems.isEmpty()) { throw new CoolException("姝ゆ潯鐮佷笉鍦ㄥ綋鍓嶇洏鐐瑰崟涓�"); } LambdaQueryWrapper<Task> lambdaQueryWrapper = new LambdaQueryWrapper<>(); lambdaQueryWrapper.eq(Task::getBarcode, barcode); Task task = taskService.getOne(lambdaQueryWrapper); - if (null == task){ + if (null == task) { throw new CoolException("鏈壘鍒板鍣ㄥ彿瀵瑰簲浠诲姟"); } - if (!task.getTaskStatus().equals(TaskStsType.AWAIT.id)){ + if (!task.getTaskStatus().equals(TaskStsType.AWAIT.id)) { return R.error("浠诲姟鐘舵�佷笉鏄瓑寰呯‘璁�"); } @@ -83,38 +91,84 @@ @Override @Transactional(rollbackFor = Exception.class) - public R saveCheckDiff(SaveCheckDiffParams params,Long loginUserId) { + public R saveCheckDiff(SaveCheckDiffParams params, Long loginUserId) { CheckDiff checkDiff = checkDiffService.getById(params.getCheckId()); - if (null == checkDiff){ + if (null == checkDiff) { return R.error("鏈壘鍒扮洏鐐瑰樊寮傚崟"); } - if (checkDiff.getExceStatus().equals(CheckDiffExceStatus.CHECK_DIFF_EXCE_STATUS_END.val)){ + if (checkDiff.getExceStatus().equals(CheckDiffExceStatus.CHECK_DIFF_EXCE_STATUS_END.val)) { return R.error("璇ョ洏鐐瑰崟宸插畬鎴�"); } - for (CheckDiffItem checkDiffItem: params.getCheckDiffItems()){ - CheckDiffItem diffItem = checkDiffItemService.getById(checkDiffItem.getId()); - if (null == diffItem){ - return R.error("鏁版嵁閿欒锛屾湭鎵惧埌宸紓鍗曟槑缁�"); + Task task = taskService.getOne(new LambdaQueryWrapper<Task>().eq(Task::getBarcode, params.getContainer())); + if (null == task) { + throw new CoolException("鏁版嵁閿欒锛屾湭鎵惧埌瀹瑰櫒鐮佸搴旂洏鐐逛换鍔�"); + } + for (CheckDiffItem checkDiffItem : params.getCheckDiffItems()) { + CheckDiffItem diffItem = new CheckDiffItem(); + if (Objects.isNull(checkDiffItem.getId())) { + BeanUtils.copyProperties(checkDiffItem, diffItem); + diffItem.setCheckId(params.getCheckId()); + + Matnr matnr = matnrService.getOne(new LambdaQueryWrapper<Matnr>().eq(Matnr::getCode, diffItem.getMatnrCode())); + if (Objects.isNull(matnr)) { + throw new CoolException("鍗曟嵁鐗╂枡鍚嶇О涓嶅瓨鍦紒锛�"); + } + + if (!checkDiffItemService.save(diffItem)) { + throw new CoolException("鏂板鏄庣粏淇濆瓨澶辫触锛侊紒"); + } + //鏂板浠诲姟鏄庣粏淇℃伅 + TaskItem taskItem = new TaskItem(); + BeanUtils.copyProperties(diffItem, diffItem); + taskItem.setTaskId(task.getId()) + .setOrderType(OrderType.ORDER_CHECK.type) + .setWkType(Short.parseShort(OrderWorkType.ORDER_WORK_TYPE_STOCK_CHECK.type)) + .setAnfme(diffItem.getAnfme()) + .setWorkQty(0.0) + .setBatch(diffItem.getBatch()) + .setMaktx(matnr.getName()) + .setMatnrCode(diffItem.getMatnrCode()) + .setSpec(diffItem.getSpec()) + .setModel(diffItem.getModel()) + .setMatnrId(matnr.getId()) + .setCreateBy(loginUserId) + //婕忕洏搴撳瓨锛屾柊澧炴病鏈夌洏鐐瑰崟鏄庣粏ID + .setSource(diffItem.getId()) + .setSourceId(params.getCheckId()) + .setCreateTime(new Date()) + .setUpdateBy(loginUserId) + .setMemo("涓嶅湪搴撴槑缁嗭紝鐩樻紡鏂板") + .setUpdateTime(new Date()) + .setId(null) + //鐩樼偣鍗旾D + .setOrderId(checkDiff.getOrderId()); + if (!taskItemService.save(taskItem)) { + throw new CoolException("鏂板鐩樼偣鏄庣粏淇濆瓨澶辫触锛侊紒"); + } + } else { + diffItem = checkDiffItemService.getById(checkDiffItem.getId()); + if (null == diffItem) { + return R.error("鏁版嵁閿欒锛屾湭鎵惧埌宸紓鍗曟槑缁�"); + } } + checkDiffItem.setExceStatus(CheckDiffExceStatus.CHECK_DIFF_EXCE_STATUS_HOLD.val); - if(!checkDiffItemService.updateById(checkDiffItem)){ + if (!checkDiffItemService.updateById(checkDiffItem)) { throw new CoolException("鏇存柊宸紓鍗曟槑缁嗗け璐�"); } - checkDiff.setCheckQty(checkDiff.getCheckQty()+checkDiffItem.getCheckQty()); + Double checkQty = Math.round((checkDiff.getCheckQty() + checkDiffItem.getCheckQty()) * 10000) / 10000.0; + checkDiff.setCheckQty(checkQty); } checkDiff.setExceStatus(CheckDiffExceStatus.CHECK_DIFF_EXCE_STATUS_HOLD.val); - if(!checkDiffService.updateById(checkDiff)){ + if (!checkDiffService.updateById(checkDiff)) { throw new CoolException("鏇存柊宸紓鍗曞け璐�"); } - Task task = taskService.getOne(new LambdaQueryWrapper<Task>().eq(Task::getBarcode, params.getContainer())); - if (null == task){ - throw new CoolException("鏁版嵁閿欒锛屾湭鎵惧埌瀹瑰櫒鐮佸搴旂洏鐐逛换鍔�"); - } + task.setTaskStatus(TaskStsType.COMPLETE_OUT.id); task.setUpdateBy(loginUserId); task.setUpdateTime(new Date()); - if (!taskService.updateById(task)){ + if (!taskService.updateById(task)) { throw new CoolException("鏇存柊浠诲姟澶辫触"); } return R.ok("鐩樼偣瀹屾垚"); -- Gitblit v1.9.1