|
|
|
@ -3,7 +3,9 @@ package com.gaotao.modules.autoWareHourceHaian.service.impl; |
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage; |
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
|
|
|
import com.gaotao.common.utils.PageUtils; |
|
|
|
import com.gaotao.common.utils.PartAttributeUtil; |
|
|
|
import com.gaotao.modules.autoWareHourceHaian.service.HaiAnIssueDestinationResolver; |
|
|
|
import com.gaotao.modules.autoWareHourceHaian.staticData.HaiAnSiteStaticData; |
|
|
|
import com.gaotao.modules.autoWareHourceHaian.entity.HaiAnSOIssueNotifyHeaderData; |
|
|
|
import com.gaotao.modules.autoWareHourceHaian.entity.HaiAnSOIssueNotifyOrderListData; |
|
|
|
import com.gaotao.modules.autoWareHourceHaian.entity.HaiAnSOIssueNotifyOrderMaterialListAllocData; |
|
|
|
@ -16,6 +18,9 @@ import com.gaotao.modules.autoWareHourceHaian.entity.dto.HaiAnShoporderAndMateri |
|
|
|
import com.gaotao.modules.autoWareHourceHaian.entity.vo.HaiAnSOIssueNotifyOrderList; |
|
|
|
import com.gaotao.modules.autoWareHourceHaian.entity.vo.HaiAnSOIssueNotifyOrderMaterialList; |
|
|
|
import com.gaotao.modules.customer.entity.dto.ShipmentIssueDto; |
|
|
|
import com.gaotao.modules.factory.dao.PartAttributeMapper; |
|
|
|
import com.gaotao.modules.factory.entity.PartAttribute; |
|
|
|
import com.gaotao.modules.factory.entity.dto.NoOrderPartAttributeDto; |
|
|
|
import com.gaotao.modules.autoWareHourceHaian.mapper.HaiAnIssureNotifyMapper; |
|
|
|
import com.gaotao.modules.autoWareHourceHaian.service.HaiAnIssureNotifyService; |
|
|
|
import com.gaotao.modules.autoWareHourceHaian.service.HaiAnSOIssueNotifyOrderMaterialListAllocService; |
|
|
|
@ -31,6 +36,7 @@ import org.springframework.transaction.annotation.Transactional; |
|
|
|
|
|
|
|
import java.math.BigDecimal; |
|
|
|
import java.util.ArrayList; |
|
|
|
import java.util.Collections; |
|
|
|
import java.util.Date; |
|
|
|
import java.util.HashSet; |
|
|
|
import java.util.LinkedHashMap; |
|
|
|
@ -59,6 +65,12 @@ public class HaiAnIssureNotifyServiceImpl implements HaiAnIssureNotifyService { |
|
|
|
@Autowired |
|
|
|
private TransNoControlService transNoService; |
|
|
|
|
|
|
|
@Autowired |
|
|
|
private PartAttributeMapper partAttributeMapper; |
|
|
|
|
|
|
|
@Autowired |
|
|
|
private PartAttributeUtil partAttributeUtil; |
|
|
|
|
|
|
|
/** |
|
|
|
* @author rqrq |
|
|
|
* @Description 查询当前用户未下达海安申请单,保持主单仅按site维度检索 - rqrq |
|
|
|
@ -443,6 +455,47 @@ public class HaiAnIssureNotifyServiceImpl implements HaiAnIssureNotifyService { |
|
|
|
return haiAnIssureNotifyMapper.haiAnGetNoOrderMaterialList(data); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @author rqrq |
|
|
|
* @Description 海安无订单录入料号时取属性。已有属性直接返回;没有属性时先查标签表,有标签才按料号规则补默认属性,标签也没有则中断添加 - rqrq |
|
|
|
*/ |
|
|
|
@Override |
|
|
|
public PartAttribute haiAnQueryNoOrderPartAttribute(NoOrderPartAttributeDto queryDto) { |
|
|
|
if (queryDto == null) { |
|
|
|
throw new RuntimeException("请求缺少物料查询条件,无法添加海安无订单物料"); |
|
|
|
} |
|
|
|
// 属性表和标签表都按弹窗选中的小site定位,缺失site不能拿登录态兜底 - rqrq |
|
|
|
validateSite(queryDto.getSite()); |
|
|
|
if (StringUtils.isBlank(queryDto.getComponentPartNo())) { |
|
|
|
throw new RuntimeException("请求缺少物料号,无法添加海安无订单物料"); |
|
|
|
} |
|
|
|
String site = queryDto.getSite().trim(); |
|
|
|
String partNo = queryDto.getComponentPartNo().trim(); |
|
|
|
if (!HaiAnSiteStaticData.isHaianLabelSite(site)) { |
|
|
|
throw new RuntimeException("当前站点不是海安站点,不能补海安无订单物料属性"); |
|
|
|
} |
|
|
|
queryDto.setSite(site); |
|
|
|
queryDto.setComponentPartNo(partNo); |
|
|
|
|
|
|
|
// 先查已有属性;查到就不再插入,避免覆盖人工维护的进立库、机械手等设置 - rqrq |
|
|
|
PartAttribute partAttribute = partAttributeMapper.queryPartAttributeData(queryDto); |
|
|
|
if (partAttribute == null) { |
|
|
|
// 没有属性时只认handling_unit是否已有该小site+料号;没有标签则报错,不凭空建属性 - rqrq |
|
|
|
int labelCount = haiAnIssureNotifyMapper.countHandlingUnitBySiteAndPart(site, partNo); |
|
|
|
if (labelCount <= 0) { |
|
|
|
throw new RuntimeException("物料" + partNo + "没有物料属性,标签表也没有该物料,不能添加"); |
|
|
|
} |
|
|
|
// 有标签时与生产订单、发货单使用同一套默认值:20/301开头或DF结尾不进立库,其余进立库,机械手、HU、常用默认Y - rqrq |
|
|
|
partAttribute = partAttributeUtil.autoCreatePartAttribute(site, partNo); |
|
|
|
if (partAttribute == null || StringUtils.isBlank(partAttribute.getPartNo())) { |
|
|
|
throw new RuntimeException("物料" + partNo + "标签已存在,但补默认物料属性失败"); |
|
|
|
} |
|
|
|
} |
|
|
|
// 回填是否进立库和海安可用库存;此时属性已存在或刚写入,不会再插入第二条 - rqrq |
|
|
|
partAttributeUtil.fillIsInWhFor54(Collections.singletonList(partAttribute), HaiAnSiteStaticData.HAIAN_SITE); |
|
|
|
return partAttribute; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @author rqrq |
|
|
|
* @Description 保存海安无单物料明细:先删旧明细再重建,subsite缺失时回查父行补齐 - rqrq |
|
|
|
|