仓库信息字段更新1212
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
package com.zg.framework.websocket.config;
|
||||
|
||||
import com.zg.project.Inventory.AutoInventory.service.IRfidService;
|
||||
import com.zg.project.Inventory.AutoInventory.utils.SpringContextUtils;
|
||||
import com.zg.project.inventory.AutoInventory.service.IRfidService;
|
||||
import com.zg.project.inventory.AutoInventory.utils.SpringContextUtils;
|
||||
import org.springframework.scheduling.annotation.Scheduled;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
|
||||
@@ -2,8 +2,8 @@ package com.zg.framework.websocket.config;
|
||||
|
||||
import com.alibaba.fastjson2.JSON;
|
||||
import com.alibaba.fastjson2.JSONObject;
|
||||
import com.zg.project.Inventory.AutoInventory.service.IRfidService;
|
||||
import com.zg.project.Inventory.AutoInventory.utils.SpringContextUtils;
|
||||
import com.zg.project.inventory.AutoInventory.service.IRfidService;
|
||||
import com.zg.project.inventory.AutoInventory.utils.SpringContextUtils;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.websocket.*;
|
||||
|
||||
@@ -42,6 +42,16 @@ public class PcdeDetailController extends BaseController
|
||||
return getDataTable(list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据小仓编码查询库位列表
|
||||
*/
|
||||
// @PreAuthorize("@ss.hasPermi('information:pcdedetail:list')")
|
||||
@GetMapping("/listByWarehouse/{warehouseCode}")
|
||||
public AjaxResult listByWarehouse(@PathVariable("warehouseCode") String warehouseCode)
|
||||
{
|
||||
return success(pcdeDetailService.selectByWarehouseCode(warehouseCode));
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取未被入库单据使用的库位列表
|
||||
*/
|
||||
|
||||
@@ -2,6 +2,8 @@ package com.zg.project.information.controller;
|
||||
|
||||
import java.util.List;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import com.zg.project.information.domain.vo.WarehouseGroupVO;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
@@ -46,6 +48,15 @@ public class WarehouseInfoController extends BaseController
|
||||
return getDataTable(list);
|
||||
}
|
||||
|
||||
// @PreAuthorize("@ss.hasPermi('information:warehouseinfo:list')")
|
||||
@GetMapping("/tree")
|
||||
public AjaxResult tree()
|
||||
{
|
||||
List<WarehouseGroupVO> list = warehouseInfoService.selectWarehouseGroupList();
|
||||
return success(list);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 查询仓库信息列表
|
||||
* @return
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.zg.project.information.domain;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import org.apache.commons.lang3.builder.ToStringBuilder;
|
||||
import org.apache.commons.lang3.builder.ToStringStyle;
|
||||
@@ -23,20 +24,28 @@ public class PcdeDetail extends BaseEntity {
|
||||
@Excel(name = "库位编号")
|
||||
private String pcode;
|
||||
|
||||
/** 所属场景 */
|
||||
/** 所属场景编号 */
|
||||
@Excel(name = "所属场景编号")
|
||||
private String scene;
|
||||
|
||||
/** 所属场景名称 */
|
||||
/** 所属场景名称(冗余字段) */
|
||||
@Excel(name = "所属场景名称")
|
||||
private String sceneName;
|
||||
|
||||
/** 所属仓库 */
|
||||
@Excel(name = "所属仓库")
|
||||
private String warehouse;
|
||||
/** 所属大仓编码 */
|
||||
@Excel(name = "所属大仓编码")
|
||||
private String parentWarehouseCode;
|
||||
|
||||
/** 所属仓库名称 */
|
||||
@Excel(name = "所属仓库名称")
|
||||
/** 所属大仓名称 */
|
||||
@Excel(name = "所属大仓名称")
|
||||
private String parentWarehouseName;
|
||||
|
||||
/** 所属小仓编码 */
|
||||
@Excel(name = "所属小仓编码")
|
||||
private String warehouseCode;
|
||||
|
||||
/** 所属小仓名称 */
|
||||
@Excel(name = "所属小仓名称")
|
||||
private String warehouseName;
|
||||
|
||||
/** 编码后ID */
|
||||
@@ -68,7 +77,7 @@ public class PcdeDetail extends BaseEntity {
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
private Date updatedAt;
|
||||
|
||||
// Getter & Setter
|
||||
// ==================== Getter & Setter ====================
|
||||
|
||||
public void setId(Long id) {
|
||||
this.id = id;
|
||||
@@ -102,12 +111,28 @@ public class PcdeDetail extends BaseEntity {
|
||||
return sceneName;
|
||||
}
|
||||
|
||||
public void setWarehouse(String warehouse) {
|
||||
this.warehouse = warehouse;
|
||||
public String getParentWarehouseCode() {
|
||||
return parentWarehouseCode;
|
||||
}
|
||||
|
||||
public String getWarehouse() {
|
||||
return warehouse;
|
||||
public void setParentWarehouseCode(String parentWarehouseCode) {
|
||||
this.parentWarehouseCode = parentWarehouseCode;
|
||||
}
|
||||
|
||||
public String getParentWarehouseName() {
|
||||
return parentWarehouseName;
|
||||
}
|
||||
|
||||
public void setParentWarehouseName(String parentWarehouseName) {
|
||||
this.parentWarehouseName = parentWarehouseName;
|
||||
}
|
||||
|
||||
public String getWarehouseCode() {
|
||||
return warehouseCode;
|
||||
}
|
||||
|
||||
public void setWarehouseCode(String warehouseCode) {
|
||||
this.warehouseCode = warehouseCode;
|
||||
}
|
||||
|
||||
public void setWarehouseName(String warehouseName) {
|
||||
@@ -138,6 +163,7 @@ public class PcdeDetail extends BaseEntity {
|
||||
this.remark = remark;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getRemark() {
|
||||
return remark;
|
||||
}
|
||||
@@ -182,6 +208,8 @@ public class PcdeDetail extends BaseEntity {
|
||||
return updatedAt;
|
||||
}
|
||||
|
||||
// ==================== toString ====================
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
|
||||
@@ -189,7 +217,9 @@ public class PcdeDetail extends BaseEntity {
|
||||
.append("pcode", getPcode())
|
||||
.append("scene", getScene())
|
||||
.append("sceneName", getSceneName())
|
||||
.append("warehouse", getWarehouse())
|
||||
.append("parentWarehouseCode", getParentWarehouseCode())
|
||||
.append("parentWarehouseName", getParentWarehouseName())
|
||||
.append("warehouseCode", getWarehouseCode())
|
||||
.append("warehouseName", getWarehouseName())
|
||||
.append("encodedId", getEncodedId())
|
||||
.append("tag", getTag())
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
package com.zg.project.information.domain.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 小仓 VO(子仓库节点)
|
||||
*/
|
||||
@Data
|
||||
public class WarehouseChildVO implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** 主键 ID */
|
||||
private Long id;
|
||||
|
||||
/** 仓库编码(小仓编码) */
|
||||
private String warehouseCode;
|
||||
|
||||
/** 仓库名称(小仓名称) */
|
||||
private String warehouseName;
|
||||
|
||||
/** 仓库地址 */
|
||||
private String address;
|
||||
|
||||
/** 所属大仓编码 */
|
||||
private String parentWarehouseCode;
|
||||
|
||||
/** 所属大仓名称 */
|
||||
private String parentWarehouseName;
|
||||
|
||||
/** 状态(1=启用,0=禁用) */
|
||||
private Integer status;
|
||||
|
||||
/** 排序值 */
|
||||
private Integer sort;
|
||||
|
||||
/** 备注 */
|
||||
private String remark;
|
||||
|
||||
/** 创建时间(created_at) */
|
||||
private Date createdAt;
|
||||
|
||||
/** 更新时间(updated_at) */
|
||||
private Date updatedAt;
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
package com.zg.project.information.domain.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 大仓 VO(包含小仓列表)
|
||||
*/
|
||||
@Data
|
||||
public class WarehouseGroupVO implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** 主键 ID(大仓自身的 ID) */
|
||||
private Long id;
|
||||
|
||||
/** 大仓编码(warehouse_code) */
|
||||
private String warehouseCode;
|
||||
|
||||
/** 大仓名称(warehouse_name) */
|
||||
private String warehouseName;
|
||||
|
||||
/** 大仓地址(address) */
|
||||
private String address;
|
||||
|
||||
/** 状态(1=启用,0=禁用) */
|
||||
private Integer status;
|
||||
|
||||
/** 排序值 */
|
||||
private Integer sort;
|
||||
|
||||
/** 备注 */
|
||||
private String remark;
|
||||
|
||||
/** 创建时间(created_at) */
|
||||
private Date createdAt;
|
||||
|
||||
/** 更新时间(updated_at) */
|
||||
private Date updatedAt;
|
||||
|
||||
/** 该大仓下的小仓列表 */
|
||||
private List<WarehouseChildVO> children;
|
||||
}
|
||||
@@ -81,4 +81,12 @@ public interface PcdeDetailMapper
|
||||
* @return
|
||||
*/
|
||||
int batchInsertIgnore(List<PcdeDetail> slice);
|
||||
|
||||
/**
|
||||
* 根据小仓编码查询库位列表
|
||||
*/
|
||||
List<PcdeDetail> selectByWarehouseCode(String warehouseCode);
|
||||
|
||||
String selectWarehouseCodeByPcode(String pcode);
|
||||
|
||||
}
|
||||
|
||||
@@ -74,4 +74,9 @@ public interface IPcdeDetailService
|
||||
*/
|
||||
List<PcdeDetail> getAllPcde();
|
||||
|
||||
/**
|
||||
* 根据小仓编码查询库位列表
|
||||
*/
|
||||
List<PcdeDetail> selectByWarehouseCode(String warehouseCode);
|
||||
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.zg.project.information.service;
|
||||
|
||||
import com.zg.project.information.domain.WarehouseInfo;
|
||||
import com.zg.project.information.domain.vo.WarehouseGroupVO;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -59,4 +60,11 @@ public interface IWarehouseInfoService
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteWarehouseInfoById(Long id);
|
||||
|
||||
/**
|
||||
* 查询仓库信息列表(包含小仓)
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
List<WarehouseGroupVO> selectWarehouseGroupList();
|
||||
}
|
||||
|
||||
@@ -230,4 +230,10 @@ public class PcdeDetailServiceImpl implements IPcdeDetailService
|
||||
|
||||
return availableList;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<PcdeDetail> selectByWarehouseCode(String warehouseCode)
|
||||
{
|
||||
return pcdeDetailMapper.selectByWarehouseCode(warehouseCode);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,14 @@
|
||||
package com.zg.project.information.service.impl;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import com.zg.common.utils.StringUtils;
|
||||
import com.zg.project.information.domain.vo.WarehouseChildVO;
|
||||
import com.zg.project.information.domain.vo.WarehouseGroupVO;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import com.zg.project.information.mapper.WarehouseInfoMapper;
|
||||
@@ -90,4 +98,61 @@ public class WarehouseInfoServiceImpl implements IWarehouseInfoService
|
||||
{
|
||||
return warehouseInfoMapper.deleteWarehouseInfoById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* ⭐ 查询大仓及其包含的小仓(嵌套结构)
|
||||
*/
|
||||
@Override
|
||||
public List<WarehouseGroupVO> selectWarehouseGroupList() {
|
||||
|
||||
// 1. 查询全部仓库
|
||||
List<WarehouseInfo> allList = warehouseInfoMapper.selectWarehouseInfoList(new WarehouseInfo());
|
||||
if (allList == null || allList.isEmpty()) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
|
||||
// 2. 按 parent_warehouse_code 分组(大仓 → 小仓)
|
||||
Map<String, WarehouseGroupVO> groupMap = new LinkedHashMap<>();
|
||||
|
||||
for (WarehouseInfo w : allList) {
|
||||
|
||||
// 所属大仓编码/名称
|
||||
String parentCode = w.getParentWarehouseCode();
|
||||
String parentName = w.getParentWarehouseName();
|
||||
|
||||
// 如果 parent_warehouse_code 为空,则自己就是一个大仓
|
||||
if (StringUtils.isBlank(parentCode)) {
|
||||
parentCode = w.getWarehouseCode();
|
||||
parentName = w.getWarehouseName();
|
||||
}
|
||||
|
||||
// 2.1 获取或创建大仓节点
|
||||
WarehouseGroupVO groupVO = groupMap.get(parentCode);
|
||||
if (groupVO == null) {
|
||||
groupVO = new WarehouseGroupVO();
|
||||
groupVO.setWarehouseCode(parentCode);
|
||||
groupVO.setWarehouseName(parentName);
|
||||
groupVO.setChildren(new ArrayList<>());
|
||||
groupMap.put(parentCode, groupVO);
|
||||
}
|
||||
|
||||
// 2.2 把当前仓库作为“小仓”加入 children
|
||||
WarehouseChildVO childVO = new WarehouseChildVO();
|
||||
childVO.setId(w.getId());
|
||||
childVO.setWarehouseCode(w.getWarehouseCode());
|
||||
childVO.setWarehouseName(w.getWarehouseName());
|
||||
childVO.setAddress(w.getAddress());
|
||||
childVO.setParentWarehouseCode(w.getParentWarehouseCode());
|
||||
childVO.setParentWarehouseName(w.getParentWarehouseName());
|
||||
childVO.setRemark(w.getRemark());
|
||||
childVO.setCreatedAt(w.getCreatedAt());
|
||||
childVO.setUpdatedAt(w.getUpdatedAt());
|
||||
|
||||
groupVO.getChildren().add(childVO);
|
||||
}
|
||||
|
||||
// 3. 返回树结构
|
||||
return new ArrayList<>(groupMap.values());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.zg.project.Inventory.AutoInventory.config;
|
||||
package com.zg.project.inventory.AutoInventory.config;
|
||||
|
||||
import lombok.Data;
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
@@ -1,12 +1,12 @@
|
||||
package com.zg.project.Inventory.AutoInventory.controller;
|
||||
package com.zg.project.inventory.AutoInventory.controller;
|
||||
|
||||
import com.zg.framework.web.controller.BaseController;
|
||||
import com.zg.framework.web.domain.AjaxResult;
|
||||
import com.zg.project.Inventory.AutoInventory.service.InventoryMatchScanService;
|
||||
import com.zg.project.Inventory.domain.dto.QueryDTO;
|
||||
import com.zg.project.Inventory.domain.vo.ChartDataVO;
|
||||
import com.zg.project.Inventory.AutoInventory.service.IRfidService;
|
||||
import com.zg.project.Inventory.AutoInventory.service.ISodService;
|
||||
import com.zg.project.inventory.AutoInventory.service.InventoryMatchScanService;
|
||||
import com.zg.project.inventory.domain.dto.QueryDTO;
|
||||
import com.zg.project.inventory.domain.vo.ChartDataVO;
|
||||
import com.zg.project.inventory.AutoInventory.service.IRfidService;
|
||||
import com.zg.project.inventory.AutoInventory.service.ISodService;
|
||||
import com.zg.project.wisdom.service.IRkInfoService;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@@ -1,17 +1,14 @@
|
||||
package com.zg.project.Inventory.AutoInventory.controller;
|
||||
package com.zg.project.inventory.AutoInventory.controller;
|
||||
|
||||
import com.zg.common.utils.poi.ExcelUtil;
|
||||
import com.zg.framework.web.controller.BaseController;
|
||||
import com.zg.framework.web.domain.AjaxResult;
|
||||
import com.zg.framework.web.page.TableDataInfo;
|
||||
import com.zg.project.Inventory.AutoInventory.service.InventoryMatchScanService;
|
||||
import com.zg.project.Inventory.domain.dto.MatchScanPageDTO;
|
||||
import com.zg.project.Inventory.domain.entity.InventoryMatchScan;
|
||||
import com.zg.project.Inventory.domain.entity.InventoryTask;
|
||||
import com.zg.project.Inventory.domain.vo.InventoryMatchScanSimpleVO;
|
||||
import com.zg.project.Inventory.domain.vo.InventoryMatchScanVO;
|
||||
import com.zg.project.Inventory.domain.vo.RkInfoMatchVO;
|
||||
import com.zg.project.wisdom.domain.RkInfo;
|
||||
import com.zg.project.inventory.AutoInventory.service.InventoryMatchScanService;
|
||||
import com.zg.project.inventory.domain.dto.MatchScanPageDTO;
|
||||
import com.zg.project.inventory.domain.entity.InventoryMatchScan;
|
||||
import com.zg.project.inventory.domain.vo.InventoryMatchScanVO;
|
||||
import com.zg.project.inventory.domain.vo.RkInfoMatchVO;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
@@ -1,10 +1,9 @@
|
||||
package com.zg.project.Inventory.AutoInventory.controller;
|
||||
package com.zg.project.inventory.AutoInventory.controller;
|
||||
|
||||
import com.ZMPrinter.*;
|
||||
import com.ZMPrinter.LSF.LSFDecoder;
|
||||
import com.ZMPrinter.UsbUtility.UsbConnection;
|
||||
import com.zg.project.Inventory.AutoInventory.domain.entity.PrintRfid;
|
||||
import com.zg.project.Inventory.AutoInventory.mapper.PrintRfidMapper;
|
||||
import com.zg.project.inventory.AutoInventory.mapper.PrintRfidMapper;
|
||||
import com.zg.project.information.domain.PcdeDetail;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.zg.project.Inventory.AutoInventory.controller;
|
||||
package com.zg.project.inventory.AutoInventory.controller;
|
||||
|
||||
import java.util.List;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
@@ -14,8 +14,8 @@ import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import com.zg.framework.aspectj.lang.annotation.Log;
|
||||
import com.zg.framework.aspectj.lang.enums.BusinessType;
|
||||
import com.zg.project.Inventory.AutoInventory.domain.entity.PrintRfid;
|
||||
import com.zg.project.Inventory.AutoInventory.service.IPrintRfidService;
|
||||
import com.zg.project.inventory.AutoInventory.domain.entity.PrintRfid;
|
||||
import com.zg.project.inventory.AutoInventory.service.IPrintRfidService;
|
||||
import com.zg.framework.web.controller.BaseController;
|
||||
import com.zg.framework.web.domain.AjaxResult;
|
||||
import com.zg.common.utils.poi.ExcelUtil;
|
||||
@@ -1,11 +1,11 @@
|
||||
package com.zg.project.Inventory.AutoInventory.mapper;
|
||||
package com.zg.project.inventory.AutoInventory.mapper;
|
||||
|
||||
import com.zg.project.Inventory.domain.dto.MatchScanPageDTO;
|
||||
import com.zg.project.Inventory.domain.entity.InventoryMatchScan;
|
||||
import com.zg.project.Inventory.domain.entity.Sod;
|
||||
import com.zg.project.Inventory.domain.vo.InventoryMatchScanSimpleVO;
|
||||
import com.zg.project.Inventory.domain.vo.InventoryMatchScanVO;
|
||||
import com.zg.project.Inventory.domain.vo.RkInfoMatchVO;
|
||||
import com.zg.project.inventory.domain.dto.MatchScanPageDTO;
|
||||
import com.zg.project.inventory.domain.entity.InventoryMatchScan;
|
||||
import com.zg.project.inventory.domain.entity.Sod;
|
||||
import com.zg.project.inventory.domain.vo.InventoryMatchScanSimpleVO;
|
||||
import com.zg.project.inventory.domain.vo.InventoryMatchScanVO;
|
||||
import com.zg.project.inventory.domain.vo.RkInfoMatchVO;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.zg.project.Inventory.AutoInventory.mapper;
|
||||
package com.zg.project.inventory.AutoInventory.mapper;
|
||||
|
||||
import java.util.List;
|
||||
import com.zg.project.Inventory.AutoInventory.domain.entity.PrintRfid;
|
||||
import com.zg.project.inventory.AutoInventory.domain.entity.PrintRfid;
|
||||
|
||||
/**
|
||||
* 打印rfidMapper接口
|
||||
@@ -1,9 +1,8 @@
|
||||
package com.zg.project.Inventory.AutoInventory.mapper;
|
||||
package com.zg.project.inventory.AutoInventory.mapper;
|
||||
|
||||
import com.zg.project.Inventory.domain.dto.QueryDTO;
|
||||
import com.zg.project.Inventory.domain.entity.Sod;
|
||||
import com.zg.project.Inventory.domain.vo.PcdeCntVO;
|
||||
import com.zg.project.Inventory.domain.vo.SodVO;
|
||||
import com.zg.project.inventory.domain.dto.QueryDTO;
|
||||
import com.zg.project.inventory.domain.entity.Sod;
|
||||
import com.zg.project.inventory.domain.vo.SodVO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.zg.project.Inventory.AutoInventory.service;
|
||||
package com.zg.project.inventory.AutoInventory.service;
|
||||
|
||||
import java.util.List;
|
||||
import com.zg.project.Inventory.AutoInventory.domain.entity.PrintRfid;
|
||||
import com.zg.project.inventory.AutoInventory.domain.entity.PrintRfid;
|
||||
|
||||
/**
|
||||
* 打印rfidService接口
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.zg.project.Inventory.AutoInventory.service;
|
||||
package com.zg.project.inventory.AutoInventory.service;
|
||||
|
||||
public interface IRfidService {
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
package com.zg.project.Inventory.AutoInventory.service;
|
||||
package com.zg.project.inventory.AutoInventory.service;
|
||||
|
||||
import com.zg.project.Inventory.domain.dto.QueryDTO;
|
||||
import com.zg.project.Inventory.domain.vo.ChartDataVO;
|
||||
import com.zg.project.Inventory.domain.vo.SodVO;
|
||||
import com.zg.project.inventory.domain.dto.QueryDTO;
|
||||
import com.zg.project.inventory.domain.vo.SodVO;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@@ -1,11 +1,9 @@
|
||||
package com.zg.project.Inventory.AutoInventory.service;
|
||||
package com.zg.project.inventory.AutoInventory.service;
|
||||
|
||||
import com.zg.framework.web.page.TableDataInfo;
|
||||
import com.zg.project.Inventory.domain.dto.MatchScanPageDTO;
|
||||
import com.zg.project.Inventory.domain.entity.InventoryMatchScan;
|
||||
import com.zg.project.Inventory.domain.vo.InventoryMatchScanSimpleVO;
|
||||
import com.zg.project.Inventory.domain.vo.InventoryMatchScanVO;
|
||||
import com.zg.project.Inventory.domain.vo.RkInfoMatchVO;
|
||||
import com.zg.project.inventory.domain.dto.MatchScanPageDTO;
|
||||
import com.zg.project.inventory.domain.entity.InventoryMatchScan;
|
||||
import com.zg.project.inventory.domain.vo.InventoryMatchScanVO;
|
||||
import com.zg.project.inventory.domain.vo.RkInfoMatchVO;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@@ -1,14 +1,12 @@
|
||||
package com.zg.project.Inventory.AutoInventory.service.impl;
|
||||
package com.zg.project.inventory.AutoInventory.service.impl;
|
||||
|
||||
import com.zg.framework.web.page.TableDataInfo;
|
||||
import com.zg.project.Inventory.Task.mapper.InventoryTaskMapper;
|
||||
import com.zg.project.Inventory.domain.dto.MatchScanPageDTO;
|
||||
import com.zg.project.Inventory.domain.entity.InventoryMatchScan;
|
||||
import com.zg.project.Inventory.AutoInventory.mapper.InventoryMatchScanMapper;
|
||||
import com.zg.project.Inventory.AutoInventory.service.InventoryMatchScanService;
|
||||
import com.zg.project.Inventory.domain.vo.InventoryMatchScanSimpleVO;
|
||||
import com.zg.project.Inventory.domain.vo.InventoryMatchScanVO;
|
||||
import com.zg.project.Inventory.domain.vo.RkInfoMatchVO;
|
||||
import com.zg.project.inventory.Task.mapper.InventoryTaskMapper;
|
||||
import com.zg.project.inventory.domain.dto.MatchScanPageDTO;
|
||||
import com.zg.project.inventory.domain.entity.InventoryMatchScan;
|
||||
import com.zg.project.inventory.AutoInventory.mapper.InventoryMatchScanMapper;
|
||||
import com.zg.project.inventory.AutoInventory.service.InventoryMatchScanService;
|
||||
import com.zg.project.inventory.domain.vo.InventoryMatchScanVO;
|
||||
import com.zg.project.inventory.domain.vo.RkInfoMatchVO;
|
||||
import com.zg.project.wisdom.mapper.RkInfoMapper;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
@@ -1,11 +1,11 @@
|
||||
package com.zg.project.Inventory.AutoInventory.service.impl;
|
||||
package com.zg.project.inventory.AutoInventory.service.impl;
|
||||
|
||||
import java.util.List;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import com.zg.project.Inventory.AutoInventory.mapper.PrintRfidMapper;
|
||||
import com.zg.project.Inventory.AutoInventory.domain.entity.PrintRfid;
|
||||
import com.zg.project.Inventory.AutoInventory.service.IPrintRfidService;
|
||||
import com.zg.project.inventory.AutoInventory.mapper.PrintRfidMapper;
|
||||
import com.zg.project.inventory.AutoInventory.domain.entity.PrintRfid;
|
||||
import com.zg.project.inventory.AutoInventory.service.IPrintRfidService;
|
||||
|
||||
/**
|
||||
* 打印rfidService业务层处理
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.zg.project.Inventory.AutoInventory.service.impl;
|
||||
package com.zg.project.inventory.AutoInventory.service.impl;
|
||||
|
||||
import com.rfidread.Enumeration.eReadType;
|
||||
import com.rfidread.Interface.IAsynchronousMessage;
|
||||
@@ -6,7 +6,7 @@ import com.rfidread.Models.GPI_Model;
|
||||
import com.rfidread.Models.Tag_Model;
|
||||
import com.rfidread.RFIDReader;
|
||||
import com.zg.framework.websocket.config.WebSocketServer;
|
||||
import com.zg.project.Inventory.AutoInventory.service.IRfidService;
|
||||
import com.zg.project.inventory.AutoInventory.service.IRfidService;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.stereotype.Service;
|
||||
@@ -1,16 +1,14 @@
|
||||
package com.zg.project.Inventory.AutoInventory.service.impl;
|
||||
package com.zg.project.inventory.AutoInventory.service.impl;
|
||||
|
||||
import com.zg.common.utils.PageUtils;
|
||||
import com.zg.framework.web.page.TableDataInfo;
|
||||
import com.zg.project.Inventory.domain.dto.QueryDTO;
|
||||
import com.zg.project.Inventory.domain.entity.InventoryMatchScan;
|
||||
import com.zg.project.Inventory.domain.entity.Sod;
|
||||
import com.zg.project.Inventory.domain.vo.ChartDataVO;
|
||||
import com.zg.project.Inventory.domain.vo.PcdeCntVO;
|
||||
import com.zg.project.Inventory.domain.vo.SodVO;
|
||||
import com.zg.project.Inventory.AutoInventory.mapper.InventoryMatchScanMapper;
|
||||
import com.zg.project.Inventory.AutoInventory.mapper.SodMapper;
|
||||
import com.zg.project.Inventory.AutoInventory.service.ISodService;
|
||||
import com.zg.project.inventory.domain.dto.QueryDTO;
|
||||
import com.zg.project.inventory.domain.entity.InventoryMatchScan;
|
||||
import com.zg.project.inventory.domain.entity.Sod;
|
||||
import com.zg.project.inventory.domain.vo.SodVO;
|
||||
import com.zg.project.inventory.AutoInventory.mapper.InventoryMatchScanMapper;
|
||||
import com.zg.project.inventory.AutoInventory.mapper.SodMapper;
|
||||
import com.zg.project.inventory.AutoInventory.service.ISodService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.zg.project.Inventory.AutoInventory.utils;
|
||||
package com.zg.project.inventory.AutoInventory.utils;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.zg.project.Inventory.AutoInventory.utils;
|
||||
package com.zg.project.inventory.AutoInventory.utils;
|
||||
|
||||
import org.springframework.beans.BeansException;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
@@ -1,8 +1,7 @@
|
||||
package com.zg.project.Inventory.HdInventory;
|
||||
package com.zg.project.inventory.HdInventory;
|
||||
|
||||
import com.zg.framework.web.domain.AjaxResult;
|
||||
import com.zg.project.Inventory.AutoInventory.service.ISodService;
|
||||
import com.zg.project.Inventory.domain.dto.QueryDTO;
|
||||
import com.zg.project.inventory.domain.dto.QueryDTO;
|
||||
import com.zg.project.wisdom.service.IRkInfoService;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@@ -11,8 +10,6 @@ import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/HdInventory")
|
||||
public class HdInventoryController {
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.zg.project.Inventory.Task.controller;
|
||||
package com.zg.project.inventory.Task.controller;
|
||||
|
||||
import java.util.List;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
@@ -14,8 +14,8 @@ import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import com.zg.framework.aspectj.lang.annotation.Log;
|
||||
import com.zg.framework.aspectj.lang.enums.BusinessType;
|
||||
import com.zg.project.Inventory.domain.entity.InventoryTask;
|
||||
import com.zg.project.Inventory.Task.service.IInventoryTaskService;
|
||||
import com.zg.project.inventory.domain.entity.InventoryTask;
|
||||
import com.zg.project.inventory.Task.service.IInventoryTaskService;
|
||||
import com.zg.framework.web.controller.BaseController;
|
||||
import com.zg.framework.web.domain.AjaxResult;
|
||||
import com.zg.common.utils.poi.ExcelUtil;
|
||||
@@ -1,13 +1,10 @@
|
||||
package com.zg.project.Inventory.Task.controller;
|
||||
package com.zg.project.inventory.Task.controller;
|
||||
|
||||
import com.zg.framework.aspectj.lang.annotation.Log;
|
||||
import com.zg.framework.aspectj.lang.enums.BusinessType;
|
||||
import com.zg.framework.web.controller.BaseController;
|
||||
import com.zg.framework.web.domain.AjaxResult;
|
||||
import com.zg.project.Inventory.Task.service.IInventoryTaskService;
|
||||
import com.zg.project.inventory.Task.service.IInventoryTaskService;
|
||||
import com.zg.project.wisdom.service.IRkInfoService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
@RestController
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.zg.project.Inventory.Task.mapper;
|
||||
package com.zg.project.inventory.Task.mapper;
|
||||
|
||||
import java.util.List;
|
||||
import com.zg.project.Inventory.domain.entity.InventoryTask;
|
||||
import com.zg.project.inventory.domain.entity.InventoryTask;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
/**
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.zg.project.Inventory.Task.service;
|
||||
package com.zg.project.inventory.Task.service;
|
||||
|
||||
import java.util.List;
|
||||
import com.zg.project.Inventory.domain.entity.InventoryTask;
|
||||
import com.zg.project.inventory.domain.entity.InventoryTask;
|
||||
|
||||
/**
|
||||
* 盘点任务Service接口
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.zg.project.Inventory.Task.service.impl;
|
||||
package com.zg.project.inventory.Task.service.impl;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -6,9 +6,9 @@ import com.zg.common.utils.DateUtils;
|
||||
import com.zg.common.utils.SecurityUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import com.zg.project.Inventory.Task.mapper.InventoryTaskMapper;
|
||||
import com.zg.project.Inventory.domain.entity.InventoryTask;
|
||||
import com.zg.project.Inventory.Task.service.IInventoryTaskService;
|
||||
import com.zg.project.inventory.Task.mapper.InventoryTaskMapper;
|
||||
import com.zg.project.inventory.domain.entity.InventoryTask;
|
||||
import com.zg.project.inventory.Task.service.IInventoryTaskService;
|
||||
|
||||
/**
|
||||
* 盘点任务Service业务层处理
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.zg.project.Inventory.domain.dto;
|
||||
package com.zg.project.inventory.domain.dto;
|
||||
|
||||
import lombok.Data;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.zg.project.Inventory.domain.dto;
|
||||
package com.zg.project.inventory.domain.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.zg.project.Inventory.domain.dto;
|
||||
package com.zg.project.inventory.domain.dto;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
@@ -1,13 +1,10 @@
|
||||
package com.zg.project.Inventory.domain.entity;
|
||||
package com.zg.project.inventory.domain.entity;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.zg.framework.aspectj.lang.annotation.Excel;
|
||||
import com.zg.framework.web.domain.BaseEntity;
|
||||
import org.apache.commons.lang3.builder.ToStringBuilder;
|
||||
import org.apache.commons.lang3.builder.ToStringStyle;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 盘点匹配数据记录表 InventoryMatchScan
|
||||
*
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.zg.project.Inventory.domain.entity;
|
||||
package com.zg.project.inventory.domain.entity;
|
||||
|
||||
import org.apache.commons.lang3.builder.ToStringBuilder;
|
||||
import org.apache.commons.lang3.builder.ToStringStyle;
|
||||
@@ -21,12 +21,12 @@ public class InventoryTask extends BaseEntity {
|
||||
@Excel(name = "任务名称")
|
||||
private String taskName;
|
||||
|
||||
/** 仓库ID */
|
||||
@Excel(name = "仓库ID")
|
||||
private String warehouseId;
|
||||
/** 所属小仓编码(warehouse_code) */
|
||||
@Excel(name = "所属小仓编码")
|
||||
private String warehouseCode;
|
||||
|
||||
/** 场景ID */
|
||||
@Excel(name = "场景ID")
|
||||
/** 场景编码(scene_code) */
|
||||
@Excel(name = "场景编码")
|
||||
private String sceneId;
|
||||
|
||||
/** 执行人用户ID */
|
||||
@@ -68,7 +68,7 @@ public class InventoryTask extends BaseEntity {
|
||||
/** 执行人姓名(扩展字段) */
|
||||
private String userName;
|
||||
|
||||
/** 仓库名称(扩展字段) */
|
||||
/** 小仓名称(扩展字段) */
|
||||
private String warehouseName;
|
||||
|
||||
/** 场景名称(扩展字段) */
|
||||
@@ -82,8 +82,8 @@ public class InventoryTask extends BaseEntity {
|
||||
public String getTaskName() { return taskName; }
|
||||
public void setTaskName(String taskName) { this.taskName = taskName; }
|
||||
|
||||
public String getWarehouseId() { return warehouseId; }
|
||||
public void setWarehouseId(String warehouseId) { this.warehouseId = warehouseId; }
|
||||
public String getWarehouseCode() { return warehouseCode; }
|
||||
public void setWarehouseCode(String warehouseCode) { this.warehouseCode = warehouseCode; }
|
||||
|
||||
public String getSceneId() { return sceneId; }
|
||||
public void setSceneId(String sceneId) { this.sceneId = sceneId; }
|
||||
@@ -129,7 +129,7 @@ public class InventoryTask extends BaseEntity {
|
||||
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
|
||||
.append("id", getId())
|
||||
.append("taskName", getTaskName())
|
||||
.append("warehouseId", getWarehouseId())
|
||||
.append("warehouseCode", getWarehouseCode())
|
||||
.append("warehouseName", getWarehouseName())
|
||||
.append("sceneId", getSceneId())
|
||||
.append("sceneName", getSceneName())
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.zg.project.Inventory.AutoInventory.domain.entity;
|
||||
package com.zg.project.inventory.AutoInventory.domain.entity;
|
||||
|
||||
import org.apache.commons.lang3.builder.ToStringBuilder;
|
||||
import org.apache.commons.lang3.builder.ToStringStyle;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.zg.project.Inventory.domain.entity;
|
||||
package com.zg.project.inventory.domain.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.zg.project.Inventory.domain.vo;
|
||||
package com.zg.project.inventory.domain.vo;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.zg.project.Inventory.domain.vo;
|
||||
package com.zg.project.inventory.domain.vo;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.zg.project.Inventory.domain.vo;
|
||||
package com.zg.project.inventory.domain.vo;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.zg.project.Inventory.domain.vo;
|
||||
package com.zg.project.inventory.domain.vo;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.zg.project.Inventory.domain.vo;
|
||||
package com.zg.project.inventory.domain.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.zg.project.Inventory.domain.vo;
|
||||
package com.zg.project.inventory.domain.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.zg.project.Inventory.domain.vo;
|
||||
package com.zg.project.inventory.domain.vo;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.zg.project.Inventory.domain.vo;
|
||||
package com.zg.project.inventory.domain.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@@ -46,12 +46,57 @@ public class RkInfoController extends BaseController
|
||||
*/
|
||||
// @PreAuthorize("@ss.hasPermi('wisdom:stock:list')")
|
||||
@PostMapping("/list")
|
||||
public TableDataInfo list(@RequestBody RkInfoQueryDTO rkInfo) {
|
||||
PageHelper.startPage(rkInfo.getPageNum(), rkInfo.getPageSize());
|
||||
List<RkInfo> list = rkInfoService.selectRkInfoList(rkInfo);
|
||||
public TableDataInfo list(@RequestBody RkInfoQueryDTO query) {
|
||||
PageHelper.startPage(
|
||||
query.getPageNum() == null ? 1 : query.getPageNum(),
|
||||
query.getPageSize() == null ? 10 : query.getPageSize()
|
||||
);
|
||||
|
||||
List<RkInfo> list = rkInfoService.selectRkInfoList(query);
|
||||
return getDataTable(list);
|
||||
}
|
||||
|
||||
@PostMapping("/borrow/list")
|
||||
public TableDataInfo borrowList(@RequestBody RkInfoQueryDTO query) {
|
||||
|
||||
PageHelper.startPage(
|
||||
query.getPageNum() == null ? 1 : query.getPageNum(),
|
||||
query.getPageSize() == null ? 10 : query.getPageSize()
|
||||
);
|
||||
|
||||
List<RkInfo> list = rkInfoService.selectBorrowAndReturnList(query);
|
||||
return getDataTable(list);
|
||||
}
|
||||
|
||||
|
||||
@PostMapping("/pageStatistics")
|
||||
public Map<String, Object> pageStatistics(@RequestBody RkInfoQueryDTO dto) {
|
||||
|
||||
// 使用 PageHelper 分页
|
||||
PageHelper.startPage(dto.getPageNum(), dto.getPageSize());
|
||||
List<RkInfo> list = rkInfoService.selectAllRkInfo(dto);
|
||||
// 统计金额
|
||||
Long sumMoney = rkInfoService.selectStatistics(dto);
|
||||
// 统计库位
|
||||
Long pcdeCount = rkInfoService.selectPcde(dto);
|
||||
Map<String,Object> dataInfo = new HashMap<>();
|
||||
dataInfo.put("dataList",getDataTable(list));
|
||||
dataInfo.put("sumMoney",sumMoney);
|
||||
dataInfo.put("pcdeCount",pcdeCount);
|
||||
return dataInfo;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 单据头信息:根据入库单号查询公共字段
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('wisdom:stock:query')")
|
||||
@GetMapping("/header/{billNo}")
|
||||
public AjaxResult getHeaderByBillNo(@PathVariable String billNo) {
|
||||
RkInfo header = rkInfoService.selectHeaderByBillNo(billNo);
|
||||
return success(header);
|
||||
}
|
||||
|
||||
@GetMapping("/pcode/{pcode}")
|
||||
public AjaxResult listRkInfoByPcode(@PathVariable String pcode) {
|
||||
List<RkInfo> rows = rkInfoService.listRkInfoByPcode(pcode);
|
||||
@@ -230,7 +275,6 @@ public class RkInfoController extends BaseController
|
||||
*/
|
||||
@GetMapping("/delivery/list")
|
||||
public AjaxResult listDelivery(RkInfo query) {
|
||||
// 保险起见,这里强制条件(也可以在 service 里写死)
|
||||
query.setIsChuku("1");
|
||||
query.setIsDelivery("1");
|
||||
List<DeliveryBillVO> list = rkInfoService.selectDeliveryBillList(query);
|
||||
@@ -258,24 +302,6 @@ public class RkInfoController extends BaseController
|
||||
|
||||
}
|
||||
|
||||
@PostMapping("/pageStatistics")
|
||||
public Map<String, Object> pageStatistics(@RequestBody(required = false) RkInfoQueryDTO dto) {
|
||||
|
||||
// 使用 PageHelper 分页
|
||||
PageHelper.startPage(dto.getPageNum(), dto.getPageSize());
|
||||
List<RkInfo> list = rkInfoService.selectAllRkInfo(dto);
|
||||
// 统计金额
|
||||
Long sumMoney = rkInfoService.selectStatistics(dto);
|
||||
// 统计库位
|
||||
Long pcdeCount = rkInfoService.selectPcde(dto);
|
||||
Map<String,Object> dataInfo = new HashMap<>();
|
||||
dataInfo.put("dataList",getDataTable(list));
|
||||
dataInfo.put("sumMoney",sumMoney);
|
||||
dataInfo.put("pcdeCount",pcdeCount);
|
||||
return dataInfo;
|
||||
|
||||
}
|
||||
|
||||
// 根据玉田需求,新添加的接口
|
||||
@PreAuthorize("@ss.hasPermi('wisdom:stock:edit')")
|
||||
@PostMapping("/editBill")
|
||||
|
||||
@@ -17,8 +17,7 @@ import com.zg.framework.web.domain.BaseEntity;
|
||||
* @author zg
|
||||
* @date 2025-05-28
|
||||
*/
|
||||
public class RkInfo extends BaseEntity
|
||||
{
|
||||
public class RkInfo extends BaseEntity {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** 模糊搜索关键字(项目号、项目描述、物料号、物料描述、供应商编码、供应商名称,订单编号) */
|
||||
@@ -48,7 +47,7 @@ public class RkInfo extends BaseEntity
|
||||
/** 物资类型 */
|
||||
private String wlType;
|
||||
|
||||
/** 所属仓库 */
|
||||
/** 所属仓库(原始字段,表里存的仓库编码) */
|
||||
private String cangku;
|
||||
|
||||
/** 多状态查询:是否出库(如 0=入库, 1=出库 等) */
|
||||
@@ -63,10 +62,34 @@ public class RkInfo extends BaseEntity
|
||||
@Excel(name = "物资类型名称")
|
||||
private String wlTypeName;
|
||||
|
||||
/** 所属仓库名称(联查显示用,导出专用) */
|
||||
/** 所属仓库名称(联查显示用,导出专用,对应 cangku) */
|
||||
@Excel(name = "所属仓库名称")
|
||||
private String cangkuName;
|
||||
|
||||
/* ================== 新增:大仓 / 小仓信息(非 rk_info 表字段,联查 pcde_detail + warehouse_info) ================== */
|
||||
|
||||
/** 所属大仓编码 */
|
||||
@TableField(exist = false)
|
||||
@Excel(name = "所属大仓编码")
|
||||
private String parentWarehouseCode;
|
||||
|
||||
/** 所属大仓名称 */
|
||||
@TableField(exist = false)
|
||||
@Excel(name = "所属大仓名称")
|
||||
private String parentWarehouseName;
|
||||
|
||||
/** 所属小仓编码 */
|
||||
@TableField(exist = false)
|
||||
@Excel(name = "所属小仓编码")
|
||||
private String warehouseCode;
|
||||
|
||||
/** 所属小仓名称 */
|
||||
@TableField(exist = false)
|
||||
@Excel(name = "所属小仓名称")
|
||||
private String warehouseName;
|
||||
|
||||
/* =============================================================================================================== */
|
||||
|
||||
/** 入库时间(用户操作入库的日期) */
|
||||
@Excel(name = "入库时间", dateFormat = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date rkTime;
|
||||
@@ -88,7 +111,7 @@ public class RkInfo extends BaseEntity
|
||||
/** 理货员名称(联查显示用,导出专用) */
|
||||
private String lihuoYName;
|
||||
|
||||
/** 是否已出库(0未出库,1已出库) */
|
||||
/** 是否已出库(0已入库,1已出库,2待审批,3借料出库,4入库撤销,5出库撤销) */
|
||||
@Excel(name = "是否已出库", readConverterExp = "0已入库,1已出库,2待审批,3借料出库,4入库撤销,5出库撤销")
|
||||
private String isChuku;
|
||||
|
||||
@@ -100,7 +123,7 @@ public class RkInfo extends BaseEntity
|
||||
@Excel(name = "出库单据号")
|
||||
private String billNoCk;
|
||||
|
||||
/** 是否需要配送(0否 1是) */
|
||||
/** 是否需要配送(0否 1是 2配送中 3配送完成) */
|
||||
@Excel(name = "是否需要配送", readConverterExp = "0=否,1=是,2=配送中,3=配送完成")
|
||||
private String isDelivery;
|
||||
|
||||
@@ -170,11 +193,11 @@ public class RkInfo extends BaseEntity
|
||||
@Excel(name = "实际入库数量")
|
||||
private BigDecimal realQty;
|
||||
|
||||
/** 库位码 */
|
||||
/** 库位码(编码) */
|
||||
@Excel(name = "库位码")
|
||||
private String pcode;
|
||||
|
||||
/** 库位主键ID */
|
||||
/** 库位主键ID(pcde_detail.id) */
|
||||
@Excel(name = "库位主键ID")
|
||||
private String pcodeId;
|
||||
|
||||
@@ -186,7 +209,7 @@ public class RkInfo extends BaseEntity
|
||||
@Excel(name = "实物ID")
|
||||
private String entityId;
|
||||
|
||||
/** 一货一图 - 货物照片URL */
|
||||
/** 一货一图 - 货物照片URL(非表字段) */
|
||||
@TableField(exist = false)
|
||||
private String photoUrl;
|
||||
|
||||
@@ -217,15 +240,15 @@ public class RkInfo extends BaseEntity
|
||||
@Excel(name = "是否移库过")
|
||||
private String hasMoved;
|
||||
|
||||
/** 是否借料(0否 1是) */
|
||||
/** 是否借料(0否 1是 2已归还) */
|
||||
@Excel(name = "是否借料", readConverterExp = "0=否,1=是,2=已归还")
|
||||
private String isBorrowed;
|
||||
|
||||
/** 签字图片URL(image_type = 0) */
|
||||
/** 签字图片URL(image_type = sign,非表字段) */
|
||||
@TableField(exist = false)
|
||||
private String signImageUrl;
|
||||
|
||||
/** 现场图片URL(image_type = 1) */
|
||||
/** 现场图片URL(image_type = photo,非表字段) */
|
||||
@TableField(exist = false)
|
||||
private String scenePhotoUrl;
|
||||
|
||||
@@ -233,20 +256,20 @@ public class RkInfo extends BaseEntity
|
||||
@TableField(exist = false)
|
||||
private String auditResult;
|
||||
|
||||
/** 开始时间 */
|
||||
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
|
||||
/** 开始时间(查询条件) */
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
private Date startTime;
|
||||
|
||||
/** 结束时间 */
|
||||
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
|
||||
/** 结束时间(查询条件) */
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
private Date endTime;
|
||||
|
||||
/** 领用开始时间 */
|
||||
/** 领用开始时间(查询条件) */
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
@TableField(exist = false)
|
||||
private Date lyStartTime;
|
||||
|
||||
/** 领用结束时间 */
|
||||
/** 领用结束时间(查询条件) */
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
@TableField(exist = false)
|
||||
private Date lyEndTime;
|
||||
@@ -262,63 +285,67 @@ public class RkInfo extends BaseEntity
|
||||
/** 是否删除(0 表示正常,1 表示已删除) */
|
||||
private String isDelete;
|
||||
|
||||
// Getter 和 Setter 方法
|
||||
/* ======================= Getter / Setter ======================= */
|
||||
|
||||
public String getKeyword() { return keyword; }
|
||||
public void setKeyword(String keyword) { this.keyword = keyword; }
|
||||
|
||||
public Long getId() { return id; }
|
||||
public void setId(Long id) { this.id = id; }
|
||||
|
||||
public List<Long> getIds() {
|
||||
return ids;
|
||||
}
|
||||
public List<Long> getIds() { return ids; }
|
||||
public void setIds(List<Long> ids) { this.ids = ids; }
|
||||
|
||||
public void setIds(List<Long> ids) {
|
||||
this.ids = ids;
|
||||
}
|
||||
public Long getGysJhId() {
|
||||
return gysJhId;
|
||||
}
|
||||
public Long getGysJhId() { return gysJhId; }
|
||||
public void setGysJhId(Long gysJhId) { this.gysJhId = gysJhId; }
|
||||
|
||||
public void setGysJhId(Long gysJhId) {
|
||||
this.gysJhId = gysJhId;
|
||||
}
|
||||
public String getApproverId() { return approverId; }
|
||||
public void setApproverId(String approverId) { this.approverId = approverId; }
|
||||
|
||||
public String getApproverId() {
|
||||
return approverId;
|
||||
}
|
||||
|
||||
public void setApproverId(String approverId) {
|
||||
this.approverId = approverId;
|
||||
}
|
||||
public Long getStockAge() { return stockAge; }
|
||||
public void setStockAge(Long stockAge) { this.stockAge = stockAge; }
|
||||
|
||||
public String getRkType() { return rkType; }
|
||||
public void setRkType(String rkType) { this.rkType = rkType; }
|
||||
|
||||
public String getWlType() { return wlType; }
|
||||
public void setWlType(String wlType) { this.wlType = wlType; }
|
||||
|
||||
public String getCangku() { return cangku; }
|
||||
public void setCangku(String cangku) { this.cangku = cangku; }
|
||||
|
||||
public List<String> getIsChukuList() { return isChukuList; }
|
||||
public void setIsChukuList(List<String> isChukuList) { this.isChukuList = isChukuList; }
|
||||
|
||||
public String getRkTypeName() { return rkTypeName; }
|
||||
public void setRkTypeName(String rkTypeName) { this.rkTypeName = rkTypeName; }
|
||||
|
||||
public String getWlTypeName() { return wlTypeName; }
|
||||
public void setWlTypeName(String wlTypeName) { this.wlTypeName = wlTypeName; }
|
||||
|
||||
public String getCangkuName() { return cangkuName; }
|
||||
public void setCangkuName(String cangkuName) { this.cangkuName = cangkuName; }
|
||||
|
||||
public String getParentWarehouseCode() { return parentWarehouseCode; }
|
||||
public void setParentWarehouseCode(String parentWarehouseCode) { this.parentWarehouseCode = parentWarehouseCode; }
|
||||
|
||||
public String getParentWarehouseName() { return parentWarehouseName; }
|
||||
public void setParentWarehouseName(String parentWarehouseName) { this.parentWarehouseName = parentWarehouseName; }
|
||||
|
||||
public String getWarehouseCode() { return warehouseCode; }
|
||||
public void setWarehouseCode(String warehouseCode) { this.warehouseCode = warehouseCode; }
|
||||
|
||||
public String getWarehouseName() { return warehouseName; }
|
||||
public void setWarehouseName(String warehouseName) { this.warehouseName = warehouseName; }
|
||||
|
||||
public Date getRkTime() { return rkTime; }
|
||||
public void setRkTime(Date rkTime) { this.rkTime = rkTime; }
|
||||
public Date getBorrowTime() {
|
||||
return borrowTime;
|
||||
}
|
||||
public void setBorrowTime(Date borrowTime) {
|
||||
this.borrowTime = borrowTime;
|
||||
}
|
||||
|
||||
public Date getReturnTime() {
|
||||
return returnTime;
|
||||
}
|
||||
public void setReturnTime(Date returnTime) {
|
||||
this.returnTime = returnTime;
|
||||
}
|
||||
public Date getBorrowTime() { return borrowTime; }
|
||||
public void setBorrowTime(Date borrowTime) { this.borrowTime = borrowTime; }
|
||||
|
||||
public Date getReturnTime() { return returnTime; }
|
||||
public void setReturnTime(Date returnTime) { this.returnTime = returnTime; }
|
||||
|
||||
public String getLihuoY() { return lihuoY; }
|
||||
public void setLihuoY(String lihuoY) { this.lihuoY = lihuoY; }
|
||||
@@ -326,199 +353,158 @@ public class RkInfo extends BaseEntity
|
||||
public String getLihuoYName() { return lihuoYName; }
|
||||
public void setLihuoYName(String lihuoYName) { this.lihuoYName = lihuoYName; }
|
||||
|
||||
public List<String> getIsChukuList() {
|
||||
return isChukuList;
|
||||
}
|
||||
|
||||
public void setIsChukuList(List<String> isChukuList) {
|
||||
this.isChukuList = isChukuList;
|
||||
}
|
||||
public String getIsChuku() { return isChuku; }
|
||||
public void setIsChuku(String isChuku) { this.isChuku = isChuku; }
|
||||
|
||||
public String getBillNo() { return billNo; }
|
||||
public void setBillNo(String billNo) { this.billNo = billNo; }
|
||||
|
||||
public String getBillNoCk() { return billNoCk; }
|
||||
public void setBillNoCk(String billNoCk) { this.billNoCk = billNoCk; }
|
||||
|
||||
public String getIsDelivery() { return isDelivery; }
|
||||
public void setIsDelivery(String isDelivery) { this.isDelivery = isDelivery; }
|
||||
|
||||
public String getXj() { return xj; }
|
||||
public void setXj(String xj) { this.xj = xj; }
|
||||
|
||||
public String getXmNo() { return xmNo; }
|
||||
public void setXmNo(String xmNo) { this.xmNo = xmNo; }
|
||||
|
||||
public String getXmMs() { return xmMs; }
|
||||
public void setXmMs(String xmMs) { this.xmMs = xmMs; }
|
||||
|
||||
public String getXmNoCk() { return xmNoCk; }
|
||||
public void setXmNoCk(String xmNoCk) { this.xmNoCk = xmNoCk; }
|
||||
|
||||
public String getXmMsCk() { return xmMsCk; }
|
||||
public void setXmMsCk(String xmMsCk) { this.xmMsCk = xmMsCk; }
|
||||
|
||||
public String getWlNo() { return wlNo; }
|
||||
public void setWlNo(String wlNo) { this.wlNo = wlNo; }
|
||||
|
||||
public String getWlMs() { return wlMs; }
|
||||
public void setWlMs(String wlMs) { this.wlMs = wlMs; }
|
||||
|
||||
public String getGysNo() { return gysNo; }
|
||||
public void setGysNo(String gysNo) { this.gysNo = gysNo; }
|
||||
|
||||
public String getGysMc() { return gysMc; }
|
||||
public void setGysMc(String gysMc) { this.gysMc = gysMc; }
|
||||
|
||||
public BigDecimal getJhAmt() { return jhAmt; }
|
||||
public void setJhAmt(BigDecimal jhAmt) { this.jhAmt = jhAmt; }
|
||||
|
||||
public BigDecimal getHtDj() { return htDj; }
|
||||
public void setHtDj(BigDecimal htDj) { this.htDj = htDj; }
|
||||
|
||||
public String getSapNo() { return sapNo; }
|
||||
public void setSapNo(String sapNo) { this.sapNo = sapNo; }
|
||||
|
||||
public String getXh() { return xh; }
|
||||
public void setXh(String xh) { this.xh = xh; }
|
||||
|
||||
public Long getJhQty() { return jhQty; }
|
||||
public void setJhQty(Long jhQty) { this.jhQty = jhQty; }
|
||||
|
||||
public Long getHtQty() { return htQty; }
|
||||
public void setHtQty(Long htQty) { this.htQty = htQty; }
|
||||
|
||||
public String getDw() { return dw; }
|
||||
public void setDw(String dw) { this.dw = dw; }
|
||||
|
||||
public BigDecimal getRealQty() { return realQty; }
|
||||
public void setRealQty(BigDecimal realQty) { this.realQty = realQty; }
|
||||
|
||||
public String getPcode() { return pcode; }
|
||||
public void setPcode(String pcode) { this.pcode = pcode; }
|
||||
|
||||
public String getPcodeId() { return pcodeId; }
|
||||
public void setPcodeId(String pcodeId) { this.pcodeId = pcodeId; }
|
||||
|
||||
public String getTrayCode() { return trayCode; }
|
||||
public void setTrayCode(String trayCode) { this.trayCode = trayCode; }
|
||||
|
||||
public String getEntityId() { return entityId; }
|
||||
public void setEntityId(String entityId) { this.entityId = entityId; }
|
||||
public String getPhotoUrl() {
|
||||
return photoUrl;
|
||||
}
|
||||
|
||||
public void setPhotoUrl(String photoUrl) {
|
||||
this.photoUrl = photoUrl;
|
||||
}
|
||||
public String getPhotoUrl() { return photoUrl; }
|
||||
public void setPhotoUrl(String photoUrl) { this.photoUrl = photoUrl; }
|
||||
|
||||
public String getCkLihuoY() { return ckLihuoY; }
|
||||
public void setCkLihuoY(String ckLihuoY) { this.ckLihuoY = ckLihuoY; }
|
||||
|
||||
public String getCkType() { return ckType; }
|
||||
public void setCkType(String ckType) { this.ckType = ckType; }
|
||||
|
||||
public String getCkTypeName() { return ckTypeName; }
|
||||
public void setCkTypeName(String ckTypeName) { this.ckTypeName = ckTypeName; }
|
||||
|
||||
public String getTeamCode() { return teamCode; }
|
||||
public void setTeamCode(String teamCode) { this.teamCode = teamCode; }
|
||||
|
||||
public String getTeamName() { return teamName; }
|
||||
public void setTeamName(String teamName) { this.teamName = teamName; }
|
||||
|
||||
public Date getLyTime() { return lyTime; }
|
||||
public void setLyTime(Date lyTime) { this.lyTime = lyTime; }
|
||||
|
||||
public String getCkRemark() { return ckRemark; }
|
||||
public void setCkRemark(String ckRemark) { this.ckRemark = ckRemark; }
|
||||
|
||||
public String getStatus() { return status; }
|
||||
public void setStatus(String status) { this.status = status; }
|
||||
|
||||
public String getHasMoved() { return hasMoved; }
|
||||
public void setHasMoved(String hasMoved) { this.hasMoved = hasMoved; }
|
||||
public String getXmNoCk() {
|
||||
return xmNoCk;
|
||||
}
|
||||
|
||||
public void setXmNoCk(String xmNoCk) {
|
||||
this.xmNoCk = xmNoCk;
|
||||
}
|
||||
public String getIsBorrowed() { return isBorrowed; }
|
||||
public void setIsBorrowed(String isBorrowed) { this.isBorrowed = isBorrowed; }
|
||||
|
||||
public String getXmMsCk() {
|
||||
return xmMsCk;
|
||||
}
|
||||
public String getSignImageUrl() { return signImageUrl; }
|
||||
public void setSignImageUrl(String signImageUrl) { this.signImageUrl = signImageUrl; }
|
||||
|
||||
public void setXmMsCk(String xmMsCk) {
|
||||
this.xmMsCk = xmMsCk;
|
||||
}
|
||||
public String getScenePhotoUrl() { return scenePhotoUrl; }
|
||||
public void setScenePhotoUrl(String scenePhotoUrl) { this.scenePhotoUrl = scenePhotoUrl; }
|
||||
|
||||
public Date getStartTime() {
|
||||
return startTime;
|
||||
}
|
||||
public String getAuditResult() { return auditResult; }
|
||||
public void setAuditResult(String auditResult) { this.auditResult = auditResult; }
|
||||
|
||||
public void setStartTime(Date startTime) {
|
||||
this.startTime = startTime;
|
||||
}
|
||||
public Date getStartTime() { return startTime; }
|
||||
public void setStartTime(Date startTime) { this.startTime = startTime; }
|
||||
|
||||
public Date getEndTime() {
|
||||
return endTime;
|
||||
}
|
||||
public Date getEndTime() { return endTime; }
|
||||
public void setEndTime(Date endTime) { this.endTime = endTime; }
|
||||
|
||||
public void setEndTime(Date endTime) {
|
||||
this.endTime = endTime;
|
||||
}
|
||||
public Date getLyStartTime() { return lyStartTime; }
|
||||
public void setLyStartTime(Date lyStartTime) { this.lyStartTime = lyStartTime; }
|
||||
|
||||
public Date getLyStartTime() {
|
||||
return lyStartTime;
|
||||
}
|
||||
public Date getLyEndTime() { return lyEndTime; }
|
||||
public void setLyEndTime(Date lyEndTime) { this.lyEndTime = lyEndTime; }
|
||||
|
||||
public void setLyStartTime(Date lyStartTime) {
|
||||
this.lyStartTime = lyStartTime;
|
||||
}
|
||||
public String getFycde1() { return fycde1; }
|
||||
public void setFycde1(String fycde1) { this.fycde1 = fycde1; }
|
||||
|
||||
public Date getLyEndTime() {
|
||||
return lyEndTime;
|
||||
}
|
||||
|
||||
public void setLyEndTime(Date lyEndTime) {
|
||||
this.lyEndTime = lyEndTime;
|
||||
}
|
||||
|
||||
public String getIsBorrowed() {
|
||||
return isBorrowed;
|
||||
}
|
||||
|
||||
public void setIsBorrowed(String isBorrowed) {
|
||||
this.isBorrowed = isBorrowed;
|
||||
}
|
||||
|
||||
public String getSignImageUrl() {
|
||||
return signImageUrl;
|
||||
}
|
||||
|
||||
public void setSignImageUrl(String signImageUrl) {
|
||||
this.signImageUrl = signImageUrl;
|
||||
}
|
||||
|
||||
public String getScenePhotoUrl() {
|
||||
return scenePhotoUrl;
|
||||
}
|
||||
|
||||
public void setScenePhotoUrl(String scenePhotoUrl) {
|
||||
this.scenePhotoUrl = scenePhotoUrl;
|
||||
}
|
||||
|
||||
public String getAuditResult() {
|
||||
return auditResult;
|
||||
}
|
||||
|
||||
public void setAuditResult(String auditResult) {
|
||||
this.auditResult = auditResult;
|
||||
}
|
||||
|
||||
public String getFycde1() {
|
||||
return fycde1;
|
||||
}
|
||||
|
||||
public void setFycde1(String fycde1) {
|
||||
this.fycde1 = fycde1;
|
||||
}
|
||||
|
||||
public String getFycde2() {
|
||||
return fycde2;
|
||||
}
|
||||
|
||||
public void setFycde2(String fycde2) {
|
||||
this.fycde2 = fycde2;
|
||||
}
|
||||
public String getFycde2() { return fycde2; }
|
||||
public void setFycde2(String fycde2) { this.fycde2 = fycde2; }
|
||||
|
||||
public String getIsDelete() { return isDelete; }
|
||||
public void setIsDelete(String isDelete) { this.isDelete = isDelete; }
|
||||
|
||||
|
||||
public String getIsDelivery() {
|
||||
return isDelivery;
|
||||
}
|
||||
|
||||
public void setIsDelivery(String isDelivery) {
|
||||
this.isDelivery = isDelivery;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
|
||||
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
|
||||
.append("id", getId())
|
||||
.append("gysJhId", getGysJhId())
|
||||
.append("approverId", getApproverId())
|
||||
.append("rkType", getRkType())
|
||||
.append("wlType", getWlType())
|
||||
.append("cangku", getCangku())
|
||||
.append("cangkuName", getCangkuName())
|
||||
.append("parentWarehouseCode", getParentWarehouseCode())
|
||||
.append("parentWarehouseName", getParentWarehouseName())
|
||||
.append("warehouseCode", getWarehouseCode())
|
||||
.append("warehouseName", getWarehouseName())
|
||||
.append("rkTime", getRkTime())
|
||||
.append("borrowTime", getBorrowTime())
|
||||
.append("returnTime", getReturnTime())
|
||||
|
||||
@@ -11,6 +11,7 @@ import java.util.List;
|
||||
@Data
|
||||
public class PcRkInfoBatchDTO {
|
||||
|
||||
|
||||
/** 要追加到的入库单据号(必填) */
|
||||
private String billNo;
|
||||
|
||||
@@ -26,8 +27,17 @@ public class PcRkInfoBatchDTO {
|
||||
/** 理货员 */
|
||||
private String lihuoY;
|
||||
|
||||
/** 所属仓库 */
|
||||
private String cangku;
|
||||
/** 所属大仓编码(父仓,对应 warehouse_info.parent_warehouse_code)——只用于选择,不直接落库 */
|
||||
private String parentWarehouseCode;
|
||||
|
||||
/** 所属大仓名称(冗余展示,可选) */
|
||||
private String parentWarehouseName;
|
||||
|
||||
/** 所属小仓编码(真正落到 rk_info.cangku 的字段) */
|
||||
private String warehouseCode;
|
||||
|
||||
/** 所属小仓名称(冗余展示,可选) */
|
||||
private String warehouseName;
|
||||
|
||||
/** 入库记录列表(每条为完整入库项) */
|
||||
private List<PcRkInfoItemDTO> rkList;
|
||||
@@ -35,8 +45,7 @@ public class PcRkInfoBatchDTO {
|
||||
/** 发起人签字图片 URL(单张) */
|
||||
private String signatureUrl;
|
||||
|
||||
// zhangjinbo 根据玉田需求 添加入库时间
|
||||
// zhangjinbo 根据玉田需求 添加入库时间
|
||||
private Date rkTime;
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -21,6 +21,19 @@ public class RkInfoBatchDTO {
|
||||
/** 所属仓库 */
|
||||
private String cangku;
|
||||
|
||||
/** 大仓编码 */
|
||||
private String parentWarehouseCode;
|
||||
|
||||
/** 大仓名称(前端展示用,不落表) */
|
||||
private String parentWarehouseName;
|
||||
|
||||
/** 小仓编码(warehouse_info.warehouse_code)——真正落到 rk_info.cangku 的值 */
|
||||
private String warehouseCode;
|
||||
|
||||
/** 小仓名称(前端展示用,不落表) */
|
||||
private String warehouseName;
|
||||
|
||||
|
||||
/** 入库物料列表 */
|
||||
private List<RkInfoItemDTO> rkList;
|
||||
|
||||
|
||||
@@ -20,10 +20,10 @@ public class RkInfoQueryDTO extends RkInfo {
|
||||
private Integer pageSize;
|
||||
|
||||
/** 开始时间 */
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
|
||||
private Date statDate;
|
||||
|
||||
/** 结束时间 */
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
|
||||
private Date endDate;
|
||||
}
|
||||
|
||||
@@ -2,11 +2,10 @@ package com.zg.project.wisdom.mapper;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.zg.project.Inventory.domain.vo.PcdeCntVO;
|
||||
import com.zg.project.Inventory.domain.vo.RkInfoMatchVO;
|
||||
import com.zg.project.inventory.domain.vo.PcdeCntVO;
|
||||
import com.zg.project.inventory.domain.vo.RkInfoMatchVO;
|
||||
import com.zg.project.wisdom.domain.RkInfo;
|
||||
import com.zg.project.wisdom.domain.dto.RkInfoQueryDTO;
|
||||
import com.zg.project.wisdom.domain.vo.PcodeQtyVO;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
/**
|
||||
@@ -245,4 +244,12 @@ public interface RkInfoMapper
|
||||
* 查询出库单据
|
||||
*/
|
||||
List<RkInfo> selectDeliveryCkList(@Param("q") RkInfo query);
|
||||
|
||||
|
||||
/**
|
||||
* 借料 / 还料专用列表查询
|
||||
*/
|
||||
List<RkInfo> selectBorrowAndReturnList(RkInfo rkInfo);
|
||||
|
||||
RkInfo selectHeaderByBillNo(String billNo);
|
||||
}
|
||||
|
||||
@@ -1,14 +1,12 @@
|
||||
package com.zg.project.wisdom.service;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import com.zg.project.Inventory.domain.dto.QueryDTO;
|
||||
import com.zg.project.Inventory.domain.vo.ChartDataVO;
|
||||
import com.zg.project.inventory.domain.dto.QueryDTO;
|
||||
import com.zg.project.inventory.domain.vo.ChartDataVO;
|
||||
import com.zg.project.wisdom.domain.RkInfo;
|
||||
import com.zg.project.wisdom.domain.dto.*;
|
||||
import com.zg.project.wisdom.domain.vo.DeliveryBillVO;
|
||||
import com.zg.project.wisdom.domain.vo.PcodeQtyVO;
|
||||
|
||||
/**
|
||||
* 库存单据主Service接口
|
||||
@@ -187,4 +185,12 @@ public interface IRkInfoService
|
||||
* @return
|
||||
*/
|
||||
List<DeliveryBillVO> selectDeliveryBillList(RkInfo query);
|
||||
|
||||
List<RkInfo> selectBorrowAndReturnList(RkInfoQueryDTO query);
|
||||
|
||||
|
||||
/**
|
||||
* 根据入库单号查询单据头公共信息
|
||||
*/
|
||||
RkInfo selectHeaderByBillNo(String billNo);
|
||||
}
|
||||
|
||||
@@ -9,6 +9,8 @@ import com.zg.common.exception.ServiceException;
|
||||
import com.zg.common.utils.DateUtils;
|
||||
import com.zg.common.utils.EntityFillUtils;
|
||||
import com.zg.common.utils.SecurityUtils;
|
||||
import com.zg.project.information.domain.PcdeDetail;
|
||||
import com.zg.project.information.mapper.PcdeDetailMapper;
|
||||
import com.zg.project.wisdom.domain.RkInfo;
|
||||
import com.zg.project.wisdom.domain.dto.MoveRequestDTO;
|
||||
import com.zg.project.wisdom.domain.dto.MoveTargetItem;
|
||||
@@ -36,6 +38,8 @@ public class MoveRecordServiceImpl implements IMoveRecordService
|
||||
@Autowired
|
||||
private RkInfoMapper rkInfoMapper;
|
||||
|
||||
@Autowired
|
||||
private PcdeDetailMapper pcdeDetailMapper;
|
||||
/**
|
||||
* 查询移库记录
|
||||
*
|
||||
@@ -111,18 +115,32 @@ public class MoveRecordServiceImpl implements IMoveRecordService
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void processMove(MoveRequestDTO dto) {
|
||||
// 查询原始库存记录
|
||||
|
||||
// 0. 基本校验
|
||||
if (dto == null || dto.getFromRkId() == null) {
|
||||
throw new ServiceException("原库存ID不能为空");
|
||||
}
|
||||
if (dto.getTargets() == null || dto.getTargets().isEmpty()) {
|
||||
throw new ServiceException("目标位置列表不能为空");
|
||||
}
|
||||
|
||||
// 0.1 校验每个目标库位与仓库关系
|
||||
for (MoveTargetItem target : dto.getTargets()) {
|
||||
validatePcodeWarehouseRelation(target.getToPcode(), target.getToCangku());
|
||||
}
|
||||
|
||||
// 1. 查询原始库存记录
|
||||
RkInfo original = rkInfoMapper.selectRkInfoById(dto.getFromRkId());
|
||||
if (original == null || "1".equals(original.getIsDelete())) {
|
||||
throw new ServiceException("原库存不存在或已删除");
|
||||
}
|
||||
|
||||
// 计算目标总数量
|
||||
// 2. 计算目标总数量
|
||||
BigDecimal totalQty = dto.getTargets().stream()
|
||||
.map(MoveTargetItem::getRealQty)
|
||||
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
|
||||
// 原始库存数量
|
||||
// 3. 原始库存数量
|
||||
BigDecimal realQty = original.getRealQty();
|
||||
if (realQty == null) {
|
||||
throw new ServiceException("原库存数量为空,无法进行比较");
|
||||
@@ -132,18 +150,20 @@ public class MoveRecordServiceImpl implements IMoveRecordService
|
||||
throw new ServiceException("拆分总数量不能大于原库存数量");
|
||||
}
|
||||
|
||||
// 操作信息
|
||||
// 4. 操作信息
|
||||
String username = dto.getMovedBy();
|
||||
Date now = DateUtils.parseDate(dto.getMovedAt());
|
||||
|
||||
// 情况一:整库移库(目标总数量 = 原库存,且仅一个目标)
|
||||
// ===== 情况一:整库移库(目标总数量 = 原库存,且仅一个目标)=====
|
||||
if (dto.getTargets().size() == 1 && totalQty.compareTo(realQty) == 0) {
|
||||
MoveTargetItem target = dto.getTargets().get(0);
|
||||
|
||||
// 这里 info 用于记录移库前的快照
|
||||
RkInfo info = new RkInfo();
|
||||
BeanUtils.copyProperties(original, info);
|
||||
|
||||
original.setCangku(target.getToCangku());
|
||||
// 更新原库存到新位置
|
||||
original.setWarehouseCode(target.getToCangku());
|
||||
original.setPcode(target.getToPcode());
|
||||
original.setTrayCode(target.getToTrayCode());
|
||||
original.setHasMoved("1");
|
||||
@@ -151,17 +171,16 @@ public class MoveRecordServiceImpl implements IMoveRecordService
|
||||
original.setUpdateTime(now);
|
||||
rkInfoMapper.updateRkInfo(original);
|
||||
|
||||
// 记录移库日志
|
||||
// 记录移库日志(从 info → target)
|
||||
moveRecordMapper.insertMoveRecord(createMoveRecord(info, target, dto));
|
||||
return;
|
||||
}
|
||||
|
||||
// 情况二 & 三:需要新建多条库存记录
|
||||
// ===== 情况二 & 三:需要新建多条库存记录 =====
|
||||
List<RkInfo> insertList = new ArrayList<>();
|
||||
|
||||
// 情况三:部分移库(目标总量 < 原库存)
|
||||
// 情况三:部分移库(目标总量 < 原库存) → 原库存数量减少
|
||||
if (totalQty.compareTo(realQty) < 0) {
|
||||
// 原库存数量减少
|
||||
original.setRealQty(realQty.subtract(totalQty));
|
||||
original.setUpdateBy(username);
|
||||
original.setUpdateTime(now);
|
||||
@@ -174,6 +193,7 @@ public class MoveRecordServiceImpl implements IMoveRecordService
|
||||
// 新增多条目标库存
|
||||
for (MoveTargetItem target : dto.getTargets()) {
|
||||
RkInfo newInfo = new RkInfo();
|
||||
// 注意:这里以 original 为模板(注意上面是否已修改过数量)
|
||||
BeanUtils.copyProperties(original, newInfo, "id");
|
||||
|
||||
newInfo.setCangku(target.getToCangku());
|
||||
@@ -189,7 +209,7 @@ public class MoveRecordServiceImpl implements IMoveRecordService
|
||||
|
||||
insertList.add(newInfo);
|
||||
|
||||
// 移库记录
|
||||
// 移库记录:从原库存 original → 每个 target
|
||||
moveRecordMapper.insertMoveRecord(createMoveRecord(original, target, dto));
|
||||
}
|
||||
|
||||
@@ -198,6 +218,30 @@ public class MoveRecordServiceImpl implements IMoveRecordService
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验库位与仓库(小仓)关系:
|
||||
* - 库位必须存在
|
||||
* - 库位所属小仓 warehouse_code == 目标仓库编码 toCangku
|
||||
*/
|
||||
private void validatePcodeWarehouseRelation(String pcode, String warehouseCode) {
|
||||
if (org.apache.commons.lang3.StringUtils.isBlank(pcode)) {
|
||||
throw new ServiceException("目标库位不能为空");
|
||||
}
|
||||
if (org.apache.commons.lang3.StringUtils.isBlank(warehouseCode)) {
|
||||
throw new ServiceException("目标仓库不能为空");
|
||||
}
|
||||
|
||||
PcdeDetail detail = pcdeDetailMapper.selectByPcode(pcode);
|
||||
if (detail == null) {
|
||||
throw new ServiceException("目标库位不存在:" + pcode);
|
||||
}
|
||||
|
||||
//
|
||||
if (!warehouseCode.equals(detail.getWarehouseCode())) {
|
||||
throw new ServiceException("目标库位【" + pcode + "】不属于仓库【" + warehouseCode + "】,请检查移库目标设置");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 构建移库记录对象
|
||||
*
|
||||
|
||||
@@ -12,12 +12,12 @@ import com.zg.common.exception.ServiceException;
|
||||
import com.zg.common.utils.DateUtils;
|
||||
import com.zg.common.utils.SecurityUtils;
|
||||
import com.zg.common.utils.StringUtils;
|
||||
import com.zg.project.Inventory.AutoInventory.mapper.InventoryMatchScanMapper;
|
||||
import com.zg.project.Inventory.Task.mapper.InventoryTaskMapper;
|
||||
import com.zg.project.Inventory.domain.dto.QueryDTO;
|
||||
import com.zg.project.Inventory.domain.entity.InventoryMatchScan;
|
||||
import com.zg.project.Inventory.domain.vo.ChartDataVO;
|
||||
import com.zg.project.Inventory.domain.vo.PcdeCntVO;
|
||||
import com.zg.project.inventory.AutoInventory.mapper.InventoryMatchScanMapper;
|
||||
import com.zg.project.inventory.Task.mapper.InventoryTaskMapper;
|
||||
import com.zg.project.inventory.domain.dto.QueryDTO;
|
||||
import com.zg.project.inventory.domain.entity.InventoryMatchScan;
|
||||
import com.zg.project.inventory.domain.vo.ChartDataVO;
|
||||
import com.zg.project.inventory.domain.vo.PcdeCntVO;
|
||||
import com.zg.project.information.mapper.PcdeDetailMapper;
|
||||
import com.zg.project.system.service.ISysConfigService;
|
||||
import com.zg.project.wisdom.domain.AuditSignature;
|
||||
@@ -133,6 +133,48 @@ public class RkInfoServiceImpl implements IRkInfoService
|
||||
return list;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<RkInfo> selectBorrowAndReturnList(RkInfoQueryDTO query) {
|
||||
boolean needAudit = "1".equals(configService.selectConfigByKey("rk.audit.enabled"));
|
||||
|
||||
List<RkInfo> list = rkInfoMapper.selectBorrowAndReturnList(query);
|
||||
LocalDate today = LocalDate.now();
|
||||
|
||||
for (RkInfo info : list) {
|
||||
// 计算库龄:这里也可以按 rk_time 算,你之前逻辑一样就行
|
||||
if (info.getRkTime() != null) {
|
||||
LocalDate rkDate = info.getRkTime().toInstant()
|
||||
.atZone(ZoneId.systemDefault())
|
||||
.toLocalDate();
|
||||
long days = ChronoUnit.DAYS.between(rkDate, today);
|
||||
info.setStockAge(days);
|
||||
}
|
||||
|
||||
// 查询现场图片 + 审核结果(同原 list)
|
||||
AuditSignature signature = auditSignatureMapper.selectPhotoUrlByRkId(info.getId());
|
||||
if (signature != null) {
|
||||
info.setScenePhotoUrl(signature.getSignUrl());
|
||||
info.setAuditResult(signature.getAuditResult());
|
||||
info.setApproverId(signature.getApproverId());
|
||||
} else {
|
||||
info.setScenePhotoUrl(null);
|
||||
info.setAuditResult(null);
|
||||
info.setApproverId(null);
|
||||
}
|
||||
}
|
||||
|
||||
if (needAudit) {
|
||||
list = list.stream()
|
||||
.filter(info ->
|
||||
info.getApproverId() == null ||
|
||||
"1".equals(info.getAuditResult())
|
||||
)
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<RkInfo> selectGroupedByBill(RkInfoQueryDTO query) {
|
||||
// 读取审核开关(1=开启;其它=关闭)
|
||||
@@ -141,17 +183,53 @@ public class RkInfoServiceImpl implements IRkInfoService
|
||||
return rkInfoMapper.selectGroupedByBill(query, needAudit ? 1 : 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public RkInfo selectHeaderByBillNo(String billNo) {
|
||||
if (StringUtils.isBlank(billNo)) {
|
||||
return null;
|
||||
}
|
||||
return rkInfoMapper.selectHeaderByBillNo(billNo);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改库存单据主
|
||||
*
|
||||
* @param rkInfo 库存单据主
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int updateRkInfo(RkInfo rkInfo)
|
||||
{
|
||||
// 通用审计字段
|
||||
rkInfo.setUpdateTime(DateUtils.getNowDate());
|
||||
rkInfo.setUpdateBy(SecurityUtils.getUserId().toString());
|
||||
|
||||
// 小仓编码:优先用前端传来的 warehouseCode,没有的话用 cangku
|
||||
String warehouseCode = rkInfo.getWarehouseCode();
|
||||
if (StringUtils.isBlank(warehouseCode)) {
|
||||
warehouseCode = rkInfo.getCangku();
|
||||
}
|
||||
|
||||
// 库位编码
|
||||
String pcode = rkInfo.getPcode();
|
||||
|
||||
// 只有当小仓 + 库位都有的时候才做这层校验
|
||||
if (StringUtils.isNotBlank(warehouseCode) && StringUtils.isNotBlank(pcode)) {
|
||||
|
||||
// 临时组装一个 PcRkInfoBatchDTO,专门给 validateWarehouseAndPcode 用
|
||||
PcRkInfoBatchDTO tmpDto = new PcRkInfoBatchDTO();
|
||||
tmpDto.setWarehouseCode(warehouseCode);
|
||||
|
||||
List<PcRkInfoItemDTO> rkList = new ArrayList<>();
|
||||
PcRkInfoItemDTO item = new PcRkInfoItemDTO();
|
||||
item.setPcode(pcode);
|
||||
rkList.add(item);
|
||||
|
||||
tmpDto.setRkList(rkList);
|
||||
|
||||
validateWarehouseAndPcode(tmpDto);
|
||||
}
|
||||
|
||||
// ====== 校验通过再更新 ======
|
||||
return rkInfoMapper.updateRkInfo(rkInfo);
|
||||
}
|
||||
|
||||
@@ -276,6 +354,7 @@ public class RkInfoServiceImpl implements IRkInfoService
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void batchInsert(PcRkInfoBatchDTO dto) {
|
||||
|
||||
String billNo = BillNoUtil.generateTodayBillNo("RK");
|
||||
List<PcRkInfoItemDTO> list = dto.getRkList();
|
||||
List<RkInfo> rkInfos = new ArrayList<>();
|
||||
@@ -285,7 +364,10 @@ public class RkInfoServiceImpl implements IRkInfoService
|
||||
String userId = SecurityUtils.getUserId().toString();
|
||||
Date now = DateUtils.getNowDate();
|
||||
|
||||
// ✅ 第1步:构建 gysJhId -> realQty 映射
|
||||
// 🚩 0. 校验库位是否属于当前小仓
|
||||
validateWarehouseAndPcode(dto);
|
||||
|
||||
// ✅ 1. 供应计划扣减映射
|
||||
Map<Long, BigDecimal> realQtyMap = list.stream()
|
||||
.filter(item -> item.getGysJhId() != null && item.getRealQty() != null)
|
||||
.collect(Collectors.toMap(
|
||||
@@ -294,103 +376,113 @@ public class RkInfoServiceImpl implements IRkInfoService
|
||||
(a, b) -> b
|
||||
));
|
||||
|
||||
// ✅ 第2-4步:若包含供应计划ID,则处理计划扣减与状态更新
|
||||
// ✅ 2-4. 供应计划扣减&状态更新(保留你原来的逻辑)
|
||||
if (!realQtyMap.isEmpty()) {
|
||||
// ✅ 查询对应供应计划
|
||||
List<GysJh> jhList = gysJhMapper.selectByIds(new ArrayList<>(realQtyMap.keySet()));
|
||||
Set<Long> idsToUpdateStatus = new HashSet<>();
|
||||
|
||||
// ✅ 更新 jh_qty 和 status(根据是否开启审核判断逻辑)
|
||||
for (GysJh jh : jhList) {
|
||||
Long jhId = jh.getId();
|
||||
BigDecimal planQty = BigDecimal.valueOf(jh.getJhQty());
|
||||
BigDecimal realQty = realQtyMap.get(jhId);
|
||||
if (realQty == null) continue;
|
||||
if (realQty == null) {
|
||||
continue;
|
||||
}
|
||||
|
||||
boolean isEqual = realQty.compareTo(planQty) == 0;
|
||||
|
||||
if (!isEqual) {
|
||||
// 实到数量小于计划数量,执行扣减 + 设为部分入库(2)
|
||||
// 部分入库:扣减计划数量
|
||||
gysJhMapper.decreaseJhQtyById(jhId, realQty);
|
||||
if (!needAudit) {
|
||||
gysJhMapper.updateStatusById(jhId, "2"); // 2 = 部分入库
|
||||
}
|
||||
} else {
|
||||
// 实到数量等于计划数量,状态设为全部入库(1),不做扣减
|
||||
// 全部入库:状态=1
|
||||
if (!needAudit) {
|
||||
gysJhMapper.updateStatusById(jhId, "1"); // 1 = 全部入库
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ✅ 批量更新 status = 2
|
||||
if (!idsToUpdateStatus.isEmpty()) {
|
||||
gysJhMapper.batchUpdateStatusByIds(idsToUpdateStatus);
|
||||
}
|
||||
}
|
||||
|
||||
// ✅ 第5步:构建 RkInfo 入库记录
|
||||
// ✅ 5. 构建 RkInfo 入库记录(注意:小仓 = dto.getWarehouseCode())
|
||||
for (PcRkInfoItemDTO item : list) {
|
||||
RkInfo rk = new RkInfo();
|
||||
// 物料、项目、供应商、xj(县局)、数量等等从 item 拷贝
|
||||
BeanUtils.copyProperties(item, rk);
|
||||
String encodedId = pcdeDetailMapper.selectEncodedIdByPcode(item.getPcode());
|
||||
rk.setPcodeId(encodedId);
|
||||
|
||||
rk.setBillNo(billNo);
|
||||
rk.setRkType(dto.getRkType());
|
||||
rk.setWlType(dto.getWlType());
|
||||
rk.setLihuoY(dto.getLihuoY());
|
||||
// rk.setRkTime(now);
|
||||
rk.setRkTime(dto.getRkTime()); //zhangjinbo 2025-11-03根据玉田需求进行修改
|
||||
rk.setCangku(dto.getCangku());
|
||||
|
||||
// 🚩 所属小仓:页面选的小仓编码
|
||||
rk.setCangku(dto.getWarehouseCode());
|
||||
|
||||
// 🚩 入库时间:页面传,若为空则使用当前时间
|
||||
rk.setRkTime(dto.getRkTime() != null ? dto.getRkTime() : DateUtils.getNowDate());
|
||||
|
||||
// 库位 encodedId
|
||||
String encodedId = pcdeDetailMapper.selectEncodedIdByPcode(item.getPcode());
|
||||
rk.setPcodeId(encodedId);
|
||||
|
||||
rk.setCreateBy(userId);
|
||||
rk.setCreateTime(now);
|
||||
rk.setIsDelete("0");
|
||||
|
||||
rk.setGysJhId(item.getGysJhId());
|
||||
rk.setFycde1(item.getFycde1());
|
||||
rk.setFycde2(item.getFycde2());
|
||||
|
||||
if (needAudit) {
|
||||
rk.setStatus("0"); // 待审核
|
||||
rk.setIsChuku("2"); // 待入库
|
||||
rk.setStatus("0"); // 待审核
|
||||
rk.setIsChuku("2"); // 待入库(审核中)
|
||||
} else {
|
||||
rk.setStatus("1"); // 审核通过
|
||||
rk.setIsChuku("0"); // 已入库
|
||||
rk.setStatus("1"); // 审核通过
|
||||
rk.setIsChuku("0"); // 已入库
|
||||
}
|
||||
|
||||
rkInfos.add(rk);
|
||||
}
|
||||
|
||||
// ✅ 第6步:保存入库记录
|
||||
// ✅ 6. 批量插入 rk_info
|
||||
rkInfoMapper.batchInsertRkInfo(rkInfos);
|
||||
|
||||
// ✅ 第7步:照片记录(审核开启时)
|
||||
for (int i = 0; i < rkInfos.size(); i++) {
|
||||
RkInfo rk = rkInfos.get(i);
|
||||
PcRkInfoItemDTO item = list.get(i);
|
||||
// ✅ 7. 一货一图(现场照片)记录(审核开启时)
|
||||
if (needAudit) {
|
||||
for (int i = 0; i < rkInfos.size(); i++) {
|
||||
RkInfo rk = rkInfos.get(i);
|
||||
PcRkInfoItemDTO item = list.get(i);
|
||||
|
||||
if (needAudit && StringUtils.isNotBlank(item.getPhotoUrl())) {
|
||||
AuditSignature photo = new AuditSignature();
|
||||
photo.setRkId(rk.getId());
|
||||
photo.setBillNo(billNo);
|
||||
photo.setBillType("0");
|
||||
photo.setAuditResult("2");
|
||||
photo.setSignerId(userId);
|
||||
photo.setSignerRole("2");
|
||||
photo.setImageType("1");
|
||||
photo.setSignUrl(item.getPhotoUrl());
|
||||
photo.setSignTime(now);
|
||||
photo.setPcode(item.getPcode());
|
||||
photo.setTrayCode(item.getTrayCode());
|
||||
photo.setApproverId(dto.getApproverId());
|
||||
photo.setIsCurrent("1");
|
||||
photo.setIsDelete("0");
|
||||
photo.setCreateBy(userId);
|
||||
photo.setCreateTime(now);
|
||||
records.add(photo);
|
||||
if (StringUtils.isNotBlank(item.getPhotoUrl())) {
|
||||
AuditSignature photo = new AuditSignature();
|
||||
photo.setRkId(rk.getId());
|
||||
photo.setBillNo(billNo);
|
||||
photo.setBillType("0"); // 入库
|
||||
photo.setAuditResult("2"); // 待审核
|
||||
photo.setSignerId(userId);
|
||||
photo.setSignerRole("2"); // 现场照片
|
||||
photo.setImageType("1"); // photo
|
||||
photo.setSignUrl(item.getPhotoUrl());
|
||||
photo.setSignTime(now);
|
||||
photo.setPcode(item.getPcode());
|
||||
photo.setTrayCode(item.getTrayCode());
|
||||
photo.setApproverId(dto.getApproverId());
|
||||
photo.setIsCurrent("1");
|
||||
photo.setIsDelete("0");
|
||||
photo.setCreateBy(userId);
|
||||
photo.setCreateTime(now);
|
||||
records.add(photo);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ✅ 第8步:发起人签字记录(审核开启时)
|
||||
// ✅ 8. 发起人签字记录(审核开启时)
|
||||
if (needAudit) {
|
||||
boolean hasOldSign = auditSignatureMapper.existsCurrentSigner(billNo, "0");
|
||||
if (hasOldSign) {
|
||||
@@ -399,33 +491,132 @@ public class RkInfoServiceImpl implements IRkInfoService
|
||||
|
||||
AuditSignature mainSign = new AuditSignature();
|
||||
mainSign.setBillNo(billNo);
|
||||
mainSign.setBillType("0");
|
||||
mainSign.setBillType("0"); // 入库
|
||||
mainSign.setSignerId(userId);
|
||||
mainSign.setSignerRole("0");
|
||||
mainSign.setSignerRole("0"); // 发起人
|
||||
mainSign.setApproverId(dto.getApproverId());
|
||||
mainSign.setSignUrl(dto.getSignatureUrl());
|
||||
mainSign.setImageType("0");
|
||||
mainSign.setImageType("0"); // sign
|
||||
mainSign.setSignTime(now);
|
||||
mainSign.setIsCurrent("1");
|
||||
mainSign.setAuditResult("2");
|
||||
mainSign.setAuditResult("2"); // 待审核
|
||||
mainSign.setIsDelete("0");
|
||||
mainSign.setCreateBy(userId);
|
||||
mainSign.setCreateTime(now);
|
||||
records.add(mainSign);
|
||||
}
|
||||
|
||||
if (needAudit && !records.isEmpty()) {
|
||||
auditSignatureMapper.batchInsert(records);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验:前端传入的小仓编码与库位所属小仓是否一致
|
||||
*
|
||||
* 规则:
|
||||
* 1. dto.warehouseCode 不能为空
|
||||
* 2. 每一条 rkList 里的 pcode 不能为空
|
||||
* 3. 根据 pcode 查询 pcde_detail 表中的 warehouse_code
|
||||
* - 如果查不到:提示“库位编码 xxx 不存在”
|
||||
* - 如果与 dto.warehouseCode 不一致:提示“库位编码 xxx 不属于小仓 yyy”
|
||||
*/
|
||||
private void validateWarehouseAndPcode(PcRkInfoBatchDTO dto) {
|
||||
String warehouseCode = dto.getWarehouseCode();
|
||||
if (StringUtils.isBlank(warehouseCode)) {
|
||||
throw new ServiceException("所属小仓编码不能为空");
|
||||
}
|
||||
|
||||
List<PcRkInfoItemDTO> rkList = dto.getRkList();
|
||||
if (rkList == null || rkList.isEmpty()) {
|
||||
throw new ServiceException("入库明细不能为空");
|
||||
}
|
||||
|
||||
for (PcRkInfoItemDTO item : rkList) {
|
||||
String pcode = item.getPcode();
|
||||
if (StringUtils.isBlank(pcode)) {
|
||||
throw new ServiceException("库位编码不能为空");
|
||||
}
|
||||
|
||||
// 根据库位码查询所属小仓
|
||||
String dbWarehouseCode = pcdeDetailMapper.selectWarehouseCodeByPcode(pcode);
|
||||
|
||||
if (StringUtils.isBlank(dbWarehouseCode)) {
|
||||
throw new ServiceException("库位编码【" + pcode + "】不存在或未配置所属小仓");
|
||||
}
|
||||
|
||||
if (!warehouseCode.equals(dbWarehouseCode)) {
|
||||
throw new ServiceException("库位编码【" + pcode + "】不属于小仓【" + warehouseCode + "】,请检查入库数据");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* APP 入库校验:
|
||||
* 校验:前端传入的小仓编码与库位所属小仓是否一致
|
||||
*
|
||||
* 规则:
|
||||
* 1. dto.warehouseCode 不能为空
|
||||
* 2. 每一条 rkList 不为空,且每个 scan 中的 pcode 不能为空
|
||||
* 3. 根据 pcode 查询 pcde_detail 表中的 warehouse_code
|
||||
* - 如果查不到:提示“库位编码 xxx 不存在”
|
||||
* - 如果与 dto.warehouseCode 不一致:提示“库位编码 xxx 不属于小仓 yyy”
|
||||
*/
|
||||
private void validateWarehouseAndPcode(RkInfoBatchDTO dto) {
|
||||
// 1) 小仓编码必填
|
||||
String warehouseCode = dto.getWarehouseCode();
|
||||
if (StringUtils.isBlank(warehouseCode)) {
|
||||
throw new ServiceException("所属小仓编码不能为空");
|
||||
}
|
||||
|
||||
// 2) rkList 必须有数据
|
||||
List<RkInfoItemDTO> rkList = dto.getRkList();
|
||||
if (rkList == null || rkList.isEmpty()) {
|
||||
throw new ServiceException("rkList 入库明细列表不能为空");
|
||||
}
|
||||
|
||||
// 3) 遍历所有 item.scanList,逐个校验 pcode
|
||||
for (RkInfoItemDTO item : rkList) {
|
||||
|
||||
if (item.getScanList() == null || item.getScanList().isEmpty()) {
|
||||
throw new ServiceException("物料【" + item.getWlNo() + "】未传入任何扫码明细(scanList 为空)");
|
||||
}
|
||||
|
||||
for (RkInfoScanDTO scan : item.getScanList()) {
|
||||
String pcode = scan.getPcode();
|
||||
if (StringUtils.isBlank(pcode)) {
|
||||
throw new ServiceException("库位编码不能为空");
|
||||
}
|
||||
|
||||
// 根据库位码查询所属小仓
|
||||
String dbWarehouseCode = pcdeDetailMapper.selectWarehouseCodeByPcode(pcode);
|
||||
|
||||
if (StringUtils.isBlank(dbWarehouseCode)) {
|
||||
throw new ServiceException("库位编码【" + pcode + "】不存在或未配置所属小仓");
|
||||
}
|
||||
|
||||
if (!warehouseCode.equals(dbWarehouseCode)) {
|
||||
throw new ServiceException("库位编码【" + pcode + "】不属于小仓【" + warehouseCode + "】,请检查入库数据");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ================== APP 入库 ==================
|
||||
|
||||
/**
|
||||
* 新增入库单据(APP)
|
||||
* @param dto
|
||||
* @return
|
||||
* @param dto 入库批次 DTO
|
||||
* @return 实际入库明细条数
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public int batchInsertApp(RkInfoBatchDTO dto) {
|
||||
|
||||
// ✅ 0. 小仓 + 库位一致性校验(统一用 warehouseCode)
|
||||
validateWarehouseAndPcode(dto);
|
||||
|
||||
List<RkInfo> saveList = new ArrayList<>();
|
||||
String userId = SecurityUtils.getUserId().toString();
|
||||
Date now = DateUtils.getNowDate();
|
||||
@@ -440,27 +631,30 @@ public class RkInfoServiceImpl implements IRkInfoService
|
||||
// ✅ 第1步:构造 gysJhId → realQty 的映射(从 scanList 中提取)
|
||||
Map<Long, BigDecimal> realQtyMap = new HashMap<>();
|
||||
for (RkInfoItemDTO item : dto.getRkList()) {
|
||||
if (item.getScanList() == null) continue;
|
||||
if (item.getScanList() == null) {
|
||||
continue;
|
||||
}
|
||||
for (RkInfoScanDTO scan : item.getScanList()) {
|
||||
Long jhId = scan.getGysJhId();
|
||||
BigDecimal realQty = scan.getRealQty();
|
||||
if (jhId != null && realQty != null) {
|
||||
realQtyMap.put(jhId, realQty); // ✅ 一物一图场景,每个 jhId 只有一条 scan 数据
|
||||
// 一物一图场景,每个 jhId 只有一条 scan 数据
|
||||
realQtyMap.put(jhId, realQty);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ✅ 第2步:更新 gys_jh 的 jh_qty 与 status
|
||||
Set<Long> idsToUpdateStatus = new HashSet<>();
|
||||
List<Long> allJhIds = new ArrayList<>(realQtyMap.keySet());
|
||||
|
||||
if (!allJhIds.isEmpty()) {
|
||||
if (!realQtyMap.isEmpty()) {
|
||||
List<Long> allJhIds = new ArrayList<>(realQtyMap.keySet());
|
||||
List<GysJh> jhList = gysJhMapper.selectByIds(allJhIds);
|
||||
for (GysJh jh : jhList) {
|
||||
Long jhId = jh.getId();
|
||||
BigDecimal planQty = BigDecimal.valueOf(jh.getJhQty());
|
||||
BigDecimal realQty = realQtyMap.get(jhId);
|
||||
if (realQty == null) continue;
|
||||
if (realQty == null) {
|
||||
continue;
|
||||
}
|
||||
|
||||
boolean isEqual = realQty.compareTo(planQty) == 0;
|
||||
|
||||
@@ -479,21 +673,30 @@ public class RkInfoServiceImpl implements IRkInfoService
|
||||
}
|
||||
}
|
||||
|
||||
if (!idsToUpdateStatus.isEmpty()) {
|
||||
gysJhMapper.batchUpdateStatusByIds(idsToUpdateStatus);
|
||||
// ✅ 统一确定小仓编码:只允许从 warehouseCode 获取,不再兼容 cangku
|
||||
String warehouseCode = dto.getWarehouseCode();
|
||||
if (StringUtils.isEmpty(warehouseCode)) {
|
||||
throw new ServiceException("所属小仓编码不能为空");
|
||||
}
|
||||
|
||||
// ✅ 第3步:构建 RkInfo 入库实体
|
||||
for (RkInfoItemDTO item : dto.getRkList()) {
|
||||
if (item.getScanList() == null) continue;
|
||||
if (item.getScanList() == null) {
|
||||
continue;
|
||||
}
|
||||
|
||||
for (RkInfoScanDTO scan : item.getScanList()) {
|
||||
RkInfo entity = new RkInfo();
|
||||
|
||||
entity.setRkType(dto.getRkType());
|
||||
entity.setWlType(dto.getWlType());
|
||||
entity.setCangku(dto.getCangku());
|
||||
|
||||
// 🚩 仓库:rk_info.cangku 只存小仓编码(warehouse_code)
|
||||
entity.setCangku(warehouseCode);
|
||||
|
||||
entity.setLihuoY(dto.getLihuoY());
|
||||
entity.setBillNo(billNo);
|
||||
|
||||
entity.setXj(item.getXj());
|
||||
entity.setXmMs(item.getXmMs());
|
||||
entity.setXmNo(item.getXmNo());
|
||||
@@ -507,6 +710,7 @@ public class RkInfoServiceImpl implements IRkInfoService
|
||||
entity.setWlMs(item.getWlMs());
|
||||
entity.setGysNo(item.getGysNo());
|
||||
entity.setGysMc(item.getGysMc());
|
||||
|
||||
entity.setPcode(scan.getPcode());
|
||||
entity.setPcodeId(CodeConvertUtil.stringToHex(scan.getPcode()));
|
||||
entity.setTrayCode(scan.getTrayCode());
|
||||
@@ -514,6 +718,7 @@ public class RkInfoServiceImpl implements IRkInfoService
|
||||
entity.setEntityId(scan.getEntityId());
|
||||
entity.setRemark(scan.getRemark());
|
||||
entity.setGysJhId(scan.getGysJhId());
|
||||
|
||||
entity.setIsDelete("0");
|
||||
entity.setRkTime(now);
|
||||
entity.setCreateBy(userId);
|
||||
@@ -563,10 +768,12 @@ public class RkInfoServiceImpl implements IRkInfoService
|
||||
mainSign.setCreateTime(now);
|
||||
recordList.add(mainSign);
|
||||
|
||||
// 现场照片记录
|
||||
// 现场照片记录(一物一图,按 rkId 绑定)
|
||||
int index = 0;
|
||||
for (RkInfoItemDTO item : dto.getRkList()) {
|
||||
if (item.getScanList() == null) continue;
|
||||
if (item.getScanList() == null) {
|
||||
continue;
|
||||
}
|
||||
for (RkInfoScanDTO scan : item.getScanList()) {
|
||||
RkInfo rk = saveList.get(index++);
|
||||
if (StringUtils.isNotBlank(scan.getPhotoUrl())) {
|
||||
@@ -600,6 +807,7 @@ public class RkInfoServiceImpl implements IRkInfoService
|
||||
return saveList.size();
|
||||
}
|
||||
|
||||
|
||||
@Transactional
|
||||
public void deleteByBillNo(String billNo) {
|
||||
// 1. 查询 sap_no
|
||||
@@ -1044,7 +1252,7 @@ public class RkInfoServiceImpl implements IRkInfoService
|
||||
e.setBillNo(dto.getBillNo());
|
||||
e.setRkType(dto.getRkType());
|
||||
e.setWlType(dto.getWlType());
|
||||
e.setCangku(dto.getCangku());
|
||||
e.setWarehouseCode(dto.getWarehouseCode());
|
||||
e.setLihuoY(dto.getLihuoY());
|
||||
e.setRkTime(rkTime);
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
|
||||
<mapper namespace="com.zg.project.Inventory.AutoInventory.mapper.InventoryMatchScanMapper">
|
||||
<mapper namespace="com.zg.project.inventory.AutoInventory.mapper.InventoryMatchScanMapper">
|
||||
|
||||
<insert id="insertBatch">
|
||||
INSERT INTO inventory_match_scan (task_id, device_id, pcode, tme, scan_type, status)
|
||||
@@ -12,17 +12,17 @@
|
||||
</foreach>
|
||||
</insert>
|
||||
|
||||
<select id="getAll" resultType="com.zg.project.Inventory.domain.entity.InventoryMatchScan">
|
||||
<select id="getAll" resultType="com.zg.project.inventory.domain.entity.InventoryMatchScan">
|
||||
SELECT * FROM inventory_match_scan
|
||||
</select>
|
||||
|
||||
<select id="getAllSod" resultType="com.zg.project.Inventory.domain.entity.Sod">
|
||||
<select id="getAllSod" resultType="com.zg.project.inventory.domain.entity.Sod">
|
||||
SELECT * FROM inventory_match_scan i
|
||||
LEFT JOIN sod s ON i.pcde = s.fycde_1
|
||||
WHERE s.rmn > 0
|
||||
</select>
|
||||
|
||||
<select id="getPcdeCountByTask" resultType="com.zg.project.Inventory.domain.vo.PcdeCountVO">
|
||||
<select id="getPcdeCountByTask" resultType="com.zg.project.inventory.domain.vo.PcdeCountVO">
|
||||
SELECT
|
||||
s.pcde,
|
||||
COUNT(*) AS count
|
||||
@@ -43,7 +43,7 @@
|
||||
GROUP BY s.pcde
|
||||
</select>
|
||||
|
||||
<select id="getGroupedHistoryList" resultType="com.zg.project.Inventory.domain.vo.InventoryMatchScanSimpleVO">
|
||||
<select id="getGroupedHistoryList" resultType="com.zg.project.inventory.domain.vo.InventoryMatchScanSimpleVO">
|
||||
SELECT
|
||||
task_name AS taskName,
|
||||
MAX(tme) AS tme,
|
||||
@@ -101,7 +101,7 @@
|
||||
</where>
|
||||
</select>
|
||||
|
||||
<select id="getByTaskName" resultType="com.zg.project.Inventory.domain.vo.InventoryMatchScanVO">
|
||||
<select id="getByTaskName" resultType="com.zg.project.inventory.domain.vo.InventoryMatchScanVO">
|
||||
SELECT
|
||||
i.id,
|
||||
i.device_id AS deviceId,
|
||||
@@ -133,8 +133,8 @@
|
||||
</select>
|
||||
|
||||
<select id="selectInventoryMatchScanList"
|
||||
resultType="com.zg.project.Inventory.domain.entity.InventoryMatchScan"
|
||||
parameterType="com.zg.project.Inventory.domain.entity.InventoryMatchScan">
|
||||
resultType="com.zg.project.inventory.domain.entity.InventoryMatchScan"
|
||||
parameterType="com.zg.project.inventory.domain.entity.InventoryMatchScan">
|
||||
SELECT
|
||||
i.id AS id,
|
||||
i.task_id AS taskId,
|
||||
@@ -173,7 +173,7 @@
|
||||
|
||||
<select id="selectOnlyFromMatchScan"
|
||||
parameterType="InventoryMatchScan"
|
||||
resultType="com.zg.project.Inventory.domain.vo.RkInfoMatchVO">
|
||||
resultType="com.zg.project.inventory.domain.vo.RkInfoMatchVO">
|
||||
SELECT
|
||||
i.pcode AS rkPcode,
|
||||
NULL AS realQty
|
||||
@@ -194,7 +194,7 @@
|
||||
|
||||
<select id="selectJoinRkInfo"
|
||||
parameterType="InventoryMatchScan"
|
||||
resultType="com.zg.project.Inventory.domain.vo.RkInfoMatchVO">
|
||||
resultType="com.zg.project.inventory.domain.vo.RkInfoMatchVO">
|
||||
SELECT
|
||||
r.pcode AS rkPcode,
|
||||
COALESCE(SUM(r.real_qty), 0) AS realQty
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.zg.project.Inventory.AutoInventory.mapper.PrintRfidMapper">
|
||||
<mapper namespace="com.zg.project.inventory.AutoInventory.mapper.PrintRfidMapper">
|
||||
|
||||
<resultMap type="PrintRfid" id="PrintRfidResult">
|
||||
<resultMap type="com.zg.project.inventory.AutoInventory.domain.entity.PrintRfid" id="PrintRfidResult">
|
||||
<result property="id" column="id" />
|
||||
<result property="pcde" column="pcde" />
|
||||
<result property="rfid" column="rfid" />
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.zg.project.Inventory.AutoInventory.mapper.SodMapper">
|
||||
<mapper namespace="com.zg.project.inventory.AutoInventory.mapper.SodMapper">
|
||||
|
||||
<resultMap id="SodResultMap" type="com.zg.project.Inventory.domain.entity.Sod">
|
||||
<resultMap id="SodResultMap" type="com.zg.project.inventory.domain.entity.Sod">
|
||||
<id column="Id" property="Id" />
|
||||
<result column="mid" property="mid"/>
|
||||
<result column="des_mat" property="desMat"/>
|
||||
@@ -43,7 +43,7 @@
|
||||
<result column="uptim" property="uptim"/>
|
||||
</resultMap>
|
||||
|
||||
<select id="selectByPcdeList" resultType="com.zg.project.Inventory.domain.vo.SodVO">
|
||||
<select id="selectByPcdeList" resultType="com.zg.project.inventory.domain.vo.SodVO">
|
||||
SELECT
|
||||
pcde,
|
||||
des_mat AS desMat,
|
||||
|
||||
@@ -2,12 +2,13 @@
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.zg.project.Inventory.Task.mapper.InventoryTaskMapper">
|
||||
<mapper namespace="com.zg.project.inventory.Task.mapper.InventoryTaskMapper">
|
||||
|
||||
<!-- ========== 映射对象 ========== -->
|
||||
<resultMap type="InventoryTask" id="InventoryTaskResult">
|
||||
<result property="id" column="id"/>
|
||||
<result property="taskName" column="task_name"/>
|
||||
<result property="warehouseId" column="warehouse_id"/>
|
||||
<result property="warehouseCode" column="warehouse_code"/>
|
||||
<result property="warehouseName" column="warehouse_name"/>
|
||||
<result property="sceneId" column="scene_id"/>
|
||||
<result property="sceneName" column="scene_name"/>
|
||||
@@ -24,11 +25,12 @@
|
||||
<result property="isDelete" column="is_delete"/>
|
||||
</resultMap>
|
||||
|
||||
<!-- ========== 公共 SELECT 语句 ========== -->
|
||||
<sql id="selectInventoryTaskVo">
|
||||
SELECT
|
||||
t.id,
|
||||
t.task_name,
|
||||
t.warehouse_id,
|
||||
t.warehouse_code,
|
||||
w.warehouse_name AS warehouse_name,
|
||||
t.scene_id,
|
||||
s.scene_name AS scene_name,
|
||||
@@ -44,49 +46,79 @@
|
||||
t.updated_at,
|
||||
t.is_delete
|
||||
FROM inventory_task t
|
||||
LEFT JOIN warehouse_info w ON t.warehouse_id = w.warehouse_code
|
||||
LEFT JOIN warehouse_info w ON t.warehouse_code = w.warehouse_code
|
||||
LEFT JOIN scene_mapping s ON t.scene_id = s.scene_code
|
||||
LEFT JOIN sys_user u ON t.user_id = u.user_id
|
||||
</sql>
|
||||
|
||||
<!-- ========== 列表查询 ========== -->
|
||||
<select id="selectInventoryTaskList" parameterType="InventoryTask" resultMap="InventoryTaskResult">
|
||||
<include refid="selectInventoryTaskVo"/>
|
||||
<where>
|
||||
<if test="taskName != null and taskName != ''"> AND t.task_name LIKE concat('%', #{taskName}, '%')</if>
|
||||
<if test="warehouseId != null"> AND t.warehouse_id = #{warehouseId}</if>
|
||||
<if test="sceneId != null"> AND t.scene_id = #{sceneId}</if>
|
||||
<if test="userId != null"> AND t.user_id = #{userId}</if>
|
||||
<if test="requireTime != null and requireTime != ''"> AND t.require_time = #{requireTime}</if>
|
||||
<if test="status != null and status != ''"> AND t.status = #{status}</if>
|
||||
<if test="taskType != null and taskType != ''"> AND t.task_type = #{taskType}</if>
|
||||
<if test="createdBy != null and createdBy != ''"> AND t.created_by = #{createdBy}</if>
|
||||
<if test="createdAt != null and createdAt != ''"> AND t.created_at = #{createdAt}</if>
|
||||
<if test="updatedBy != null and updatedBy != ''"> AND t.updated_by = #{updatedBy}</if>
|
||||
<if test="updatedAt != null and updatedAt != ''"> AND t.updated_at = #{updatedAt}</if>
|
||||
<if test="isDelete != null and isDelete != ''"> AND t.is_delete = #{isDelete}</if>
|
||||
<if test="taskName != null and taskName != ''">
|
||||
AND t.task_name LIKE concat('%', #{taskName}, '%')
|
||||
</if>
|
||||
<if test="warehouseCode != null and warehouseCode != ''">
|
||||
AND t.warehouse_code = #{warehouseCode}
|
||||
</if>
|
||||
<if test="sceneId != null and sceneId != ''">
|
||||
AND t.scene_id = #{sceneId}
|
||||
</if>
|
||||
<if test="userId != null">
|
||||
AND t.user_id = #{userId}
|
||||
</if>
|
||||
<if test="requireTime != null and requireTime != ''">
|
||||
AND t.require_time = #{requireTime}
|
||||
</if>
|
||||
<if test="status != null and status != ''">
|
||||
AND t.status = #{status}
|
||||
</if>
|
||||
<if test="taskType != null and taskType != ''">
|
||||
AND t.task_type = #{taskType}
|
||||
</if>
|
||||
<if test="createdBy != null and createdBy != ''">
|
||||
AND t.created_by = #{createdBy}
|
||||
</if>
|
||||
<if test="createdAt != null and createdAt != ''">
|
||||
AND t.created_at = #{createdAt}
|
||||
</if>
|
||||
<if test="updatedBy != null and updatedBy != ''">
|
||||
AND t.updated_by = #{updatedBy}
|
||||
</if>
|
||||
<if test="updatedAt != null and updatedAt != ''">
|
||||
AND t.updated_at = #{updatedAt}
|
||||
</if>
|
||||
<if test="isDelete != null and isDelete != ''">
|
||||
AND t.is_delete = #{isDelete}
|
||||
</if>
|
||||
</where>
|
||||
order by t.created_at desc
|
||||
ORDER BY t.created_at DESC
|
||||
</select>
|
||||
|
||||
<!-- ========== 根据 ID 查询 ========== -->
|
||||
<select id="selectInventoryTaskById" parameterType="Long" resultMap="InventoryTaskResult">
|
||||
<include refid="selectInventoryTaskVo"/>
|
||||
WHERE t.id = #{id}
|
||||
</select>
|
||||
|
||||
<!-- ========== 查询用户未完成任务数量 ========== -->
|
||||
<select id="countPendingTaskByUserId" resultType="java.lang.Integer" parameterType="java.lang.Long">
|
||||
select count(*) from inventory_task
|
||||
where user_id = #{userId}
|
||||
and status = '0'
|
||||
and is_delete = '0'
|
||||
SELECT COUNT(*)
|
||||
FROM inventory_task
|
||||
WHERE user_id = #{userId}
|
||||
AND status = '0'
|
||||
AND is_delete = '0'
|
||||
</select>
|
||||
|
||||
<!-- ========== 根据任务 ID 获取仓库(小仓编码) ========== -->
|
||||
<select id="getWhByTaskId" resultType="java.lang.String" parameterType="java.lang.String">
|
||||
select warehouse_id from inventory_task
|
||||
where id = #{taskId}
|
||||
SELECT warehouse_code
|
||||
FROM inventory_task
|
||||
WHERE id = #{taskId}
|
||||
</select>
|
||||
|
||||
<select id="getSceneByTaskId"
|
||||
resultType="java.lang.String" parameterType="java.lang.String">
|
||||
<!-- ========== 根据任务 ID 获取场景编码 ========== -->
|
||||
<select id="getSceneByTaskId" resultType="java.lang.String" parameterType="java.lang.String">
|
||||
SELECT scene_id
|
||||
FROM inventory_task
|
||||
WHERE id = #{taskId}
|
||||
@@ -100,60 +132,63 @@
|
||||
LIMIT 1
|
||||
</select>
|
||||
|
||||
<!-- ========== 新增 ========== -->
|
||||
<insert id="insertInventoryTask" parameterType="InventoryTask" useGeneratedKeys="true" keyProperty="id">
|
||||
insert into inventory_task
|
||||
INSERT INTO inventory_task
|
||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||
<if test="taskName != null and taskName != ''">task_name,</if>
|
||||
<if test="warehouseId != null">warehouse_id,</if>
|
||||
<if test="sceneId != null">scene_id,</if>
|
||||
<if test="warehouseCode != null and warehouseCode != ''">warehouse_code,</if>
|
||||
<if test="sceneId != null and sceneId != ''">scene_id,</if>
|
||||
<if test="userId != null">user_id,</if>
|
||||
<if test="requireTime != null and requireTime != ''">require_time,</if>
|
||||
<if test="status != null">status,</if>
|
||||
<if test="status != null and status != ''">status,</if>
|
||||
<if test="taskType != null and taskType != ''">task_type,</if>
|
||||
<if test="remark != null">remark,</if>
|
||||
<if test="createdBy != null">created_by,</if>
|
||||
<if test="createdAt != null">created_at,</if>
|
||||
<if test="updatedBy != null">updated_by,</if>
|
||||
<if test="updatedAt != null">updated_at,</if>
|
||||
<if test="isDelete != null">is_delete,</if>
|
||||
<if test="createdBy != null and createdBy != ''">created_by,</if>
|
||||
<if test="createdAt != null and createdAt != ''">created_at,</if>
|
||||
<if test="updatedBy != null and updatedBy != ''">updated_by,</if>
|
||||
<if test="updatedAt != null and updatedAt != ''">updated_at,</if>
|
||||
<if test="isDelete != null and isDelete != ''">is_delete,</if>
|
||||
</trim>
|
||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||
<trim prefix="VALUES (" suffix=")" suffixOverrides=",">
|
||||
<if test="taskName != null and taskName != ''">#{taskName},</if>
|
||||
<if test="warehouseId != null">#{warehouseId},</if>
|
||||
<if test="sceneId != null">#{sceneId},</if>
|
||||
<if test="warehouseCode != null and warehouseCode != ''">#{warehouseCode},</if>
|
||||
<if test="sceneId != null and sceneId != ''">#{sceneId},</if>
|
||||
<if test="userId != null">#{userId},</if>
|
||||
<if test="requireTime != null and requireTime != ''">#{requireTime},</if>
|
||||
<if test="status != null">#{status},</if>
|
||||
<if test="status != null and status != ''">#{status},</if>
|
||||
<if test="taskType != null and taskType != ''">#{taskType},</if>
|
||||
<if test="remark != null">#{remark},</if>
|
||||
<if test="createdBy != null">#{createdBy},</if>
|
||||
<if test="createdAt != null">#{createdAt},</if>
|
||||
<if test="updatedBy != null">#{updatedBy},</if>
|
||||
<if test="updatedAt != null">#{updatedAt},</if>
|
||||
<if test="isDelete != null">#{isDelete},</if>
|
||||
<if test="createdBy != null and createdBy != ''">#{createdBy},</if>
|
||||
<if test="createdAt != null and createdAt != ''">#{createdAt},</if>
|
||||
<if test="updatedBy != null and updatedBy != ''">#{updatedBy},</if>
|
||||
<if test="updatedAt != null and updatedAt != ''">#{updatedAt},</if>
|
||||
<if test="isDelete != null and isDelete != ''">#{isDelete},</if>
|
||||
</trim>
|
||||
</insert>
|
||||
|
||||
<!-- ========== 修改 ========== -->
|
||||
<update id="updateInventoryTask" parameterType="InventoryTask">
|
||||
update inventory_task
|
||||
UPDATE inventory_task
|
||||
<trim prefix="SET" suffixOverrides=",">
|
||||
<if test="taskName != null and taskName != ''">task_name = #{taskName},</if>
|
||||
<if test="warehouseId != null">warehouse_id = #{warehouseId},</if>
|
||||
<if test="sceneId != null">scene_id = #{sceneId},</if>
|
||||
<if test="warehouseCode != null and warehouseCode != ''">warehouse_code = #{warehouseCode},</if>
|
||||
<if test="sceneId != null and sceneId != ''">scene_id = #{sceneId},</if>
|
||||
<if test="userId != null">user_id = #{userId},</if>
|
||||
<if test="requireTime != null and requireTime != ''">require_time = #{requireTime},</if>
|
||||
<if test="status != null">status = #{status},</if>
|
||||
<if test="status != null and status != ''">status = #{status},</if>
|
||||
<if test="taskType != null and taskType != ''">task_type = #{taskType},</if>
|
||||
<if test="remark != null">remark = #{remark},</if>
|
||||
<if test="createdBy != null">created_by = #{createdBy},</if>
|
||||
<if test="createdAt != null">created_at = #{createdAt},</if>
|
||||
<if test="updatedBy != null">updated_by = #{updatedBy},</if>
|
||||
<if test="updatedAt != null">updated_at = #{updatedAt},</if>
|
||||
<if test="isDelete != null">is_delete = #{isDelete},</if>
|
||||
<if test="createdBy != null and createdBy != ''">created_by = #{createdBy},</if>
|
||||
<if test="createdAt != null and createdAt != ''">created_at = #{createdAt},</if>
|
||||
<if test="updatedBy != null and updatedBy != ''">updated_by = #{updatedBy},</if>
|
||||
<if test="updatedAt != null and updatedAt != ''">updated_at = #{updatedAt},</if>
|
||||
<if test="isDelete != null and isDelete != ''">is_delete = #{isDelete},</if>
|
||||
</trim>
|
||||
where id = #{id}
|
||||
WHERE id = #{id}
|
||||
</update>
|
||||
|
||||
<!-- ========== 更新状态 ========== -->
|
||||
<update id="updateStatus" parameterType="map">
|
||||
UPDATE inventory_task
|
||||
SET status = #{status},
|
||||
@@ -161,14 +196,16 @@
|
||||
WHERE id = #{taskId}
|
||||
</update>
|
||||
|
||||
<!-- ========== 删除 ========== -->
|
||||
<delete id="deleteInventoryTaskById" parameterType="Long">
|
||||
delete from inventory_task where id = #{id}
|
||||
DELETE FROM inventory_task WHERE id = #{id}
|
||||
</delete>
|
||||
|
||||
<delete id="deleteInventoryTaskByIds" parameterType="String">
|
||||
delete from inventory_task where id in
|
||||
DELETE FROM inventory_task WHERE id IN
|
||||
<foreach item="id" collection="array" open="(" separator="," close=")">
|
||||
#{id}
|
||||
</foreach>
|
||||
</delete>
|
||||
</mapper>
|
||||
|
||||
</mapper>
|
||||
|
||||
@@ -4,53 +4,96 @@
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.zg.project.information.mapper.PcdeDetailMapper">
|
||||
|
||||
<!-- ==================== 通用结果映射 ==================== -->
|
||||
<resultMap type="PcdeDetail" id="PcdeDetailResult">
|
||||
<result property="id" column="id"/>
|
||||
<result property="pcode" column="pcode"/>
|
||||
<result property="scene" column="scene"/>
|
||||
<result property="sceneName" column="scene_name"/>
|
||||
<result property="warehouse" column="warehouse"/>
|
||||
<result property="warehouseName" column="warehouse_name"/>
|
||||
<result property="encodedId" column="encoded_id"/>
|
||||
<result property="tag" column="tag"/>
|
||||
<result property="remark" column="remark"/>
|
||||
<result property="isDelete" column="is_delete"/>
|
||||
<result property="createdBy" column="created_by"/>
|
||||
<result property="createdAt" column="created_at"/>
|
||||
<result property="updatedBy" column="updated_by"/>
|
||||
<result property="updatedAt" column="updated_at"/>
|
||||
<result property="id" column="id"/>
|
||||
<result property="pcode" column="pcode"/>
|
||||
<result property="scene" column="scene"/>
|
||||
<result property="sceneName" column="scene_name"/>
|
||||
|
||||
<result property="parentWarehouseCode" column="parent_warehouse_code"/>
|
||||
<result property="parentWarehouseName" column="parent_warehouse_name"/>
|
||||
<result property="warehouseCode" column="warehouse_code"/>
|
||||
<result property="warehouseName" column="warehouse_name"/>
|
||||
|
||||
<result property="encodedId" column="encoded_id"/>
|
||||
<result property="tag" column="tag"/>
|
||||
<result property="remark" column="remark"/>
|
||||
<result property="isDelete" column="is_delete"/>
|
||||
<result property="createdBy" column="created_by"/>
|
||||
<result property="createdAt" column="created_at"/>
|
||||
<result property="updatedBy" column="updated_by"/>
|
||||
<result property="updatedAt" column="updated_at"/>
|
||||
</resultMap>
|
||||
|
||||
<!-- 公共 SELECT 片段:带场景名称 -->
|
||||
<sql id="selectPcdeDetailVo">
|
||||
select d.id, d.pcode, d.scene, m.scene_name, d.warehouse, w.warehouse_name,
|
||||
d.encoded_id, d.tag, d.remark, d.is_delete,
|
||||
d.created_by, d.created_at, d.updated_by, d.updated_at
|
||||
from pcde_detail d
|
||||
left join scene_mapping m on d.scene = m.scene_code
|
||||
left join warehouse_info w on d.warehouse = w.warehouse_code
|
||||
SELECT
|
||||
d.id,
|
||||
d.pcode,
|
||||
d.scene,
|
||||
m.scene_name,
|
||||
d.parent_warehouse_code,
|
||||
d.parent_warehouse_name,
|
||||
d.warehouse_code,
|
||||
d.warehouse_name,
|
||||
d.encoded_id,
|
||||
d.tag,
|
||||
d.remark,
|
||||
d.is_delete,
|
||||
d.created_by,
|
||||
d.created_at,
|
||||
d.updated_by,
|
||||
d.updated_at
|
||||
FROM pcde_detail d
|
||||
LEFT JOIN scene_mapping m ON d.scene = m.scene_code
|
||||
</sql>
|
||||
|
||||
<select id="selectPcdeDetailList" parameterType="PcdeDetail" resultMap="PcdeDetailResult">
|
||||
<!-- 列表查询 -->
|
||||
<select id="selectPcdeDetailList"
|
||||
parameterType="PcdeDetail"
|
||||
resultMap="PcdeDetailResult">
|
||||
<include refid="selectPcdeDetailVo"/>
|
||||
<where>
|
||||
<if test="pcode != null and pcode != ''">and d.pcode = #{pcode}</if>
|
||||
<if test="scene != null and scene != ''">and d.scene = #{scene}</if>
|
||||
<if test="pcode != null and pcode != ''">
|
||||
AND d.pcode = #{pcode}
|
||||
</if>
|
||||
<if test="scene != null and scene != ''">
|
||||
AND d.scene = #{scene}
|
||||
</if>
|
||||
|
||||
<!-- 按大仓 / 小仓过滤(可选) -->
|
||||
<if test="parentWarehouseCode != null and parentWarehouseCode != ''">
|
||||
AND d.parent_warehouse_code = #{parentWarehouseCode}
|
||||
</if>
|
||||
<if test="parentWarehouseName != null and parentWarehouseName != ''">
|
||||
AND d.parent_warehouse_name LIKE concat('%', #{parentWarehouseName}, '%')
|
||||
</if>
|
||||
|
||||
<if test="warehouseCode != null and warehouseCode != ''">
|
||||
AND d.warehouse_code = #{warehouseCode}
|
||||
</if>
|
||||
|
||||
<if test="warehouseName != null and warehouseName != ''">
|
||||
and w.warehouse_name like concat('%', #{warehouseName}, '%')
|
||||
AND d.warehouse_name LIKE concat('%', #{warehouseName}, '%')
|
||||
</if>
|
||||
|
||||
<if test="warehouse != null and warehouse != ''">
|
||||
and d.warehouse = #{warehouse}
|
||||
<if test="encodedId != null and encodedId != ''">
|
||||
AND d.encoded_id = #{encodedId}
|
||||
</if>
|
||||
<if test="tag != null and tag != ''">
|
||||
AND d.tag = #{tag}
|
||||
</if>
|
||||
<if test="isDelete != null">
|
||||
AND d.is_delete = #{isDelete}
|
||||
</if>
|
||||
|
||||
<if test="encodedId != null and encodedId != ''">and d.encoded_id = #{encodedId}</if>
|
||||
<if test="tag != null and tag != ''">and d.tag = #{tag}</if>
|
||||
<if test="isDelete != null">and d.is_delete = #{isDelete}</if>
|
||||
</where>
|
||||
</select>
|
||||
|
||||
<select id="selectPcdeDetailListIds" parameterType="PcdeDetail" resultMap="PcdeDetailResult">
|
||||
<!-- 根据 ID 列表查询 -->
|
||||
<select id="selectPcdeDetailListIds"
|
||||
parameterType="PcdeDetail"
|
||||
resultMap="PcdeDetailResult">
|
||||
<include refid="selectPcdeDetailVo"/>
|
||||
<where>
|
||||
<choose>
|
||||
@@ -60,39 +103,108 @@
|
||||
#{val}
|
||||
</foreach>
|
||||
</when>
|
||||
|
||||
</choose>
|
||||
|
||||
</where>
|
||||
</select>
|
||||
|
||||
<select id="selectPcdeDetailById" parameterType="Long" resultMap="PcdeDetailResult">
|
||||
<!-- 根据主键查询 -->
|
||||
<select id="selectPcdeDetailById"
|
||||
parameterType="Long"
|
||||
resultMap="PcdeDetailResult">
|
||||
<include refid="selectPcdeDetailVo"/>
|
||||
where d.id = #{id}
|
||||
WHERE d.id = #{id}
|
||||
</select>
|
||||
|
||||
<select id="selectByPcode" resultType="com.zg.project.information.domain.PcdeDetail"
|
||||
<!-- 根据库位编码查询(不联表,直接取表字段) -->
|
||||
<select id="selectByPcode"
|
||||
resultType="com.zg.project.information.domain.PcdeDetail"
|
||||
parameterType="java.lang.String">
|
||||
select id, pcode, scene, warehouse, encoded_id, tag, is_delete,
|
||||
created_by, created_at, updated_by, updated_at, remark
|
||||
from pcde_detail
|
||||
where pcode = #{pcode}
|
||||
SELECT
|
||||
id,
|
||||
pcode,
|
||||
scene,
|
||||
parent_warehouse_code AS parentWarehouseCode,
|
||||
parent_warehouse_name AS parentWarehouseName,
|
||||
warehouse_code AS warehouseCode,
|
||||
warehouse_name AS warehouseName,
|
||||
encoded_id AS encodedId,
|
||||
tag,
|
||||
is_delete AS isDelete,
|
||||
created_by AS createdBy,
|
||||
created_at AS createdAt,
|
||||
updated_by AS UpdatedBy,
|
||||
updated_at AS updatedAt,
|
||||
remark
|
||||
FROM pcde_detail
|
||||
WHERE pcode = #{pcode}
|
||||
AND is_delete = '0'
|
||||
</select>
|
||||
|
||||
<select id="selectEncodedIdByPcode" resultType="java.lang.String" parameterType="java.lang.String">
|
||||
select encoded_id
|
||||
from pcde_detail
|
||||
where pcode = #{pcode}
|
||||
<!-- 根据库位编码查编码后ID -->
|
||||
<select id="selectEncodedIdByPcode"
|
||||
resultType="java.lang.String"
|
||||
parameterType="java.lang.String">
|
||||
SELECT encoded_id
|
||||
FROM pcde_detail
|
||||
WHERE pcode = #{pcode}
|
||||
AND is_delete = '0'
|
||||
</select>
|
||||
|
||||
<insert id="insertPcdeDetail" parameterType="PcdeDetail" useGeneratedKeys="true" keyProperty="id">
|
||||
insert into pcde_detail
|
||||
<select id="selectByWarehouseCode" parameterType="String" resultMap="PcdeDetailResult">
|
||||
SELECT
|
||||
id,
|
||||
pcode,
|
||||
scene,
|
||||
parent_warehouse_code,
|
||||
parent_warehouse_name,
|
||||
warehouse_code,
|
||||
warehouse_name,
|
||||
encoded_id,
|
||||
tag,
|
||||
remark,
|
||||
is_delete,
|
||||
created_by,
|
||||
created_at,
|
||||
updated_by,
|
||||
updated_at
|
||||
FROM pcde_detail
|
||||
WHERE warehouse_code = #{warehouseCode}
|
||||
AND is_delete = '0'
|
||||
ORDER BY id ASC
|
||||
</select>
|
||||
|
||||
<!-- 根据库位编码查所属小仓编码(小仓 warehouse_code) -->
|
||||
<select id="selectWarehouseCodeByPcode" parameterType="java.lang.String" resultType="java.lang.String">
|
||||
SELECT warehouse_code
|
||||
FROM pcde_detail
|
||||
WHERE pcode = #{pcode}
|
||||
AND is_delete = '0'
|
||||
LIMIT 1
|
||||
</select>
|
||||
|
||||
<!-- 单条插入 -->
|
||||
<insert id="insertPcdeDetail"
|
||||
parameterType="PcdeDetail"
|
||||
useGeneratedKeys="true"
|
||||
keyProperty="id">
|
||||
INSERT INTO pcde_detail
|
||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||
<if test="pcode != null and pcode != ''">pcode,</if>
|
||||
<if test="scene != null and scene != ''">scene,</if>
|
||||
<if test="warehouse != null and warehouse != ''">warehouse,</if>
|
||||
|
||||
<if test="parentWarehouseCode != null and parentWarehouseCode != ''">
|
||||
parent_warehouse_code,
|
||||
</if>
|
||||
<if test="parentWarehouseName != null and parentWarehouseName != ''">
|
||||
parent_warehouse_name,
|
||||
</if>
|
||||
<if test="warehouseCode != null and warehouseCode != ''">
|
||||
warehouse_code,
|
||||
</if>
|
||||
<if test="warehouseName != null and warehouseName != ''">
|
||||
warehouse_name,
|
||||
</if>
|
||||
|
||||
<if test="encodedId != null">encoded_id,</if>
|
||||
<if test="tag != null">tag,</if>
|
||||
<if test="remark != null and remark != ''">remark,</if>
|
||||
@@ -102,10 +214,23 @@
|
||||
<if test="updatedBy != null">updated_by,</if>
|
||||
<if test="updatedAt != null">updated_at,</if>
|
||||
</trim>
|
||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||
<trim prefix="VALUES (" suffix=")" suffixOverrides=",">
|
||||
<if test="pcode != null and pcode != ''">#{pcode},</if>
|
||||
<if test="scene != null and scene != ''">#{scene},</if>
|
||||
<if test="warehouse != null and warehouse != ''">#{warehouse},</if>
|
||||
|
||||
<if test="parentWarehouseCode != null and parentWarehouseCode != ''">
|
||||
#{parentWarehouseCode},
|
||||
</if>
|
||||
<if test="parentWarehouseName != null and parentWarehouseName != ''">
|
||||
#{parentWarehouseName},
|
||||
</if>
|
||||
<if test="warehouseCode != null and warehouseCode != ''">
|
||||
#{warehouseCode},
|
||||
</if>
|
||||
<if test="warehouseName != null and warehouseName != ''">
|
||||
#{warehouseName},
|
||||
</if>
|
||||
|
||||
<if test="encodedId != null">#{encodedId},</if>
|
||||
<if test="tag != null">#{tag},</if>
|
||||
<if test="remark != null and remark != ''">#{remark},</if>
|
||||
@@ -117,36 +242,85 @@
|
||||
</trim>
|
||||
</insert>
|
||||
|
||||
<!-- 更新 -->
|
||||
<update id="updatePcdeDetail" parameterType="PcdeDetail">
|
||||
update pcde_detail
|
||||
UPDATE pcde_detail
|
||||
<trim prefix="SET" suffixOverrides=",">
|
||||
<if test="pcode != null and pcode != ''">pcode = #{pcode},</if>
|
||||
<if test="scene != null and scene != ''">scene = #{scene},</if>
|
||||
<if test="warehouse != null and warehouse != ''">warehouse = #{warehouse},</if>
|
||||
<if test="encodedId != null">encoded_id = #{encodedId},</if>
|
||||
<if test="tag != null">tag = #{tag},</if>
|
||||
<if test="remark != null and remark != ''">remark = #{remark},</if>
|
||||
<if test="isDelete != null">is_delete = #{isDelete},</if>
|
||||
<if test="createdBy != null">created_by = #{createdBy},</if>
|
||||
<if test="createdAt != null">created_at = #{createdAt},</if>
|
||||
<if test="updatedBy != null">updated_by = #{updatedBy},</if>
|
||||
<if test="updatedAt != null">updated_at = #{updatedAt},</if>
|
||||
<if test="pcode != null and pcode != ''">
|
||||
pcode = #{pcode},
|
||||
</if>
|
||||
<if test="scene != null and scene != ''">
|
||||
scene = #{scene},
|
||||
</if>
|
||||
|
||||
<if test="parentWarehouseCode != null and parentWarehouseCode != ''">
|
||||
parent_warehouse_code = #{parentWarehouseCode},
|
||||
</if>
|
||||
<if test="parentWarehouseName != null and parentWarehouseName != ''">
|
||||
parent_warehouse_name = #{parentWarehouseName},
|
||||
</if>
|
||||
<if test="warehouseCode != null and warehouseCode != ''">
|
||||
warehouse_code = #{warehouseCode},
|
||||
</if>
|
||||
<if test="warehouseName != null and warehouseName != ''">
|
||||
warehouse_name = #{warehouseName},
|
||||
</if>
|
||||
|
||||
<if test="encodedId != null">
|
||||
encoded_id = #{encodedId},
|
||||
</if>
|
||||
<if test="tag != null">
|
||||
tag = #{tag},
|
||||
</if>
|
||||
<if test="remark != null and remark != ''">
|
||||
remark = #{remark},
|
||||
</if>
|
||||
<if test="isDelete != null">
|
||||
is_delete = #{isDelete},
|
||||
</if>
|
||||
<if test="createdBy != null">
|
||||
created_by = #{createdBy},
|
||||
</if>
|
||||
<if test="createdAt != null">
|
||||
created_at = #{createdAt},
|
||||
</if>
|
||||
<if test="updatedBy != null">
|
||||
updated_by = #{updatedBy},
|
||||
</if>
|
||||
<if test="updatedAt != null">
|
||||
updated_at = #{updatedAt},
|
||||
</if>
|
||||
</trim>
|
||||
where id = #{id}
|
||||
WHERE id = #{id}
|
||||
</update>
|
||||
|
||||
<!-- 批量插入(存在则忽略),用于导入 -->
|
||||
<insert id="batchInsertIgnore">
|
||||
INSERT IGNORE INTO pcde_detail
|
||||
(pcode, scene, scene_name, warehouse, warehouse_name,
|
||||
encoded_id, tag, remark, is_delete,
|
||||
created_by, created_at, updated_by, updated_at)
|
||||
(pcode,
|
||||
scene,
|
||||
scene_name,
|
||||
parent_warehouse_code,
|
||||
parent_warehouse_name,
|
||||
warehouse_code,
|
||||
warehouse_name,
|
||||
encoded_id,
|
||||
tag,
|
||||
remark,
|
||||
is_delete,
|
||||
created_by,
|
||||
created_at,
|
||||
updated_by,
|
||||
updated_at)
|
||||
VALUES
|
||||
<foreach collection="list" item="item" separator=",">
|
||||
(
|
||||
#{item.pcode},
|
||||
#{item.scene},
|
||||
#{item.sceneName},
|
||||
#{item.warehouse},
|
||||
#{item.parentWarehouseCode},
|
||||
#{item.parentWarehouseName},
|
||||
#{item.warehouseCode},
|
||||
#{item.warehouseName},
|
||||
#{item.encodedId},
|
||||
#{item.tag},
|
||||
@@ -160,12 +334,16 @@
|
||||
</foreach>
|
||||
</insert>
|
||||
|
||||
<!-- 单条删除 -->
|
||||
<delete id="deletePcdeDetailById" parameterType="Long">
|
||||
delete from pcde_detail where id = #{id}
|
||||
DELETE FROM pcde_detail
|
||||
WHERE id = #{id}
|
||||
</delete>
|
||||
|
||||
<!-- 批量删除 -->
|
||||
<delete id="deletePcdeDetailByIds" parameterType="String">
|
||||
delete from pcde_detail where id in
|
||||
DELETE FROM pcde_detail
|
||||
WHERE id IN
|
||||
<foreach item="id" collection="array" open="(" separator="," close=")">
|
||||
#{id}
|
||||
</foreach>
|
||||
|
||||
@@ -18,6 +18,13 @@
|
||||
<result property="rkTypeName" column="rk_type_name"/>
|
||||
<result property="wlTypeName" column="wl_type_name"/>
|
||||
<result property="cangkuName" column="cangku_name"/>
|
||||
|
||||
<!-- 新增:大仓/小仓编码和名称 -->
|
||||
<result property="parentWarehouseCode" column="parent_warehouse_code"/>
|
||||
<result property="parentWarehouseName" column="parent_warehouse_name"/>
|
||||
<result property="warehouseCode" column="warehouse_code"/>
|
||||
<result property="warehouseName" column="warehouse_name"/>
|
||||
|
||||
<result property="remark" column="remark" />
|
||||
<result property="xj" column="xj" />
|
||||
<result property="xmNo" column="xm_no" />
|
||||
@@ -62,7 +69,7 @@
|
||||
<result property="isDelivery" column="is_delivery"/>
|
||||
</resultMap>
|
||||
|
||||
<!-- 明细查询SQL(包含多表JOIN,用于普通明<EFBFBD>?分页等) -->
|
||||
<!-- 明细查询SQL(包含多表JOIN,用于普通明细分页等) -->
|
||||
<sql id="selectRkInfoVo">
|
||||
SELECT
|
||||
ri.id,
|
||||
@@ -70,7 +77,16 @@
|
||||
ri.bill_no_ck,
|
||||
ri.rk_type, st.type_name AS rk_type_name,
|
||||
ri.wl_type, mt.type_name AS wl_type_name,
|
||||
ri.cangku, wh.warehouse_name AS cangku_name,
|
||||
|
||||
ri.cangku,
|
||||
wh.warehouse_name AS cangku_name,
|
||||
|
||||
-- 新增:大仓/小仓编码和名称
|
||||
wh.parent_warehouse_code AS parent_warehouse_code,
|
||||
wh.parent_warehouse_name AS parent_warehouse_name,
|
||||
wh.warehouse_code AS warehouse_code,
|
||||
wh.warehouse_name AS warehouse_name,
|
||||
|
||||
ri.rk_time, ri.lihuo_y, ri.is_chuku, ri.is_borrowed, ri.is_delivery,ri.remark,
|
||||
ri.ck_lihuo_y, ri.ck_type, sot.type_name AS ck_type_name,
|
||||
ri.team_code, ct.team_name,
|
||||
@@ -148,7 +164,8 @@
|
||||
#{item.xmNoCk}, #{item.xmMsCk}, #{item.xj}, #{item.sapNo}, #{item.gysNo}, #{item.gysMc},
|
||||
#{item.jhQty}, #{item.htQty}, #{item.jhAmt}, #{item.htDj}, #{item.dw},
|
||||
#{item.borrowTime}, #{item.returnTime}, #{item.status},
|
||||
#{item.pcode}, #{item.pcodeId}, #{item.trayCode}, #{item.realQty}, #{item.entityId}, #{item.fycde1}, #{item.fycde2},
|
||||
#{item.pcode}, #{item.pcodeId}, #{item.trayCode}, #{item.realQty}, #{item.entityId},
|
||||
#{item.fycde1}, #{item.fycde2},
|
||||
#{item.remark}, #{item.isChuku}, #{item.isBorrowed}, #{item.gysJhId},
|
||||
#{item.isDelete}, #{item.createBy}, #{item.createTime}
|
||||
)
|
||||
@@ -219,36 +236,36 @@
|
||||
<!-- 关键字搜索 -->
|
||||
<if test="keyword != null and keyword != ''">
|
||||
AND (
|
||||
ri.xm_no like concat('%', #{keyword}, '%')
|
||||
or ri.xm_ms like concat('%', #{keyword}, '%')
|
||||
or ri.fycde_1 like concat('%', #{keyword}, '%')
|
||||
or ri.fycde_2 like concat('%', #{keyword}, '%')
|
||||
or ri.wl_no like concat('%', #{keyword}, '%')
|
||||
or ri.wl_ms like concat('%', #{keyword}, '%')
|
||||
or ri.gys_no like concat('%', #{keyword}, '%')
|
||||
or ri.gys_mc like concat('%', #{keyword}, '%')
|
||||
or ri.sap_no like concat('%', #{keyword}, '%')
|
||||
or ri.bill_no like concat('%', #{keyword}, '%')
|
||||
or ri.bill_no_ck like concat('%', #{keyword}, '%')
|
||||
or ri.ck_type like concat('%', #{keyword}, '%')
|
||||
or ri.pcode like concat('%', #{keyword}, '%')
|
||||
ri.xm_no LIKE concat('%', #{keyword}, '%')
|
||||
OR ri.xm_ms LIKE concat('%', #{keyword}, '%')
|
||||
OR ri.fycde_1 LIKE concat('%', #{keyword}, '%')
|
||||
OR ri.fycde_2 LIKE concat('%', #{keyword}, '%')
|
||||
OR ri.wl_no LIKE concat('%', #{keyword}, '%')
|
||||
OR ri.wl_ms LIKE concat('%', #{keyword}, '%')
|
||||
OR ri.gys_no LIKE concat('%', #{keyword}, '%')
|
||||
OR ri.gys_mc LIKE concat('%', #{keyword}, '%')
|
||||
OR ri.sap_no LIKE concat('%', #{keyword}, '%')
|
||||
OR ri.bill_no LIKE concat('%', #{keyword}, '%')
|
||||
OR ri.bill_no_ck LIKE concat('%', #{keyword}, '%')
|
||||
OR ri.ck_type LIKE concat('%', #{keyword}, '%')
|
||||
OR ri.pcode LIKE concat('%', #{keyword}, '%')
|
||||
)
|
||||
</if>
|
||||
|
||||
<if test="rkType != null and rkType != ''">
|
||||
AND ri.rk_type like concat('%', #{rkType}, '%')
|
||||
AND ri.rk_type LIKE concat('%', #{rkType}, '%')
|
||||
</if>
|
||||
<if test="wlType != null and wlType != ''">
|
||||
AND ri.wl_type like concat('%', #{wlType}, '%')
|
||||
AND ri.wl_type LIKE concat('%', #{wlType}, '%')
|
||||
</if>
|
||||
<if test="cangku != null and cangku != ''">
|
||||
AND ri.cangku like concat('%', #{cangku}, '%')
|
||||
AND ri.cangku LIKE concat('%', #{cangku}, '%')
|
||||
</if>
|
||||
<if test="fycde1 != null and fycde1 != ''">
|
||||
AND ri.fycde_1 like concat('%', #{fycde1}, '%')
|
||||
AND ri.fycde_1 LIKE concat('%', #{fycde1}, '%')
|
||||
</if>
|
||||
<if test="fycde2 != null and fycde2 != ''">
|
||||
AND ri.fycde_2 like concat('%', #{fycde2}, '%')
|
||||
AND ri.fycde_2 LIKE concat('%', #{fycde2}, '%')
|
||||
</if>
|
||||
|
||||
<if test="ids != null and ids.size > 0">
|
||||
@@ -258,55 +275,17 @@
|
||||
</foreach>
|
||||
</if>
|
||||
|
||||
<!-- ★★ 先按是否借料过滤行:0 否,1 借料中,2 已归还 ★★ -->
|
||||
<if test="isBorrowed != null and isBorrowed != ''">
|
||||
AND ri.is_borrowed = #{isBorrowed}
|
||||
<if test="startTime != null">
|
||||
<![CDATA[
|
||||
AND ri.rk_time >= #{startTime}
|
||||
]]>
|
||||
</if>
|
||||
<if test="endTime != null">
|
||||
<![CDATA[
|
||||
AND ri.rk_time < DATE_ADD(#{endTime}, INTERVAL 1 DAY)
|
||||
]]>
|
||||
</if>
|
||||
|
||||
<!-- ★★ 时间范围逻辑 ★★ -->
|
||||
<!-- 1)普通库存(isBorrowed 为空):按入库时间 rk_time -->
|
||||
<if test="(isBorrowed == null or isBorrowed == '')">
|
||||
<if test="startTime != null">
|
||||
<![CDATA[
|
||||
AND ri.rk_time >= #{startTime}
|
||||
]]>
|
||||
</if>
|
||||
<if test="endTime != null">
|
||||
<![CDATA[
|
||||
AND ri.rk_time < DATE_ADD(#{endTime}, INTERVAL 1 DAY)
|
||||
]]>
|
||||
</if>
|
||||
</if>
|
||||
|
||||
<!-- 2)借料中:按借用时间 borrow_time -->
|
||||
<if test="isBorrowed == '1'">
|
||||
<if test="startTime != null">
|
||||
<![CDATA[
|
||||
AND ri.borrow_time >= #{startTime}
|
||||
]]>
|
||||
</if>
|
||||
<if test="endTime != null">
|
||||
<![CDATA[
|
||||
AND ri.borrow_time < DATE_ADD(#{endTime}, INTERVAL 1 DAY)
|
||||
]]>
|
||||
</if>
|
||||
</if>
|
||||
|
||||
<!-- 3)已归还:按归还时间 return_time -->
|
||||
<if test="isBorrowed == '2'">
|
||||
<if test="startTime != null">
|
||||
<![CDATA[
|
||||
AND ri.return_time >= #{startTime}
|
||||
]]>
|
||||
</if>
|
||||
<if test="endTime != null">
|
||||
<![CDATA[
|
||||
AND ri.return_time < DATE_ADD(#{endTime}, INTERVAL 1 DAY)
|
||||
]]>
|
||||
</if>
|
||||
</if>
|
||||
|
||||
<!-- 领用时间范围(原有逻辑,保留) -->
|
||||
<if test="lyStartTime != null">
|
||||
<![CDATA[ AND ri.ly_time >= #{lyStartTime} ]]>
|
||||
</if>
|
||||
@@ -315,34 +294,34 @@
|
||||
</if>
|
||||
|
||||
<if test="lihuoY != null and lihuoY != ''">
|
||||
AND ri.lihuo_y like concat('%', #{lihuoY}, '%')
|
||||
AND ri.lihuo_y LIKE concat('%', #{lihuoY}, '%')
|
||||
</if>
|
||||
<if test="xj != null and xj != ''">
|
||||
AND ri.xj like concat('%', #{xj}, '%')
|
||||
AND ri.xj LIKE concat('%', #{xj}, '%')
|
||||
</if>
|
||||
<if test="billNo != null and billNo != ''">
|
||||
AND ri.bill_no like concat('%', #{billNo}, '%')
|
||||
AND ri.bill_no LIKE concat('%', #{billNo}, '%')
|
||||
</if>
|
||||
<if test="billNoCk != null and billNoCk != ''">
|
||||
AND ri.bill_no_ck like concat('%', #{billNoCk}, '%')
|
||||
AND ri.bill_no_ck LIKE concat('%', #{billNoCk}, '%')
|
||||
</if>
|
||||
<if test="xmNo != null and xmNo != ''">
|
||||
AND ri.xm_no like concat('%', #{xmNo}, '%')
|
||||
AND ri.xm_no LIKE concat('%', #{xmNo}, '%')
|
||||
</if>
|
||||
<if test="xmMs != null and xmMs != ''">
|
||||
AND ri.xm_ms like concat('%', #{xmMs}, '%')
|
||||
AND ri.xm_ms LIKE concat('%', #{xmMs}, '%')
|
||||
</if>
|
||||
<if test="wlNo != null and wlNo != ''">
|
||||
AND ri.wl_no like concat('%', #{wlNo}, '%')
|
||||
AND ri.wl_no LIKE concat('%', #{wlNo}, '%')
|
||||
</if>
|
||||
<if test="wlMs != null and wlMs != ''">
|
||||
AND ri.wl_ms like concat('%', #{wlMs}, '%')
|
||||
AND ri.wl_ms LIKE concat('%', #{wlMs}, '%')
|
||||
</if>
|
||||
<if test="gysNo != null and gysNo != ''">
|
||||
AND ri.gys_no like concat('%', #{gysNo}, '%')
|
||||
AND ri.gys_no LIKE concat('%', #{gysNo}, '%')
|
||||
</if>
|
||||
<if test="gysMc != null and gysMc != ''">
|
||||
AND ri.gys_mc like concat('%', #{gysMc}, '%')
|
||||
AND ri.gys_mc LIKE concat('%', #{gysMc}, '%')
|
||||
</if>
|
||||
|
||||
<if test="jhAmt != null">
|
||||
@@ -353,10 +332,10 @@
|
||||
</if>
|
||||
|
||||
<if test="sapNo != null and sapNo != ''">
|
||||
AND ri.sap_no like concat('%', #{sapNo}, '%')
|
||||
AND ri.sap_no LIKE concat('%', #{sapNo}, '%')
|
||||
</if>
|
||||
<if test="xh != null and xh != ''">
|
||||
AND ri.xh like concat('%', #{xh}, '%')
|
||||
AND ri.xh LIKE concat('%', #{xh}, '%')
|
||||
</if>
|
||||
<if test="jhQty != null">
|
||||
AND ri.jh_qty = #{jhQty}
|
||||
@@ -365,14 +344,14 @@
|
||||
AND ri.ht_qty = #{htQty}
|
||||
</if>
|
||||
<if test="dw != null and dw != ''">
|
||||
AND ri.dw like concat('%', #{dw}, '%')
|
||||
AND ri.dw LIKE concat('%', #{dw}, '%')
|
||||
</if>
|
||||
<if test="realQty != null">
|
||||
AND ri.real_qty = #{realQty}
|
||||
</if>
|
||||
|
||||
<if test="pcode != null and pcode != ''">
|
||||
AND ri.pcode like concat('%', #{pcode}, '%')
|
||||
AND ri.pcode LIKE concat('%', #{pcode}, '%')
|
||||
</if>
|
||||
<if test="lyTime != null">
|
||||
AND ri.ly_time = #{lyTime}
|
||||
@@ -381,13 +360,13 @@
|
||||
AND ri.return_time = #{returnTime}
|
||||
</if>
|
||||
<if test="trayCode != null and trayCode != ''">
|
||||
AND ri.tray_code like concat('%', #{trayCode}, '%')
|
||||
AND ri.tray_code LIKE concat('%', #{trayCode}, '%')
|
||||
</if>
|
||||
<if test="entityId != null and entityId != ''">
|
||||
AND ri.entity_id like concat('%', #{entityId}, '%')
|
||||
AND ri.entity_id LIKE concat('%', #{entityId}, '%')
|
||||
</if>
|
||||
<if test="ckType != null and ckType != ''">
|
||||
AND ri.ck_type like concat('%', #{ckType}, '%')
|
||||
AND ri.ck_type LIKE concat('%', #{ckType}, '%')
|
||||
</if>
|
||||
|
||||
<choose>
|
||||
@@ -402,8 +381,88 @@
|
||||
ORDER BY ri.rk_time DESC
|
||||
</select>
|
||||
|
||||
<select id="selectBorrowAndReturnList"
|
||||
parameterType="RkInfo"
|
||||
resultMap="RkInfoResult">
|
||||
|
||||
<include refid="selectRkInfoVo"/>
|
||||
|
||||
<where>
|
||||
<!-- 只查未删除 -->
|
||||
<choose>
|
||||
<when test="isDelete != null and isDelete != ''">
|
||||
AND ri.is_delete = #{isDelete}
|
||||
</when>
|
||||
<otherwise>
|
||||
AND ri.is_delete = 0
|
||||
</otherwise>
|
||||
</choose>
|
||||
|
||||
<!-- 借料/还料状态:0 否,1 借料中,2 已归还 -->
|
||||
<choose>
|
||||
<when test="isBorrowed != null and isBorrowed != ''">
|
||||
AND ri.is_borrowed = #{isBorrowed}
|
||||
</when>
|
||||
<otherwise>
|
||||
AND ri.is_borrowed IN ('1','2')
|
||||
</otherwise>
|
||||
</choose>
|
||||
|
||||
<!-- 时间范围:根据 isBorrowed 选择 borrow_time / return_time -->
|
||||
<!-- 先添加通用时间条件,如果isBorrowed为1或2时使用对应的时间字段 -->
|
||||
<if test="startTime != null">
|
||||
<choose>
|
||||
<when test="isBorrowed != null and (isBorrowed == '1' or isBorrowed == 1)">
|
||||
<![CDATA[
|
||||
AND ri.borrow_time >= #{startTime}
|
||||
]]>
|
||||
</when>
|
||||
<when test="isBorrowed != null and (isBorrowed == '2' or isBorrowed == 2)">
|
||||
<![CDATA[
|
||||
AND ri.return_time >= #{startTime}
|
||||
]]>
|
||||
</when>
|
||||
<otherwise>
|
||||
<![CDATA[
|
||||
AND ri.rk_time >= #{startTime}
|
||||
]]>
|
||||
</otherwise>
|
||||
</choose>
|
||||
</if>
|
||||
<if test="endTime != null">
|
||||
<choose>
|
||||
<when test="isBorrowed != null and (isBorrowed == '1' or isBorrowed == 1)">
|
||||
<![CDATA[
|
||||
AND ri.borrow_time < DATE_ADD(#{endTime}, INTERVAL 1 DAY)
|
||||
]]>
|
||||
</when>
|
||||
<when test="isBorrowed != null and (isBorrowed == '2' or isBorrowed == 2)">
|
||||
<![CDATA[
|
||||
AND ri.return_time < DATE_ADD(#{endTime}, INTERVAL 1 DAY)
|
||||
]]>
|
||||
</when>
|
||||
<otherwise>
|
||||
<![CDATA[
|
||||
AND ri.rk_time < DATE_ADD(#{endTime}, INTERVAL 1 DAY)
|
||||
]]>
|
||||
</otherwise>
|
||||
</choose>
|
||||
</if>
|
||||
|
||||
<if test="xmNo != null and xmNo != ''">
|
||||
AND ri.xm_no LIKE concat('%', #{xmNo}, '%')
|
||||
</if>
|
||||
<if test="sapNo != null and sapNo != ''">
|
||||
AND ri.sap_no LIKE concat('%', #{sapNo}, '%')
|
||||
</if>
|
||||
<if test="billNo != null and billNo != ''">
|
||||
AND ri.bill_no LIKE concat('%', #{billNo}, '%')
|
||||
</if>
|
||||
</where>
|
||||
|
||||
ORDER BY ri.borrow_time DESC, ri.return_time DESC, ri.id DESC
|
||||
</select>
|
||||
|
||||
<!-- ================== 这里是已优化的按单据分组查询(替换旧版本<E78988>?================== -->
|
||||
<select id="selectGroupedByBill" resultMap="RkInfoResult" parameterType="map">
|
||||
SELECT
|
||||
a.id,
|
||||
@@ -559,7 +618,7 @@
|
||||
AND t.is_delivery = #{q.isDelivery}
|
||||
</if>
|
||||
|
||||
<!-- 出库才要<EFBFBD>?bill_no_ck 非空 -->
|
||||
<!-- 出库才要 bill_no_ck 非空 -->
|
||||
<if test="(q.isChuku != null and q.isChuku == '1')
|
||||
or (q.isChukuList != null and q.isChukuList.size > 0 and q.isChukuList.contains('1'))">
|
||||
AND t.bill_no_ck IS NOT NULL
|
||||
@@ -589,7 +648,7 @@
|
||||
ORDER BY a.rk_time DESC
|
||||
</select>
|
||||
|
||||
<!-- ================== /按单据分组查<EFBFBD>?================== -->
|
||||
<!-- ================== /按单据分组查询 ================== -->
|
||||
|
||||
<select id="selectRkInfoById" parameterType="Long" resultMap="RkInfoResult">
|
||||
<include refid="selectRkInfoVo"/>
|
||||
@@ -636,7 +695,7 @@
|
||||
WHERE bill_no = #{billNo} AND sap_no IS NOT NULL
|
||||
</select>
|
||||
|
||||
<!-- 正常数据:扫描到的库位(限定场景<EFBFBD>?-->
|
||||
<!-- 正常数据:扫描到的库位(限定场景) -->
|
||||
<select id="getByPcodeIdList" parameterType="map" resultMap="RkInfoResult">
|
||||
SELECT
|
||||
ri.id, ri.rk_type, ri.wl_type, ri.cangku, ri.rk_time, ri.lihuo_y,
|
||||
@@ -659,7 +718,7 @@
|
||||
</foreach>
|
||||
</select>
|
||||
|
||||
<!-- 未扫描到的数据(限定场景<EFBFBD>?-->
|
||||
<!-- 未扫描到的数据(限定场景) -->
|
||||
<select id="getMissedPcodeIds" parameterType="map" resultMap="RkInfoResult">
|
||||
SELECT
|
||||
ri.id, ri.rk_type, ri.wl_type, ri.cangku, ri.rk_time, ri.lihuo_y,
|
||||
@@ -704,7 +763,7 @@
|
||||
</select>
|
||||
|
||||
<select id="getUnscannedPcodeByScene"
|
||||
resultType="com.zg.project.Inventory.domain.vo.RkInfoMatchVO">
|
||||
resultType="com.zg.project.inventory.domain.vo.RkInfoMatchVO">
|
||||
SELECT
|
||||
r.pcode AS rkPcode,
|
||||
COALESCE(SUM(r.real_qty), 0) AS realQty
|
||||
@@ -724,7 +783,7 @@
|
||||
ORDER BY MAX(r.create_time) DESC
|
||||
</select>
|
||||
|
||||
<select id="selectPcdeCntFromRkInfo" resultType="com.zg.project.Inventory.domain.vo.PcdeCntVO">
|
||||
<select id="selectPcdeCntFromRkInfo" resultType="com.zg.project.inventory.domain.vo.PcdeCntVO">
|
||||
SELECT pcode AS pcde,
|
||||
COUNT(*) AS cnt
|
||||
FROM rk_info
|
||||
@@ -738,18 +797,25 @@
|
||||
<select id="selectOneForEachBillNo" parameterType="java.util.List" resultType="com.zg.project.wisdom.domain.RkInfo">
|
||||
SELECT
|
||||
COALESCE(r.bill_no_ck, r.bill_no) AS billNo,
|
||||
MAX(r.lihuo_y) AS lihuoY,
|
||||
MAX(u.user_name) AS lihuoYName,
|
||||
MAX(rkType.type_name) AS rkTypeName,
|
||||
MAX(cangku.warehouse_name) AS cangkuName,
|
||||
MAX(wlType.type_name) AS wlTypeName,
|
||||
MAX(ckType.type_name) AS ckTypeName,
|
||||
MAX(team.team_name) AS teamName
|
||||
MAX(r.lihuo_y) AS lihuoY,
|
||||
MAX(u.user_name) AS lihuoYName,
|
||||
MAX(rkType.type_name) AS rkTypeName,
|
||||
MAX(cangku.warehouse_name) AS cangkuName,
|
||||
|
||||
-- 新增:大仓/小仓编码和名称
|
||||
MAX(cangku.parent_warehouse_code) AS parentWarehouseCode,
|
||||
MAX(cangku.parent_warehouse_name) AS parentWarehouseName,
|
||||
MAX(cangku.warehouse_code) AS warehouseCode,
|
||||
MAX(cangku.warehouse_name) AS warehouseName,
|
||||
|
||||
MAX(wlType.type_name) AS wlTypeName,
|
||||
MAX(ckType.type_name) AS ckTypeName,
|
||||
MAX(team.team_name) AS teamName
|
||||
FROM rk_info r
|
||||
LEFT JOIN stock_in_type rkType ON r.rk_type = rkType.type_code
|
||||
LEFT JOIN stock_in_type rkType ON r.rk_type = rkType.type_code
|
||||
LEFT JOIN stock_out_type ckType ON r.ck_type = ckType.type_code
|
||||
LEFT JOIN warehouse_info cangku ON r.cangku = cangku.warehouse_code
|
||||
LEFT JOIN material_type wlType ON r.wl_type = wlType.type_code
|
||||
LEFT JOIN warehouse_info cangku ON r.cangku = cangku.warehouse_code
|
||||
LEFT JOIN material_type wlType ON r.wl_type = wlType.type_code
|
||||
LEFT JOIN construction_team team ON r.team_code = team.team_code
|
||||
LEFT JOIN sys_user u ON r.lihuo_y = u.user_id
|
||||
WHERE r.is_delete = '0'
|
||||
@@ -797,7 +863,9 @@
|
||||
<trim prefix="SET" suffixOverrides=",">
|
||||
<if test="rkType != null">rk_type = #{rkType},</if>
|
||||
<if test="wlType != null">wl_type = #{wlType},</if>
|
||||
<if test="cangku != null">cangku = #{cangku},</if>
|
||||
<if test="warehouseCode != null and warehouseCode != ''">
|
||||
cangku = #{warehouseCode},
|
||||
</if>
|
||||
<if test="rkTime != null">rk_time = #{rkTime},</if>
|
||||
<if test="lihuoY != null">lihuo_y = #{lihuoY},</if>
|
||||
<if test="isChuku != null">is_chuku = #{isChuku},</if>
|
||||
@@ -954,7 +1022,13 @@
|
||||
resultMap="RkInfoResult">
|
||||
SELECT
|
||||
t.*,
|
||||
wh.warehouse_name AS cangku_name
|
||||
wh.warehouse_name AS cangku_name,
|
||||
|
||||
-- 新增:大仓/小仓编码和名称
|
||||
wh.parent_warehouse_code AS parent_warehouse_code,
|
||||
wh.parent_warehouse_name AS parent_warehouse_name,
|
||||
wh.warehouse_code AS warehouse_code,
|
||||
wh.warehouse_name AS warehouse_name
|
||||
FROM rk_info t
|
||||
LEFT JOIN warehouse_info wh
|
||||
ON wh.warehouse_code = t.cangku
|
||||
@@ -975,20 +1049,20 @@
|
||||
AND ri.is_chuku = #{isChuku}
|
||||
</if>
|
||||
|
||||
<if test="cangku != null and cangku != ''">
|
||||
AND ri.cangku = #{cangku}
|
||||
<if test="warehouseCode != null and warehouseCode != ''">
|
||||
AND ri.cangku = #{warehouseCode}
|
||||
</if>
|
||||
|
||||
<if test="startTime != null">
|
||||
<if test="startTime != null and startTime != ''">
|
||||
AND ri.rk_time <![CDATA[ >= ]]> #{startTime}
|
||||
</if>
|
||||
<if test="endTime != null">
|
||||
<if test="endTime != null and endTime != ''">
|
||||
AND ri.rk_time <![CDATA[ <= ]]> #{endTime}
|
||||
</if>
|
||||
<if test="statDate != null">
|
||||
<if test="statDate != null and statDate != ''">
|
||||
AND ri.return_time <![CDATA[ >= ]]> #{statDate}
|
||||
</if>
|
||||
<if test="endDate != null">
|
||||
<if test="endDate != null and endDate != ''">
|
||||
AND ri.return_time <![CDATA[ <= ]]> #{endDate}
|
||||
</if>
|
||||
<if test="rkType != null and rkType != ''">
|
||||
@@ -997,10 +1071,10 @@
|
||||
<if test="wlType != null and wlType != ''">
|
||||
AND ri.wl_type = #{wlType}
|
||||
</if>
|
||||
<if test="lyStartTime != null">
|
||||
<if test="lyStartTime != null and lyStartTime != ''">
|
||||
AND ri.ly_time <![CDATA[ >= ]]> #{lyStartTime}
|
||||
</if>
|
||||
<if test="lyEndTime != null">
|
||||
<if test="lyEndTime != null and lyEndTime != ''">
|
||||
AND ri.ly_time <![CDATA[ <= ]]> #{lyEndTime}
|
||||
</if>
|
||||
|
||||
@@ -1070,10 +1144,10 @@
|
||||
AND ri.rk_time <![CDATA[ <= ]]> #{endTime}
|
||||
</if>
|
||||
|
||||
<if test="lyStartTime != null">
|
||||
<if test="lyStartTime != null and lyStartTime != ''">
|
||||
AND ri.ly_time <![CDATA[ >= ]]> #{lyStartTime}
|
||||
</if>
|
||||
<if test="lyEndTime != null">
|
||||
<if test="lyEndTime != null and lyEndTime != ''">
|
||||
AND ri.ly_time <![CDATA[ <= ]]> #{lyEndTime}
|
||||
</if>
|
||||
|
||||
@@ -1140,10 +1214,10 @@
|
||||
AND ri.rk_time <![CDATA[ <= ]]> #{endTime}
|
||||
</if>
|
||||
|
||||
<if test="lyStartTime != null">
|
||||
<if test="lyStartTime != null and lyStartTime != ''">
|
||||
AND ri.ly_time <![CDATA[ >= ]]> #{lyStartTime}
|
||||
</if>
|
||||
<if test="lyEndTime != null">
|
||||
<if test="lyEndTime != null and lyEndTime != ''">
|
||||
AND ri.ly_time <![CDATA[ <= ]]> #{lyEndTime}
|
||||
</if>
|
||||
|
||||
@@ -1247,7 +1321,6 @@
|
||||
AND is_chuku = '1'
|
||||
AND is_delivery = '1'
|
||||
|
||||
<!-- 可选过滤:比如你以后想限定县局、项目等 -->
|
||||
<if test="q.xj != null and q.xj != ''">
|
||||
AND xj = #{q.xj}
|
||||
</if>
|
||||
@@ -1267,13 +1340,59 @@
|
||||
ORDER BY bill_no_ck, ly_time, id
|
||||
</select>
|
||||
|
||||
<!-- 根据入库单号查询单据头公共信息 -->
|
||||
<select id="selectHeaderByBillNo"
|
||||
parameterType="java.lang.String"
|
||||
resultMap="RkInfoResult">
|
||||
SELECT
|
||||
ri.id,
|
||||
ri.bill_no,
|
||||
ri.bill_no_ck,
|
||||
ri.is_chuku,
|
||||
ri.rk_type,
|
||||
st.type_name AS rk_type_name,
|
||||
ri.wl_type,
|
||||
mt.type_name AS wl_type_name,
|
||||
ri.rk_time,
|
||||
ri.ly_time,
|
||||
ri.lihuo_y,
|
||||
u.user_name AS lihuo_y_name,
|
||||
|
||||
ri.cangku,
|
||||
wh.warehouse_name AS cangku_name,
|
||||
wh.parent_warehouse_code AS parent_warehouse_code,
|
||||
wh.parent_warehouse_name AS parent_warehouse_name,
|
||||
wh.warehouse_code AS warehouse_code,
|
||||
wh.warehouse_name AS warehouse_name
|
||||
|
||||
FROM rk_info ri
|
||||
LEFT JOIN stock_in_type st ON ri.rk_type = st.type_code
|
||||
LEFT JOIN material_type mt ON ri.wl_type = mt.type_code
|
||||
LEFT JOIN warehouse_info wh ON ri.cangku = wh.warehouse_code
|
||||
LEFT JOIN sys_user u ON ri.lihuo_y = u.user_id
|
||||
WHERE ri.is_delete = '0'
|
||||
AND ri.bill_no = #{billNo}
|
||||
ORDER BY ri.rk_time ASC, ri.id ASC
|
||||
LIMIT 1
|
||||
</select>
|
||||
|
||||
<update id="updateBillInfo" parameterType="com.zg.project.wisdom.domain.RkInfo">
|
||||
UPDATE rk_info
|
||||
<set>
|
||||
<if test="rkType != null">rk_type = #{rkType},</if>
|
||||
<if test="wlType != null">wl_type = #{wlType},</if>
|
||||
<if test="cangku != null">cangku = #{cangku},</if>
|
||||
<if test="rkTime != null">rk_time = #{rkTime},</if>
|
||||
<if test="rkType != null">
|
||||
rk_type = #{rkType},
|
||||
</if>
|
||||
<if test="wlType != null">
|
||||
wl_type = #{wlType},
|
||||
</if>
|
||||
|
||||
<if test="warehouseCode != null and warehouseCode != ''">
|
||||
cangku = #{warehouseCode},
|
||||
</if>
|
||||
|
||||
<if test="rkTime != null">
|
||||
rk_time = #{rkTime},
|
||||
</if>
|
||||
</set>
|
||||
WHERE bill_no = #{billNo}
|
||||
</update>
|
||||
|
||||
@@ -11,7 +11,8 @@
|
||||
</resultMap>
|
||||
|
||||
<select id="selectEnabledWarehouses" resultMap="WarehouseLiteMap">
|
||||
SELECT wi.warehouse_code, wi.warehouse_name
|
||||
SELECT wi.warehouse_code,
|
||||
wi.warehouse_name
|
||||
FROM warehouse_info wi
|
||||
WHERE wi.status = 1
|
||||
ORDER BY wi.warehouse_code
|
||||
@@ -36,15 +37,17 @@
|
||||
ON pd.scene = sm.scene_code
|
||||
LEFT JOIN rk_info ri
|
||||
ON pd.pcode = ri.pcode
|
||||
WHERE pd.warehouse = #{warehouseCode}
|
||||
AND (pd.is_delete IS NULL OR pd.is_delete = 0)
|
||||
WHERE pd.warehouse_code = #{warehouseCode}
|
||||
AND (pd.is_delete IS NULL OR pd.is_delete = '0')
|
||||
GROUP BY sm.scene_code, sm.scene_name
|
||||
ORDER BY sm.scene_code
|
||||
</select>
|
||||
|
||||
<!-- 3) 启用仓库总数 -->
|
||||
<select id="countEnabledWarehouses" resultType="int">
|
||||
SELECT COUNT(*) FROM warehouse_info wi WHERE wi.status = 1
|
||||
SELECT COUNT(*)
|
||||
FROM warehouse_info wi
|
||||
WHERE wi.status = 1
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
|
||||
Reference in New Issue
Block a user