diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/controller/MaterialLasfeController.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/controller/MaterialLasfeController.java new file mode 100644 index 0000000..114fe5a --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/controller/MaterialLasfeController.java @@ -0,0 +1,53 @@ +package org.nl.wms.basedata_manage.controller; + + +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.basedata_manage.service.IStIvtMaterialsafeivtService; +import org.nl.wms.basedata_manage.service.dto.StIvtMaterialLsafeIvtDto; +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-09-01 + */ +@RestController +@RequiredArgsConstructor +@RequestMapping("/api/materialsafeivt") +@Slf4j +public class MaterialLasfeController { + + @Autowired + private IStIvtMaterialsafeivtService iStIvtMaterialsafeivtService; + + @GetMapping + @Log("分页查询") + public ResponseEntity query(@RequestParam Map whereJson, PageQuery page) { + return new ResponseEntity<>(TableDataInfo.build(iStIvtMaterialsafeivtService.queryAll(whereJson, page)), HttpStatus.OK); + } + + @PostMapping("/insertSafe") + @Log("保存") + public ResponseEntity insertSafe(@RequestBody StIvtMaterialLsafeIvtDto dto) { + iStIvtMaterialsafeivtService.insertSafe(dto); + return new ResponseEntity<>(HttpStatus.OK); + } + + @GetMapping("/safeIvtWarning") + @Log("安全预警查询") + public ResponseEntity safeIvtWarning(@RequestParam Map whereJson, PageQuery page) { + return new ResponseEntity<>(TableDataInfo.build(iStIvtMaterialsafeivtService.safeIvtWarning(whereJson, page)), HttpStatus.OK); + } +} diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/IStIvtMaterialsafeivtService.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/IStIvtMaterialsafeivtService.java new file mode 100644 index 0000000..8acb957 --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/IStIvtMaterialsafeivtService.java @@ -0,0 +1,45 @@ +package org.nl.wms.basedata_manage.service; + +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.basedata_manage.service.dao.StIvtMaterialsafeivt; +import org.nl.wms.basedata_manage.service.dto.StIvtMaterialLsafeIvtDto; +import org.nl.wms.warehouse_management.service.dto.PieceBoxMstDto; + +import java.util.Map; + +/** + *

+ * 物料安全库存设置表 服务类 + *

+ * + * @author Liuxy + * @since 2025-09-01 + */ +public interface IStIvtMaterialsafeivtService extends IService { + + /** + * 分页查询 + * + * @param whereJson : {查询参数} + * @param page : 分页对象 + * @return 返回结果 + */ + IPage queryAll(Map whereJson, PageQuery page); + + /** + * 安全库存设置 + * @param dto dto类 + */ + void insertSafe(StIvtMaterialLsafeIvtDto dto); + + /** + * 分页查询 + * + * @param whereJson : {查询参数} + * @param page : 分页对象 + * @return 返回结果 + */ + IPage safeIvtWarning(Map whereJson, PageQuery page); +} diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/StIvtMaterialsafeivt.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/StIvtMaterialsafeivt.java new file mode 100644 index 0000000..d087086 --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/StIvtMaterialsafeivt.java @@ -0,0 +1,66 @@ +package org.nl.wms.basedata_manage.service.dao; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + *

+ * 物料安全库存设置表 + *

+ * + * @author Liuxy + * @since 2025-09-01 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("st_ivt_materialsafeivt") +public class StIvtMaterialsafeivt implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 物料标识 + */ + @TableId + private String material_id; + + /** + * 下限 + */ + private BigDecimal safe_ivt_down; + + /** + * 上限 + */ + private BigDecimal safe_ivt_up; + + /** + * 计量单位标识 + */ + private String qty_unit_id; + + /** + * 计量单位名称 + */ + private String qty_unit_name; + + /** + * 设置人标识 + */ + private String set_id; + + /** + * 设置人名称 + */ + private String set_name; + + /** + * 设置时间 + */ + private String set_time; +} diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/StIvtMaterialsafeivtMapper.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/StIvtMaterialsafeivtMapper.java new file mode 100644 index 0000000..f59a71d --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/StIvtMaterialsafeivtMapper.java @@ -0,0 +1,37 @@ +package org.nl.wms.basedata_manage.service.dao.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Param; +import org.nl.wms.basedata_manage.service.dao.StIvtMaterialsafeivt; +import org.nl.wms.basedata_manage.service.dto.StIvtMaterialLsafeIvtDto; + +import java.util.Map; + +/** + *

+ * 物料安全库存设置表 Mapper 接口 + *

+ * + * @author Liuxy + * @since 2025-09-01 + */ +public interface StIvtMaterialsafeivtMapper extends BaseMapper { + + /** + * 安全库存分页查询 + * @param page 分页条件 + * @param whereJson 查询条件 + * @return IPage + */ + IPage queryAllByPage(Page page, @Param("param") Map whereJson); + + /** + * 安全库存预警查询 + * @param page 分页条件 + * @param whereJson 查询条件 + * @return IPage + */ + IPage safeIvtWarning(Page page, @Param("param") Map whereJson); +} diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/StIvtMaterialsafeivtMapper.xml b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/StIvtMaterialsafeivtMapper.xml new file mode 100644 index 0000000..4053e27 --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/StIvtMaterialsafeivtMapper.xml @@ -0,0 +1,75 @@ + + + + + + + diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dto/StIvtMaterialLsafeIvtDto.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dto/StIvtMaterialLsafeIvtDto.java new file mode 100644 index 0000000..17035c4 --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dto/StIvtMaterialLsafeIvtDto.java @@ -0,0 +1,46 @@ +package org.nl.wms.basedata_manage.service.dto; + +import com.alibaba.fastjson.JSONObject; +import lombok.Data; +import org.nl.wms.basedata_manage.service.dao.StIvtMaterialsafeivt; +import org.nl.wms.warehouse_management.service.dao.StIvtPieceBoxDtl; +import org.nl.wms.warehouse_management.service.dao.StIvtPieceBoxMst; + +import java.util.List; + +/** + *

+ * 拼单管理dto + *

+ * + * @author Liuxy + * @since 2025-09-01 + */ +@Data +public class StIvtMaterialLsafeIvtDto extends StIvtMaterialsafeivt { + + /** + * 物料编号 + */ + private String material_code; + + /** + * 物料名称 + */ + private String material_name; + + /** + * 物料批次 + */ + private String material_spec; + + /** + * 库存 + */ + private String ivt_qty; + + /** + * 新增安全设置明细 + */ + private List rows; +} diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/StIvtMaterialsafeivtServiceImpl.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/StIvtMaterialsafeivtServiceImpl.java new file mode 100644 index 0000000..7fb46cf --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/StIvtMaterialsafeivtServiceImpl.java @@ -0,0 +1,99 @@ +package org.nl.wms.basedata_manage.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +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.utils.SecurityUtils; +import org.nl.wms.basedata_manage.service.IMdPbMeasureunitService; +import org.nl.wms.basedata_manage.service.IStIvtMaterialsafeivtService; +import org.nl.wms.basedata_manage.service.dao.MdPbMeasureunit; +import org.nl.wms.basedata_manage.service.dao.StIvtMaterialsafeivt; +import org.nl.wms.basedata_manage.service.dao.mapper.StIvtMaterialsafeivtMapper; +import org.nl.wms.basedata_manage.service.dto.StIvtMaterialLsafeIvtDto; +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-09-01 + */ +@Service +public class StIvtMaterialsafeivtServiceImpl extends ServiceImpl implements IStIvtMaterialsafeivtService { + + /** + * 计量单位服务 + */ + @Autowired + private IMdPbMeasureunitService iMdPbMeasureunitService; + + @Override + public IPage queryAll(Map whereJson, PageQuery page) { + return this.baseMapper.queryAllByPage(new Page<>(page.getPage() + 1, page.getSize()), + whereJson); + } + + @Override + @Transactional + public void insertSafe(StIvtMaterialLsafeIvtDto dto) { + List rows = dto.getRows(); + // 判断是否有记录, 有修改,没有新增 + List ivtList = this.list( + new QueryWrapper().lambda() + .in(StIvtMaterialsafeivt::getMaterial_id, rows.stream() + .map(StIvtMaterialsafeivt::getMaterial_id) + .collect(Collectors.toList()) + ) + ); + // 计量单位默认重量KG + MdPbMeasureunit unitDao = iMdPbMeasureunitService.getByCode("KG"); + + List insertList = new ArrayList<>(); + List updateList = new ArrayList<>(); + for (StIvtMaterialsafeivt dao : rows) { + StIvtMaterialsafeivt queryDao = ivtList.stream() + .filter(row -> row.getMaterial_id().equals(dao.getMaterial_id())) + .findFirst().orElse(null); + + if (ObjectUtil.isEmpty(queryDao)) { + // 新增 + StIvtMaterialsafeivt insertDao = new StIvtMaterialsafeivt(); + insertDao.setMaterial_id(dao.getMaterial_id()); + insertDao.setQty_unit_id(unitDao.getMeasure_unit_id()); + insertDao.setQty_unit_name(unitDao.getUnit_name()); + insertDao.setSafe_ivt_down(dao.getSafe_ivt_down()); + insertDao.setSet_id(SecurityUtils.getCurrentUserId()); + insertDao.setSet_name(SecurityUtils.getCurrentNickName()); + insertDao.setSet_time(DateUtil.now()); + insertList.add(insertDao); + } else { + // 修改 + queryDao.setSafe_ivt_down(dao.getSafe_ivt_up()); + updateList.add(queryDao); + } + + this.saveBatch(insertList); + this.updateBatchById(updateList); + } + + } + + @Override + public IPage safeIvtWarning(Map whereJson, PageQuery page) { + return this.baseMapper.safeIvtWarning(new Page<>(page.getPage() + 1, page.getSize()), + whereJson); + } +} diff --git a/wms/nladmin-ui/src/views/wms/basedata/safeivt/index.vue b/wms/nladmin-ui/src/views/wms/basedata/safeivt/index.vue new file mode 100644 index 0000000..4913002 --- /dev/null +++ b/wms/nladmin-ui/src/views/wms/basedata/safeivt/index.vue @@ -0,0 +1,144 @@ + + + + + diff --git a/wms/nladmin-ui/src/views/wms/basedata/safeivt/materialsafeivt.js b/wms/nladmin-ui/src/views/wms/basedata/safeivt/materialsafeivt.js new file mode 100644 index 0000000..1b85d22 --- /dev/null +++ b/wms/nladmin-ui/src/views/wms/basedata/safeivt/materialsafeivt.js @@ -0,0 +1,35 @@ +import request from '@/utils/request' + +export function add(data) { + return request({ + url: 'api/materialsafeivt', + method: 'post', + data + }) +} + +export function del(ids) { + return request({ + url: 'api/materialsafeivt/', + method: 'delete', + data: ids + }) +} + +export function edit(data) { + return request({ + url: 'api/materialsafeivt', + method: 'put', + data + }) +} + +export function insertSafe(data) { + return request({ + url: 'api/materialsafeivt/insertSafe', + method: 'post', + data + }) +} + +export default { add, edit, del, insertSafe } diff --git a/wms/nladmin-ui/src/views/wms/statement/safety/index.vue b/wms/nladmin-ui/src/views/wms/statement/safety/index.vue new file mode 100644 index 0000000..3f9b481 --- /dev/null +++ b/wms/nladmin-ui/src/views/wms/statement/safety/index.vue @@ -0,0 +1,204 @@ + + + + +