Merge remote-tracking branch 'origin/master'

This commit is contained in:
猫猫guowen
2025-06-10 11:34:36 +08:00
20 changed files with 252 additions and 46 deletions

View File

@@ -103,4 +103,6 @@ public class BasCargoSpaceController extends BaseController
{
return toAjax(basCargoSpaceService.deleteBasCargoSpaceByCargoSpaceIds(cargoSpaceIds));
}
}

View File

@@ -60,4 +60,6 @@ public interface BasCargoSpaceMapper extends BaseMapper<BasCargoSpace>
* @return 结果
*/
public int deleteBasCargoSpaceByCargoSpaceIds(String[] cargoSpaceIds);
}

View File

@@ -60,4 +60,6 @@ public interface IBasCargoSpaceService extends IService<BasCargoSpace>
* @return 结果
*/
public int deleteBasCargoSpaceByCargoSpaceId(String cargoSpaceId);
}

View File

@@ -10,6 +10,7 @@ import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.sql.Wrapper;
import java.util.Collections;
import java.util.List;
/**
@@ -95,4 +96,6 @@ public class BasCargoSpaceServiceImpl extends ServiceImpl<BasCargoSpaceMapper,Ba
{
return basCargoSpaceMapper.deleteBasCargoSpaceByCargoSpaceId(cargoSpaceId);
}
}

View File

@@ -60,4 +60,6 @@ public interface InStockinMapper
public int deleteInStockinByStockinGuids(String[] stockinGuids);
void insertInStockinHistory(InStockin inStockin);
List<InStockin> selectStockinByDetail(String stockinDetailId);
}

View File

@@ -60,4 +60,6 @@ public interface IInStockinService
* @return 结果
*/
public int deleteInStockinByStockinGuid(String stockinGuid);
public List<InStockin> selectStockinByDetail(String stockinDetailId);
}

View File

@@ -1,6 +1,7 @@
package com.ruoyi.in.stockin.service.impl;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import cn.hutool.core.collection.CollUtil;
@@ -147,4 +148,9 @@ public class InStockinServiceImpl implements IInStockinService
{
return inStockinMapper.deleteInStockinByStockinGuid(stockinGuid);
}
@Override
public List<InStockin> selectStockinByDetail(String stockinDetailId) {
return inStockinMapper.selectStockinByDetail(stockinDetailId);
}
}

View File

@@ -1,5 +1,9 @@
package com.ruoyi.pda.controller;
import cn.hutool.core.util.StrUtil;
import com.ruoyi.bas.cargoSpace.service.IBasCargoSpaceService;
import com.ruoyi.bas.warehouse.domain.BasWarehouse;
import com.ruoyi.bas.warehouse.service.IBasWarehouseService;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.page.TableDataInfo;
@@ -7,12 +11,15 @@ import com.ruoyi.in.stockin.domain.InStockin;
import com.ruoyi.in.stockin.service.IInStockinService;
import com.ruoyi.pda.domain.TrayCodeMsg;
import com.ruoyi.pda.service.PdaService;
import io.swagger.v3.oas.annotations.parameters.RequestBody;
import com.ruoyi.stock.stock.domain.BasStock;
import com.ruoyi.stock.stock.service.IBasStockService;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.HashMap;
import java.util.List;
import static com.ruoyi.common.utils.PageUtils.startPage;
@@ -25,6 +32,10 @@ public class PdaController extends BaseController {
private PdaService pdaService;
@Autowired
private IInStockinService inStockinService;
@Autowired
private IBasStockService basStockService;
@Autowired
private IBasWarehouseService basWarehouseService;
/**
* 空托盘入库
@@ -34,8 +45,16 @@ public class PdaController extends BaseController {
@RequestMapping("/emptyTrayIn")
@ResponseBody
public AjaxResult emptyTrayIn(@RequestBody TrayCodeMsg trayCodeMsg) {
AjaxResult ajaxResult = pdaService.emptyTrayIn(trayCodeMsg);
return ajaxResult;
BasWarehouse basWarehouse = basWarehouseService.selectBasWarehouseByWarehouseId(trayCodeMsg.getWarehouseId());
if(basWarehouse==null){
return AjaxResult.error("仓库不存在");
}else{
if("1".equals(basWarehouse.getWarehouseType()) && StrUtil.isEmpty(trayCodeMsg.getCargoSpaceId())){
return AjaxResult.error("请选择高架库货位");
}
}
return pdaService.emptyTrayIn(trayCodeMsg);
}
/**
@@ -48,12 +67,61 @@ public class PdaController extends BaseController {
return ajaxResult;
}
/**
* 空托盘库存查询
* @param warehouseId
* @return
*/
@RequestMapping("/selectKTPStcok")
@ResponseBody
public AjaxResult selectKTPStcok(String warehouseId) {
List<BasStock> basStockList = basStockService.selectKtpStock(warehouseId);
if (basStockList.size() != 0) {
return AjaxResult.success(basStockList);
}else{
return AjaxResult.error("此区域没有空托盘库存");
}
}
/**
* 空托盘出库
* @param
* @return
*/
@RequestMapping("/emptyTrayOut")
@ResponseBody
public AjaxResult emptyTrayOut(@RequestBody TrayCodeMsg trayCodeMsg ) {
BasWarehouse basWarehouse = basWarehouseService.selectBasWarehouseByWarehouseId(trayCodeMsg.getWarehouseId());
if (basWarehouse == null){
return AjaxResult.error("仓库不存在");
}else{
if("1".equals(basWarehouse.getWarehouseType()) && StrUtil.isEmpty(trayCodeMsg.getCargoSpaceId())){
return AjaxResult.error("请选择高架库货位");
}
}
return pdaService.emptyTrayOut(trayCodeMsg);
}
/**
* 空料箱出库
* @param trayCodeMsg
* @return
*/
@RequestMapping("/emptyBoxOut")
@ResponseBody
public AjaxResult emptyBoxOut(@RequestBody TrayCodeMsg trayCodeMsg) {
return pdaService.emptyBoxOut(trayCodeMsg);
}
@RequestMapping("/inorder/list")
@ResponseBody
public TableDataInfo inoderList(InStockin stockin) {
startPage();
List<InStockin> stockins = inStockinService.selectInStockinList(stockin);
return getDataTable(stockins);
public List<InStockin> inoderList(String stockinDetailId) {
List<InStockin> stockins = inStockinService.selectStockinByDetail(stockinDetailId);
return stockins;
}
}

View File

@@ -10,6 +10,26 @@ private String quantity;
private String entranceId;
private String cargoSpaceId;
private String exitId;
public String getExitId() {
return exitId;
}
public void setExitId(String exitId) {
this.exitId = exitId;
}
public String getCargoSpaceId() {
return cargoSpaceId;
}
public void setCargoSpaceId(String cargoSpaceId) {
this.cargoSpaceId = cargoSpaceId;
}
public String getEntranceId() {
return entranceId;
}

View File

@@ -7,4 +7,8 @@ public interface PdaMapper {
void emptyTrayIn(HashMap<String, Object> map);
void emptyBoxIn(HashMap<String, Object> map);
void emptyTrayOut(HashMap<String, Object> map);
void emptyBoxOut(HashMap<String, Object> map);
}

View File

@@ -2,10 +2,15 @@ package com.ruoyi.pda.service;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.pda.domain.TrayCodeMsg;
import org.apache.poi.ss.formula.functions.T;
public interface PdaService {
public AjaxResult emptyTrayIn(TrayCodeMsg trayCodeMsg);
public AjaxResult emptyBoxIn(TrayCodeMsg trayCodeMsg);
public AjaxResult emptyTrayOut(TrayCodeMsg trayCodeMsg);
public AjaxResult emptyBoxOut(TrayCodeMsg trayCodeMsg);
}

View File

@@ -28,15 +28,11 @@ public class PdaServiceImp implements PdaService{
map.put("v_tray_code", trayCodeMsg.getTrayCode());
map.put("v_warehouse_id", trayCodeMsg.getWarehouseId());
map.put("v_quantity", "1");
map.put("v_cargo_space_id", trayCodeMsg.getCargoSpaceId());
pdaMapper.emptyTrayIn(map);
String result = (String) map.get("v_result");
String cargoSpaceId = map.get("v_cargo_space_id").toString();
if(StrUtil.isNotEmpty(cargoSpaceId)){
BasCargoSpace basCargoSpace = basCargoSpaceService.selectBasCargoSpaceByCargoSpaceId(cargoSpaceId);
map.put("v_cargo_space_id", basCargoSpace.getCargoSpaceName());
}
String result = map.get("v_result").toString();
if("10".equals(result)){
return AjaxResult.success(map);
return AjaxResult.success(map.get("v_resultmsg").toString());
}else{
return AjaxResult.error(map.get("v_resultmsg").toString());
}
@@ -52,9 +48,10 @@ public class PdaServiceImp implements PdaService{
public AjaxResult emptyBoxIn(TrayCodeMsg trayCodeMsg) {
HashMap<String, Object> map = new HashMap<>();
map.put("v_tray_code", trayCodeMsg.getTrayCode());
map.put("v_warehouse_id", trayCodeMsg.getWarehouseId());
map.put("v_entrance_id", trayCodeMsg.getEntranceId());
pdaMapper.emptyBoxIn(map);
String result = (String) map.get("v_result");
String result = map.get("v_result").toString();
if("10".equals(result)){
return AjaxResult.success(map.get("v_resultmsg").toString());
}else{
@@ -63,5 +60,32 @@ public class PdaServiceImp implements PdaService{
}
@Override
public AjaxResult emptyTrayOut(TrayCodeMsg trayCodeMsg) {
HashMap<String, Object> map = new HashMap<>();
map.put("v_warehouse_id", trayCodeMsg.getWarehouseId());
map.put("v_cargo_space_id", trayCodeMsg.getCargoSpaceId());
pdaMapper.emptyTrayOut(map);
String result = map.get("v_result").toString();
if("10".equals(result)){
return AjaxResult.success(map.get("v_resultmsg").toString());
}else{
return AjaxResult.warn(map.get("v_resultmsg").toString());
}
}
@Override
public AjaxResult emptyBoxOut(TrayCodeMsg trayCodeMsg) {
HashMap<String, Object> map = new HashMap<>();
map.put("v_warehouse_id", trayCodeMsg.getWarehouseId());
map.put("v_exit_id", trayCodeMsg.getExitId());
pdaMapper.emptyBoxOut(map);
String result = map.get("v_result").toString();
if("10".equals(result)){
return AjaxResult.success(map.get("v_resultmsg").toString());
}else{
return AjaxResult.warn(map.get("v_resultmsg").toString());
}
}
}

View File

@@ -60,4 +60,6 @@ public interface BasStockMapper
public int deleteBasStockByStockIds(String[] stockIds);
void insertBasStockList(List<BasStock> list);
List<BasStock> selectKtpStock(String warehouseId);
}

View File

@@ -62,4 +62,6 @@ public interface IBasStockService
public int deleteBasStockByStockId(String stockId);
void insertBasStockList(List<BasStock> list);
List<BasStock> selectKtpStock(String warehouseId);
}

View File

@@ -175,5 +175,8 @@ public class BasStockServiceImpl implements IBasStockService
basStockMapper.insertBasStockList(list);
}
@Override
public List<BasStock> selectKtpStock(String warehouseId) {
return basStockMapper.selectKtpStock(warehouseId);
}
}

View File

@@ -140,4 +140,5 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
#{cargoSpaceId}
</foreach>
</delete>
</mapper>

View File

@@ -188,4 +188,39 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
#{stockinGuid}
</foreach>
</delete>
<select id="selectStockinByDetail" parameterType="string" resultMap="InStockinResult">
select distinct is2.stockin_guid,
is2.stockin_id,
is2.in_type,
is2.create_date,
is2.create_man_id,
is2.status,
is2.warehouse_id,
is2.finish_date,
is2.erp_bill,
is2.stock_source,
is2.department_no,
is2.customer_no,
is2.class_no,
is2.supplier_no,
is2.spare1,
is2.spare2,
is2.spare4,
is2.spare3,
is2.spare5,
bw.warehouse_name,
bs.supplier_name,
sd.dept_name ,
su.user_name
from in_stockin is2
left join bas_warehouse bw on is2.warehouse_id = bw.warehouse_id
left join bas_supplier bs on bs.supplier_no = is2.supplier_no
left join sys_dept sd on is2.department_no = sd.dept_id
left join sys_user su on su.user_id = is2.create_man_id
left join in_stockin_detail isd on isd.stockin_id = is2.stockin_id
<where>
<if test="stockinDetailId != null and stockinDetailId !=''"> stockin_detail_id=#{stockinDetailId}</if>
</where>
</select>
</mapper>

View File

@@ -11,17 +11,34 @@
#{v_tray_code,mode=IN,jdbcType=VARCHAR},
#{v_warehouse_id,mode=IN,jdbcType=VARCHAR},
#{v_quantity,mode=IN,jdbcType=VARCHAR},
#{v_cargo_space_id,mode=IN,jdbcType=VARCHAR},
#{v_result,mode=OUT,jdbcType=INTEGER},
#{v_resultmsg,mode=OUT,jdbcType=VARCHAR}
)}
</select>
<select id="emptyBoxIn" parameterType="java.util.Map" statementType="CALLABLE">
{call proc_box_in(
#{v_tray_code,mode=IN,jdbcType=VARCHAR},
#{v_warehouse_id,mode=IN,jdbcType=VARCHAR},
#{v_entrance_id,mode=IN,jdbcType=VARCHAR},
#{v_result,mode=OUT,jdbcType=INTEGER},
#{v_resultmsg,mode=OUT,jdbcType=VARCHAR}
)}
</select>
<select id="emptyTrayOut" parameterType="java.util.Map" statementType="CALLABLE">
{call proc_tray_out(
#{v_warehouse_id,mode=IN,jdbcType=VARCHAR},
#{v_cargo_space_id,mode=IN,jdbcType=VARCHAR},
#{v_result,mode=OUT,jdbcType=INTEGER},
#{v_resultmsg,mode=OUT,jdbcType=VARCHAR}
)}
</select>
<select id="emptyBoxOut" parameterType="java.util.Map" statementType="CALLABLE">
{call proc_box_out(
#{v_warehouse_id,mode=IN,jdbcType=VARCHAR},
#{v_exit_id,mode=IN,jdbcType=VARCHAR},
#{v_result,mode=OUT,jdbcType=INTEGER},
#{v_resultmsg,mode=OUT,jdbcType=VARCHAR}
)}
</select>
</mapper>

View File

@@ -247,4 +247,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
#{stockId}
</foreach>
</delete>
<select id="selectKtpStock" parameterType="string" resultMap="BasStockResult">
select b.cargo_space_name, b.cargo_space_id from bas_stock s,bas_cargo_space b where s.warehouse_id=#{warehouseId}
and s.cargo_space_id=b.cargo_space_id and b.warehouse_id= s.warehouse_id and b.status='2' and s.product_id='KTP0001'
order by b.the_platoon,b.the_floor,b.the_column asc
</select>
</mapper>

View File

@@ -97,35 +97,35 @@ public class SecurityConfig
protected SecurityFilterChain filterChain(HttpSecurity httpSecurity) throws Exception
{
return httpSecurity
// CSRF禁用,因为不使用session
.csrf(csrf -> csrf.disable())
// 禁用HTTP响应标头
.headers((headersCustomizer) -> {
headersCustomizer.cacheControl(cache -> cache.disable()).frameOptions(options -> options.sameOrigin());
})
// 认证失败处理类
.exceptionHandling(exception -> exception.authenticationEntryPoint(unauthorizedHandler))
// 基于token,所以不需要session
.sessionManagement(session -> session.sessionCreationPolicy(SessionCreationPolicy.STATELESS))
// 注解标记允许匿名访问的url
.authorizeHttpRequests((requests) -> {
permitAllUrl.getUrls().forEach(url -> requests.antMatchers(url).permitAll());
// 对于登录login 注册register 验证码captchaImage 允许匿名访问
requests.antMatchers("/login", "/register", "/captchaImage").permitAll()
// 静态资源,可匿名访问
.antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**").permitAll()
.antMatchers("/swagger-ui.html","/changeLanguage", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**").permitAll()
// 除上面外的所有请求全部需要鉴权认证
.anyRequest().authenticated();
})
// 添加Logout filter
.logout(logout -> logout.logoutUrl("/logout").logoutSuccessHandler(logoutSuccessHandler))
// 添加JWT filter
.addFilterBefore(authenticationTokenFilter, UsernamePasswordAuthenticationFilter.class)
// 添加CORS filter
.addFilterBefore(corsFilter, JwtAuthenticationTokenFilter.class)
.addFilterBefore(corsFilter, LogoutFilter.class)
.build();
// CSRF禁用,因为不使用session
.csrf(csrf -> csrf.disable())
// 禁用HTTP响应标头
.headers((headersCustomizer) -> {
headersCustomizer.cacheControl(cache -> cache.disable()).frameOptions(options -> options.sameOrigin());
})
// 认证失败处理类
.exceptionHandling(exception -> exception.authenticationEntryPoint(unauthorizedHandler))
// 基于token,所以不需要session
.sessionManagement(session -> session.sessionCreationPolicy(SessionCreationPolicy.STATELESS))
// 注解标记允许匿名访问的url
.authorizeHttpRequests((requests) -> {
permitAllUrl.getUrls().forEach(url -> requests.antMatchers(url).permitAll());
// 对于登录login 注册register 验证码captchaImage 允许匿名访问
requests.antMatchers("/login", "/register", "/captchaImage").permitAll()
// 静态资源,可匿名访问
.antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**").permitAll()
.antMatchers("/swagger-ui.html","/changeLanguage", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**","/pda/**").permitAll()
// 除上面外的所有请求全部需要鉴权认证
.anyRequest().authenticated();
})
// 添加Logout filter
.logout(logout -> logout.logoutUrl("/logout").logoutSuccessHandler(logoutSuccessHandler))
// 添加JWT filter
.addFilterBefore(authenticationTokenFilter, UsernamePasswordAuthenticationFilter.class)
// 添加CORS filter
.addFilterBefore(corsFilter, JwtAuthenticationTokenFilter.class)
.addFilterBefore(corsFilter, LogoutFilter.class)
.build();
}
/**