Merge remote-tracking branch 'origin/master'
This commit is contained in:
@@ -96,15 +96,5 @@ public class BasWarehouseController extends BaseController
|
|||||||
{
|
{
|
||||||
return toAjax(basWarehouseService.deleteBasWarehouseByWarehouseIds(warehouseIds));
|
return toAjax(basWarehouseService.deleteBasWarehouseByWarehouseIds(warehouseIds));
|
||||||
}
|
}
|
||||||
/**
|
|
||||||
* 获取除了CTU以外的库
|
|
||||||
*/
|
|
||||||
@RequestMapping("/getWarehouseByType")
|
|
||||||
@ResponseBody
|
|
||||||
public AjaxResult getWarehouseByType()
|
|
||||||
{
|
|
||||||
|
|
||||||
List<BasWarehouse> list = basWarehouseService.selectBasWarehouseListByType();
|
|
||||||
return AjaxResult.success(list);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -59,6 +59,9 @@ public class BasWarehouse extends BaseEntity
|
|||||||
|
|
||||||
/*仓库数据权限*/
|
/*仓库数据权限*/
|
||||||
private List<String> dataScope;
|
private List<String> dataScope;
|
||||||
|
private List<String> typeData;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -60,9 +60,6 @@ public interface BasWarehouseMapper
|
|||||||
*/
|
*/
|
||||||
public int deleteBasWarehouseByWarehouseIds(String[] warehouseIds);
|
public int deleteBasWarehouseByWarehouseIds(String[] warehouseIds);
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
public List<BasWarehouse> selectBasWarehouseListByType();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -60,8 +60,5 @@ public interface IBasWarehouseService
|
|||||||
*/
|
*/
|
||||||
public int deleteBasWarehouseByWarehouseId(String warehouseId);
|
public int deleteBasWarehouseByWarehouseId(String warehouseId);
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
public List<BasWarehouse> selectBasWarehouseListByType();
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollUtil;
|
|||||||
import com.ruoyi.bas.warehouse.domain.BasWarehouse;
|
import com.ruoyi.bas.warehouse.domain.BasWarehouse;
|
||||||
import com.ruoyi.bas.warehouse.mapper.BasWarehouseMapper;
|
import com.ruoyi.bas.warehouse.mapper.BasWarehouseMapper;
|
||||||
import com.ruoyi.bas.warehouse.service.IBasWarehouseService;
|
import com.ruoyi.bas.warehouse.service.IBasWarehouseService;
|
||||||
|
import com.ruoyi.common.annotation.DataScope;
|
||||||
import com.ruoyi.common.core.domain.entity.SysRole;
|
import com.ruoyi.common.core.domain.entity.SysRole;
|
||||||
import com.ruoyi.common.core.domain.entity.SysUser;
|
import com.ruoyi.common.core.domain.entity.SysUser;
|
||||||
import com.ruoyi.common.utils.SecurityUtils;
|
import com.ruoyi.common.utils.SecurityUtils;
|
||||||
@@ -51,21 +52,10 @@ public class BasWarehouseServiceImpl implements IBasWarehouseService
|
|||||||
* @return 仓库管理
|
* @return 仓库管理
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
@DataScope
|
||||||
public List<BasWarehouse> selectBasWarehouseList(BasWarehouse basWarehouse)
|
public List<BasWarehouse> selectBasWarehouseList(BasWarehouse basWarehouse)
|
||||||
{
|
{
|
||||||
List<SysRole> roles = sysRoleService.selectRolesByUserId(SecurityUtils.getUserId());
|
|
||||||
if (roles.stream().anyMatch(SysRole::isAdmin)){
|
|
||||||
return basWarehouseMapper.selectBasWarehouseList(basWarehouse);
|
return basWarehouseMapper.selectBasWarehouseList(basWarehouse);
|
||||||
}else {
|
|
||||||
List<String> dateScope =new ArrayList<>();
|
|
||||||
for (SysRole role : roles) {
|
|
||||||
if (CollUtil.isNotEmpty(role.getWarehouseDataScope())){
|
|
||||||
dateScope.addAll(role.getWarehouseDataScope());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
basWarehouse.setDataScope(dateScope);
|
|
||||||
return basWarehouseMapper.selectBasWarehouseList(basWarehouse);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -116,11 +106,5 @@ public class BasWarehouseServiceImpl implements IBasWarehouseService
|
|||||||
return basWarehouseMapper.deleteBasWarehouseByWarehouseId(warehouseId);
|
return basWarehouseMapper.deleteBasWarehouseByWarehouseId(warehouseId);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public List<BasWarehouse> selectBasWarehouseListByType() {
|
|
||||||
return basWarehouseMapper.selectBasWarehouseListByType();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import java.util.Collections;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
|
import com.ruoyi.common.annotation.DataScope;
|
||||||
import com.ruoyi.common.core.domain.AjaxResult;
|
import com.ruoyi.common.core.domain.AjaxResult;
|
||||||
import com.ruoyi.in.stockindetail.domain.InStockinDetail;
|
import com.ruoyi.in.stockindetail.domain.InStockinDetail;
|
||||||
import com.ruoyi.in.stockindetail.service.IInStockinDetailService;
|
import com.ruoyi.in.stockindetail.service.IInStockinDetailService;
|
||||||
@@ -49,6 +50,7 @@ public class InStockinServiceImpl implements IInStockinService
|
|||||||
* @return 入库单据
|
* @return 入库单据
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
@DataScope(warehouseAlias = "is2")
|
||||||
public List<InStockin> selectInStockinList(InStockin inStockin)
|
public List<InStockin> selectInStockinList(InStockin inStockin)
|
||||||
{
|
{
|
||||||
return inStockinMapper.selectInStockinList(inStockin);
|
return inStockinMapper.selectInStockinList(inStockin);
|
||||||
|
|||||||
@@ -138,4 +138,8 @@ public class InStockinDetail extends BaseEntity
|
|||||||
|
|
||||||
private ExtraField extraField;
|
private ExtraField extraField;
|
||||||
|
|
||||||
|
private String warehouseName;
|
||||||
|
|
||||||
|
private String warehouseId;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -68,5 +68,5 @@ public interface InStockinDetailMapper
|
|||||||
|
|
||||||
void deleteInStockinDetailByStockinGuid(String stockinGuid);
|
void deleteInStockinDetailByStockinGuid(String stockinGuid);
|
||||||
|
|
||||||
List<InStockinDetail> selectStockinByDetailById(String stockinDetailId);
|
InStockinDetail selectStockinByDetailById(String stockinDetailId);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -80,5 +80,5 @@ public interface IInStockinDetailService
|
|||||||
AjaxResult barcodePrinting(Map<String,Object> stockinDetailId);
|
AjaxResult barcodePrinting(Map<String,Object> stockinDetailId);
|
||||||
|
|
||||||
|
|
||||||
public List<InStockinDetail> selectStockinByDetailById(String stockinDetailId);
|
public InStockinDetail selectStockinByDetailById(String stockinDetailId);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -124,7 +124,7 @@ public class InStockinDetailServiceImpl implements IInStockinDetailService
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<InStockinDetail> selectStockinByDetailById(String stockinDetailId) {
|
public InStockinDetail selectStockinByDetailById(String stockinDetailId) {
|
||||||
return inStockinDetailMapper.selectStockinByDetailById(stockinDetailId);
|
return inStockinDetailMapper.selectStockinByDetailById(stockinDetailId);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -121,9 +121,19 @@ public class MydoJobDetail extends BaseEntity
|
|||||||
private String spare4;
|
private String spare4;
|
||||||
|
|
||||||
private String status;
|
private String status;
|
||||||
|
@Excel(name = "拣选数量")
|
||||||
|
private String pickQuantity;
|
||||||
//额外字段
|
//额外字段
|
||||||
private ExtraField extraField;
|
private ExtraField extraField;
|
||||||
|
|
||||||
|
public String getPickQuantity() {
|
||||||
|
return pickQuantity;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPickQuantity(String pickQuantity) {
|
||||||
|
this.pickQuantity = pickQuantity;
|
||||||
|
}
|
||||||
|
|
||||||
public ExtraField getExtraField() {
|
public ExtraField getExtraField() {
|
||||||
return extraField;
|
return extraField;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -118,6 +118,17 @@ public class MydoJobDetailFinish extends BaseEntity
|
|||||||
/** 备用字段4 */
|
/** 备用字段4 */
|
||||||
@Excel(name = "备用字段4")
|
@Excel(name = "备用字段4")
|
||||||
private String spare4;
|
private String spare4;
|
||||||
|
@Excel(name = "拣选数量")
|
||||||
|
private String pickQuantity;
|
||||||
|
|
||||||
|
public String getPickQuantity() {
|
||||||
|
return pickQuantity;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPickQuantity(String pickQuantity) {
|
||||||
|
this.pickQuantity = pickQuantity;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public void setJobDetailId(String jobDetailId)
|
public void setJobDetailId(String jobDetailId)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -11,12 +11,14 @@ import com.ruoyi.in.stockin.domain.InStockin;
|
|||||||
import com.ruoyi.in.stockin.service.IInStockinService;
|
import com.ruoyi.in.stockin.service.IInStockinService;
|
||||||
import com.ruoyi.in.stockindetail.domain.InStockinDetail;
|
import com.ruoyi.in.stockindetail.domain.InStockinDetail;
|
||||||
import com.ruoyi.in.stockindetail.service.IInStockinDetailService;
|
import com.ruoyi.in.stockindetail.service.IInStockinDetailService;
|
||||||
|
import com.ruoyi.pda.domain.TrayCodeMakeSure;
|
||||||
import com.ruoyi.pda.domain.TrayCodeMsg;
|
import com.ruoyi.pda.domain.TrayCodeMsg;
|
||||||
import com.ruoyi.pda.service.PdaService;
|
import com.ruoyi.pda.service.PdaService;
|
||||||
import com.ruoyi.pda.trayMsg.domain.TrayMsg;
|
import com.ruoyi.pda.trayMsg.domain.TrayMsg;
|
||||||
import com.ruoyi.pda.trayMsg.service.ITrayMsgService;
|
import com.ruoyi.pda.trayMsg.service.ITrayMsgService;
|
||||||
import com.ruoyi.stock.stock.domain.BasStock;
|
import com.ruoyi.stock.stock.domain.BasStock;
|
||||||
import com.ruoyi.stock.stock.service.IBasStockService;
|
import com.ruoyi.stock.stock.service.IBasStockService;
|
||||||
|
import org.springframework.security.access.prepost.PreAuthorize;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Controller;
|
import org.springframework.stereotype.Controller;
|
||||||
@@ -127,13 +129,14 @@ public class PdaController extends BaseController {
|
|||||||
*/
|
*/
|
||||||
@RequestMapping("/inorder/detail")
|
@RequestMapping("/inorder/detail")
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
public List<InStockinDetail> inoderList(String stockinDetailId) {
|
public InStockinDetail inoderList(String stockinDetailId) {
|
||||||
List<InStockinDetail> inStockinDetail = inStockinDetailService.selectStockinByDetailById(stockinDetailId);
|
InStockinDetail inStockinDetail = inStockinDetailService.selectStockinByDetailById(stockinDetailId);
|
||||||
return inStockinDetail;
|
return inStockinDetail;
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* 绑定托盘物料
|
* 绑定托盘物料
|
||||||
*/
|
*/
|
||||||
|
@PreAuthorize("@ss.hasPermi('pda:bindTrayMsg:submit')")
|
||||||
@RequestMapping("/bindTrayMsg")
|
@RequestMapping("/bindTrayMsg")
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
public AjaxResult bindTrayMsg(@RequestBody TrayCodeMsg trayCodeMsg) {
|
public AjaxResult bindTrayMsg(@RequestBody TrayCodeMsg trayCodeMsg) {
|
||||||
@@ -143,6 +146,7 @@ public class PdaController extends BaseController {
|
|||||||
/**
|
/**
|
||||||
* 查询托盘已绑定物料
|
* 查询托盘已绑定物料
|
||||||
*/
|
*/
|
||||||
|
@PreAuthorize("@ss.hasPermi('pda:bindMsg:list')")
|
||||||
@RequestMapping("/bindMsg")
|
@RequestMapping("/bindMsg")
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
public AjaxResult bindMsg(String trayCode) {
|
public AjaxResult bindMsg(String trayCode) {
|
||||||
@@ -158,27 +162,25 @@ public class PdaController extends BaseController {
|
|||||||
@ResponseBody
|
@ResponseBody
|
||||||
public AjaxResult addInJob(@RequestBody TrayCodeMsg trayCodeMsg) {
|
public AjaxResult addInJob(@RequestBody TrayCodeMsg trayCodeMsg) {
|
||||||
BasWarehouse basWarehouse = basWarehouseService.selectBasWarehouseByWarehouseId(trayCodeMsg.getWarehouseId());
|
BasWarehouse basWarehouse = basWarehouseService.selectBasWarehouseByWarehouseId(trayCodeMsg.getWarehouseId());
|
||||||
if(basWarehouse==null){
|
// if(basWarehouse==null){
|
||||||
return AjaxResult.error("仓库不存在");
|
// return AjaxResult.error("仓库不存在");
|
||||||
}
|
// }
|
||||||
if("1".equals(basWarehouse.getWarehouseType()) && StrUtil.isEmpty(trayCodeMsg.getCargoSpaceId())){
|
if("1".equals(basWarehouse.getWarehouseType()) && StrUtil.isEmpty(trayCodeMsg.getCargoSpaceId())){
|
||||||
return AjaxResult.error("请选择高架库货位");
|
return AjaxResult.error("请选择高架库货位");
|
||||||
}
|
}
|
||||||
if("2".equals(basWarehouse.getWarehouseType()) && StrUtil.isEmpty(trayCodeMsg.getEntranceId())){
|
|
||||||
return AjaxResult.error("请选择入口");
|
|
||||||
}
|
|
||||||
return pdaService.addInJob(trayCodeMsg);
|
return pdaService.addInJob(trayCodeMsg);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 出库确认
|
* 出库确认
|
||||||
* @param trayCode 托盘码
|
* @param trayCodeMakeSure 托盘信息
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@GetMapping("/outMakeSure")
|
@PostMapping("/outMakeSure")
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
public AjaxResult outMakeSure(String trayCode) {
|
public AjaxResult outMakeSure(@RequestBody TrayCodeMakeSure trayCodeMakeSure) {
|
||||||
return pdaService.outMakeSure(trayCode);
|
return pdaService.outMakeSure(trayCodeMakeSure);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,22 @@
|
|||||||
|
package com.ruoyi.pda.domain;
|
||||||
|
|
||||||
|
import com.ruoyi.job.mydojobdetail.domain.MydoJobDetail;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.ToString;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@ToString
|
||||||
|
public class TrayCodeMakeSure {
|
||||||
|
//托盘码
|
||||||
|
private String trayCode;
|
||||||
|
//容器码
|
||||||
|
private String containerCode;
|
||||||
|
//拣选列表
|
||||||
|
private List<MydoJobDetail> mydoJobDetailList;
|
||||||
|
}
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
package com.ruoyi.pda.service;
|
package com.ruoyi.pda.service;
|
||||||
|
|
||||||
import com.ruoyi.common.core.domain.AjaxResult;
|
import com.ruoyi.common.core.domain.AjaxResult;
|
||||||
|
import com.ruoyi.pda.domain.TrayCodeMakeSure;
|
||||||
import com.ruoyi.pda.domain.TrayCodeMsg;
|
import com.ruoyi.pda.domain.TrayCodeMsg;
|
||||||
import org.apache.poi.ss.formula.functions.T;
|
import org.apache.poi.ss.formula.functions.T;
|
||||||
import org.aspectj.weaver.loadtime.Aj;
|
import org.aspectj.weaver.loadtime.Aj;
|
||||||
@@ -22,5 +23,5 @@ public interface PdaService {
|
|||||||
public AjaxResult addInJob(TrayCodeMsg trayCodeMsg);
|
public AjaxResult addInJob(TrayCodeMsg trayCodeMsg);
|
||||||
|
|
||||||
|
|
||||||
AjaxResult outMakeSure(String trayCode);
|
AjaxResult outMakeSure(TrayCodeMakeSure trayCodeMakeSure);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,14 +1,32 @@
|
|||||||
package com.ruoyi.pda.service;
|
package com.ruoyi.pda.service;
|
||||||
|
|
||||||
|
import cn.hutool.core.collection.CollUtil;
|
||||||
|
import cn.hutool.core.convert.Convert;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import com.ruoyi.bas.cargoSpace.domain.BasCargoSpace;
|
import com.ruoyi.bas.cargoSpace.domain.BasCargoSpace;
|
||||||
import com.ruoyi.bas.cargoSpace.service.IBasCargoSpaceService;
|
import com.ruoyi.bas.cargoSpace.service.IBasCargoSpaceService;
|
||||||
import com.ruoyi.common.core.domain.AjaxResult;
|
import com.ruoyi.common.core.domain.AjaxResult;
|
||||||
|
import com.ruoyi.job.mydojob.domain.MydoJob;
|
||||||
|
import com.ruoyi.job.mydojob.service.IMydoJobService;
|
||||||
|
import com.ruoyi.job.mydojobdetail.domain.MydoJobDetail;
|
||||||
|
import com.ruoyi.job.mydojobdetail.service.IMydoJobDetailService;
|
||||||
|
import com.ruoyi.common.core.domain.entity.SysRole;
|
||||||
|
import com.ruoyi.common.utils.SecurityUtils;
|
||||||
|
import com.ruoyi.in.stockin.service.IInStockinService;
|
||||||
|
import com.ruoyi.in.stockindetail.domain.InStockinDetail;
|
||||||
|
import com.ruoyi.in.stockindetail.service.IInStockinDetailService;
|
||||||
|
import com.ruoyi.pda.domain.TrayCodeMakeSure;
|
||||||
import com.ruoyi.pda.domain.TrayCodeMsg;
|
import com.ruoyi.pda.domain.TrayCodeMsg;
|
||||||
import com.ruoyi.pda.mapper.PdaMapper;
|
import com.ruoyi.pda.mapper.PdaMapper;
|
||||||
|
import com.ruoyi.pda.trayMsg.domain.TrayMsg;
|
||||||
|
import com.ruoyi.pda.trayMsg.service.ITrayMsgService;
|
||||||
|
import com.ruoyi.system.service.ISysRoleService;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -16,9 +34,20 @@ import java.util.List;
|
|||||||
@Service
|
@Service
|
||||||
public class PdaServiceImp implements PdaService{
|
public class PdaServiceImp implements PdaService{
|
||||||
@Autowired
|
@Autowired
|
||||||
PdaMapper pdaMapper;
|
private PdaMapper pdaMapper;
|
||||||
@Autowired
|
@Autowired
|
||||||
IBasCargoSpaceService basCargoSpaceService;
|
private IBasCargoSpaceService basCargoSpaceService;
|
||||||
|
@Autowired
|
||||||
|
private IMydoJobDetailService mydoJobDetailService;;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private IMydoJobService mydoJobService;;
|
||||||
|
@Autowired
|
||||||
|
ISysRoleService sysRoleService;
|
||||||
|
@Autowired
|
||||||
|
IInStockinDetailService inStockinDetailService;
|
||||||
|
@Autowired
|
||||||
|
ITrayMsgService trayMsgService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 空托盘入库
|
* 空托盘入库
|
||||||
@@ -94,6 +123,32 @@ public class PdaServiceImp implements PdaService{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public AjaxResult bindTrayMsg(TrayCodeMsg trayCodeMsg) {
|
public AjaxResult bindTrayMsg(TrayCodeMsg trayCodeMsg) {
|
||||||
|
//判断用户的仓库权限
|
||||||
|
List<SysRole> roles = sysRoleService.selectRolesByUserId(SecurityUtils.getUserId());
|
||||||
|
if (!roles.stream().anyMatch(SysRole::isAdmin)){
|
||||||
|
|
||||||
|
for (SysRole role : roles) {
|
||||||
|
if (CollUtil.isNotEmpty(role.getWarehouseDataScope())){
|
||||||
|
InStockinDetail inStockinDetail = inStockinDetailService.selectStockinByDetailById(trayCodeMsg.getStockinDetailId());
|
||||||
|
if(!role.getWarehouseDataScope().stream().anyMatch(warehouseId -> warehouseId.equals(inStockinDetail.getWarehouseId()))){
|
||||||
|
return AjaxResult.warn("此用户无权限操作该仓库物料");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
//判断与已绑定物料是否为同一仓库
|
||||||
|
TrayMsg trayMsg = new TrayMsg();
|
||||||
|
trayMsg.setTrayCode(trayCodeMsg.getTrayCode());
|
||||||
|
List<TrayMsg> trayMsgs = trayMsgService.selectTrayMsgList(trayMsg);
|
||||||
|
if(trayMsgs.size()>0){
|
||||||
|
InStockinDetail inStockinDetail = inStockinDetailService.selectStockinByDetailById(trayCodeMsg.getStockinDetailId());
|
||||||
|
if(!trayMsgs.get(0).getWarehouseId().equals(inStockinDetail.getWarehouseId())){
|
||||||
|
return AjaxResult.warn("同一托盘不能绑定不同仓库的物料");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
HashMap<String, Object> map = new HashMap<>();
|
HashMap<String, Object> map = new HashMap<>();
|
||||||
map.put("v_tray_code", trayCodeMsg.getTrayCode());
|
map.put("v_tray_code", trayCodeMsg.getTrayCode());
|
||||||
map.put("v_stockin_detail_id", trayCodeMsg.getStockinDetailId());
|
map.put("v_stockin_detail_id", trayCodeMsg.getStockinDetailId());
|
||||||
@@ -112,9 +167,8 @@ public class PdaServiceImp implements PdaService{
|
|||||||
public AjaxResult addInJob(TrayCodeMsg trayCodeMsg) {
|
public AjaxResult addInJob(TrayCodeMsg trayCodeMsg) {
|
||||||
HashMap<String, Object> map = new HashMap<>();
|
HashMap<String, Object> map = new HashMap<>();
|
||||||
map.put("v_tray_code", trayCodeMsg.getTrayCode());
|
map.put("v_tray_code", trayCodeMsg.getTrayCode());
|
||||||
map.put("v_warehouse_id", trayCodeMsg.getWarehouseId());
|
// map.put("v_warehouse_id", trayCodeMsg.getWarehouseId());
|
||||||
map.put("v_cargo_space_id", trayCodeMsg.getCargoSpaceId());
|
map.put("v_cargo_space_id", trayCodeMsg.getCargoSpaceId());
|
||||||
map.put("v_entrance_id", trayCodeMsg.getEntranceId());
|
|
||||||
pdaMapper.addInJob(map);
|
pdaMapper.addInJob(map);
|
||||||
String result = map.get("v_result").toString();
|
String result = map.get("v_result").toString();
|
||||||
if("10".equals(result)){
|
if("10".equals(result)){
|
||||||
@@ -126,9 +180,37 @@ public class PdaServiceImp implements PdaService{
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public AjaxResult outMakeSure(String trayCode) {
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public AjaxResult outMakeSure(TrayCodeMakeSure trayCodeMakeSure) {
|
||||||
|
//修改拣选数量
|
||||||
|
List<MydoJobDetail> mydoJobDetailList = trayCodeMakeSure.getMydoJobDetailList();
|
||||||
|
for (MydoJobDetail mydoJobDetail : mydoJobDetailList) {
|
||||||
|
MydoJobDetail mydoJobDetailOld = mydoJobDetailService.selectMydoJobDetailByJobDetailId(mydoJobDetail.getJobDetailId());
|
||||||
|
BigDecimal oldPickQuantity = Convert.toBigDecimal(mydoJobDetailOld.getPickQuantity());
|
||||||
|
BigDecimal newPickQuantity = Convert.toBigDecimal(mydoJobDetail.getPickQuantity());
|
||||||
|
mydoJobDetail.setPickQuantity(oldPickQuantity.add(newPickQuantity).toString());
|
||||||
|
mydoJobDetailService.updateMydoJobDetail(mydoJobDetail);
|
||||||
|
}
|
||||||
|
|
||||||
|
//查询当前任务是否已经全部拣选完成
|
||||||
|
MydoJob mydoJobParam = new MydoJob();
|
||||||
|
mydoJobParam.setTrayCode(trayCodeMakeSure.getTrayCode());
|
||||||
|
List<MydoJob> mydoJobList = mydoJobService.selectMydoJobList(mydoJobParam);
|
||||||
|
if (CollUtil.isEmpty(mydoJobList)){
|
||||||
|
return AjaxResult.warn("任务不存在");
|
||||||
|
}
|
||||||
|
|
||||||
|
MydoJobDetail mydoJobDetailParam = new MydoJobDetail();
|
||||||
|
mydoJobDetailParam.setJobId(mydoJobList.get(0).getJobId());
|
||||||
|
List<MydoJobDetail> mydoJobDetails = mydoJobDetailService.selectMydoJobDetailList(mydoJobDetailParam);
|
||||||
|
if (CollUtil.isEmpty(mydoJobDetails)){
|
||||||
|
return AjaxResult.warn("子任务不存在");
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean flag = mydoJobDetails.stream().allMatch(mydoJobDetail -> mydoJobDetail.getPickQuantity().equals(mydoJobDetail.getOutQuantity()));
|
||||||
|
if (flag){
|
||||||
HashMap<String, Object> map = new HashMap<>();
|
HashMap<String, Object> map = new HashMap<>();
|
||||||
map.put("v_tray_code", trayCode);
|
map.put("v_tray_code", trayCodeMakeSure.getTrayCode());
|
||||||
pdaMapper.outMakeSure(map);
|
pdaMapper.outMakeSure(map);
|
||||||
String result = map.get("v_result").toString();
|
String result = map.get("v_result").toString();
|
||||||
if("10".equals(result)){
|
if("10".equals(result)){
|
||||||
@@ -136,5 +218,8 @@ public class PdaServiceImp implements PdaService{
|
|||||||
}else{
|
}else{
|
||||||
return AjaxResult.warn(map.get("v_resultmsg").toString());
|
return AjaxResult.warn(map.get("v_resultmsg").toString());
|
||||||
}
|
}
|
||||||
|
}else {
|
||||||
|
return AjaxResult.warn("拣选完成");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,6 +32,36 @@ public class TrayMsg extends BaseEntity
|
|||||||
|
|
||||||
private String productName;
|
private String productName;
|
||||||
|
|
||||||
|
private String warehouseId;
|
||||||
|
|
||||||
|
private String warehouseName;
|
||||||
|
|
||||||
|
private String warehouseType;
|
||||||
|
|
||||||
|
public String getWarehouseType() {
|
||||||
|
return warehouseType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setWarehouseType(String warehouseType) {
|
||||||
|
this.warehouseType = warehouseType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getWarehouseId() {
|
||||||
|
return warehouseId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setWarehouseId(String warehouseId) {
|
||||||
|
this.warehouseId = warehouseId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getWarehouseName() {
|
||||||
|
return warehouseName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setWarehouseName(String warehouseName) {
|
||||||
|
this.warehouseName = warehouseName;
|
||||||
|
}
|
||||||
|
|
||||||
public String getProductName() {
|
public String getProductName() {
|
||||||
return productName;
|
return productName;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,21 +23,32 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<select id="selectBasWarehouseList" parameterType="BasWarehouse" resultMap="BasWarehouseResult">
|
<select id="selectBasWarehouseList" parameterType="BasWarehouse" resultMap="BasWarehouseResult">
|
||||||
<include refid="selectBasWarehouseVo"/>
|
<include refid="selectBasWarehouseVo"/>
|
||||||
<where>
|
<where>
|
||||||
<if test="warehouseId != null and warehouseId != ''"> and warehouse_id = #{warehouseId}</if>
|
<if test="warehouseId != null and warehouseId != ''">and warehouse_id = #{warehouseId}</if>
|
||||||
<if test="warehouseNo != null and warehouseNo != ''"> and warehouse_no = #{warehouseNo}</if>
|
<if test="warehouseNo != null and warehouseNo != ''">and warehouse_no = #{warehouseNo}</if>
|
||||||
<if test="projectNo != null and projectNo != ''"> and project_no = #{projectNo}</if>
|
<if test="projectNo != null and projectNo != ''">and project_no = #{projectNo}</if>
|
||||||
<if test="warehouseName != null and warehouseName != ''"> and warehouse_name like concat('%', #{warehouseName}, '%')</if>
|
<if test="warehouseName != null and warehouseName != ''">and warehouse_name like concat('%',
|
||||||
<if test="address != null and address != ''"> and address = #{address}</if>
|
#{warehouseName}, '%')
|
||||||
<if test="cDesc != null and cDesc != ''"> and c_desc = #{cDesc}</if>
|
</if>
|
||||||
<if test="warehouseKind != null and warehouseKind != ''"> and warehouse_kind = #{warehouseKind}</if>
|
<if test="address != null and address != ''">and address = #{address}</if>
|
||||||
<if test="warehouseType != null and warehouseType != ''"> and warehouse_type = #{warehouseType}</if>
|
<if test="cDesc != null and cDesc != ''">and c_desc = #{cDesc}</if>
|
||||||
<if test="isCurrent != null and isCurrent != ''"> and is_current = #{isCurrent}</if>
|
<if test="warehouseKind != null and warehouseKind != ''">and warehouse_kind = #{warehouseKind}</if>
|
||||||
|
<if test="warehouseType != null and warehouseType != ''">and warehouse_type = #{warehouseType}</if>
|
||||||
|
<if test="isCurrent != null and isCurrent != ''">and is_current = #{isCurrent}</if>
|
||||||
<if test="dataScope !=null and dataScope.size()>0">
|
<if test="dataScope !=null and dataScope.size()>0">
|
||||||
and warehouse_id in
|
and warehouse_id in
|
||||||
<foreach item="item" index="index" collection="dataScope" open="(" separator="," close=")">
|
<foreach item="item" index="index" collection="dataScope" open="(" separator="," close=")">
|
||||||
#{item}
|
#{item}
|
||||||
</foreach>
|
</foreach>
|
||||||
</if>
|
</if>
|
||||||
|
<if test="typeData != null and typeData.size()>0">
|
||||||
|
and warehouse_type in
|
||||||
|
<foreach item="item" index="index" collection="typeData" open="(" separator="," close=")">
|
||||||
|
#{item}
|
||||||
|
</foreach>
|
||||||
|
</if>
|
||||||
|
<if test="params.warehouseDataScope != null and params.warehouseDataScope !=''">
|
||||||
|
${params.warehouseDataScope}
|
||||||
|
</if>
|
||||||
</where>
|
</where>
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
@@ -98,8 +109,5 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
</foreach>
|
</foreach>
|
||||||
</delete>
|
</delete>
|
||||||
|
|
||||||
<select id="selectBasWarehouseListByType" resultMap="BasWarehouseResult">
|
|
||||||
<include refid="selectBasWarehouseVo"/>
|
|
||||||
where warehouse_type in (1,3)
|
|
||||||
</select>
|
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|||||||
@@ -35,6 +35,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<result property="scanNum" column="scan_num" />
|
<result property="scanNum" column="scan_num" />
|
||||||
<result property="scanNumX" column="scan_num_x" />
|
<result property="scanNumX" column="scan_num_x" />
|
||||||
<result property="scanNumJ" column="scan_num_j" />
|
<result property="scanNumJ" column="scan_num_j" />
|
||||||
|
<result property="warehouseName" column="warehouse_name" />
|
||||||
|
<result property="warehouseId" column="warehouse_id" />
|
||||||
<association property="extraField" javaType="ExtraField">
|
<association property="extraField" javaType="ExtraField">
|
||||||
<result property="productId" column="product_id" />
|
<result property="productId" column="product_id" />
|
||||||
<result property="materialDesc" column="product_name" />
|
<result property="materialDesc" column="product_name" />
|
||||||
@@ -301,10 +303,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
isd.supplier_id, isd.customer_id, isd.unit, isd.spec, isd.spare1, isd.spare2, isd.spare3, isd.spare4,
|
isd.supplier_id, isd.customer_id, isd.unit, isd.spec, isd.spare1, isd.spare2, isd.spare3, isd.spare4,
|
||||||
isd.spare5, isd.spare6, isd.scan_num, isd.scan_num_x, isd.scan_num_j,
|
isd.spare5, isd.spare6, isd.scan_num, isd.scan_num_x, isd.scan_num_j,
|
||||||
bp.product_name, bp.spare1 as englishDesc,
|
bp.product_name, bp.spare1 as englishDesc,
|
||||||
bp.spare2 as netWeight,bp.spare5 as length,bp.spare6 as width,bp.spare7 as height,bp.spare8 as volume
|
bp.spare2 as netWeight,bp.spare5 as length,bp.spare6 as width,bp.spare7 as height,bp.spare8 as volume,bw.warehouse_name,ist.warehouse_id
|
||||||
from in_stockin_detail isd
|
from in_stockin_detail isd
|
||||||
left join bas_product bp on bp.product_id = isd.product_id
|
left join bas_product bp on bp.product_id = isd.product_id
|
||||||
left join in_stockin ist on ist.stockin_guid = isd.stockin_guid
|
left join in_stockin ist on ist.stockin_guid = isd.stockin_guid
|
||||||
|
left join bas_warehouse bw on bw.warehouse_id = ist.warehouse_id
|
||||||
<where>
|
<where>
|
||||||
<if test="stockinDetailId != null and stockinDetailId != '' ">
|
<if test="stockinDetailId != null and stockinDetailId != '' ">
|
||||||
isd.stockin_detail_id = #{stockinDetailId}
|
isd.stockin_detail_id = #{stockinDetailId}
|
||||||
|
|||||||
@@ -95,6 +95,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
where lot_no like concat('%',#{lotNo},'%')
|
where lot_no like concat('%',#{lotNo},'%')
|
||||||
)
|
)
|
||||||
</if>
|
</if>
|
||||||
|
<if test="params.warehouseDataScope != null and params.warehouseDataScope !=''">
|
||||||
|
${params.warehouseDataScope}
|
||||||
|
</if>
|
||||||
</where>
|
</where>
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<result property="spare2" column="spare2" />
|
<result property="spare2" column="spare2" />
|
||||||
<result property="spare3" column="spare3" />
|
<result property="spare3" column="spare3" />
|
||||||
<result property="spare4" column="spare4" />
|
<result property="spare4" column="spare4" />
|
||||||
|
<result property="pickQuantity" column="pick_quantity" />
|
||||||
<association property="extraField" javaType="ExtraField">
|
<association property="extraField" javaType="ExtraField">
|
||||||
<result property="productId" column="product_id" />
|
<result property="productId" column="product_id" />
|
||||||
<result property="materialDesc" column="product_name" />
|
<result property="materialDesc" column="product_name" />
|
||||||
@@ -70,6 +71,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
mjd.spare2,
|
mjd.spare2,
|
||||||
mjd.spare3,
|
mjd.spare3,
|
||||||
mjd.spare4,
|
mjd.spare4,
|
||||||
|
mjd.pick_quantity,
|
||||||
bp.product_name, bp.spare1 as englishDesc,
|
bp.product_name, bp.spare1 as englishDesc,
|
||||||
bp.spare2 as netWeight,bp.spare5 as length,bp.spare6 as width,bp.spare7 as height,bp.spare8 as volume
|
bp.spare2 as netWeight,bp.spare5 as length,bp.spare6 as width,bp.spare7 as height,bp.spare8 as volume
|
||||||
|
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<result property="spare2" column="spare2" />
|
<result property="spare2" column="spare2" />
|
||||||
<result property="spare3" column="spare3" />
|
<result property="spare3" column="spare3" />
|
||||||
<result property="spare4" column="spare4" />
|
<result property="spare4" column="spare4" />
|
||||||
|
<result property="pickQuantity" column="pick_quantity" />
|
||||||
<association property="extraField" javaType="ExtraField">
|
<association property="extraField" javaType="ExtraField">
|
||||||
<result property="productId" column="product_id" />
|
<result property="productId" column="product_id" />
|
||||||
<result property="materialDesc" column="product_name" />
|
<result property="materialDesc" column="product_name" />
|
||||||
@@ -70,6 +71,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
mjd.spare2,
|
mjd.spare2,
|
||||||
mjd.spare3,
|
mjd.spare3,
|
||||||
mjd.spare4,
|
mjd.spare4,
|
||||||
|
mjd.pick_quantity,
|
||||||
bp.product_name, bp.spare1 as englishDesc,
|
bp.product_name, bp.spare1 as englishDesc,
|
||||||
bp.spare2 as netWeight,bp.spare5 as length,bp.spare6 as width,bp.spare7 as height,bp.spare8 as volume
|
bp.spare2 as netWeight,bp.spare5 as length,bp.spare6 as width,bp.spare7 as height,bp.spare8 as volume
|
||||||
|
|
||||||
@@ -146,6 +148,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<if test="spare2 != null">spare2,</if>
|
<if test="spare2 != null">spare2,</if>
|
||||||
<if test="spare3 != null">spare3,</if>
|
<if test="spare3 != null">spare3,</if>
|
||||||
<if test="spare4 != null">spare4,</if>
|
<if test="spare4 != null">spare4,</if>
|
||||||
|
<if test="pickQuantity != null">pick_quantity,</if>
|
||||||
</trim>
|
</trim>
|
||||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||||
<if test="jobDetailId != null and jobDetailId != ''">#{jobDetailId},</if>
|
<if test="jobDetailId != null and jobDetailId != ''">#{jobDetailId},</if>
|
||||||
@@ -174,6 +177,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<if test="spare2 != null">#{spare2},</if>
|
<if test="spare2 != null">#{spare2},</if>
|
||||||
<if test="spare3 != null">#{spare3},</if>
|
<if test="spare3 != null">#{spare3},</if>
|
||||||
<if test="spare4 != null">#{spare4},</if>
|
<if test="spare4 != null">#{spare4},</if>
|
||||||
|
<if test="pickQuantity != null">#{pick_quantity},</if>
|
||||||
</trim>
|
</trim>
|
||||||
</insert>
|
</insert>
|
||||||
<insert id="insertHistory">
|
<insert id="insertHistory">
|
||||||
@@ -208,6 +212,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<if test="spare2 != null">spare2 = #{spare2},</if>
|
<if test="spare2 != null">spare2 = #{spare2},</if>
|
||||||
<if test="spare3 != null">spare3 = #{spare3},</if>
|
<if test="spare3 != null">spare3 = #{spare3},</if>
|
||||||
<if test="spare4 != null">spare4 = #{spare4},</if>
|
<if test="spare4 != null">spare4 = #{spare4},</if>
|
||||||
|
<if test="pickQuantity != null">pick_quantity = #{pickQuantity},</if>
|
||||||
</trim>
|
</trim>
|
||||||
where job_detail_id = #{jobDetailId}
|
where job_detail_id = #{jobDetailId}
|
||||||
</update>
|
</update>
|
||||||
|
|||||||
@@ -10,16 +10,20 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<result property="stockinDetailId" column="stockin_detail_id" />
|
<result property="stockinDetailId" column="stockin_detail_id" />
|
||||||
<result property="quantity" column="quantity" />
|
<result property="quantity" column="quantity" />
|
||||||
<result property="productName" column="product_name" />
|
<result property="productName" column="product_name" />
|
||||||
|
<result property="warehouseId" column="warehouse_id" />
|
||||||
|
<result property="warehouseName" column="warehouse_name" />
|
||||||
|
<result property="warehouseType" column="warehouse_type" />
|
||||||
</resultMap>
|
</resultMap>
|
||||||
|
|
||||||
<sql id="selectTrayMsgVo">
|
<sql id="selectTrayMsgVo">
|
||||||
select id, tray_code, stockin_detail_id, quantity from tray_msg
|
select id, tray_code, stockin_detail_id, quantity,warehouse_id from tray_msg
|
||||||
</sql>
|
</sql>
|
||||||
|
|
||||||
<select id="selectTrayMsgList" parameterType="TrayMsg" resultMap="TrayMsgResult">
|
<select id="selectTrayMsgList" parameterType="TrayMsg" resultMap="TrayMsgResult">
|
||||||
select t.id, t.tray_code, t.stockin_detail_id, t.quantity,p.product_name from tray_msg t
|
select t.id, t.tray_code, t.stockin_detail_id, t.quantity,p.product_name,t.warehouse_id,w.warehouse_name,w.warehouse_type from tray_msg t
|
||||||
left join in_stockin_detail d on t.stockin_detail_id = d.stockin_detail_id
|
left join in_stockin_detail d on t.stockin_detail_id = d.stockin_detail_id
|
||||||
left join bas_product p on d.product_id=p.product_id
|
left join bas_product p on d.product_id=p.product_id
|
||||||
|
left join bas_warehouse w on t.warehouse_id=w.warehouse_id
|
||||||
<where>
|
<where>
|
||||||
<if test="trayCode != null and trayCode != ''"> and t.tray_code = #{trayCode}</if>
|
<if test="trayCode != null and trayCode != ''"> and t.tray_code = #{trayCode}</if>
|
||||||
<if test="stockinDetailId != null and stockinDetailId != ''"> and t.stockin_detail_id = #{stockinDetailId}</if>
|
<if test="stockinDetailId != null and stockinDetailId != ''"> and t.stockin_detail_id = #{stockinDetailId}</if>
|
||||||
@@ -39,12 +43,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<if test="trayCode != null">tray_code,</if>
|
<if test="trayCode != null">tray_code,</if>
|
||||||
<if test="stockinDetailId != null">stockin_detail_id,</if>
|
<if test="stockinDetailId != null">stockin_detail_id,</if>
|
||||||
<if test="quantity != null">quantity,</if>
|
<if test="quantity != null">quantity,</if>
|
||||||
|
<if test="warehouseId != null">warehouse_id,</if>
|
||||||
</trim>
|
</trim>
|
||||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||||
<if test="id != null">#{id},</if>
|
<if test="id != null">#{id},</if>
|
||||||
<if test="trayCode != null">#{trayCode},</if>
|
<if test="trayCode != null">#{trayCode},</if>
|
||||||
<if test="stockinDetailId != null">#{stockinDetailId},</if>
|
<if test="stockinDetailId != null">#{stockinDetailId},</if>
|
||||||
<if test="quantity != null">#{quantity},</if>
|
<if test="quantity != null">#{quantity},</if>
|
||||||
|
<if test="warehouseId != null">#{warehouseId},</if>
|
||||||
</trim>
|
</trim>
|
||||||
</insert>
|
</insert>
|
||||||
|
|
||||||
|
|||||||
@@ -26,6 +26,11 @@ public @interface DataScope
|
|||||||
*/
|
*/
|
||||||
public String userAlias() default "";
|
public String userAlias() default "";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 仓库表的别名
|
||||||
|
*/
|
||||||
|
public String warehouseAlias() default "";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 权限字符(用于多个角色匹配符合要求的权限)默认根据权限注解@ss获取,多个权限用逗号分隔开来
|
* 权限字符(用于多个角色匹配符合要求的权限)默认根据权限注解@ss获取,多个权限用逗号分隔开来
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -58,6 +58,7 @@ public class DataScopeAspect
|
|||||||
* 数据权限过滤关键字
|
* 数据权限过滤关键字
|
||||||
*/
|
*/
|
||||||
public static final String DATA_SCOPE = "dataScope";
|
public static final String DATA_SCOPE = "dataScope";
|
||||||
|
public static final String WAREHOUSE_DATA_SCOPE = "warehouseDataScope";
|
||||||
|
|
||||||
@Before("@annotation(controllerDataScope)")
|
@Before("@annotation(controllerDataScope)")
|
||||||
public void doBefore(JoinPoint point, DataScope controllerDataScope) throws Throwable
|
public void doBefore(JoinPoint point, DataScope controllerDataScope) throws Throwable
|
||||||
@@ -77,7 +78,7 @@ public class DataScopeAspect
|
|||||||
if (StringUtils.isNotNull(currentUser) && !currentUser.isAdmin())
|
if (StringUtils.isNotNull(currentUser) && !currentUser.isAdmin())
|
||||||
{
|
{
|
||||||
String permission = StringUtils.defaultIfEmpty(controllerDataScope.permission(), PermissionContextHolder.getContext());
|
String permission = StringUtils.defaultIfEmpty(controllerDataScope.permission(), PermissionContextHolder.getContext());
|
||||||
dataScopeFilter(joinPoint, currentUser, controllerDataScope.deptAlias(), controllerDataScope.userAlias(), permission);
|
dataScopeFilter(joinPoint, currentUser, controllerDataScope.deptAlias(), controllerDataScope.userAlias(),controllerDataScope.warehouseAlias(), permission);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -91,7 +92,7 @@ public class DataScopeAspect
|
|||||||
* @param userAlias 用户别名
|
* @param userAlias 用户别名
|
||||||
* @param permission 权限字符
|
* @param permission 权限字符
|
||||||
*/
|
*/
|
||||||
public static void dataScopeFilter(JoinPoint joinPoint, SysUser user, String deptAlias, String userAlias, String permission)
|
public static void dataScopeFilter(JoinPoint joinPoint, SysUser user, String deptAlias, String userAlias,String warehouseAlias, String permission)
|
||||||
{
|
{
|
||||||
StringBuilder sqlString = new StringBuilder();
|
StringBuilder sqlString = new StringBuilder();
|
||||||
List<String> conditions = new ArrayList<String>();
|
List<String> conditions = new ArrayList<String>();
|
||||||
@@ -170,6 +171,31 @@ public class DataScopeAspect
|
|||||||
baseEntity.getParams().put(DATA_SCOPE, " AND (" + sqlString.substring(4) + ")");
|
baseEntity.getParams().put(DATA_SCOPE, " AND (" + sqlString.substring(4) + ")");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Object params = joinPoint.getArgs()[0];
|
||||||
|
List<String> warehouseList = new ArrayList<String>();
|
||||||
|
StringBuilder warehouseSqlString = new StringBuilder();
|
||||||
|
for (SysRole role : user.getRoles()) {
|
||||||
|
warehouseList.addAll(role.getWarehouseDataScope());
|
||||||
|
if (role.isAdmin()){
|
||||||
|
BaseEntity baseEntity = (BaseEntity) params;
|
||||||
|
if (StringUtils.isNotEmpty(warehouseAlias)) {
|
||||||
|
baseEntity.getParams().put(WAREHOUSE_DATA_SCOPE, "");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
warehouseSqlString.append(StringUtils.format(" OR {}.warehouse_id IN ({}) ", warehouseAlias,
|
||||||
|
warehouseList.stream().map(s -> "'" + s + "'").collect(Collectors.joining(","))));
|
||||||
|
|
||||||
|
|
||||||
|
if (StringUtils.isNotNull(params) && params instanceof BaseEntity) {
|
||||||
|
BaseEntity baseEntity = (BaseEntity) params;
|
||||||
|
if (StringUtils.isNotEmpty(warehouseAlias)){
|
||||||
|
baseEntity.getParams().put(WAREHOUSE_DATA_SCOPE, " AND (" + warehouseSqlString.substring(4) + ")");
|
||||||
|
}else {
|
||||||
|
baseEntity.getParams().put(WAREHOUSE_DATA_SCOPE, " AND (" + warehouseSqlString.substring(5) + ")");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import java.util.stream.Collectors;
|
|||||||
import javax.validation.Validator;
|
import javax.validation.Validator;
|
||||||
|
|
||||||
import cn.hutool.core.util.IdUtil;
|
import cn.hutool.core.util.IdUtil;
|
||||||
|
import com.ruoyi.system.mapper.*;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
@@ -24,11 +25,6 @@ import com.ruoyi.common.utils.spring.SpringUtils;
|
|||||||
import com.ruoyi.system.domain.SysPost;
|
import com.ruoyi.system.domain.SysPost;
|
||||||
import com.ruoyi.system.domain.SysUserPost;
|
import com.ruoyi.system.domain.SysUserPost;
|
||||||
import com.ruoyi.system.domain.SysUserRole;
|
import com.ruoyi.system.domain.SysUserRole;
|
||||||
import com.ruoyi.system.mapper.SysPostMapper;
|
|
||||||
import com.ruoyi.system.mapper.SysRoleMapper;
|
|
||||||
import com.ruoyi.system.mapper.SysUserMapper;
|
|
||||||
import com.ruoyi.system.mapper.SysUserPostMapper;
|
|
||||||
import com.ruoyi.system.mapper.SysUserRoleMapper;
|
|
||||||
import com.ruoyi.system.service.ISysConfigService;
|
import com.ruoyi.system.service.ISysConfigService;
|
||||||
import com.ruoyi.system.service.ISysDeptService;
|
import com.ruoyi.system.service.ISysDeptService;
|
||||||
import com.ruoyi.system.service.ISysUserService;
|
import com.ruoyi.system.service.ISysUserService;
|
||||||
@@ -66,6 +62,8 @@ public class SysUserServiceImpl implements ISysUserService
|
|||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
protected Validator validator;
|
protected Validator validator;
|
||||||
|
@Autowired
|
||||||
|
private SysRoleWarehouseMapper roleWarehouseMapper;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据条件分页查询用户列表
|
* 根据条件分页查询用户列表
|
||||||
@@ -115,7 +113,11 @@ public class SysUserServiceImpl implements ISysUserService
|
|||||||
@Override
|
@Override
|
||||||
public SysUser selectUserByUserName(String userName)
|
public SysUser selectUserByUserName(String userName)
|
||||||
{
|
{
|
||||||
return userMapper.selectUserByUserName(userName);
|
SysUser sysUser = userMapper.selectUserByUserName(userName);
|
||||||
|
for (SysRole role : sysUser.getRoles()) {
|
||||||
|
role.setWarehouseDataScope(roleWarehouseMapper.selectRoleWarehouseByRoleId(role.getRoleId()));
|
||||||
|
}
|
||||||
|
return sysUser;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user