手持机部分

This commit is contained in:
张怡蓉
2025-06-10 11:20:41 +08:00
parent a58ee8f132
commit b8d4b76bef
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)); return toAjax(basCargoSpaceService.deleteBasCargoSpaceByCargoSpaceIds(cargoSpaceIds));
} }
} }

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,6 +1,7 @@
package com.ruoyi.in.stockin.service.impl; package com.ruoyi.in.stockin.service.impl;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collections;
import java.util.List; import java.util.List;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
@@ -147,4 +148,9 @@ public class InStockinServiceImpl implements IInStockinService
{ {
return inStockinMapper.deleteInStockinByStockinGuid(stockinGuid); 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; 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.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.page.TableDataInfo; 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.in.stockin.service.IInStockinService;
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 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.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseBody;
import java.util.HashMap;
import java.util.List; import java.util.List;
import static com.ruoyi.common.utils.PageUtils.startPage; import static com.ruoyi.common.utils.PageUtils.startPage;
@@ -25,6 +32,10 @@ public class PdaController extends BaseController {
private PdaService pdaService; private PdaService pdaService;
@Autowired @Autowired
private IInStockinService inStockinService; private IInStockinService inStockinService;
@Autowired
private IBasStockService basStockService;
@Autowired
private IBasWarehouseService basWarehouseService;
/** /**
* 空托盘入库 * 空托盘入库
@@ -34,8 +45,16 @@ public class PdaController extends BaseController {
@RequestMapping("/emptyTrayIn") @RequestMapping("/emptyTrayIn")
@ResponseBody @ResponseBody
public AjaxResult emptyTrayIn(@RequestBody TrayCodeMsg trayCodeMsg) { public AjaxResult emptyTrayIn(@RequestBody TrayCodeMsg trayCodeMsg) {
AjaxResult ajaxResult = pdaService.emptyTrayIn(trayCodeMsg); BasWarehouse basWarehouse = basWarehouseService.selectBasWarehouseByWarehouseId(trayCodeMsg.getWarehouseId());
return ajaxResult; 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; 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") @RequestMapping("/inorder/list")
@ResponseBody @ResponseBody
public TableDataInfo inoderList(InStockin stockin) { public List<InStockin> inoderList(String stockinDetailId) {
startPage(); List<InStockin> stockins = inStockinService.selectStockinByDetail(stockinDetailId);
List<InStockin> stockins = inStockinService.selectInStockinList(stockin); return stockins;
return getDataTable(stockins);
} }
} }

View File

@@ -10,6 +10,26 @@ private String quantity;
private String entranceId; 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() { public String getEntranceId() {
return entranceId; return entranceId;
} }

View File

@@ -7,4 +7,8 @@ public interface PdaMapper {
void emptyTrayIn(HashMap<String, Object> map); void emptyTrayIn(HashMap<String, Object> map);
void emptyBoxIn(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.common.core.domain.AjaxResult;
import com.ruoyi.pda.domain.TrayCodeMsg; import com.ruoyi.pda.domain.TrayCodeMsg;
import org.apache.poi.ss.formula.functions.T;
public interface PdaService { public interface PdaService {
public AjaxResult emptyTrayIn(TrayCodeMsg trayCodeMsg); public AjaxResult emptyTrayIn(TrayCodeMsg trayCodeMsg);
public AjaxResult emptyBoxIn(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_tray_code", trayCodeMsg.getTrayCode());
map.put("v_warehouse_id", trayCodeMsg.getWarehouseId()); map.put("v_warehouse_id", trayCodeMsg.getWarehouseId());
map.put("v_quantity", "1"); map.put("v_quantity", "1");
map.put("v_cargo_space_id", trayCodeMsg.getCargoSpaceId());
pdaMapper.emptyTrayIn(map); pdaMapper.emptyTrayIn(map);
String result = (String) map.get("v_result"); String result = map.get("v_result").toString();
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());
}
if("10".equals(result)){ if("10".equals(result)){
return AjaxResult.success(map); return AjaxResult.success(map.get("v_resultmsg").toString());
}else{ }else{
return AjaxResult.error(map.get("v_resultmsg").toString()); return AjaxResult.error(map.get("v_resultmsg").toString());
} }
@@ -52,9 +48,10 @@ public class PdaServiceImp implements PdaService{
public AjaxResult emptyBoxIn(TrayCodeMsg trayCodeMsg) { public AjaxResult emptyBoxIn(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_entrance_id", trayCodeMsg.getEntranceId()); map.put("v_entrance_id", trayCodeMsg.getEntranceId());
pdaMapper.emptyBoxIn(map); pdaMapper.emptyBoxIn(map);
String result = (String) map.get("v_result"); String result = map.get("v_result").toString();
if("10".equals(result)){ if("10".equals(result)){
return AjaxResult.success(map.get("v_resultmsg").toString()); return AjaxResult.success(map.get("v_resultmsg").toString());
}else{ }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); public int deleteBasStockByStockIds(String[] stockIds);
void insertBasStockList(List<BasStock> list); void insertBasStockList(List<BasStock> list);
List<BasStock> selectKtpStock(String warehouseId);
} }

View File

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

View File

@@ -175,5 +175,8 @@ public class BasStockServiceImpl implements IBasStockService
basStockMapper.insertBasStockList(list); 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} #{cargoSpaceId}
</foreach> </foreach>
</delete> </delete>
</mapper> </mapper>

View File

@@ -188,4 +188,39 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
#{stockinGuid} #{stockinGuid}
</foreach> </foreach>
</delete> </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> </mapper>

View File

@@ -11,17 +11,34 @@
#{v_tray_code,mode=IN,jdbcType=VARCHAR}, #{v_tray_code,mode=IN,jdbcType=VARCHAR},
#{v_warehouse_id,mode=IN,jdbcType=VARCHAR}, #{v_warehouse_id,mode=IN,jdbcType=VARCHAR},
#{v_quantity,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_result,mode=OUT,jdbcType=INTEGER},
#{v_resultmsg,mode=OUT,jdbcType=VARCHAR} #{v_resultmsg,mode=OUT,jdbcType=VARCHAR}
)} )}
</select> </select>
<select id="emptyBoxIn" parameterType="java.util.Map" statementType="CALLABLE"> <select id="emptyBoxIn" parameterType="java.util.Map" statementType="CALLABLE">
{call proc_box_in( {call proc_box_in(
#{v_tray_code,mode=IN,jdbcType=VARCHAR}, #{v_tray_code,mode=IN,jdbcType=VARCHAR},
#{v_warehouse_id,mode=IN,jdbcType=VARCHAR},
#{v_entrance_id,mode=IN,jdbcType=VARCHAR}, #{v_entrance_id,mode=IN,jdbcType=VARCHAR},
#{v_result,mode=OUT,jdbcType=INTEGER}, #{v_result,mode=OUT,jdbcType=INTEGER},
#{v_resultmsg,mode=OUT,jdbcType=VARCHAR} #{v_resultmsg,mode=OUT,jdbcType=VARCHAR}
)} )}
</select> </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> </mapper>

View File

@@ -247,4 +247,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
#{stockId} #{stockId}
</foreach> </foreach>
</delete> </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> </mapper>

View File

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