Browse Source

add 入库开发

master
李帅 1 week ago
parent
commit
7aa0df7cd7
  1. 15
      lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/subpackagerelation/controller/PdmBiSubpackagerelationController.java
  2. 45
      lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/subpackagerelation/dto/PdmBiSubpackagerelationQuery.java
  3. 3
      lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/subpackagerelation/service/IpdmBiSubpackagerelationService.java
  4. 49
      lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/subpackagerelation/service/impl/PdmBiSubpackagerelationServiceImpl.java
  5. 35
      lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/service/impl/BstIvtPackageinfoivtServiceImpl.java
  6. 12
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/impl/StIvtIostorinvOutServiceImpl.java
  7. 71
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/impl/StIvtIostorinvServiceImpl.java
  8. 60
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/InBussManageServiceImpl.java
  9. 24
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/OutBussManageServiceImpl.java
  10. 32
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/TwoInBussManageServiceImpl.java
  11. 119
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/md/dao/MdPdStorageVehicleInfo.java
  12. 104
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/md/dao/MdPdStoragevehicleext.java
  13. 7
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/md/dao/mapper/MdPdStoragevehicleextMapper.java
  14. 5
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/md/dao/mapper/MdPdStoragevehicleextMapper.xml
  15. 8
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/md/dao/mapper/MdStorageVehicleInfoMapper.java
  16. 5
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/md/dao/mapper/MdStorageVehicleInfoMapper.xml
  17. 4
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/md/service/MdPdStoragevehicleextService.java
  18. 4
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/md/service/MdStorageVehicleInfoService.java
  19. 4
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/md/service/StorageVehicleInfoService.java
  20. 15
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/md/service/impl/StorageVehicleInfoServiceImpl.java
  21. 371
      lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java

15
lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/subpackagerelation/controller/PdmBiSubpackagerelationController.java

@ -6,6 +6,7 @@ import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.nl.b_lms.pdm.subpackagerelation.dao.PdmBiSubpackagerelation;
import org.nl.b_lms.pdm.subpackagerelation.dto.PdmBiSubpackagerelationQuery;
import org.nl.b_lms.pdm.subpackagerelation.service.IpdmBiSubpackagerelationService;
import org.nl.b_lms.sch.point.dao.BstIvtPackageinfoivt;
import org.nl.b_lms.sch.point.service.IbstIvtPackageinfoivtService;
@ -122,6 +123,20 @@ public class PdmBiSubpackagerelationController {
}
/**
* 包装关系维护
*
*
* @return 新增结果
*/
@PostMapping("/packagerelation")
@Log("包装关系维护")
public ResponseEntity<Object> packagerelation(@RequestBody PdmBiSubpackagerelationQuery pdmBiSubpackagerelationQuery) {
pdmBiSubpackagerelationService.packagerelation(pdmBiSubpackagerelationQuery);
return new ResponseEntity<>(HttpStatus.OK);
}
/**
* 修改数据
*

45
lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/subpackagerelation/dto/PdmBiSubpackagerelationQuery.java

@ -13,5 +13,50 @@ import org.nl.common.domain.query.BaseQuery;
@Data
@EqualsAndHashCode(callSuper = true)
public class PdmBiSubpackagerelationQuery extends BaseQuery<PdmBiSubpackagerelation> {
private String sale_order_name;
/**
* 子卷号
*/
private String container_name;
/**
* 客户编号
*/
private String customer_name;
/**
* 客户名称
*/
private String customer_description;
/**
* 产品编码
*/
private String product_name;
/**
* 产品描述
*/
private String product_description;
/**
* 净重
*/
private String net_weight;
/**
* 产品厚度
*/
private String thickness;
/** 物料类型 */
private String material_type;
}

3
lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/subpackagerelation/service/IpdmBiSubpackagerelationService.java

@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import org.nl.b_lms.pdm.subpackagerelation.dao.PdmBiSubpackagerelation;
import org.nl.b_lms.pdm.subpackagerelation.dto.PdmBiSubpackagerelationDto;
import org.nl.b_lms.pdm.subpackagerelation.dto.PdmBiSubpackagerelationQuery;
import org.nl.common.domain.query.PageQuery;
import org.springframework.data.domain.Pageable;
@ -148,6 +149,8 @@ public interface IpdmBiSubpackagerelationService extends IService<PdmBiSubpackag
* @return
*/
List<JSONObject> getSubPackageInfoBySubRolls(List<String> pcsns);
void packagerelation(PdmBiSubpackagerelationQuery pdmBiSubpackagerelationQuery);
}

49
lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/subpackagerelation/service/impl/PdmBiSubpackagerelationServiceImpl.java

@ -33,6 +33,7 @@ import org.nl.b_lms.pdm.productSpec.service.impl.PdmProductSpecServiceImpl;
import org.nl.b_lms.pdm.subpackagerelation.dao.PdmBiSubpackagerelation;
import org.nl.b_lms.pdm.subpackagerelation.dao.mapper.PdmBiSubpackagerelationMapper;
import org.nl.b_lms.pdm.subpackagerelation.dto.PdmBiSubpackagerelationDto;
import org.nl.b_lms.pdm.subpackagerelation.dto.PdmBiSubpackagerelationQuery;
import org.nl.b_lms.pdm.subpackagerelation.service.IpdmBiSubpackagerelationService;
import org.nl.b_lms.pdm_manage.enums.SUBEnum;
import org.nl.b_lms.sch.point.dao.BstIvtPackageinfoivt;
@ -54,8 +55,10 @@ import org.nl.common.TableDataInfo;
import org.nl.common.domain.query.PageQuery;
import org.nl.common.enums.PackageInfoIvtEnum;
import org.nl.common.enums.SpecEnum;
import org.nl.common.utils.CodeUtil;
import org.nl.common.utils.MapOf;
import org.nl.common.utils.SecurityUtils;
import org.nl.common.utils.TaskUtils;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.modules.common.utils.FileUtil;
import org.nl.modules.logging.service.EsLogService;
@ -139,7 +142,8 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
@Autowired
private ISysParamService iSysParamService;
@Autowired
private IpdmBiSubpackagerelationService subpackagerelationService;
@Resource
@Qualifier("threadPoolExecutor")
@ -348,7 +352,7 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
Set<String> containers = subList.stream().map(PdmBiSubpackagerelation::getContainer_name).collect(Collectors.toSet());
String boxSn = subList.get(0).getPackage_box_sn();
//子卷到装箱区
agvTransfer(containers, deviceCode);
// agvTransfer(containers, deviceCode);
PdmBiContainerinbound pdmBiContainerinbound = new PdmBiContainerinbound();
pdmBiContainerinbound.setId(org.nl.common.utils.IdUtil.getStringId());
@ -389,19 +393,7 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
if (StringUtils.isEmpty(containerName)){
throw new BadRequestException("子卷编码不能为空");
}
String deviceCode = "ZXQ_1_1";
/** 任务数校验按照现场情况
int count = taskService.count(new QueryWrapper<SchBaseTask>()
.eq("task_type", "010908")
.eq("is_delete", "0")
.lt("task_status", TaskStatusEnum.FINISHED.getCode()));
int count2 = packageinfoivtService.count(new QueryWrapper<BstIvtPackageinfoivt>()
.eq("point_status",PackageInfoIvtEnum.POINT_STATUS.code("装箱区"))
.eq("ivt_status",PackageInfoIvtEnum.IVT_STATUS.code("合格品")));
if (count+count2>8){
throw new BadRequestException("当前装箱区木箱任务已满,稍后再试");
}
**/
String[] split = containerName.split(",");
//理论毛重
List<PdmBiSubpackagerelation> subList = this.list(new QueryWrapper<PdmBiSubpackagerelation>()
@ -886,5 +878,32 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
return org.nl.common.utils.CollectionUtils.mapList(pdmBiSubpackagerelationMapper.selectList(lam),
pdmBiSubpackagerelation -> (JSONObject) JSON.toJSON(pdmBiSubpackagerelation));
}
@Override
public void packagerelation(PdmBiSubpackagerelationQuery pdmBiSubpackagerelationQuery) {
PdmBiSubpackagerelation subpackagerelation = new PdmBiSubpackagerelation();
subpackagerelation.setWorkorder_id(IdUtil.getSnowflake(1, 1).nextIdStr());
subpackagerelation.setSale_order_name(pdmBiSubpackagerelationQuery.getSale_order_name());
subpackagerelation.setCustomer_name(pdmBiSubpackagerelationQuery.getCustomer_name());
subpackagerelation.setCustomer_description(pdmBiSubpackagerelationQuery.getCustomer_description());
subpackagerelation.setProduct_name(pdmBiSubpackagerelationQuery.getProduct_name());
subpackagerelation.setProduct_description(pdmBiSubpackagerelationQuery.getProduct_description());
subpackagerelation.setDate_of_FG_inbound(DateUtil.format(DateUtil.date(), "yyyy-MM-dd"));
subpackagerelation.setContainer_name(pdmBiSubpackagerelationQuery.getContainer_name());
subpackagerelation.setThickness(pdmBiSubpackagerelationQuery.getThickness());
subpackagerelation.setNet_weight(pdmBiSubpackagerelationQuery.getNet_weight());
subpackagerelation.setStatus("99");
subpackagerelation.setIsRePrintPackageBoxLabel("0");
subpackagerelation.setIsUnPackBox("0");
subpackagerelation.setSap_pcsn("N" + TaskUtils.getDateTime("yyMMdd") + CodeUtil.getNewCode("SAP_CODE"));
subpackagerelation.setCreate_id(Long.parseLong(SecurityUtils.getCurrentUserId()));
subpackagerelation.setCreate_name(SecurityUtils.getCurrentNickName());
subpackagerelation.setCreate_time(DateUtil.now());
subpackagerelation.setCreate_id(Long.parseLong(SecurityUtils.getCurrentUserId()));
subpackagerelation.setExt_code("BC01");
subpackagerelation.setNeed_delete("99");
subpackagerelation.setMaterial_type(pdmBiSubpackagerelationQuery.getMaterial_type());
subpackagerelationService.save(subpackagerelation);
}
}

35
lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/service/impl/BstIvtPackageinfoivtServiceImpl.java

@ -3,6 +3,7 @@ package org.nl.b_lms.sch.point.service.impl;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@ -559,7 +560,7 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl<BstIvtPackagein
} else {
quality_guaran_period = "180天";
}
String packagWeight = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("packagWeight").getValue();
//插入包装关系
PdmBiSubpackagerelation subpackagerelation = subpackagerelationService.getOne(new LambdaQueryWrapper<PdmBiSubpackagerelation>().eq(PdmBiSubpackagerelation::getContainer_name, whereJson.get("container_name")));
if (ObjectUtil.isEmpty(subpackagerelation)) {
@ -567,15 +568,21 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl<BstIvtPackagein
subpackagerelation.setWorkorder_id(IdUtil.getSnowflake(1, 1).nextIdStr());
subpackagerelation.setQuality_guaran_period(quality_guaran_period);
subpackagerelation.setSale_order_name(slittingproductionplan.getSale_order_name());
subpackagerelation.setCustomer_name((String) whereJson.get("customer_name"));
subpackagerelation.setCustomer_description((String) whereJson.get("customer_description"));
subpackagerelation.setCustomer_name(slittingproductionplan.getCostomer_code());
subpackagerelation.setCustomer_description(slittingproductionplan.getCostomer_name());
subpackagerelation.setProduct_name(slittingproductionplan.getProduct_name());
subpackagerelation.setProduct_description(slittingproductionplan.getDescription());
subpackagerelation.setDate_of_FG_inbound(DateUtil.format(DateUtil.date(), "yyyy-MM-dd"));
subpackagerelation.setContainer_name((String) whereJson.get("container_name"));
subpackagerelation.setWidth(String.valueOf(slittingproductionplan.getSplit_breadth()));
subpackagerelation.setThickness((String) whereJson.get("thickness"));
subpackagerelation.setNet_weight((String) whereJson.get("net_weight"));
subpackagerelation.setThickness(slittingproductionplan.getThickness());
//重量运算
Double paper_weight = Double.valueOf(slittingproductionplan.getPaper_weight());
Double weight = Double.valueOf(slittingproductionplan.getWeight());
Double packagWeightStr = Double.valueOf(packagWeight);
String taltotal = String.valueOf(weight-paper_weight-packagWeightStr);
subpackagerelation.setNet_weight(taltotal);
subpackagerelation.setLength(String.valueOf(slittingproductionplan.getSplit_height()));
subpackagerelation.setStatus("99");
subpackagerelation.setIsRePrintPackageBoxLabel("0");
@ -592,20 +599,21 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl<BstIvtPackagein
subpackagerelationService.save(subpackagerelation);
} else {
//更新入包装关系
subpackagerelation = new PdmBiSubpackagerelation();
subpackagerelation.setWorkorder_id(IdUtil.getSnowflake(1, 1).nextIdStr());
subpackagerelation.setQuality_guaran_period(quality_guaran_period);
subpackagerelation.setSale_order_name((String) whereJson.get("sale_order_name"));
subpackagerelation.setCustomer_name((String) whereJson.get("customer_name"));
subpackagerelation.setCustomer_description((String) whereJson.get("customer_description"));
subpackagerelation.setSale_order_name(slittingproductionplan.getSale_order_name());
subpackagerelation.setCustomer_name(slittingproductionplan.getCostomer_code());
subpackagerelation.setCustomer_description(slittingproductionplan.getCostomer_name());
subpackagerelation.setProduct_name(slittingproductionplan.getProduct_name());
subpackagerelation.setProduct_description(slittingproductionplan.getDescription());
subpackagerelation.setDate_of_FG_inbound(DateUtil.format(DateUtil.date(), "yyyy-MM-dd"));
subpackagerelation.setContainer_name((String) whereJson.get("container_name"));
subpackagerelation.setWidth(String.valueOf(slittingproductionplan.getSplit_breadth()));
subpackagerelation.setThickness(slittingproductionplan.getThickness());
Double paper_weight = Double.valueOf(slittingproductionplan.getPaper_weight());
Double weight = Double.valueOf(slittingproductionplan.getWeight());
Double packagWeightStr = Double.valueOf(packagWeight);
String taltotal = String.valueOf(weight-paper_weight-packagWeightStr);
subpackagerelation.setNet_weight(taltotal);
subpackagerelation.setLength(String.valueOf(slittingproductionplan.getSplit_height()));
subpackagerelation.setThickness((String) whereJson.get("thickness"));
subpackagerelation.setNet_weight((String) whereJson.get("net_weight"));
subpackagerelation.setStatus("99");
subpackagerelation.setIsRePrintPackageBoxLabel("0");
subpackagerelation.setIsUnPackBox("0");
@ -618,7 +626,6 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl<BstIvtPackagein
subpackagerelation.setNeed_delete("99");
subpackagerelation.setJoint_type(slittingproductionplan.getJoint_type());
subpackagerelation.setMaterial_type(slittingproductionplan.getMaterial_type());
subpackagerelationService.save(subpackagerelation);
subpackagerelationService.update(subpackagerelation);
}
}

12
lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/impl/StIvtIostorinvOutServiceImpl.java

@ -1428,11 +1428,11 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
String box_high = boxDao.getBox_high();
if (Integer.parseInt(box_high) <= Integer.parseInt(heightLevel1)) {
height = "('1','2','3')";
height = "'1','2','3'";
} else if (Integer.parseInt(box_high) > Integer.parseInt(heightLevel1) && Integer.parseInt(box_high) <= Integer.parseInt(heightLevel2)) {
height = "('2','3')";
height = "'2','3'";
} else {
height = "('3')";
height = "'3'";
}
moveParam.put("height", height);
moveParam.put("vehicle_type", boxDao.getVehicle_type());
@ -1569,11 +1569,11 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
String box_high = boxDao.getBox_high();
if (Integer.parseInt(box_high) <= Integer.parseInt(heightLevel1)) {
height = "('1','2','3')";
height = "'1','2','3'";
} else if (Integer.parseInt(box_high) > Integer.parseInt(heightLevel1) && Integer.parseInt(box_high) <= Integer.parseInt(heightLevel2)) {
height = "('2','3')";
height = "'2','3'";
} else {
height = "('3')";
height = "'3'";
}
moveParam.put("height", height);
moveParam.put("vehicle_type", boxDao.getVehicle_type());

71
lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/impl/StIvtIostorinvServiceImpl.java

@ -17,6 +17,7 @@ import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.nl.b_lms.pdm.subpackagerelation.dao.PdmBiSubpackagerelation;
import org.nl.b_lms.pdm.subpackagerelation.dao.mapper.PdmBiSubpackagerelationMapper;
import org.nl.b_lms.pdm.subpackagerelation.service.IpdmBiSubpackagerelationService;
import org.nl.b_lms.pdm_manage.enums.SUBEnum;
import org.nl.b_lms.sch.tasks.TwoInTask;
@ -32,6 +33,10 @@ import org.nl.b_lms.storage_manage.ios.service.iostorInv.dao.StIvtIostorinvdtl;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.dao.mapper.StIvtIostorinvMapper;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.util.service.InBussManageService;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.util.service.TwoInBussManageService;
import org.nl.b_lms.storage_manage.st.dao.StIvtSectattr;
import org.nl.b_lms.storage_manage.st.dao.StIvtStructattr;
import org.nl.b_lms.storage_manage.st.dao.mapper.StIvtSectattrMapper;
import org.nl.b_lms.storage_manage.st.dao.mapper.StIvtStructattrMapper;
import org.nl.b_lms.storage_manage.st.service.StIvtBsrealstorattrService;
import org.nl.common.TableDataInfo;
import org.nl.common.domain.query.PageQuery;
@ -142,6 +147,16 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl<StIvtIostorinvMapper,
@Autowired
private StIvtBsrealstorattrService bsrealstorattrService;
@Autowired
private PdmBiSubpackagerelationMapper pdmBiSubpackagerelationMapper;
@Autowired
private StIvtStructattrMapper stIvtStructattrMapper;
@Autowired
private StIvtSectattrMapper stIvtSectattrMapper;
@Override
public Object pageQuery(Map query, Pageable pageQuery) {
Page<Object> page = PageHelper.startPage(pageQuery.getPageNumber() + 1, pageQuery.getPageSize());
@ -182,21 +197,20 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl<StIvtIostorinvMapper,
iStIvtIostorinvdisService.insertDis(mstDao.getIostorinv_id(), disDaoMap);
// 更新子卷包装关系
String packageIn = rows.stream()
List<String> packageIn = rows.stream()
.map(row -> row.getString("package_box_sn"))
.distinct()
.collect(Collectors.joining("','"));
HashMap<String, String> map = new HashMap<>();
map.put("status", SUBEnum.STATUS.code("包装"));
.collect(Collectors.toList());
PdmBiSubpackagerelation pdmBiSubpackagerelation = new PdmBiSubpackagerelation();
pdmBiSubpackagerelation.setStatus(SUBEnum.STATUS.code("包装"));
if (IOSEnum.IN_TYPE.code("报废入库").equals(whereJson.get("bill_type"))) {
WQLObject.getWQLObject("PDM_BI_SubPackageRelation")
.update(map, "package_box_SN IN ('" + packageIn + "') AND status = '" + SUBEnum.STATUS.code("出库") + "'");
pdmBiSubpackagerelationMapper.update(pdmBiSubpackagerelation, new UpdateWrapper<PdmBiSubpackagerelation>().eq("package_box_sn", packageIn).eq("status", SUBEnum.STATUS.code("出库")));
} else {
WQLObject.getWQLObject("PDM_BI_SubPackageRelation")
.update(map, "package_box_SN IN ('" + packageIn + "') AND status = '" + SUBEnum.STATUS.code("生成") + "'");
pdmBiSubpackagerelationMapper.update(pdmBiSubpackagerelation, new UpdateWrapper<PdmBiSubpackagerelation>().eq("package_box_sn", packageIn).eq("status", SUBEnum.STATUS.code("生成")));
}
return mstDao.getIostorinv_id().toString();
@ -284,8 +298,7 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl<StIvtIostorinvMapper,
boolean tryLock = lock.tryLock(5, TimeUnit.SECONDS);
try {
if (tryLock) {
// 仓位表
WQLObject attrTab = WQLObject.getWQLObject("st_ivt_structattr");
// 库区表
WQLObject sectTab = WQLObject.getWQLObject("st_ivt_sectattr");
// 参数类型转换 Map-> JSONObject
@ -307,7 +320,7 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl<StIvtIostorinvMapper,
JSONObject jsonLock = new JSONObject();
ArrayList<String> paramLockList = new ArrayList<>();
// 仓位对象
JSONObject jsonAttr;
StIvtStructattr stIvtStructattr;
// 是否自动分配货位
Boolean checked = jsonObject.getBoolean("checked");
String height = "";
@ -330,33 +343,38 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl<StIvtIostorinvMapper,
String heightLevel2 = iSysParamService.findByCode("height_level_2").getValue();
String box_high = boxDao.getBox_high();
if (Integer.parseInt(box_high) <= Integer.parseInt(heightLevel1)) {
height = "('1','2','3')";
height = "'1','2','3'";
} else if (Integer.parseInt(box_high) > Integer.parseInt(heightLevel1) && Integer.parseInt(box_high) <= Integer.parseInt(heightLevel2)) {
height = "('2','3')";
height = "'2','3'";
} else {
height = "('3')";
height = "'3'";
}
attrParam.put("height", height);
JSONObject jsonSect = sectTab.query("sect_id = '" + jsonObject.getString("sect_id") + "'").uniqueResult(0);
// 判断是否是虚拟区
if (jsonSect.getString("sect_type_attr").equals(IOSEnum.SECT_TYPE.code("虚拟区"))) {
jsonAttr = attrTab.query("sect_id = '" + jsonObject.getString("sect_id") + "' AND lock_type = '1' AND is_delete = '0' AND IFNULL( storagevehicle_code, '' ) = ''").uniqueResult(0);
stIvtStructattr = stIvtStructattrMapper.selectOne(new QueryWrapper<StIvtStructattr>().eq("sect_id", jsonObject.getString("sect_id")).eq("lock_type", "1").eq("is_delete", "0").apply("IFNULL(storagevehicle_code, '') = ''"));
} else {
//TODO jsonAttr = inBussManageService.getOneStruct(attrParam);
if (ObjectUtil.isNotEmpty(whereJson.get("in_buss"))) {
attrParam.put("move_block_num", MapUtil.getStr(whereJson, "move_block_num"));
}
jsonAttr = twoInBussManageService.getOneStruct(attrParam);
stIvtStructattr = twoInBussManageService.getOneStruct(attrParam);
}
} else {
// 指定分配
jsonAttr = attrTab.query("struct_id = '" + jsonDis.getString("struct_id") + "'").uniqueResult(0);
stIvtStructattr = stIvtStructattrMapper.selectOne(new QueryWrapper<StIvtStructattr>().eq("struct_id", jsonDis.getString("struct_id")));
}
if (ObjectUtil.isEmpty(jsonAttr)) {
if (ObjectUtil.isEmpty(stIvtStructattr)) {
throw new BadRequestException("没有可用仓位!");
}
// 调用业务处理类锁定货位
paramLockList.add(jsonAttr.getString("struct_code"));
paramLockList.add(stIvtStructattr.getStruct_code());
jsonLock.put("inv_type", mstDao.getBill_type());
jsonLock.put("inv_id", mstDao.getIostorinv_id());
jsonLock.put("inv_code", mstDao.getBill_code());
@ -367,6 +385,7 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl<StIvtIostorinvMapper,
String work_status;
Long task_id = null;
JSONObject jsonSect = sectTab.query("sect_id = '" + jsonAttr.getString("sect_id") + "'").uniqueResult(0);
StIvtSectattr stIvtSectattr = stIvtSectattrMapper.selectOne(new QueryWrapper<StIvtSectattr>().eq("sect_id", jsonAttr.getString("sect_id")));
if (jsonSect.getString("sect_type_attr").equals(IOSEnum.SECT_TYPE.code("虚拟区"))) {
// 虚拟区:执行状态为完成
work_status = IOSEnum.WORK_STATUS.code("完成");
@ -377,12 +396,12 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl<StIvtIostorinvMapper,
// 更新分配明细
iStIvtIostorinvdisService.update(
new UpdateWrapper<StIvtIostorinvdis>().lambda()
.set(StIvtIostorinvdis::getStruct_id, jsonAttr.getString("struct_id"))
.set(StIvtIostorinvdis::getStruct_code, jsonAttr.getString("struct_code"))
.set(StIvtIostorinvdis::getStruct_name, jsonAttr.getString("struct_name"))
.set(StIvtIostorinvdis::getSect_id, jsonAttr.getString("sect_id"))
.set(StIvtIostorinvdis::getSect_code, jsonAttr.getString("sect_code"))
.set(StIvtIostorinvdis::getSect_name, jsonAttr.getString("sect_name"))
.set(StIvtIostorinvdis::getStruct_id, stIvtStructattr.getStruct_id())
.set(StIvtIostorinvdis::getStruct_code, stIvtStructattr.getStruct_code())
.set(StIvtIostorinvdis::getStruct_name, stIvtStructattr.getStruct_name())
.set(StIvtIostorinvdis::getSect_id, stIvtStructattr.getSect_id())
.set(StIvtIostorinvdis::getSect_code, stIvtStructattr.getSect_code())
.set(StIvtIostorinvdis::getSect_name, stIvtStructattr.getSect_name())
.set(StIvtIostorinvdis::getWork_status, work_status)
.set(StIvtIostorinvdis::getTask_id, task_id)
.eq(StIvtIostorinvdis::getIostorinv_id, disDao.getIostorinv_id())

60
lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/InBussManageServiceImpl.java

@ -9,6 +9,9 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import lombok.extern.log4j.Log4j;
import org.apache.commons.lang3.StringUtils;
import org.nl.b_lms.pdm.subpackagerelation.dao.PdmBiSubpackagerelation;
import org.nl.b_lms.pdm.subpackagerelation.dao.mapper.PdmBiSubpackagerelationMapper;
import org.nl.b_lms.pdm.subpackagerelation.service.IpdmBiSubpackagerelationService;
import org.nl.b_lms.pdm_manage.enums.SUBEnum;
import org.nl.b_lms.sch.task.dao.SchBaseTask;
import org.nl.b_lms.sch.task.service.IschBaseTaskService;
@ -68,6 +71,9 @@ public class InBussManageServiceImpl implements InBussManageService {
@Autowired
private LmsToMesServiceImpl lmsToMesServiceImpl;
@Autowired
private PdmBiSubpackagerelationMapper pdmBiSubpackagerelationMapper;
@Resource
@Qualifier("threadPoolExecutor")
private ThreadPoolExecutor pool;
@ -234,8 +240,6 @@ public class InBussManageServiceImpl implements InBussManageService {
@Override
@Transactional
public void inTask(JSONObject jsonObject) {
// 子卷包装关系表
WQLObject subTab = WQLObject.getWQLObject("pdm_bi_subpackagerelation");
// 处理子卷号
String material_barcode = jsonObject.getString("material_barcode");
@ -247,27 +251,27 @@ public class InBussManageServiceImpl implements InBussManageService {
}
List<String> pcsnList = Arrays.asList(material_barcode.split(","));
// 查询子卷包装关系
List<JSONObject> subList = subTab.query("container_name in ('" + String.join("','", pcsnList) + "') and status in ('0','1','99')")
.getResultJSONArray(0).toJavaList(JSONObject.class);
if (ObjectUtil.isEmpty(subList)) {
List<PdmBiSubpackagerelation> pdmBiSubpackagerelations = pdmBiSubpackagerelationMapper.selectList(new QueryWrapper<PdmBiSubpackagerelation>().in("container_name", pcsnList).in("status", "0", "1", "99"));
if (ObjectUtil.isEmpty(pdmBiSubpackagerelations)) {
throw new BadRequestException("未查询到子卷包装信息!");
}
if (StringUtils.isBlank(subList.get(0).getString("package_box_sn"))) {
if (StringUtils.isBlank(pdmBiSubpackagerelations.get(0).getPackage_box_sn())) {
throw new BadRequestException("木箱号不能为空!");
}
// 主表
JSONObject mst = new JSONObject();
mst.put("stor_id", IOSEnum.STOR_ID.code("二期"));
mst.put("bill_status", IOSEnum.BILL_STATUS.code("生成"));
mst.put("total_qty", subList.stream().map(row -> row.getDoubleValue("net_weight")).reduce(Double::sum).orElse(0.00));
mst.put("detail_count", subList.size());
mst.put("total_qty", pdmBiSubpackagerelations.stream().map(row -> Double.valueOf(row.getNet_weight())).reduce(Double::sum).orElse(0.00));
mst.put("detail_count", pdmBiSubpackagerelations.size());
// 根据子卷类型判断是返检入库还是反切入库
if (ObjectUtil.isEmpty(subList.get(0).getString("sub_type"))) {
if (ObjectUtil.isEmpty(pdmBiSubpackagerelations.get(0).getSub_type())) {
mst.put("bill_type", jsonObject.getString("bill_type"));
} else {
if (subList.get(0).getString("sub_type").equals(SUBEnum.SUB_TYPE.code("返检入库"))) {
if (pdmBiSubpackagerelations.get(0).getSub_type().equals(SUBEnum.SUB_TYPE.code("返检入库"))) {
mst.put("bill_type", IOSEnum.IN_TYPE.code("返检入库"));
} else if (subList.get(0).getString("sub_type").equals(SUBEnum.SUB_TYPE.code("改切入库"))) {
} else if (pdmBiSubpackagerelations.get(0).getSub_type().equals(SUBEnum.SUB_TYPE.code("改切入库"))) {
mst.put("bill_type", IOSEnum.IN_TYPE.code("改切入库"));
} else {
mst.put("bill_type", jsonObject.getString("bill_type"));
@ -278,33 +282,33 @@ public class InBussManageServiceImpl implements InBussManageService {
// 明细
ArrayList<LinkedHashMap> tableData = new ArrayList<>();
List<String> subs = new ArrayList<>();
for (int i = 0; i < subList.size(); i++) {
JSONObject json = subList.get(i);
for (int i = 0; i < pdmBiSubpackagerelations.size(); i++) {
PdmBiSubpackagerelation pdmBiSubpackagerelation = pdmBiSubpackagerelations.get(i);
LinkedHashMap<String, Object> jsonDtl = new LinkedHashMap<>();
jsonDtl.put("package_box_sn", json.getString("package_box_sn"));
jsonDtl.put("thickness", json.getString("thickness"));
jsonDtl.put("plan_qty", json.getString("net_weight"));
jsonDtl.put("customer_description", json.getString("customer_description"));
jsonDtl.put("quanlity_in_box", json.getString("quanlity_in_box"));
jsonDtl.put("product_name", json.getString("product_name"));
jsonDtl.put("net_weight", json.getString("net_weight"));
jsonDtl.put("container_name", json.getString("container_name"));
jsonDtl.put("width", json.getString("width"));
jsonDtl.put("sap_pcsn", json.getString("sap_pcsn"));
jsonDtl.put("customer_name", json.getString("customer_name"));
jsonDtl.put("sale_order_name", json.getString("sale_order_name"));
jsonDtl.put("product_description", json.getString("product_description"));
jsonDtl.put("package_box_sn", pdmBiSubpackagerelation.getPackage_box_sn());
jsonDtl.put("thickness", pdmBiSubpackagerelation.getThickness());
jsonDtl.put("plan_qty", pdmBiSubpackagerelation.getNet_weight());
jsonDtl.put("customer_description", pdmBiSubpackagerelation.getCustomer_description());
jsonDtl.put("quanlity_in_box", pdmBiSubpackagerelation.getQuanlity_in_box());
jsonDtl.put("product_name", pdmBiSubpackagerelation.getProduct_name());
jsonDtl.put("net_weight", pdmBiSubpackagerelation.getNet_weight());
jsonDtl.put("container_name", pdmBiSubpackagerelation.getContainer_name());
jsonDtl.put("width", pdmBiSubpackagerelation.getWidth());
jsonDtl.put("sap_pcsn", pdmBiSubpackagerelation.getSap_pcsn());
jsonDtl.put("customer_name", pdmBiSubpackagerelation.getCustomer_name());
jsonDtl.put("sale_order_name", pdmBiSubpackagerelation.getSale_order_name());
jsonDtl.put("product_description", pdmBiSubpackagerelation.getProduct_description());
jsonDtl.put("quality_scode", IOSEnum.QUALITY_SCODE.code("合格品"));
jsonDtl.put("is_active", IOSEnum.IS_SEND.code("是"));
tableData.add(jsonDtl);
subs.add(json.getString("container_name"));
subs.add(pdmBiSubpackagerelation.getContainer_name());
}
String package_box_sn = (String) tableData.get(0).get("package_box_sn");
try {
JSONObject param_jo = new JSONObject();
param_jo.put("box_no", package_box_sn);
param_jo.put("box_weight", subList.get(0).getString("box_weight"));
param_jo.put("box_weight", pdmBiSubpackagerelations.get(0).getBox_weight());
param_jo.put("container_name", subs);
lmsToMesServiceImpl.BoxDataCollectionSubmit2(param_jo);
} catch (Exception e) {

24
lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/OutBussManageServiceImpl.java

@ -445,11 +445,11 @@ public class OutBussManageServiceImpl implements OutBussManageService {
String box_high = boxDao.getBox_high();
if (Integer.parseInt(box_high) <= Integer.parseInt(heightLevel1)) {
height = "('1','2','3')";
height = "'1','2','3'";
} else if (Integer.parseInt(box_high) > Integer.parseInt(heightLevel1) && Integer.parseInt(box_high) <= Integer.parseInt(heightLevel2)) {
height = "('2','3')";
height = "'2','3'";
} else {
height = "('3')";
height = "'3'";
}
moveParam.put("height", height);
moveParam.put("vehicle_type", boxDao.getVehicle_type());
@ -593,11 +593,11 @@ public class OutBussManageServiceImpl implements OutBussManageService {
String box_high = boxDao.getBox_high();
if (Integer.parseInt(box_high) <= Integer.parseInt(heightLevel1)) {
height = "('1','2','3')";
height = "'1','2','3'";
} else if (Integer.parseInt(box_high) > Integer.parseInt(heightLevel1) && Integer.parseInt(box_high) <= Integer.parseInt(heightLevel2)) {
height = "('2','3')";
height = "'2','3'";
} else {
height = "('3')";
height = "'3'";
}
moveParam.put("height", height);
moveParam.put("vehicle_type", boxDao.getVehicle_type());
@ -763,11 +763,11 @@ public class OutBussManageServiceImpl implements OutBussManageService {
String box_high = boxDao.getBox_high();
if (Integer.parseInt(box_high) <= Integer.parseInt(heightLevel1)) {
height = "('1','2','3')";
height = "'1','2','3'";
} else if (Integer.parseInt(box_high) > Integer.parseInt(heightLevel1) && Integer.parseInt(box_high) <= Integer.parseInt(heightLevel2)) {
height = "('2','3')";
height = "'2','3'";
} else {
height = "('3')";
height = "'3'";
}
moveParam.put("height", height);
@ -885,11 +885,11 @@ public class OutBussManageServiceImpl implements OutBussManageService {
String box_high = boxDao.getBox_high();
if (Integer.parseInt(box_high) <= Integer.parseInt(heightLevel1)) {
height = "('1','2','3')";
height = "'1','2','3'";
} else if (Integer.parseInt(box_high) > Integer.parseInt(heightLevel1) && Integer.parseInt(box_high) <= Integer.parseInt(heightLevel2)) {
height = "('2','3')";
height = "'2','3'";
} else {
height = "('3')";
height = "'3'";
}
moveParam.put("height", height);

32
lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/TwoInBussManageServiceImpl.java

@ -3,17 +3,22 @@ package org.nl.b_lms.storage_manage.ios.service.iostorInv.util.impl;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import lombok.extern.log4j.Log4j;
import org.nl.b_lms.storage_manage.ios.enums.IOSEnum;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.util.service.TwoInBussManageService;
import org.nl.b_lms.storage_manage.st.dao.StIvtStructattr;
import org.nl.b_lms.storage_manage.st.dao.mapper.StIvtStructattrMapper;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.modules.wql.WQL;
import org.nl.modules.wql.core.bean.WQLObject;
import org.nl.modules.wql.util.SpringContextHolder;
import org.nl.system.service.param.impl.SysParamServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
@ -27,12 +32,16 @@ public class TwoInBussManageServiceImpl implements TwoInBussManageService {
*/
private List<String> notInBlockList = new ArrayList<>();
@Autowired
private StIvtStructattrMapper stIvtStructattrMapper;
@Override
public JSONObject getOneStruct(JSONObject jsonObject) {
public JSONObject getOneStruct(JSONObject jsonObject) {
/*
* 成品入库规则
* 1.负载均衡相同木箱规格长宽高订单客户物料的 平均分配在每个巷道
* 2.相同木箱规格订单客户物料的可以放双伸位即可以放2个木箱
* 1.根据托盘类型确认巷道小托盘负载均衡到所有巷道大托盘去大托盘巷道
* 2.负载均衡相同木箱规格长宽高订单客户物料的 平均分配在每个巷道
* 3.相同木箱规格订单客户物料的可以放双伸位即可以放2个木箱
* 匹配货位逻辑
* 1.根据仓库库区查询所有货位判断是否有空位
* 2.确定巷道查看每个巷道相同木箱规格等 的数量找到数量最小的那个巷道
@ -59,6 +68,10 @@ public class TwoInBussManageServiceImpl implements TwoInBussManageService {
JSONArray attrArry = new JSONArray();
String input = jsonObject.getString("height");
List<String> result = Arrays.asList(input.split("','"));
//
if (ObjectUtil.isEmpty(block_num)) {
attrArry = attrTab.query("IFNULL(storagevehicle_code,'') = '' " +
"AND is_used = '" + IOSEnum.IS_NOTANDYES.code("是") + "' AND is_delete = '" + IOSEnum.IS_NOTANDYES.code("否") + "' " +
@ -66,6 +79,19 @@ public class TwoInBussManageServiceImpl implements TwoInBussManageService {
"AND storagevehicle_type = '" + jsonObject.getString("vehicle_type") + "'" +
"AND height IN " + jsonObject.getString("height") +
"AND sect_id = '" + jsonObject.getString("sect_id") + "'").getResultJSONArray(0);
LambdaQueryWrapper<StIvtStructattr> stIvtStructattrLambdaQueryWrapper = new LambdaQueryWrapper<>();
stIvtStructattrLambdaQueryWrapper.eq(StIvtStructattr::getIs_delete, IOSEnum.IS_NOTANDYES.code("否"))
.eq(StIvtStructattr::getIs_used, IOSEnum.IS_NOTANDYES.code("是")).eq(StIvtStructattr::getSect_id, jsonObject.getString("sect_id"))
.eq(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定")).eq(StIvtStructattr::getStor_id, jsonObject.getString("stor_id"))
.in(StIvtStructattr::getHeight, result);
if (){
}
stIvtStructattrMapper.selectList()
} else {
attrArry = attrTab.query("IFNULL(storagevehicle_code,'') = '' " +
"AND is_used = '" + IOSEnum.IS_NOTANDYES.code("是") + "' AND is_delete = '" + IOSEnum.IS_NOTANDYES.code("否") + "' " +

119
lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/md/dao/MdPdStorageVehicleInfo.java

@ -0,0 +1,119 @@
package org.nl.b_lms.storage_manage.md.dao;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.math.BigDecimal;
@Data
@TableName("md_pb_storagevehicleinfo")
public class MdPdStorageVehicleInfo {
/**
* 载具标识 - 主键
*/
@TableId(value = "storagevehicle_id", type = IdType.AUTO)
private String storagevehicle_id;
/**
* 载具编码 - 非空
*/
private String storagevehicle_code;
/**
* 载具名称 - 可为空
*/
private String storagevehicle_name;
/**
* 一维码 - 可为空
*/
private String one_code;
/**
* 二维码 - 可为空
*/
private String two_code;
/**
* RFID编码 - 可为空
*/
private String rfid_code;
/**
* 创建人 - 非空
*/
private Long create_id;
/**
* 创建人姓名 - 可为空
*/
private String create_name;
/**
* 创建时间 - 非空
*/
private String create_time;
/**
* 修改人 - 可为空
*/
private Long update_optid;
/**
* 修改人姓名 - 可为空
*/
private String update_optname;
/**
* 修改时间 - 可为空
*/
private String update_time;
/**
* 是否删除 - 默认 '0'
*/
private String is_delete;
/**
* 是否启用 - 默认 '1'
*/
private String is_used;
/**
* 载具类型 - 非空
*/
private String storagevehicle_type;
/**
* 载具宽度 - 可为空
*/
private BigDecimal vehicle_width;
/**
* 载具长度 - 可为空
*/
private BigDecimal vehicle_long;
/**
* 载具高度 - 可为空
*/
private BigDecimal vehicle_height;
/**
* 载具是否超仓位 - 默认 '00'
*/
private String overstruct_type;
/**
* 占仓位数 - 默认 '1'
*/
private BigDecimal occupystruct_qty;
/**
* 外部标识 - 可为空
*/
private String ext_id;
}

104
lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/md/dao/MdPdStoragevehicleext.java

@ -0,0 +1,104 @@
package org.nl.b_lms.storage_manage.md.dao;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.math.BigDecimal;
@Data
@TableName("md_pb_storagevehicleext")
public class MdPdStoragevehicleext {
/**
* 载具扩展标识
*/
@TableId(value = "storagevehicleext_id", type = IdType.NONE)
private String storagevehicleext_id;
/**
* 载具标识
*/
private String storagevehicle_id;
/**
* 载具编码
*/
private String storagevehicle_code;
/**
* 载具类型
*/
private String storagevehicle_type;
/**
* 物料标识
*/
private String material_id;
/**
* 批次
*/
private String pcsn;
/**
* 数量计量单位标识
*/
private Long qty_unit_id;
/**
* 数量计量单位名称
*/
private String qty_unit_name;
/**
* 数量
*/
private BigDecimal storage_qty;
/**
* 工艺指令卡
*/
private Long workordercard_id;
/**
* 配方标识
*/
private Long formula_id;
/**
* 是否需清洗
*/
private String is_need_clean;
/**
* 备注
*/
private String remark;
/**
* 修改人 - 可为空
*/
private Long update_optid;
/**
* 修改人姓名 - 可为空
*/
private String update_optname;
/**
* 修改时间 - 可为空
*/
private String update_time;
/**
* 设备标识
*/
private Long device_uuid;
/**
* 载具重量
*/
private String qty;
}

7
lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/md/dao/mapper/MdPdStoragevehicleextMapper.java

@ -0,0 +1,7 @@
package org.nl.b_lms.storage_manage.md.dao.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.nl.b_lms.storage_manage.md.dao.MdPdStoragevehicleext;
public interface MdPdStoragevehicleextMapper extends BaseMapper<MdPdStoragevehicleext> {
}

5
lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/md/dao/mapper/MdPdStoragevehicleextMapper.xml

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.nl.b_lms.storage_manage.md.dao.mapper.MdPdStoragevehicleextMapper">
</mapper>

8
lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/md/dao/mapper/MdStorageVehicleInfoMapper.java

@ -0,0 +1,8 @@
package org.nl.b_lms.storage_manage.md.dao.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.nl.b_lms.storage_manage.md.dao.MdPdStorageVehicleInfo;
public interface MdStorageVehicleInfoMapper extends BaseMapper<MdPdStorageVehicleInfo> {
}

5
lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/md/dao/mapper/MdStorageVehicleInfoMapper.xml

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.nl.b_lms.storage_manage.md.dao.mapper.MdStorageVehicleInfoMapper">
</mapper>

4
lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/md/service/MdPdStoragevehicleextService.java

@ -0,0 +1,4 @@
package org.nl.b_lms.storage_manage.md.service;
public interface MdPdStoragevehicleextService {
}

4
lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/md/service/MdStorageVehicleInfoService.java

@ -0,0 +1,4 @@
package org.nl.b_lms.storage_manage.md.service;
public interface MdStorageVehicleInfoService {
}

4
lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/md/service/StorageVehicleInfoService.java

@ -0,0 +1,4 @@
package org.nl.b_lms.storage_manage.md.service;
public interface StorageVehicleInfoService {
}

15
lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/md/service/impl/StorageVehicleInfoServiceImpl.java

@ -0,0 +1,15 @@
package org.nl.b_lms.storage_manage.md.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.nl.b_lms.storage_manage.md.dao.MdPdStorageVehicleInfo;
import org.nl.b_lms.storage_manage.md.dao.mapper.MdStorageVehicleInfoMapper;
import org.nl.b_lms.storage_manage.md.service.StorageVehicleInfoService;
import org.springframework.stereotype.Service;
@Slf4j
@Service
public class StorageVehicleInfoServiceImpl extends ServiceImpl<MdStorageVehicleInfoMapper, MdPdStorageVehicleInfo> implements StorageVehicleInfoService {
}

371
lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java

@ -40,6 +40,10 @@ import org.nl.b_lms.storage_manage.ios.enums.IOSEnum;
import org.nl.b_lms.storage_manage.ios.enums.TASKEnum;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.IStIvtIostorinvOutService;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.util.service.*;
import org.nl.b_lms.storage_manage.md.dao.MdPdStorageVehicleInfo;
import org.nl.b_lms.storage_manage.md.dao.MdPdStoragevehicleext;
import org.nl.b_lms.storage_manage.md.dao.mapper.MdPdStoragevehicleextMapper;
import org.nl.b_lms.storage_manage.md.dao.mapper.MdStorageVehicleInfoMapper;
import org.nl.common.enums.NoticeTypeEnum;
import org.nl.common.enums.PackageInfoIvtEnum;
import org.nl.common.enums.SpecEnum;
@ -84,8 +88,7 @@ import java.util.stream.Collectors;
@Slf4j
public class AcsToWmsServiceImpl implements AcsToWmsService {
private static Map<String,String> Task_Status_Convers = MapOf.of("1",TaskStatusEnum.EXECUTING.getCode(),"2",TaskStatusEnum.FINISHED.getCode(),"3","0");
private static Map<String, String> Task_Status_Convers = MapOf.of("1", TaskStatusEnum.EXECUTING.getCode(), "2", TaskStatusEnum.FINISHED.getCode(), "3", "0");
private final StorPublicService storPublicService;
@ -101,7 +104,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
private final ISysNoticeService noticeService;
@Autowired
private IPdmBiContainerinboundService iPdmBiContainerinboundService;
private IPdmBiContainerinboundService iPdmBiContainerinboundService;
/**
* 入库处理类服务
@ -147,7 +150,6 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
private IbstIvtPackageinfoivtService packageinfoivtService;
@Autowired
private IMdpbBoxtypeService iMdpbBoxtypeService;
@ -158,7 +160,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
private final IPdmBiSlittingproductionplanService slittingproductionplanService;
private final OutBussManageService outBussManageService;
private final OutBussManageService outBussManageService;
@Autowired
private ProductOutTwoService productOutTwoService;
@ -168,6 +170,13 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
@Autowired
private IBstIvtShafttubeivtService shafttubeivtService;
@Autowired
private MdStorageVehicleInfoMapper mdStorageVehicleInfoMapper;
@Autowired
private MdPdStoragevehicleextMapper mdPdStoragevehicleextMapper;
/**
* task_id任务标识
@ -195,39 +204,39 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
JSONObject task = WQLObject.getWQLObject("SCH_BASE_Task")
.query("task_id = '" + task_id + "'")
.uniqueResult(0);
if (ObjectUtil.isEmpty(task)){
throw new BadRequestException("未找到任务标识为:" + task_id + "的任务!");
if (ObjectUtil.isEmpty(task)) {
throw new BadRequestException("未找到任务标识为:" + task_id + "的任务!");
}
if ("1".equals(task.getString("is_delete"))){
log.debug(task_id+"当前LMS任务已删除,不需要再次反馈更新!");
if ("1".equals(task.getString("is_delete"))) {
log.debug(task_id + "当前LMS任务已删除,不需要再次反馈更新!");
continue;
}
if ("08,07".contains(task.getString("task_status"))){
log.debug(task_id+"当前LMS任务完成或取消,不需要再次反馈更新!");
if ("08,07".contains(task.getString("task_status"))) {
log.debug(task_id + "当前LMS任务完成或取消,不需要再次反馈更新!");
continue;
}
if (StrUtil.isNotEmpty(row.getString("car_no"))) {
WQLObject.getWQLObject("SCH_BASE_Task")
.update(MapOf.of("car_no",row.getString("car_no")),"task_id = '" + task_id + "'");
.update(MapOf.of("car_no", row.getString("car_no")), "task_id = '" + task_id + "'");
}
String handleClassName = task.getString("handle_class");
if (StrUtil.isEmpty(handleClassName)) {
throw new BadRequestException("当前任务的处理类未找到!");
}
AbstractAcsTask abstractTask = (AbstractAcsTask)SpringContextHolder.getBean(Class.forName(task.getString("handle_class")));
abstractTask.updateTaskStatus(row,Task_Status_Convers.get(row.getString("task_status")));
AbstractAcsTask abstractTask = (AbstractAcsTask) SpringContextHolder.getBean(Class.forName(task.getString("handle_class")));
abstractTask.updateTaskStatus(row, Task_Status_Convers.get(row.getString("task_status")));
} else {
throw new BadRequestException("任务标识为:" + task_id + "的任务正在操作中!");
}
}catch (BadRequestException ex){
log.error(task_id+"acs更新任务失败:{}", ex);
WQLObject.getWQLObject("SCH_BASE_Task").update(MapOf.of("remark",DateUtil.now()+"更新"+row.getString("task_status")+"失败:"+ex.getMessage()),"task_id = '" + task_id + "'");
} catch (BadRequestException ex) {
log.error(task_id + "acs更新任务失败:{}", ex);
WQLObject.getWQLObject("SCH_BASE_Task").update(MapOf.of("remark", DateUtil.now() + "更新" + row.getString("task_status") + "失败:" + ex.getMessage()), "task_id = '" + task_id + "'");
throw ex;
}catch (Exception ex){
log.error(task_id+"acs更新任务失败:{}", ex);
WQLObject.getWQLObject("SCH_BASE_Task").update(MapOf.of("remark",DateUtil.now()+"更新"+row.getString("task_status")+"失败,系统异常"),"task_id = '" + task_id + "'");
} catch (Exception ex) {
log.error(task_id + "acs更新任务失败:{}", ex);
WQLObject.getWQLObject("SCH_BASE_Task").update(MapOf.of("remark", DateUtil.now() + "更新" + row.getString("task_status") + "失败,系统异常"), "task_id = '" + task_id + "'");
throw ex;
}finally {
} finally {
if (lock.isLocked() && lock.isHeldByCurrentThread()) {
lock.unlock();
}
@ -267,7 +276,6 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
}
@Override
public Map<String, Object> orderFinish(String string) {
JSONObject orderJson = JSONObject.parseObject(string);
@ -1079,7 +1087,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
result.put("status", HttpStatus.OK.value());
result.put("message", "反馈成功,ACS上报无货且此时LMS该点位没有任何任务!");
return result;
}else {
} else {
boolean need_clean = false;
for (int i = 0; i < left_arr.size(); i++) {
JSONObject left_jo = left_arr.getJSONObject(i);
@ -1104,7 +1112,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
result.put("status", HttpStatus.OK.value());
result.put("message", "反馈成功,ACS上报无货且此时LMS该点位没有任何任务!");
return result;
}else {
} else {
boolean need_clean = false;
for (int i = 0; i < right_arr.size(); i++) {
JSONObject right_jo = right_arr.getJSONObject(i);
@ -1200,8 +1208,6 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
}
@Override
@Transactional(rollbackFor = Exception.class)
@SneakyThrows
@ -1236,93 +1242,86 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
if (ObjectUtil.isEmpty(whereJson.getString("material_barcode"))) {
throw new BadRequestException("子卷号不能为空!");
}
// 5-木箱入库.木箱回库
String materialBarcode = whereJson.getString("material_barcode");
if (materialBarcode.contains("BRMX")){
String brBox = Arrays.asList(materialBarcode.split(",")).get(0);
whereJson.put("box_no", brBox.replace("BR", ""));
inBoxManageService.inBox(whereJson);
}else {
if (whereJson.getIntValue("weight") <= 0) {
throw new BadRequestException("上报的重量不能为0!");
}
List<String> errorMsg = new ArrayList<>();
JSONObject jsonObject = ComPareUtil.CompareWhight(whereJson);
Boolean inbound = jsonObject.getBoolean("inbound");
Boolean compaerResult = jsonObject.getBoolean("compaer_result");
String box_no = jsonObject.getString("box_no");
Integer box_weight = jsonObject.getIntValue("box_weight");
Integer current_weight = jsonObject.getIntValue("current_weight");
List<String> containers = jsonObject.getObject("containers", List.class);
int count = taskService.count(new QueryWrapper<SchBaseTask>()
.eq("point_code1", whereJson.getString("device_code"))
.eq("vehicle_code2", whereJson.getString("vehicle_code"))
.eq("is_delete", "0")
.lt("task_status", TaskStatusEnum.EXECUTING.getCode()));
JSONObject jsonExt = WQLObject.getWQLObject("md_pb_storagevehicleext").query("storagevehicle_code = '" + whereJson.getString("vehicle_code") + "'").uniqueResult(0);
if (ObjectUtil.isEmpty(jsonExt)) {
errorMsg.add("载具无数据"+whereJson.getString("vehicle_code"));
}else {
String pcsn = jsonExt.getString("pcsn");
if (StringUtils.isNotEmpty(pcsn)){
JSONArray stIvtStructattr = WQLObject.getWQLObject("st_ivt_structattr").query("storagevehicle_code = '" + pcsn + "'").getResultJSONArray(0);
if (stIvtStructattr != null && stIvtStructattr.size() > 0) {
errorMsg.add("载具"+whereJson.getString("vehicle_code")+"已绑定"+pcsn);
}
}
}
if (!compaerResult){
errorMsg.add("称重"+current_weight+"不匹配"+box_weight);
Param notify = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("weight_notify");
if (notify!=null && StringUtils.isNotEmpty(notify.getValue())){
AutoSendFeiShu.sendFeiShuMsg(notify.getValue(),box_no+"称重"+current_weight+",理论"+box_weight,"二期称重异常提醒");
if (whereJson.getIntValue("weight") <= 0) {
throw new BadRequestException("上报的重量不能为0!");
}
List<String> errorMsg = new ArrayList<>();
JSONObject jsonObject = ComPareUtil.CompareWhight(whereJson);
Boolean inbound = jsonObject.getBoolean("inbound");
Boolean compaerResult = jsonObject.getBoolean("compaer_result");
String box_no = jsonObject.getString("box_no");
Integer box_weight = jsonObject.getIntValue("box_weight");
Integer current_weight = jsonObject.getIntValue("current_weight");
List<String> containers = jsonObject.getObject("containers", List.class);
int count = taskService.count(new QueryWrapper<SchBaseTask>()
.eq("point_code1", whereJson.getString("device_code"))
.eq("vehicle_code2", whereJson.getString("vehicle_code"))
.eq("is_delete", "0")
.lt("task_status", TaskStatusEnum.EXECUTING.getCode()));
MdPdStoragevehicleext mdPdStoragevehicleext = mdPdStoragevehicleextMapper.selectOne(new QueryWrapper<MdPdStoragevehicleext>().eq("storagevehicle_code", whereJson.getString("vehicle_code")));
if (ObjectUtil.isEmpty(mdPdStoragevehicleext)) {
errorMsg.add("载具无数据" + whereJson.getString("vehicle_code"));
} else {
String pcsn = mdPdStoragevehicleext.getPcsn();
if (StringUtils.isNotEmpty(pcsn)) {
JSONArray stIvtStructattr = WQLObject.getWQLObject("st_ivt_structattr").query("storagevehicle_code = '" + pcsn + "'").getResultJSONArray(0);
if (stIvtStructattr != null && stIvtStructattr.size() > 0) {
errorMsg.add("载具" + whereJson.getString("vehicle_code") + "已绑定" + pcsn);
}
}
if (!inbound){
errorMsg.add("手动至异常口");
}
if (count>0){
errorMsg.add(whereJson.getString("vehicle_code")+"存在任务");
}
if (!compaerResult) {
errorMsg.add("称重" + current_weight + "不匹配" + box_weight);
Param notify = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("weight_notify");
if (notify != null && StringUtils.isNotEmpty(notify.getValue())) {
AutoSendFeiShu.sendFeiShuMsg(notify.getValue(), box_no + "称重" + current_weight + ",理论" + box_weight, "二期称重异常提醒");
}
//"material_barcode":"C1101,","device_code":"RK1018","weight":500.95,"vehicle_code":"B01401","type":"1"
if (CollectionUtils.isEmpty(errorMsg)) {
whereJson.put("bill_type", IOSEnum.IN_TYPE.code("生产入库"));
inBussManageService.inTask(whereJson);
PdmProductSpecServiceImpl.doRecord(SpecEnum.RK,null,Boolean.TRUE,null,containers);
}
if (!inbound) {
errorMsg.add("手动至异常口");
}
if (count > 0) {
errorMsg.add(whereJson.getString("vehicle_code") + "存在任务");
}
//"material_barcode":"C1101,","device_code":"RK1018","weight":500.95,"vehicle_code":"B01401","type":"1"
if (CollectionUtils.isEmpty(errorMsg)) {
whereJson.put("bill_type", IOSEnum.IN_TYPE.code("生产入库"));
inBussManageService.inTask(whereJson);
PdmProductSpecServiceImpl.doRecord(SpecEnum.RK, null, Boolean.TRUE, null, containers);
} else {
iPdmBiContainerinboundService
.update(new UpdateWrapper<PdmBiContainerinbound>()
.set("remark", JSONObject.toJSONString(errorMsg))
.eq("box", box_no));
//更新子卷入库备注信息
JSONObject jsonTaskParam = new JSONObject();
//创建异常任务去异常入库口
//入库口
jsonTaskParam.put("point_code1", "RK1018");
//异常位
jsonTaskParam.put("point_code2", "RK1003");
jsonTaskParam.put("vehicle_code", jsonObject.getString("box_no"));
jsonTaskParam.put("vehicle_code2", whereJson.getString("vehicle_code"));
JSONObject request_param = new JSONObject();
if (whereJson.getString("vehicle_code").startsWith("A")) {
request_param.put("containerType", "2");
} else if (whereJson.getString("vehicle_code").startsWith("B")) {
request_param.put("containerType", "1");
} else {
iPdmBiContainerinboundService
.update(new UpdateWrapper<PdmBiContainerinbound>()
.set("remark",JSONObject.toJSONString(errorMsg))
.eq("box",box_no));
//更新子卷入库备注信息
JSONObject jsonTaskParam = new JSONObject();
//创建异常任务去异常入库口
//入库口
jsonTaskParam.put("point_code1", "RK1018");
//异常位
jsonTaskParam.put("point_code2", "RK1003");
jsonTaskParam.put("vehicle_code", jsonObject.getString("box_no"));
jsonTaskParam.put("vehicle_code2", whereJson.getString("vehicle_code"));
JSONObject request_param = new JSONObject();
if (whereJson.getString("vehicle_code").startsWith("A")) {
request_param.put("containerType", "2");
} else if (whereJson.getString("vehicle_code").startsWith("B")) {
request_param.put("containerType", "1");
} else {
throw new BadRequestException("托盘号有误,无法找到对应的托盘类型!");
}
// 更新子卷包装关系为生成
JSONObject param = new JSONObject();
param.put("status", IOSEnum.IS_NOTANDYES.code("否"));
WQLObject.getWQLObject("pdm_bi_subpackagerelation")
.update(param,"package_box_sn = '"+jsonObject.getString("box_no")+"'");
jsonTaskParam.put("request_param", request_param);
TwoExceptionInTask bean = SpringContextHolder.getBean(TwoExceptionInTask.class);
bean.createTask(jsonTaskParam);
bean.immediateNotifyAcs(null);
PdmProductSpecServiceImpl.doRecord(SpecEnum.TYCK,null,Boolean.FALSE,errorMsg.toString(),containers);
}
throw new BadRequestException("托盘号有误,无法找到对应的托盘类型!");
}
// 更新子卷包装关系为生成
JSONObject param = new JSONObject();
param.put("status", IOSEnum.IS_NOTANDYES.code("否"));
WQLObject.getWQLObject("pdm_bi_subpackagerelation")
.update(param, "package_box_sn = '" + jsonObject.getString("box_no") + "'");
jsonTaskParam.put("request_param", request_param);
TwoExceptionInTask bean = SpringContextHolder.getBean(TwoExceptionInTask.class);
bean.createTask(jsonTaskParam);
bean.immediateNotifyAcs(null);
PdmProductSpecServiceImpl.doRecord(SpecEnum.TYCK, null, Boolean.FALSE, errorMsg.toString(), containers);
}
} else if (type.equals(IOSEnum.ACSTOLMS_TYPE.code("空盘入库"))) {
@ -1354,80 +1353,74 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
inBoxManageService.inBox(whereJson);
} else if (type.equals(IOSEnum.ACSTOLMS_TYPE.code("退货入库"))) {
String materialBarcode = whereJson.getString("material_barcode");
if(StrUtil.isEmpty(materialBarcode)){
if (StrUtil.isEmpty(materialBarcode)) {
throw new BadRequestException("当前木箱号不能为空!");
}
String[] box_arr = materialBarcode.split("-");
if (box_arr.length < 2) {
// 处理分割结果不足的情况
throw new BadRequestException("当前木箱号数据异常!"+box_arr.toString());
throw new BadRequestException("当前木箱号数据异常!" + box_arr.toString());
}
if (box_arr[1].equals("9")){
//空木箱入库
// -{"material_barcode":"MX250324000091-1","device_code":"CK2005","vehicle_code":"B00165","type":"6"}
whereJson.put("box_no", box_arr[0]);
inBoxManageService.inBox(whereJson);
}else {
//退货入库
WQLObject vehicleTab = WQLObject.getWQLObject("md_pb_storagevehicleinfo");
// 载具扩展属性表
WQLObject veExtTab = WQLObject.getWQLObject("md_pb_storagevehicleext");
//获取当前的入库类型
whereJson.put("bill_type", "000" + box_arr[1]);
whereJson.put("box_no", box_arr[0]);
JSONArray resultJSONArray = WQLObject.getWQLObject("pdm_bi_subpackagerelation").query("package_box_sn = '" + whereJson.getString("box_no") + "' AND status in ('0','1','99')").getResultJSONArray(0);
if (ObjectUtil.isEmpty(resultJSONArray)) {
throw new BadRequestException("未查询到子卷包装信息!");
}
String material_barcode = "";
for (int i = 0; i < resultJSONArray.size(); i++) {
JSONObject resultObj = resultJSONArray.getJSONObject(i);
if (i == 0) {
material_barcode = resultObj.getString("container_name");
} else {
material_barcode += "," + resultObj.getString("container_name");
}
}
JSONObject jsonVehicle = vehicleTab.query("storagevehicle_code = '" + whereJson.getString("vehicle_code") + "'")
.uniqueResult(0);
if (ObjectUtil.isEmpty(jsonVehicle)) {
throw new BadRequestException("载具不存在!");
}
int hasTask = taskService.count(new QueryWrapper<SchBaseTask>()
.eq("is_delete", "0")
.eq("vehicle_code2", whereJson.getString("vehicle_code"))
.lt("task_status", TaskStatusEnum.FINISHED.getCode()));
if (hasTask>0){
throw new BadRequestException("托盘"+whereJson.getString("vehicle_code")+"存在执行的任务");
}
JSONObject ext_jo = veExtTab.query("storagevehicle_code = '" + jsonVehicle.getString("storagevehicle_code") + "'").uniqueResult(0);
if (ObjectUtil.isEmpty(ext_jo)) {
JSONObject jsonVeExt = new JSONObject();
jsonVeExt.put("storagevehicleext_id", org.nl.common.utils.IdUtil.getLongId());
jsonVeExt.put("storagevehicle_id", jsonVehicle.getLongValue("storagevehicle_id"));
jsonVeExt.put("storagevehicle_code", jsonVehicle.getString("storagevehicle_code"));
jsonVeExt.put("storagevehicle_type", jsonVehicle.getString("storagevehicle_type"));
jsonVeExt.put("pcsn", whereJson.getString("box_no"));
jsonVeExt.put("device_uuid", org.nl.common.utils.IdUtil.getLongId());
jsonVeExt.put("update_time", DateUtil.now());
veExtTab.insert(jsonVeExt);
//退货入库
//获取当前的入库类型
whereJson.put("bill_type", "000" + box_arr[1]);
whereJson.put("box_no", box_arr[0]);
JSONArray resultJSONArray = WQLObject.getWQLObject("pdm_bi_subpackagerelation").query("package_box_sn = '" + whereJson.getString("box_no") + "' AND status in ('0','1','99')").getResultJSONArray(0);
if (ObjectUtil.isEmpty(resultJSONArray)) {
throw new BadRequestException("未查询到子卷包装信息!");
}
String material_barcode = "";
for (int i = 0; i < resultJSONArray.size(); i++) {
JSONObject resultObj = resultJSONArray.getJSONObject(i);
if (i == 0) {
material_barcode = resultObj.getString("container_name");
} else {
String pcsn = ext_jo.getString("pcsn");
if (StringUtils.isNotEmpty(pcsn)){
JSONArray stIvtStructattr = WQLObject.getWQLObject("st_ivt_structattr").query("storagevehicle_code = '" + pcsn + "'").getResultJSONArray(0);
if (stIvtStructattr != null && stIvtStructattr.size() > 0) {
throw new BadRequestException("当前托盘"+whereJson.getString("vehicle_code")+"已经绑定木箱"+pcsn);
}
material_barcode += "," + resultObj.getString("container_name");
}
}
MdPdStorageVehicleInfo mdPdStorageVehicleInfo = mdStorageVehicleInfoMapper.selectOne(new QueryWrapper<MdPdStorageVehicleInfo>().eq("storagevehicle_code", whereJson.getString("vehicle_code")));
if (ObjectUtil.isEmpty(mdPdStorageVehicleInfo)) {
throw new BadRequestException("载具不存在!");
}
int hasTask = taskService.count(new QueryWrapper<SchBaseTask>()
.eq("is_delete", "0")
.eq("vehicle_code2", whereJson.getString("vehicle_code"))
.lt("task_status", TaskStatusEnum.FINISHED.getCode()));
if (hasTask > 0) {
throw new BadRequestException("托盘" + whereJson.getString("vehicle_code") + "存在执行的任务");
}
MdPdStoragevehicleext mdPdStoragevehicleext = mdPdStoragevehicleextMapper.selectOne(new QueryWrapper<MdPdStoragevehicleext>().eq("storagevehicle_code", mdPdStorageVehicleInfo.getStoragevehicle_code()));
if (ObjectUtil.isEmpty(mdPdStoragevehicleext)) {
MdPdStoragevehicleext mdPdStoragevehicleextInsert = new MdPdStoragevehicleext();
mdPdStoragevehicleextInsert.setStoragevehicleext_id(org.nl.common.utils.IdUtil.getStringId());
mdPdStoragevehicleextInsert.setStoragevehicle_code(mdPdStorageVehicleInfo.getStoragevehicle_code());
mdPdStoragevehicleextInsert.setStoragevehicle_id(mdPdStorageVehicleInfo.getStoragevehicle_id());
mdPdStoragevehicleextInsert.setStoragevehicle_type(mdPdStorageVehicleInfo.getStoragevehicle_type());
mdPdStoragevehicleextInsert.setPcsn(whereJson.getString("box_no"));
mdPdStoragevehicleextInsert.setDevice_uuid(org.nl.common.utils.IdUtil.getLongId());
mdPdStoragevehicleextInsert.setUpdate_time(DateUtil.now());
mdPdStoragevehicleextMapper.insert(mdPdStoragevehicleextInsert);
} else {
String pcsn = mdPdStoragevehicleext.getPcsn();
if (StringUtils.isNotEmpty(pcsn)) {
JSONArray stIvtStructattr = WQLObject.getWQLObject("st_ivt_structattr").query("storagevehicle_code = '" + pcsn + "'").getResultJSONArray(0);
if (stIvtStructattr != null && stIvtStructattr.size() > 0) {
throw new BadRequestException("当前托盘" + whereJson.getString("vehicle_code") + "已经绑定木箱" + pcsn);
}
ext_jo.put("pcsn", whereJson.getString("box_no"));
ext_jo.put("device_uuid", org.nl.common.utils.IdUtil.getLongId());
ext_jo.put("update_time", DateUtil.now());
veExtTab.update(ext_jo);
}
whereJson.put("material_barcode", material_barcode);
inBussManageService.inTask(whereJson);
mdPdStoragevehicleext.setPcsn(whereJson.getString("box_no"));
mdPdStoragevehicleext.setDevice_uuid(org.nl.common.utils.IdUtil.getLongId());
mdPdStoragevehicleext.setUpdate_time(DateUtil.now());
mdPdStoragevehicleextMapper.updateById(mdPdStoragevehicleext);
}
whereJson.put("material_barcode", material_barcode);
inBussManageService.inTask(whereJson);
}
result.put("status", HttpStatus.OK.value());
result.put("message", "下发成功!");
@ -1730,7 +1723,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
updateWrapper.set(PdmBiSlittingproductionplan::getWeight, NumberUtil.round(weight, 2).toString())
.eq(PdmBiSlittingproductionplan::getContainer_name, subVolume);
boolean update = slittingproductionplanService.update(updateWrapper);
PdmProductSpecServiceImpl.doRecord(SpecEnum.FQ_WG,param,Boolean.TRUE,null,subVolume);
PdmProductSpecServiceImpl.doRecord(SpecEnum.FQ_WG, param, Boolean.TRUE, null, subVolume);
if (update) {
res.put("code", cn.hutool.http.HttpStatus.HTTP_OK);
res.put("message", "更新成功!");
@ -1749,33 +1742,33 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
@Override
public JSONObject getBoxInfo(JSONObject param) {
String material_barcode = param.getString("material_barcode");
if (StringUtils.isEmpty(material_barcode)){
if (StringUtils.isEmpty(material_barcode)) {
throw new BadRequestException("material_barcode参数不能为空");
}
String isUncap = "1";
String boxOr子卷 = material_barcode.split("-")[0];
BstIvtBoxinfo boxNo;
String desiccantTemplate = null;
if (boxOr子卷.contains("MX")){
if (boxOr子卷.contains("MX")) {
BstIvtBoxinfo boxDao = iBstIvtBoxinfoService.getOne(
new QueryWrapper<BstIvtBoxinfo>().lambda()
.eq(BstIvtBoxinfo::getBox_no, boxOr子卷)
);
if (boxDao==null){
throw new BadRequestException("当前木箱码在木箱表不存在"+boxOr子卷);
if (boxDao == null) {
throw new BadRequestException("当前木箱码在木箱表不存在" + boxOr子卷);
}
boxNo=boxDao;
}else {
boxNo = boxDao;
} else {
JSONObject sub_jo = WQLObject.getWQLObject("pdm_bi_subpackagerelation")
.query("container_name = '" + boxOr子卷 + "' order by create_time desc").uniqueResult(0);
if (sub_jo==null || StringUtils.isEmpty(sub_jo.getString("package_box_sn"))){
throw new BadRequestException("当前子卷不存在子卷包装关系"+boxOr子卷);
if (sub_jo == null || StringUtils.isEmpty(sub_jo.getString("package_box_sn"))) {
throw new BadRequestException("当前子卷不存在子卷包装关系" + boxOr子卷);
}
BstIvtBoxinfo boxDao = iBstIvtBoxinfoService.getOne(
new QueryWrapper<BstIvtBoxinfo>().lambda()
.eq(BstIvtBoxinfo::getBox_no, sub_jo.getString("package_box_sn"))
);
boxNo=boxDao;
boxNo = boxDao;
String material_type = sub_jo.getString("material_type");
if (material_type.equals("FG1")) {
desiccantTemplate = "6";
@ -1830,7 +1823,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
JSONObject vehicle_info = WQLObject.getWQLObject("md_pb_storagevehicleext").query("storagevehicle_code = '" + material_barcode + "'").uniqueResult(0);
if (ObjectUtil.isEmpty(vehicle_info)) {
vehicle_info = WQLObject.getWQLObject("md_pb_storagevehicleext").query("storagevehicle_code = '" + vehicle_code + "'").uniqueResult(0);
if (ObjectUtil.isEmpty(vehicle_info)){
if (ObjectUtil.isEmpty(vehicle_info)) {
throw new BadRequestException("未查询到载具号【" + vehicle_code + "】对应的载具信息!");
}
}
@ -1846,18 +1839,18 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
if (ObjectUtil.isNotEmpty(sub_jo)) {
//木箱类型
String box_type = sub_jo.getString("box_type");
if(ObjectUtil.isEmpty(box_type)){
if (ObjectUtil.isEmpty(box_type)) {
throw new BadRequestException("未查询到木箱号【" + material_barcode + "】对应的包装关系缺少木箱类型信息!");
}
//查询木箱类型数据
LambdaQueryWrapper<MdpbBoxtype> queryWrapper = new QueryWrapper<MdpbBoxtype>().lambda();
queryWrapper.eq(MdpbBoxtype::getBox_type,box_type);
queryWrapper.eq(MdpbBoxtype::getBox_type, box_type);
MdpbBoxtype boxType = iMdpbBoxtypeService.getOne(queryWrapper);
if(ObjectUtil.isEmpty(boxType)){
if (ObjectUtil.isEmpty(boxType)) {
throw new BadRequestException("未查询到木箱类型【" + box_type + "】信息!");
}
desiccantTemplate = String.valueOf(boxType.getDesiccant_num());
}else{
} else {
throw new BadRequestException("未查询到木箱号【" + material_barcode + "】对应的包装关系!");
}
//根据木箱高度,判断入库仓位的高度
@ -1986,13 +1979,13 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
if (ObjectUtil.isEmpty(qzzSize)) {
throw new BadRequestException("气涨轴规格不能为空!");
}
String qzz= qzzSize.substring(qzzSize.length() - 3);
String qzz = qzzSize.substring(qzzSize.length() - 3);
String[] split = qzz.split("-");
String size = split[0];
String qzz_generation = split[1];
// 获取空位
List<BstIvtShafttubeivt> shafttubeivts = shafttubeivtService.getNotTaskEmptyShaftCache(size, qzz_generation,"0");
List<BstIvtShafttubeivt> shafttubeivts = shafttubeivtService.getNotTaskEmptyShaftCache(size, qzz_generation, "0");
if (shafttubeivts.size() == 0) {
throw new BadRequestException("未找到可存放气涨轴规格「" + qzzSize + "」的空暂存位");
}

Loading…
Cancel
Save