no message

main
HUOJIN\92525 2026-03-05 11:55:16 +08:00
parent 0b81b55e59
commit c579cab7dd
4 changed files with 278 additions and 242 deletions

View File

@ -12,9 +12,12 @@ import java.net.URLDecoder;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.cpte.modules.base.entity.Area; import org.cpte.modules.base.entity.Area;
import org.cpte.modules.base.service.IAreaService; import org.cpte.modules.base.service.IAreaService;
import org.cpte.modules.constant.enums.AreaTypeEnum;
import org.cpte.modules.constant.enums.CommonStatusEnum;
import org.jeecg.common.api.vo.Result; import org.jeecg.common.api.vo.Result;
import org.jeecg.common.system.query.QueryGenerator; import org.jeecg.common.system.query.QueryGenerator;
import org.cpte.modules.base.entity.Point; import org.cpte.modules.base.entity.Point;
@ -26,6 +29,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.system.base.controller.JeecgController; import org.jeecg.common.system.base.controller.JeecgController;
import org.json.simple.JSONObject;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -195,4 +199,21 @@ public class PointController extends JeecgController<Point, IPointService> {
return super.importExcel(request, response, Point.class); return super.importExcel(request, response, Point.class);
} }
@Operation(summary = "查询出库工作站")
@GetMapping(value = "/queryOutWorkStation")
public Result<List<String>> queryOutWorkStation(@RequestParam(name = "areaId_dictText", required = true) String areaId_dictText) {
String areaCode="";
if(AreaTypeEnum.CPCCQ.getDesc().equals(areaId_dictText)){
areaCode=AreaTypeEnum.CK_DOCK.getValue();
}else{
areaCode=AreaTypeEnum.MJCK_DOCK.getValue();
}
List<Point> points = pointService.queryPoints(null, CommonStatusEnum.FREE.getValue(), areaCode);
if (CollectionUtils.isEmpty(points)) {
return Result.error("未找到对应数据");
}
List<String> pointCodes = points.stream().map(Point::getPointCode).collect(Collectors.toList());
return Result.OK(pointCodes);
}
} }

View File

@ -53,13 +53,13 @@ import org.jeecg.common.aspect.annotation.AutoLog;
import org.apache.shiro.authz.annotation.RequiresPermissions; import org.apache.shiro.authz.annotation.RequiresPermissions;
/** /**
* @Description: * @Description:
* @author: cpte * @author: cpte
* @Date: 2025-12-23 * @Date: 2025-12-23
* @Version: V1.0 * @Version: V1.0
*/ */
@Tag(name="盘点") @Tag(name = "盘点")
@RestController @RestController
@RequestMapping("/count/countPlan") @RequestMapping("/count/countPlan")
@Slf4j @Slf4j
@ -85,11 +85,11 @@ public class CountPlanController {
* @return * @return
*/ */
//@AutoLog(value = "盘点-分页列表查询") //@AutoLog(value = "盘点-分页列表查询")
@Operation(summary="盘点-分页列表查询") @Operation(summary = "盘点-分页列表查询")
@GetMapping(value = "/list") @GetMapping(value = "/list")
public Result<IPage<CountPlan>> queryPageList(CountPlan countPlan, public Result<IPage<CountPlan>> queryPageList(CountPlan countPlan,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo, @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize, @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
HttpServletRequest req) { HttpServletRequest req) {
QueryWrapper<CountPlan> queryWrapper = QueryGenerator.initQueryWrapper(countPlan, req.getParameterMap()); QueryWrapper<CountPlan> queryWrapper = QueryGenerator.initQueryWrapper(countPlan, req.getParameterMap());
Page<CountPlan> page = new Page<CountPlan>(pageNo, pageSize); Page<CountPlan> page = new Page<CountPlan>(pageNo, pageSize);
@ -104,7 +104,7 @@ public class CountPlanController {
* @return * @return
*/ */
@AutoLog(value = "盘点-添加") @AutoLog(value = "盘点-添加")
@Operation(summary="盘点-添加") @Operation(summary = "盘点-添加")
@RequiresPermissions("count:data_count_plan:add") @RequiresPermissions("count:data_count_plan:add")
@PostMapping(value = "/add") @PostMapping(value = "/add")
public Result<String> add(@RequestBody CountPlanPage countPlanPage) { public Result<String> add(@RequestBody CountPlanPage countPlanPage) {
@ -121,12 +121,12 @@ public class CountPlanController {
* @return * @return
*/ */
@AutoLog(value = "盘点-编辑") @AutoLog(value = "盘点-编辑")
@Operation(summary="盘点-编辑") @Operation(summary = "盘点-编辑")
@RequiresPermissions("count:data_count_plan:edit") @RequiresPermissions("count:data_count_plan:edit")
@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) @RequestMapping(value = "/edit", method = {RequestMethod.PUT, RequestMethod.POST})
public Result<String> edit(@RequestBody CountPlanPage countPlanPage) { public Result<String> edit(@RequestBody CountPlanPage countPlanPage) {
CountPlan existingCountPlan = countPlanService.getById(countPlanPage.getId()); CountPlan existingCountPlan = countPlanService.getById(countPlanPage.getId());
if(existingCountPlan==null) { if (existingCountPlan == null) {
return Result.error("未找到对应数据"); return Result.error("未找到对应数据");
} }
BeanUtils.copyProperties(countPlanPage, existingCountPlan); BeanUtils.copyProperties(countPlanPage, existingCountPlan);
@ -141,10 +141,10 @@ public class CountPlanController {
* @return * @return
*/ */
@AutoLog(value = "盘点-通过id删除") @AutoLog(value = "盘点-通过id删除")
@Operation(summary="盘点-通过id删除") @Operation(summary = "盘点-通过id删除")
@RequiresPermissions("count:data_count_plan:delete") @RequiresPermissions("count:data_count_plan:delete")
@DeleteMapping(value = "/delete") @DeleteMapping(value = "/delete")
public Result<String> delete(@RequestParam(name="id",required=true) Long id) { public Result<String> delete(@RequestParam(name = "id", required = true) Long id) {
countPlanService.delMain(id); countPlanService.delMain(id);
return Result.OK("删除成功!"); return Result.OK("删除成功!");
} }
@ -156,10 +156,10 @@ public class CountPlanController {
* @return * @return
*/ */
@AutoLog(value = "盘点-批量删除") @AutoLog(value = "盘点-批量删除")
@Operation(summary="盘点-批量删除") @Operation(summary = "盘点-批量删除")
@RequiresPermissions("count:data_count_plan:deleteBatch") @RequiresPermissions("count:data_count_plan:deleteBatch")
@DeleteMapping(value = "/deleteBatch") @DeleteMapping(value = "/deleteBatch")
public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) { public Result<String> deleteBatch(@RequestParam(name = "ids", required = true) String ids) {
this.countPlanService.delBatchMain(Arrays.asList(ids.split(","))); this.countPlanService.delBatchMain(Arrays.asList(ids.split(",")));
return Result.OK("批量删除成功!"); return Result.OK("批量删除成功!");
} }
@ -171,11 +171,11 @@ public class CountPlanController {
* @return * @return
*/ */
//@AutoLog(value = "盘点-通过id查询") //@AutoLog(value = "盘点-通过id查询")
@Operation(summary="盘点-通过id查询") @Operation(summary = "盘点-通过id查询")
@GetMapping(value = "/queryById") @GetMapping(value = "/queryById")
public Result<CountPlan> queryById(@RequestParam(name="id",required=true) Long id) { public Result<CountPlan> queryById(@RequestParam(name = "id", required = true) Long id) {
CountPlan countPlan = countPlanService.getById(id); CountPlan countPlan = countPlanService.getById(id);
if(countPlan==null) { if (countPlan == null) {
return Result.error("未找到对应数据"); return Result.error("未找到对应数据");
} }
return Result.OK(countPlan); return Result.OK(countPlan);
@ -189,34 +189,34 @@ public class CountPlanController {
* @return * @return
*/ */
//@AutoLog(value = "盘点明细通过主表ID查询") //@AutoLog(value = "盘点明细通过主表ID查询")
@Operation(summary="盘点明细主表ID查询") @Operation(summary = "盘点明细主表ID查询")
@GetMapping(value = "/queryCountDetailByMainId") @GetMapping(value = "/queryCountDetailByMainId")
public Result<List<CountDetail>> queryCountDetailListByMainId(@RequestParam(name="id",required=true) Long id) { public Result<List<CountDetail>> queryCountDetailListByMainId(@RequestParam(name = "id", required = true) Long id) {
List<CountDetail> countDetailList = countDetailService.selectByMainId(id); List<CountDetail> countDetailList = countDetailService.selectByMainId(id);
if(CollectionUtils.isNotEmpty(countDetailList)){ if (CollectionUtils.isNotEmpty(countDetailList)) {
//物料 //物料
List<Long> itemIds=countDetailList.stream().map(CountDetail::getItemId).distinct().toList(); List<Long> itemIds = countDetailList.stream().map(CountDetail::getItemId).distinct().toList();
Map<Long,Item> itemMap=itemService.queryByItemIdsToMap(itemIds); Map<Long, Item> itemMap = itemService.queryByItemIdsToMap(itemIds);
//库位 //库位
List<Long> pointIds=countDetailList.stream().map(CountDetail::getPointId).distinct().toList(); List<Long> pointIds = countDetailList.stream().map(CountDetail::getPointId).distinct().toList();
Map<Long, Point> pointMap=pointService.queryByPointIdsToMap(pointIds); Map<Long, Point> pointMap = pointService.queryByPointIdsToMap(pointIds);
//容器 //容器
List<Long> stockIds=countDetailList.stream().map(CountDetail::getStockId).distinct().toList(); List<Long> stockIds = countDetailList.stream().map(CountDetail::getStockId).distinct().toList();
Map<Long, Stock> stockMap=stockService.queryByStockIdsToMap(stockIds); Map<Long, Stock> stockMap = stockService.queryByStockIdsToMap(stockIds);
for(CountDetail detail:countDetailList){ for (CountDetail detail : countDetailList) {
Item item = itemMap.get(detail.getItemId()); Item item = itemMap.get(detail.getItemId());
Point point = pointMap.get(detail.getPointId()); Point point = pointMap.get(detail.getPointId());
Stock stock = stockMap.get(detail.getStockId()); Stock stock = stockMap.get(detail.getStockId());
if(item!=null){ if (item != null) {
detail.setItemCode(item.getItemCode()); detail.setItemCode(item.getItemCode());
} }
if(point!=null){ if (point != null) {
detail.setPointCode(point.getPointCode()); detail.setPointCode(point.getPointCode());
} }
if(stock!=null){ if (stock != null) {
detail.setStockCode(stock.getStockCode()); detail.setStockCode(stock.getStockCode());
} }
} }
@ -241,9 +241,9 @@ public class CountPlanController {
//配置选中数据查询条件 //配置选中数据查询条件
String selections = request.getParameter("selections"); String selections = request.getParameter("selections");
if(oConvertUtils.isNotEmpty(selections)) { if (oConvertUtils.isNotEmpty(selections)) {
List<String> selectionList = Arrays.asList(selections.split(",")); List<String> selectionList = Arrays.asList(selections.split(","));
queryWrapper.in("id",selectionList); queryWrapper.in("id", selectionList);
} }
//Step.2 获取导出数据 //Step.2 获取导出数据
List<CountPlan> countPlanList = countPlanService.list(queryWrapper); List<CountPlan> countPlanList = countPlanService.list(queryWrapper);
@ -262,7 +262,7 @@ public class CountPlanController {
ModelAndView mv = new ModelAndView(new JeecgEntityExcelView()); ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
mv.addObject(NormalExcelConstants.FILE_NAME, "盘点列表"); mv.addObject(NormalExcelConstants.FILE_NAME, "盘点列表");
mv.addObject(NormalExcelConstants.CLASS, CountPlanPage.class); mv.addObject(NormalExcelConstants.CLASS, CountPlanPage.class);
mv.addObject(NormalExcelConstants.PARAMS, new ExportParams("盘点数据", "导出人:"+sysUser.getRealname(), "盘点")); mv.addObject(NormalExcelConstants.PARAMS, new ExportParams("盘点数据", "导出人:" + sysUser.getRealname(), "盘点"));
mv.addObject(NormalExcelConstants.DATA_LIST, pageList); mv.addObject(NormalExcelConstants.DATA_LIST, pageList);
return mv; return mv;
} }
@ -295,8 +295,8 @@ public class CountPlanController {
} }
return Result.OK("文件导入成功!数据行数:" + list.size()); return Result.OK("文件导入成功!数据行数:" + list.size());
} catch (Exception e) { } catch (Exception e) {
log.error(e.getMessage(),e); log.error(e.getMessage(), e);
return Result.error("文件导入失败:"+e.getMessage()); return Result.error("文件导入失败:" + e.getMessage());
} finally { } finally {
try { try {
file.getInputStream().close(); file.getInputStream().close();
@ -308,4 +308,15 @@ public class CountPlanController {
return Result.OK("文件导入失败!"); return Result.OK("文件导入失败!");
} }
@AutoLog(value = "盘点-任务下发")
@Operation(summary = "盘点-任务下发")
@RequiresPermissions("count:data_count_plan:countIssueTask")
@GetMapping(value = "/countIssueTask")
public Result<String> countIssueTask(@RequestParam(name = "workStations", required = true) List<String> workStations) {
for (String workStation : workStations){
log.info("任务下发中,工作台:{}", workStation);
}
return Result.OK("任务下发成功");
}
} }

View File

@ -171,7 +171,6 @@ public class CountPlanServiceImpl extends ServiceImpl<CountPlanMapper, CountPlan
private void processInventory(CountPlan countPlan, List<Inventory> inventories) { private void processInventory(CountPlan countPlan, List<Inventory> inventories) {
List<CountDetail> countDetails = new ArrayList<>(); List<CountDetail> countDetails = new ArrayList<>();
List<Inventory> inventoriesToUpdate = new ArrayList<>();
for (Inventory inventory : inventories) { for (Inventory inventory : inventories) {
// 创建盘点明细 // 创建盘点明细
@ -180,14 +179,13 @@ public class CountPlanServiceImpl extends ServiceImpl<CountPlanMapper, CountPlan
// 更新库存状态 // 更新库存状态
inventory.setStatus(InventoryStatusEnum.COUNTING.getValue()); inventory.setStatus(InventoryStatusEnum.COUNTING.getValue());
inventoriesToUpdate.add(inventory);
} }
if (CollectionUtils.isNotEmpty(countDetails)) { if (CollectionUtils.isNotEmpty(countDetails)) {
countDetailMapper.insert(countDetails); countDetailMapper.insert(countDetails);
} }
if (CollectionUtils.isNotEmpty(inventoriesToUpdate)) { if (CollectionUtils.isNotEmpty(inventories)) {
inventoryMapper.updateById(inventoriesToUpdate); inventoryMapper.updateById(inventories);
} }
} }

View File

@ -32,20 +32,26 @@
<select id="queryByAreaIdAndCountTypeAndCodes" resultType="org.cpte.modules.inventory.entity.Inventory"> <select id="queryByAreaIdAndCountTypeAndCodes" resultType="org.cpte.modules.inventory.entity.Inventory">
SELECT inv.* FROM data_inventory inv SELECT inv.* FROM data_inventory inv
JOIN base_point point ON point.id = inv.point_id INNER JOIN base_point point ON point.id = inv.point_id
AND point.area_id = #{areaId} <choose>
WHERE inv.status =1 <when test="countType == 0">
AND inv.quantity > 0 INNER JOIN base_item item ON item.id = inv.item_id
</when>
<when test="countType == 1">
INNER JOIN base_stock stock ON stock.id = inv.stock_id
</when>
</choose>
WHERE inv.status = 1
AND inv.quantity > 0
AND point.area_id = #{areaId}
<choose> <choose>
<when test="countType == 0"> <when test="countType == 0">
JOIN base_item item ON item.id=inv.item_id
AND item.item_code IN AND item.item_code IN
<foreach collection="codes" item="code" open="(" separator="," close=")"> <foreach collection="codes" item="code" open="(" separator="," close=")">
#{code} #{code}
</foreach> </foreach>
</when> </when>
<when test="countType == 1"> <when test="countType == 1">
JOIN base_stock stock ON stock.id=inv.stock_id
AND stock.stock_code IN AND stock.stock_code IN
<foreach collection="codes" item="code" open="(" separator="," close=")"> <foreach collection="codes" item="code" open="(" separator="," close=")">
#{code} #{code}