From 03a3959513172a1fc57d725b2121d3ec22757beb Mon Sep 17 00:00:00 2001 From: zhangzq Date: Tue, 9 Jun 2026 19:58:05 +0800 Subject: [PATCH] =?UTF-8?q?add:=E5=A2=9E=E5=8A=A0=E5=9B=9E=E4=BC=A0?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E9=A1=B5=E9=9D=A2,=E5=85=88=E7=94=9F?= =?UTF-8?q?=E6=88=90=E5=9B=9E=E4=BC=A0=E5=8D=95=E5=86=8D=E5=9B=9E=E4=BC=A0?= =?UTF-8?q?=EF=BC=88=E5=85=81=E8=AE=B8=E6=89=8B=E5=8A=A8=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E5=9B=9E=E4=BC=A0=E6=95=B0=E6=8D=AE=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ReturnController.java | 55 --- .../service/ReturnService.java | 45 --- .../service/impl/RetrunServiceImpl.java | 197 ---------- .../controller/PmStockReturnController.java | 66 ++++ .../service/IPmStockReturnService.java | 27 ++ .../service/dao/PmStockReturn.java | 37 ++ .../service/enums/StockReturnStatusEnum.java | 22 ++ .../impl/PmStockReturnServiceImpl.java | 140 +++++++ .../service/mapper/PmStockReturnMapper.java | 11 + .../wms/st/inAndOutReturn/inandoutreturn.js | 18 +- .../src/views/wms/st/inAndOutReturn/index.vue | 354 +++++++----------- 11 files changed, 453 insertions(+), 519 deletions(-) delete mode 100644 nladmin-system/wms-server/src/main/java/org/nl/wms/warehouse_manage/controller/ReturnController.java delete mode 100644 nladmin-system/wms-server/src/main/java/org/nl/wms/warehouse_manage/service/ReturnService.java delete mode 100644 nladmin-system/wms-server/src/main/java/org/nl/wms/warehouse_manage/service/impl/RetrunServiceImpl.java create mode 100644 nladmin-system/wms-server/src/main/java/org/nl/wms/warehouse_manage/stockReturn/controller/PmStockReturnController.java create mode 100644 nladmin-system/wms-server/src/main/java/org/nl/wms/warehouse_manage/stockReturn/service/IPmStockReturnService.java create mode 100644 nladmin-system/wms-server/src/main/java/org/nl/wms/warehouse_manage/stockReturn/service/dao/PmStockReturn.java create mode 100644 nladmin-system/wms-server/src/main/java/org/nl/wms/warehouse_manage/stockReturn/service/enums/StockReturnStatusEnum.java create mode 100644 nladmin-system/wms-server/src/main/java/org/nl/wms/warehouse_manage/stockReturn/service/impl/PmStockReturnServiceImpl.java create mode 100644 nladmin-system/wms-server/src/main/java/org/nl/wms/warehouse_manage/stockReturn/service/mapper/PmStockReturnMapper.java diff --git a/nladmin-system/wms-server/src/main/java/org/nl/wms/warehouse_manage/controller/ReturnController.java b/nladmin-system/wms-server/src/main/java/org/nl/wms/warehouse_manage/controller/ReturnController.java deleted file mode 100644 index 2aa23c8..0000000 --- a/nladmin-system/wms-server/src/main/java/org/nl/wms/warehouse_manage/controller/ReturnController.java +++ /dev/null @@ -1,55 +0,0 @@ -package org.nl.wms.warehouse_manage.controller; - - -import com.alibaba.fastjson.JSONObject; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.nl.common.base.TableDataInfo; -import org.nl.common.domain.query.PageQuery; -import org.nl.common.logging.annotation.Log; -import org.nl.wms.warehouse_manage.service.ReturnService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.*; - -import java.util.Map; - -/** - *

- * 出入库回传 控制层 - *

- * - * @author Liuxy - * @since 2025-06-03 - */ -@RestController -@RequiredArgsConstructor -@RequestMapping("/api/iosReturn") -@Slf4j -public class ReturnController { - - @Autowired - private ReturnService returnService; - - @GetMapping - @Log("查询出入库单") - public ResponseEntity query(@RequestParam Map whereJson, PageQuery page) { - return new ResponseEntity<>(TableDataInfo.build(returnService.queryAll(whereJson, page)), HttpStatus.OK); - } - - @PostMapping("/upload") - @Log("回传") - public ResponseEntity upload(@RequestBody JSONObject whereJson) { - returnService.upload(whereJson); - return new ResponseEntity<>(HttpStatus.OK); - } - - @PostMapping("/disupload") - @Log("不回传") - public ResponseEntity disupload(@RequestBody JSONObject whereJson) { - returnService.disupload(whereJson); - return new ResponseEntity<>(HttpStatus.OK); - } - -} diff --git a/nladmin-system/wms-server/src/main/java/org/nl/wms/warehouse_manage/service/ReturnService.java b/nladmin-system/wms-server/src/main/java/org/nl/wms/warehouse_manage/service/ReturnService.java deleted file mode 100644 index b38369f..0000000 --- a/nladmin-system/wms-server/src/main/java/org/nl/wms/warehouse_manage/service/ReturnService.java +++ /dev/null @@ -1,45 +0,0 @@ -package org.nl.wms.warehouse_manage.service; - -import com.alibaba.fastjson.JSONObject; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.service.IService; -import org.nl.common.domain.query.PageQuery; -import org.nl.wms.warehouse_manage.inAndOut.service.dao.IOStorInv; - -import java.util.Map; - - -/** - *

- * 出入库回传 服务类 - *

- * - * @author Liuxy - * @since 2025-06-03 - */ -public interface ReturnService extends IService { - - /** - * 分页查询 - * @param whereJson : {查询参数} - * @param page : 分页对象 - * @return 返回结果 - */ - IPage queryAll(Map whereJson, PageQuery page); - - /** - * 回传 - * @param whereJson { - * rows: [] - * } - */ - void upload(JSONObject whereJson); - - /** - * 不回传 - * @param whereJson { - * rows: [] - * } - */ - void disupload(JSONObject whereJson); -} diff --git a/nladmin-system/wms-server/src/main/java/org/nl/wms/warehouse_manage/service/impl/RetrunServiceImpl.java b/nladmin-system/wms-server/src/main/java/org/nl/wms/warehouse_manage/service/impl/RetrunServiceImpl.java deleted file mode 100644 index 327b4e0..0000000 --- a/nladmin-system/wms-server/src/main/java/org/nl/wms/warehouse_manage/service/impl/RetrunServiceImpl.java +++ /dev/null @@ -1,197 +0,0 @@ -package org.nl.wms.warehouse_manage.service.impl; - -import cn.hutool.core.date.DateUtil; -import cn.hutool.core.map.MapUtil; -import cn.hutool.core.util.ObjectUtil; -import com.alibaba.fastjson.JSONObject; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.nl.common.domain.query.PageQuery; -import org.nl.common.utils.SecurityUtils; -import org.nl.wms.basedata_manage.enums.BaseDataEnum; -import org.nl.wms.basedata_manage.service.IMdMeMaterialbaseService; -import org.nl.wms.basedata_manage.service.IMdPbMeasureunitService; -import org.nl.wms.basedata_manage.service.dao.MdMeMaterialbase; -import org.nl.wms.basedata_manage.service.dao.MdPbMeasureunit; -import org.nl.wms.ext_manage.service.WmsToErpService; -import org.nl.wms.warehouse_manage.enums.IOSConstant; -import org.nl.wms.warehouse_manage.enums.IOSEnum; -import org.nl.wms.warehouse_manage.service.ReturnService; -import org.nl.wms.warehouse_manage.inAndOut.service.dao.IOStorInv; -import org.nl.wms.warehouse_manage.inAndOut.service.dao.IOStorInvDis; -import org.nl.wms.warehouse_manage.inAndOut.service.dao.mapper.IOStorInvDisMapper; -import org.nl.wms.warehouse_manage.inAndOut.service.dao.mapper.IOStorInvMapper; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - -/** - *

- * 出入库回传 实现类 - *

- * - * @author Liuxy - * @since 2025-06-03 - */ -@Service -public class RetrunServiceImpl extends ServiceImpl implements ReturnService { - - /** - * 出入库mapper服务 - */ - @Autowired - private IOStorInvDisMapper ioStorInvDisMapper; - - /** - * 物料基础服务 - */ - @Autowired - private IMdMeMaterialbaseService iMdMeMaterialbaseService; - - /** - * 计量单位服务 - */ - @Autowired - private IMdPbMeasureunitService iMdPbMeasureunitService; - - /** - * WMS调用ERP服务类 - */ - @Autowired - private WmsToErpService wmsToErpService; - - @Override - public IPage queryAll(Map whereJson, PageQuery page) { - String stor_id = MapUtil.getStr(whereJson, "stor_id"); - String io_type = MapUtil.getStr(whereJson, "io_type"); - String bill_type = MapUtil.getStr(whereJson, "bill_type"); - String bill_code = MapUtil.getStr(whereJson, "bill_code"); - String is_upload = MapUtil.getStr(whereJson, "is_upload"); - String begin_time = MapUtil.getStr(whereJson, "begin_time"); - String end_time = MapUtil.getStr(whereJson, "end_time"); - - LambdaQueryWrapper lambda = new QueryWrapper().lambda(); - lambda.eq(ObjectUtil.isNotEmpty(stor_id), IOStorInv::getStor_id, stor_id); - lambda.eq(ObjectUtil.isNotEmpty(io_type), IOStorInv::getIo_type, io_type); - lambda.eq(ObjectUtil.isNotEmpty(bill_type), IOStorInv::getBill_type, bill_type); - lambda.like(ObjectUtil.isNotEmpty(bill_code), IOStorInv::getBill_code, bill_code); - lambda.eq(ObjectUtil.isNotEmpty(is_upload), IOStorInv::getIs_upload, is_upload); - lambda.ge(ObjectUtil.isNotEmpty(begin_time), IOStorInv::getInput_time, begin_time); - lambda.lt(ObjectUtil.isNotEmpty(end_time), IOStorInv::getInput_time, end_time); - lambda.eq(IOStorInv::getIs_delete, BaseDataEnum.IS_YES_NOT.code("否")); - lambda.eq(IOStorInv::getBill_status, IOSEnum.CHECK_MST_STATUS.code("完成")); - lambda.orderByDesc(IOStorInv::getInput_time); - return this.baseMapper.selectPage(new Page<>(page.getPage() + 1, page.getSize()), - lambda - ); - } - - @Override - public void upload(JSONObject whereJson) { - List rows = whereJson.getJSONArray("rows").toJavaList(JSONObject.class); - // 根据主表id查询所有分配明细 - List iosDisList = ioStorInvDisMapper.selectList( - new QueryWrapper().lambda() - .in(IOStorInvDis::getIostorinv_id, rows.stream() - .map(row -> row.getString("iostorinv_id")) - .collect(Collectors.toList()) - ) - ); - // 查询所有物料 - List materList = iMdMeMaterialbaseService.list( - new QueryWrapper().lambda() - .in(MdMeMaterialbase::getMaterial_id, iosDisList.stream() - .map(IOStorInvDis::getMaterial_id) - .distinct() - .collect(Collectors.toList()) - - ) - ); - // 查询所有计量单位 - List unitList = iMdPbMeasureunitService.list( - new QueryWrapper().lambda() - .in(MdPbMeasureunit::getMeasure_unit_id, iosDisList.stream() - .map(IOStorInvDis::getQty_unit_id) - .distinct() - .collect(Collectors.toList())) - ); - - // 需回传数据集合 - List paramList = new ArrayList<>(); - for(IOStorInvDis disDao : iosDisList) { - JSONObject param = new JSONObject(); - // 物料编码 - MdMeMaterialbase materDao = materList.stream() - .filter(row -> row.getMaterial_id().equals(disDao.getMaterial_id())) - .findFirst().orElse(null); - param.put("mater_code", materDao.getMaterial_code()); - // 批次 - param.put("batch_no", disDao.getPcsn()); - // 数量 - param.put("quantity", disDao.getReal_qty()); - // 计量单位 - MdPbMeasureunit unitDao = unitList.stream() - .filter(row -> row.getMeasure_unit_id().equals(disDao.getQty_unit_id())) - .findFirst().orElse(null); - param.put("unit_code", unitDao.getUnit_code()); - // 仓库编码 - JSONObject jsonMst = rows.stream() - .filter(row -> row.getString("iostorinv_id").equals(disDao.getIostorinv_id())) - .findFirst().orElse(null); - param.put("stor_code", jsonMst.getString("stor_code")); - // 货位编码 - param.put("point_code", disDao.getStruct_code()); - // 载具编码 - param.put("pallet_code", disDao.getStoragevehicle_code()); - // 单据号 - param.put("inv_code", jsonMst.getString("source_id")); - // 业务类型 - param.put("task_type", jsonMst.getString("source_type")); - paramList.add(param); - } - JSONObject jsonParam = new JSONObject(); - jsonParam.put("data", paramList); - wmsToErpService.uploadErp(jsonParam); - - // 更新主表 - this.update( - new UpdateWrapper().lambda() - .in(IOStorInv::getIostorinv_id, rows.stream() - .map(row -> row.getString("iostorinv_id")) - .collect(Collectors.toList()) - ) - .set(IOStorInv::getIs_upload, IOSConstant.IS_DELETE_YES) - .set(IOStorInv::getUpdate_optid, SecurityUtils.getCurrentUserId()) - .set(IOStorInv::getUpdate_optname, SecurityUtils.getCurrentNickName()) - .set(IOStorInv::getUpdate_time, DateUtil.now()) - ); - - } - - @Override - @Transactional - public void disupload(JSONObject whereJson) { - List rows = whereJson.getJSONArray("rows").toJavaList(JSONObject.class); - List idList = rows.stream() - .map(row -> row.getString("iostorinv_id")) - .collect(Collectors.toList()); - // 更新 - this.update( - new UpdateWrapper().lambda() - .in(IOStorInv::getIostorinv_id, idList) - .set(IOStorInv::getIs_upload, IOSConstant.IS_DELETE_YES) - .set(IOStorInv::getUpdate_optid, SecurityUtils.getCurrentUserId()) - .set(IOStorInv::getUpdate_optname, SecurityUtils.getCurrentNickName()) - .set(IOStorInv::getUpdate_time, DateUtil.now()) - ); - } -} diff --git a/nladmin-system/wms-server/src/main/java/org/nl/wms/warehouse_manage/stockReturn/controller/PmStockReturnController.java b/nladmin-system/wms-server/src/main/java/org/nl/wms/warehouse_manage/stockReturn/controller/PmStockReturnController.java new file mode 100644 index 0000000..b9d9254 --- /dev/null +++ b/nladmin-system/wms-server/src/main/java/org/nl/wms/warehouse_manage/stockReturn/controller/PmStockReturnController.java @@ -0,0 +1,66 @@ +package org.nl.wms.warehouse_manage.stockReturn.controller; + +import com.alibaba.fastjson.JSONObject; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.common.base.TableDataInfo; +import org.nl.common.domain.query.PageQuery; +import org.nl.common.logging.annotation.Log; +import org.nl.wms.warehouse_manage.stockReturn.service.dao.PmStockReturn; +import org.nl.wms.warehouse_manage.stockReturn.service.IPmStockReturnService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.Map; +import java.util.Set; + +/** + * ERP回传管理 控制层 + */ +@RestController +@RequiredArgsConstructor +@RequestMapping("/api/stockReturn") +@Slf4j +public class +PmStockReturnController { + + @Autowired + private IPmStockReturnService pmStockReturnService; + + @GetMapping + @Log("查询ERP回传管理") + public ResponseEntity query(@RequestParam Map whereJson, PageQuery page) { + return new ResponseEntity<>(TableDataInfo.build(pmStockReturnService.queryAll(whereJson, page)), HttpStatus.OK); + } + + @PostMapping + @Log("新增ERP回传管理") + public ResponseEntity create(@Validated @RequestBody PmStockReturn stockReturn) { + pmStockReturnService.save(stockReturn); + return new ResponseEntity<>(HttpStatus.CREATED); + } + + @PutMapping + @Log("修改ERP回传管理") + public ResponseEntity update(@Validated @RequestBody PmStockReturn stockReturn) { + pmStockReturnService.update(stockReturn); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + + @DeleteMapping + @Log("删除ERP回传管理") + public ResponseEntity delete(@RequestBody Set ids) { + pmStockReturnService.delete(ids); + return new ResponseEntity<>(HttpStatus.OK); + } + + @PostMapping("/upload") + @Log("ERP回传") + public ResponseEntity upload(@RequestBody JSONObject whereJson) { + pmStockReturnService.upload(whereJson); + return new ResponseEntity<>(HttpStatus.OK); + } +} diff --git a/nladmin-system/wms-server/src/main/java/org/nl/wms/warehouse_manage/stockReturn/service/IPmStockReturnService.java b/nladmin-system/wms-server/src/main/java/org/nl/wms/warehouse_manage/stockReturn/service/IPmStockReturnService.java new file mode 100644 index 0000000..46c27c1 --- /dev/null +++ b/nladmin-system/wms-server/src/main/java/org/nl/wms/warehouse_manage/stockReturn/service/IPmStockReturnService.java @@ -0,0 +1,27 @@ +package org.nl.wms.warehouse_manage.stockReturn.service; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; +import org.nl.common.domain.query.PageQuery; +import org.nl.wms.warehouse_manage.stockReturn.service.dao.PmStockReturn; + +import java.util.List; +import java.util.Map; +import java.util.Set; + +/** + * ERP回传管理 服务类 + */ +public interface IPmStockReturnService extends IService { + + IPage queryAll(Map whereJson, PageQuery page); + + void update(PmStockReturn stockReturn); + + void delete(Set ids); + + void upload(JSONObject whereJson); + + void uploadRows(List rows); +} diff --git a/nladmin-system/wms-server/src/main/java/org/nl/wms/warehouse_manage/stockReturn/service/dao/PmStockReturn.java b/nladmin-system/wms-server/src/main/java/org/nl/wms/warehouse_manage/stockReturn/service/dao/PmStockReturn.java new file mode 100644 index 0000000..b6a0efb --- /dev/null +++ b/nladmin-system/wms-server/src/main/java/org/nl/wms/warehouse_manage/stockReturn/service/dao/PmStockReturn.java @@ -0,0 +1,37 @@ +package org.nl.wms.warehouse_manage.stockReturn.service.dao; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.io.Serializable; + +/** + * ERP回传管理 + */ +@Data +@TableName("pm_stock_return") +public class PmStockReturn implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @TableField("request_Id") + private String request_Id; + + private String request_type; + + private String error_msg; + + private String status; + + private String create_time; + + private String process_time; + + private String request_data; +} diff --git a/nladmin-system/wms-server/src/main/java/org/nl/wms/warehouse_manage/stockReturn/service/enums/StockReturnStatusEnum.java b/nladmin-system/wms-server/src/main/java/org/nl/wms/warehouse_manage/stockReturn/service/enums/StockReturnStatusEnum.java new file mode 100644 index 0000000..0320a24 --- /dev/null +++ b/nladmin-system/wms-server/src/main/java/org/nl/wms/warehouse_manage/stockReturn/service/enums/StockReturnStatusEnum.java @@ -0,0 +1,22 @@ +package org.nl.wms.warehouse_manage.stockReturn.service.enums; + +import lombok.Getter; + +/** + * 回传状态枚举 + */ +@Getter +public enum StockReturnStatusEnum { + TODO("0","待回传"), + SUCESS("1","回传成功"), + FAIL("2","回传失败"), + ; + + StockReturnStatusEnum(String code, String desc) { + this.code = code; + this.desc = desc; + } + + private String code; + private String desc; +} diff --git a/nladmin-system/wms-server/src/main/java/org/nl/wms/warehouse_manage/stockReturn/service/impl/PmStockReturnServiceImpl.java b/nladmin-system/wms-server/src/main/java/org/nl/wms/warehouse_manage/stockReturn/service/impl/PmStockReturnServiceImpl.java new file mode 100644 index 0000000..c04a5a6 --- /dev/null +++ b/nladmin-system/wms-server/src/main/java/org/nl/wms/warehouse_manage/stockReturn/service/impl/PmStockReturnServiceImpl.java @@ -0,0 +1,140 @@ +package org.nl.wms.warehouse_manage.stockReturn.service.impl; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.nl.common.domain.query.PageQuery; +import org.nl.common.exception.BadRequestException; +import org.nl.wms.ext_manage.service.WmsToErpService; +import org.nl.wms.warehouse_manage.stockReturn.service.IPmStockReturnService; +import org.nl.wms.warehouse_manage.stockReturn.service.dao.PmStockReturn; +import org.nl.wms.warehouse_manage.stockReturn.service.enums.StockReturnStatusEnum; +import org.nl.wms.warehouse_manage.stockReturn.service.mapper.PmStockReturnMapper; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.StringUtils; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Map; +import java.util.Set; + +/** + * ERP回传管理 服务实现类 + */ +@Service +public class PmStockReturnServiceImpl extends ServiceImpl implements IPmStockReturnService { + + @Resource + private WmsToErpService wmsToErpService; + + @Override + public IPage queryAll(Map whereJson, PageQuery page) { + QueryWrapper wrapper = new QueryWrapper<>(); + Object requestId = whereJson.get("request_Id"); + if (requestId == null) { + requestId = whereJson.get("request_id"); + } + if (StringUtils.hasText(requestId == null ? null : String.valueOf(requestId))) { + wrapper.lambda().like(PmStockReturn::getRequest_Id, requestId); + } + Object requestType = whereJson.get("request_type"); + if (StringUtils.hasText(requestType == null ? null : String.valueOf(requestType))) { + wrapper.lambda().eq(PmStockReturn::getRequest_type, requestType); + } + Object status = whereJson.get("status"); + if (StringUtils.hasText(status == null ? null : String.valueOf(status))) { + wrapper.lambda().eq(PmStockReturn::getStatus, status); + } + Object beginTime = whereJson.get("begin_time"); + if (StringUtils.hasText(beginTime == null ? null : String.valueOf(beginTime))) { + wrapper.lambda().ge(PmStockReturn::getCreate_time, formatQueryTime(beginTime, "00:00:00")); + } + Object endTime = whereJson.get("end_time"); + if (StringUtils.hasText(endTime == null ? null : String.valueOf(endTime))) { + wrapper.lambda().le(PmStockReturn::getCreate_time, formatQueryTime(endTime, "23:59:59")); + } + wrapper.lambda().orderByDesc(PmStockReturn::getId); + return this.page(new Page<>(page.getPage() + 1, page.getSize()), wrapper); + } + + @Override + public void update(PmStockReturn stockReturn) { + validateRequestData(stockReturn.getRequest_data()); + this.updateById(stockReturn); + } + + @Override + public void delete(Set ids) { + this.removeByIds(ids); + } + + @Override + @Transactional + public void upload(JSONObject whereJson) { + List rows = whereJson.getJSONArray("rows").toJavaList(PmStockReturn.class); + uploadRows(rows); + } + + @Override + @Transactional + public void uploadRows(List rows) { + if (rows == null || rows.isEmpty()) { + throw new BadRequestException("请选择需要回传的记录"); + } + for (PmStockReturn row : rows) { + PmStockReturn stockReturn = this.getById(row.getId()); + if (stockReturn == null) { + throw new BadRequestException("回传记录不存在:" + row.getId()); + } + try { + JSONObject requestData = parseRequestData(stockReturn.getRequest_data()); + wmsToErpService.uploadErp(requestData); + stockReturn.setStatus(StockReturnStatusEnum.SUCESS.getCode()); + stockReturn.setError_msg(null); + stockReturn.setProcess_time(DateUtil.now()); + this.updateById(stockReturn); + } catch (Exception e) { + String errorMsg = e.getMessage(); + if (errorMsg != null && errorMsg.length() > 255) { + errorMsg = errorMsg.substring(0, 255); + } + stockReturn.setStatus(StockReturnStatusEnum.FAIL.getCode()); + stockReturn.setError_msg(errorMsg); + stockReturn.setProcess_time(null); + this.updateById(stockReturn); + throw new BadRequestException(errorMsg); + } + } + } + + private void validateRequestData(String requestData) { + parseRequestData(requestData); + } + + private String formatQueryTime(Object time, String defaultTime) { + String value = String.valueOf(time); + if (value.contains("T")) { + return DateUtil.format(DateUtil.parse(value), "yyyy-MM-dd HH:mm:ss"); + } + if (value.length() == 10) { + return value + " " + defaultTime; + } + return value; + } + + private JSONObject parseRequestData(String requestData) { + if (!StringUtils.hasText(requestData)) { + throw new BadRequestException("回传JSON数据不能为空"); + } + try { + return JSON.parseObject(requestData); + } catch (Exception e) { + throw new BadRequestException("回传JSON数据格式错误:" + e.getMessage()); + } + } +} diff --git a/nladmin-system/wms-server/src/main/java/org/nl/wms/warehouse_manage/stockReturn/service/mapper/PmStockReturnMapper.java b/nladmin-system/wms-server/src/main/java/org/nl/wms/warehouse_manage/stockReturn/service/mapper/PmStockReturnMapper.java new file mode 100644 index 0000000..c5f819a --- /dev/null +++ b/nladmin-system/wms-server/src/main/java/org/nl/wms/warehouse_manage/stockReturn/service/mapper/PmStockReturnMapper.java @@ -0,0 +1,11 @@ +package org.nl.wms.warehouse_manage.stockReturn.service.mapper; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.nl.wms.warehouse_manage.stockReturn.service.dao.PmStockReturn; + +/** + * ERP回传管理 Mapper + */ +public interface PmStockReturnMapper extends BaseMapper { +} diff --git a/nladmin-ui/src/views/wms/st/inAndOutReturn/inandoutreturn.js b/nladmin-ui/src/views/wms/st/inAndOutReturn/inandoutreturn.js index 79241b4..4195bbe 100644 --- a/nladmin-ui/src/views/wms/st/inAndOutReturn/inandoutreturn.js +++ b/nladmin-ui/src/views/wms/st/inAndOutReturn/inandoutreturn.js @@ -2,7 +2,7 @@ import request from '@/utils/request' export function add(data) { return request({ - url: 'api/iosReturn', + url: 'api/stockReturn', method: 'post', data }) @@ -10,7 +10,7 @@ export function add(data) { export function del(ids) { return request({ - url: 'api/iosReturn/', + url: 'api/stockReturn', method: 'delete', data: ids }) @@ -18,7 +18,7 @@ export function del(ids) { export function edit(data) { return request({ - url: 'api/iosReturn', + url: 'api/stockReturn', method: 'put', data }) @@ -26,18 +26,10 @@ export function edit(data) { export function upload(data) { return request({ - url: '/api/iosReturn/upload', + url: '/api/stockReturn/upload', method: 'post', data }) } -export function disupload(data) { - return request({ - url: '/api/iosReturn/disupload', - method: 'post', - data - }) -} - -export default { add, edit, del, upload, disupload } +export default { add, edit, del, upload } diff --git a/nladmin-ui/src/views/wms/st/inAndOutReturn/index.vue b/nladmin-ui/src/views/wms/st/inAndOutReturn/index.vue index aeb37b3..5c508c1 100644 --- a/nladmin-ui/src/views/wms/st/inAndOutReturn/index.vue +++ b/nladmin-ui/src/views/wms/st/inAndOutReturn/index.vue @@ -1,9 +1,7 @@ @@ -166,7 +129,6 @@ import CRUD, { crud, header, presenter } from '@crud/crud' import rrOperation from '@crud/RR.operation' import crudOperation from '@crud/CRUD.operation' import pagination from '@crud/Pagination' -import crudUserStor from '@/views/wms/basedata/bsrealstorattr/bsrealstorattr' import Date from '@/utils/datetime' export default { @@ -174,7 +136,7 @@ export default { components: { crudOperation, rrOperation, pagination }, cruds() { return CRUD({ - title: '出入库单回传', idField: 'iostorinv_id', url: 'api/iosReturn', crudMethod: { ...inandoutreturn }, + title: 'ERP回传管理', idField: 'id', url: 'api/stockReturn', crudMethod: { ...inandoutreturn }, optShow: { add: false, edit: false, @@ -182,52 +144,42 @@ export default { reset: true, download: false }, - query: { io_type: '0', bill_status: '99' }, queryOnPresenterCreated: false }) }, mixins: [presenter(), header(), crud()], - // 数据字典 - dicts: ['ST_CREATE_MODE', 'io_type', 'is_upload', 'ST_INV_IN_TYPE', 'ST_INV_OUT_TYPE'], data() { return { - height: document.documentElement.clientHeight - 180 + 'px;', permission: {}, - mstrow: {}, fullscreenLoading: false, - storlist: [], query_flag: true, - billtypelist: [], - showDtlLoading: false - } - }, - mounted: function() { - const that = this - window.onresize = function temp() { - that.height = document.documentElement.clientHeight - 180 + 'px;' + statusOptions: [ + { value: '0', label: '待回传' }, + { value: '1', label: '成功' }, + { value: '2', label: '失败' } + ], + jsonDialog: { + visible: false, + edit: false, + row: null, + content: '' + } } }, created() { - crudUserStor.getStor().then(res => { - this.storlist = res - }) - // debugger - this.billtypelist = this.dict.ST_INV_OUT_TYPE - this.crud.query.createTime = [new Date().daysAgo(30), new Date()] + this.crud.query.createTime = [this.formatDateTime(new Date().daysAgo(30), '00:00:00'), this.formatDateTime(new Date(), '23:59:59')] this.initQuery() }, methods: { [CRUD.HOOK.beforeRefresh]() { if (this.query_flag) { - this.crud.query.begin_time = (new Date().daysAgo(30)).strftime('%F', 'zh') - this.crud.query.end_time = (new Date()).strftime('%F', 'zh') + this.crud.query.begin_time = this.formatDateTime(new Date().daysAgo(30), '00:00:00') + this.crud.query.end_time = this.formatDateTime(new Date(), '23:59:59') this.query_flag = false } }, - /* 搜索框出入类型 默认出库*/ initQuery() { - this.query.io_type = '1' - this.query.is_upload = '0' + this.query.status = '0' this.crud.toQuery() }, mytoQuery(array1) { @@ -235,115 +187,99 @@ export default { this.crud.query.begin_time = '' this.crud.query.end_time = '' } else { - this.crud.query.begin_time = array1[0] - this.crud.query.end_time = array1[1] + this.crud.query.begin_time = this.formatDateTime(array1[0], '00:00:00') + this.crud.query.end_time = this.formatDateTime(array1[1], '23:59:59') } this.crud.toQuery() }, + formatDateTime(value, defaultTime) { + if (!value) { + return '' + } + if (value instanceof Date) { + return value.strftime('%F %T', 'zh') + } + const str = String(value) + if (str.includes('T')) { + return new Date(str).strftime('%F %T', 'zh') + } + if (str.length === 10) { + return str + ' ' + defaultTime + } + return str + }, onInput() { this.$forceUpdate() }, - querytable() { - this.onSelectAll() - this.crud.toQuery() - }, - bill_typeFormat(row) { - if (this.query.io_type === '0') { - return this.dict.label.ST_INV_IN_TYPE[row.bill_type] - } - if (this.query.io_type === '1') { - return this.dict.label.ST_INV_OUT_TYPE[row.bill_type] - } - }, - ioTypeChange(value) { - if (value === '1') { - this.billtypelist = this.dict.ST_INV_OUT_TYPE - } else { - this.billtypelist = this.dict.ST_INV_IN_TYPE - } - this.crud.toQuery() - }, - create_modeFormat(row) { - return this.dict.label.ST_CREATE_MODE[row.create_mode] - }, upload() { - const res = this.$refs.table.selection - if (!res || res.length < 1) { + const rows = this.$refs.table.selection + if (!rows || rows.length < 1) { this.crud.notify('请选择一条记录', CRUD.NOTIFICATION_TYPE.INFO) return } - const upload_flag = res.some(row => row.is_upload === '1') - if (upload_flag) { - this.$confirm('存在已经回传的单据, 是否继续回传?', '提示', { + const successFlag = rows.some(row => row.status === '1') + const doUpload = () => { + this.fullscreenLoading = true + inandoutreturn.upload({ rows }).then(() => { + this.crud.notify('单据回传成功!', CRUD.NOTIFICATION_TYPE.SUCCESS) + this.crud.toQuery() + }).finally(() => { + this.fullscreenLoading = false + }) + } + if (successFlag) { + this.$confirm('存在已经回传成功的单据, 是否继续回传?', '提示', { confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning' - }).then(() => { - this.fullscreenLoading = true - const data = {} - data.rows = res - inandoutreturn.upload(data).then(res => { - this.fullscreenLoading = false - this.crud.notify('单据回传成功!', CRUD.NOTIFICATION_TYPE.SUCCESS) - this.crud.toQuery() - }).catch(() => { - this.fullscreenLoading = false - }) - }).catch(() => { - this.$message({ - type: 'info', - message: '已取消回传' - }) + }).then(doUpload).catch(() => { + this.$message({ type: 'info', message: '已取消回传' }) }) - } else { - this.fullscreenLoading = true - const data = {} - data.rows = res - inandoutreturn.upload(data).then(res => { - this.fullscreenLoading = false - this.crud.notify('单据回传成功!', CRUD.NOTIFICATION_TYPE.SUCCESS) - this.crud.toQuery() - }).catch(() => { - this.fullscreenLoading = false - }) - } - }, - disupload() { - const res = this.$refs.table.selection - if (!res || res.length < 1) { - this.crud.notify('请选择一条记录', CRUD.NOTIFICATION_TYPE.INFO) return } - this.fullscreenLoading = true - const data = {} - data.rows = res - inandoutreturn.disupload(data).then(res => { - this.crud.notify('操作成功!', CRUD.NOTIFICATION_TYPE.SUCCESS) - }).finally(() => { - this.fullscreenLoading = false + doUpload() + }, + openJsonDialog(row, edit) { + this.jsonDialog.row = row + this.jsonDialog.edit = edit + this.jsonDialog.content = this.formatJson(row.request_data) + this.jsonDialog.visible = true + }, + saveJsonContent() { + let content = this.jsonDialog.content + try { + content = JSON.stringify(JSON.parse(content), null, 2) + } catch (e) { + this.crud.notify('JSON格式错误:' + e.message, CRUD.NOTIFICATION_TYPE.ERROR) + return + } + const data = { ...this.jsonDialog.row, request_data: content } + inandoutreturn.edit(data).then(() => { + this.crud.notify('保存成功!', CRUD.NOTIFICATION_TYPE.SUCCESS) + this.jsonDialog.visible = false this.crud.toQuery() }) }, - formatIsUpload(row) { - if (row.is_upload === '0') { - return '否' - } else if (row.is_upload === '1') { - return '是' + formatJsonContent() { + try { + this.jsonDialog.content = JSON.stringify(JSON.parse(this.jsonDialog.content), null, 2) + } catch (e) { + this.crud.notify('JSON格式错误:' + e.message, CRUD.NOTIFICATION_TYPE.ERROR) } }, - formatUploadMes(row) { - if (row.upload_mes === '0') { - return '否' - } else if (row.upload_mes === '1') { - return '是' + formatJson(value) { + if (!value) { + return '' + } + try { + return JSON.stringify(JSON.parse(value), null, 2) + } catch (e) { + return value } }, - formatUploadSap(row) { - if (row.upload_sap === '0') { - return '否' - } else if (row.upload_sap === '1') { - return '是' - } + formatStatus(row) { + const item = this.statusOptions.find(option => option.value === row.status) + return item ? item.label : row.status } } }