add 入库开发
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 修改数据
|
||||
*
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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())
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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("否") + "' " +
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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> {
|
||||
}
|
||||
@@ -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>
|
||||
@@ -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> {
|
||||
|
||||
}
|
||||
@@ -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>
|
||||
@@ -0,0 +1,4 @@
|
||||
package org.nl.b_lms.storage_manage.md.service;
|
||||
|
||||
public interface MdPdStoragevehicleextService {
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
package org.nl.b_lms.storage_manage.md.service;
|
||||
|
||||
public interface MdStorageVehicleInfoService {
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
package org.nl.b_lms.storage_manage.md.service;
|
||||
|
||||
public interface StorageVehicleInfoService {
|
||||
}
|
||||
@@ -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 {
|
||||
|
||||
}
|
||||
@@ -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 (!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 {
|
||||
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")+"'");
|
||||
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()));
|
||||
|
||||
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);
|
||||
}
|
||||
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 (!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 (!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 {
|
||||
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);
|
||||
} 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);
|
||||
}
|
||||
}
|
||||
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);
|
||||
//退货入库
|
||||
//获取当前的入库类型
|
||||
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");
|
||||
}
|
||||
}
|
||||
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);
|
||||
}
|
||||
}
|
||||
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 + "」的空暂存位");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user