|
@@ -1,6 +1,8 @@
|
|
|
package org.jeecg.modules.billet.stackingAndLoadingVehicles.controller;
|
|
|
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
@@ -12,22 +14,30 @@ import org.jeecg.common.aspect.annotation.AutoLog;
|
|
|
import org.jeecg.common.system.base.controller.JeecgController;
|
|
|
import org.jeecg.common.system.query.QueryGenerator;
|
|
|
import org.jeecg.common.util.oConvertUtils;
|
|
|
+import org.jeecg.modules.actualControl.billetActual.billetActual.entity.BilletBasicInfo;
|
|
|
+import org.jeecg.modules.actualControl.billetActual.billetActual.service.IBilletBasicInfoService;
|
|
|
+import org.jeecg.modules.billet.billetHotsend.entity.BilletHotsend;
|
|
|
+import org.jeecg.modules.billet.billetHotsend.entity.RollClubCommon;
|
|
|
import org.jeecg.modules.billet.stackingAndLoadingVehicles.entity.StackingAndLoadingVehicles;
|
|
|
import org.jeecg.modules.billet.stackingAndLoadingVehicles.entity.UpdateBatchParams;
|
|
|
import org.jeecg.modules.billet.stackingAndLoadingVehicles.service.IStackingAndLoadingVehiclesService;
|
|
|
import org.jeecg.modules.billet.stackingAndLoadingVehicles.vo.ClipLayerVo;
|
|
|
import org.jeecg.modules.billet.stackingAndLoadingVehicles.vo.LoadingParams;
|
|
|
import org.jeecg.modules.billet.stackingAndLoadingVehicles.vo.StackLocationChangeVO;
|
|
|
+import org.jeecg.modules.billet.stackingAndLoadingVehicles.vo.StackingAddParams;
|
|
|
import org.jeecg.modules.billet.storageBill.entity.StorageBill;
|
|
|
+import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.data.redis.core.RedisTemplate;
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
import org.springframework.web.servlet.ModelAndView;
|
|
|
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
-import java.util.List;
|
|
|
+import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
- /**
|
|
|
+/**
|
|
|
* @Description: 垛位装车
|
|
|
* @Author: jeecg-boot
|
|
|
* @Date: 2024-05-22
|
|
@@ -42,6 +52,11 @@ public class StackingAndLoadingVehiclesController extends JeecgController<Stacki
|
|
|
@Autowired
|
|
|
private IStackingAndLoadingVehiclesService stackingAndLoadingVehiclesService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ public RedisTemplate redisTemplate;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private IBilletBasicInfoService billetBasicInfoService;
|
|
|
/**
|
|
|
* 分页列表查询
|
|
|
*
|
|
@@ -165,6 +180,114 @@ public class StackingAndLoadingVehiclesController extends JeecgController<Stacki
|
|
|
return Result.OK((String) jsonObject.get("success"));
|
|
|
}
|
|
|
|
|
|
+ @ApiOperation(value="操作工-新增堆垛", notes="操作工-新增堆垛")
|
|
|
+ @PostMapping(value = "/stackingUpAdd")
|
|
|
+ public Result<?> addStack(@RequestBody StackingAddParams stackingAddParams){
|
|
|
+ LoadingParams loadingParams = new LoadingParams();
|
|
|
+
|
|
|
+ if (oConvertUtils.listIsEmpty(stackingAddParams.getStackingAndLoadingVehiclesIds())){
|
|
|
+ return Result.OK("请选择堆垛位置!");
|
|
|
+ }
|
|
|
+
|
|
|
+ BilletHotsend billetHotsend = new BilletHotsend();
|
|
|
+ billetHotsend.setCcmNo(stackingAddParams.getCcmNo());
|
|
|
+ billetHotsend.setIsUpd(false);
|
|
|
+ loadingParams.setBilletHotsend(billetHotsend);
|
|
|
+
|
|
|
+ loadingParams.setBelongTable("stacking_and_loading_vehicles");
|
|
|
+ loadingParams.setBilletHotsendTypeConfigId(stackingAddParams.getBilletHotsendTypeConfigId());
|
|
|
+
|
|
|
+
|
|
|
+ String classShiftGroup = String.format("class:shift:group:%s", stackingAddParams.getCcmNo()); // 班组
|
|
|
+ String classShift = String.format("class:shift:%s",stackingAddParams.getCcmNo()); // 班别
|
|
|
+ String shift = !oConvertUtils.getString(redisTemplate.opsForValue().get(classShift)).isEmpty() ? oConvertUtils.getString(redisTemplate.opsForValue().get(classShift)) : "";
|
|
|
+ String shiftGroup = !oConvertUtils.getString(redisTemplate.opsForValue().get(classShiftGroup)).isEmpty() ? oConvertUtils.getString(redisTemplate.opsForValue().get(classShiftGroup)) : "";
|
|
|
+
|
|
|
+ LambdaQueryWrapper<BilletBasicInfo> queryWrapper2 = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper2.eq(BilletBasicInfo::getCcmNo, stackingAddParams.getCcmNo())
|
|
|
+ .eq(BilletBasicInfo::getHeatNo, stackingAddParams.getHeatNo())
|
|
|
+ .eq(BilletBasicInfo::getShift, shift)
|
|
|
+ .eq(BilletBasicInfo::getShiftGroup, shiftGroup)
|
|
|
+ .isNull(BilletBasicInfo::getBelongTable)
|
|
|
+ .isNotNull(BilletBasicInfo::getAssemblyNumber)
|
|
|
+ .orderByAsc(BilletBasicInfo::getCreateTime);
|
|
|
+ List<BilletBasicInfo> billetBasicInfoList = billetBasicInfoService.list(queryWrapper2);
|
|
|
+ if (oConvertUtils.listIsEmpty(billetBasicInfoList)){
|
|
|
+ log.info("{}{}", "钢坯实绩不存在,起垛操作失败!", JSON.toJSON(stackingAddParams));
|
|
|
+ return Result.error("钢坯实绩不存在,起垛操作失败!");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 按assemblyNumber分组,并过滤出数量为4的组
|
|
|
+ Map<String, List<BilletBasicInfo>> groupByAssemblyNumber = billetBasicInfoList.stream()
|
|
|
+ .collect(Collectors.groupingBy(BilletBasicInfo::getAssemblyNumber))
|
|
|
+ .entrySet()
|
|
|
+ .stream()
|
|
|
+ .filter(entry -> entry.getValue().size() == 4)
|
|
|
+ .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
|
|
|
+
|
|
|
+
|
|
|
+ List<StackingAndLoadingVehicles> stackingAndLoadingVehiclesList = new ArrayList<>();
|
|
|
+ List<RollClubCommon> rollClubCommonList = new ArrayList<>();
|
|
|
+
|
|
|
+ List<String> idList = stackingAddParams.getStackingAndLoadingVehiclesIds();
|
|
|
+ Iterator<Map.Entry<String, List<BilletBasicInfo>>> entryIterator = groupByAssemblyNumber.entrySet().iterator();
|
|
|
+
|
|
|
+ idList.forEach(x -> {
|
|
|
+ // 根据ID,查询堆垛公共容器
|
|
|
+ StackingAndLoadingVehicles original = stackingAndLoadingVehiclesService.getById(x);
|
|
|
+
|
|
|
+ if (original != null && entryIterator.hasNext()) {
|
|
|
+ // 获取并移除下一个分组
|
|
|
+ Map.Entry<String, List<BilletBasicInfo>> entry = entryIterator.next();
|
|
|
+ entryIterator.remove(); // 从集合中移除,确保不会被重复使用
|
|
|
+
|
|
|
+ StackingAndLoadingVehicles stackingAndLoadingVehicles = new StackingAndLoadingVehicles();
|
|
|
+ BeanUtils.copyProperties(original, stackingAndLoadingVehicles);
|
|
|
+
|
|
|
+ List<BilletBasicInfo> groupBilletBasicInfo = entry.getValue();
|
|
|
+ BilletBasicInfo firstItem = groupBilletBasicInfo.get(0);
|
|
|
+
|
|
|
+ // 拼接坯号
|
|
|
+ String billetNos = groupBilletBasicInfo.stream()
|
|
|
+ .map(BilletBasicInfo::getBilletNo)
|
|
|
+ .collect(Collectors.joining(","));
|
|
|
+
|
|
|
+ // 填充到StackingAndLoadingVehicles对象
|
|
|
+ stackingAndLoadingVehicles.setBilletNos(billetNos);
|
|
|
+ stackingAndLoadingVehicles.setHeatNo(firstItem.getHeatNo());
|
|
|
+ stackingAndLoadingVehicles.setSize(String.valueOf(firstItem.getLength()));
|
|
|
+ stackingAndLoadingVehicles.setSpec(firstItem.getSpec());
|
|
|
+ stackingAndLoadingVehicles.setSteel(firstItem.getGrade());
|
|
|
+ stackingAndLoadingVehicles.setShiftGroup(firstItem.getShiftGroup());
|
|
|
+ stackingAndLoadingVehicles.setShift(firstItem.getShift());
|
|
|
+
|
|
|
+ // 添加到结果列表
|
|
|
+ stackingAndLoadingVehiclesList.add(stackingAndLoadingVehicles);
|
|
|
+
|
|
|
+ // 将groupBilletBasicInfo的所有属性映射到RollClubCommon并添加到列表
|
|
|
+ groupBilletBasicInfo.forEach(billet -> {
|
|
|
+ RollClubCommon rollClubCommon = new RollClubCommon();
|
|
|
+ BeanUtils.copyProperties(billet, rollClubCommon);
|
|
|
+ rollClubCommon.setCcmNo(String.valueOf(billet.getCcmNo()));
|
|
|
+ rollClubCommon.setAssemblyNumber(entry.getKey());
|
|
|
+ rollClubCommonList.add(rollClubCommon);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ loadingParams.setStackingAndLoadingVehiclesList(stackingAndLoadingVehiclesList);
|
|
|
+ loadingParams.setRollClubCommonList(rollClubCommonList);
|
|
|
+
|
|
|
+ log.info(">>>>>>>>>>>>B端操作工-新增堆垛参数集:"+ JSON.toJSON(loadingParams));
|
|
|
+
|
|
|
+ JSONObject jsonObject = stackingAndLoadingVehiclesService.addStackInfo(loadingParams);
|
|
|
+ if (jsonObject.containsKey("fail")){
|
|
|
+ return Result.OK((String) jsonObject.get("fail"));
|
|
|
+ }
|
|
|
+ return Result.OK((String) jsonObject.get("success"));
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
@ApiOperation(value="钢坯-垛位装车", notes="钢坯-垛位装车")
|
|
|
@PostMapping(value = "/loading")
|
|
|
public Result<?> loading(@RequestBody LoadingParams loadingParams){
|