常熟吴彦祖 1 day ago
parent
commit
e06033c24d
  1. 12
      src/main/java/com/gaotao/modules/autoWareHourceHaian/controller/HaiAnIssureNotifyController.java
  2. 9
      src/main/java/com/gaotao/modules/autoWareHourceHaian/mapper/HaiAnIssureNotifyMapper.java
  3. 10
      src/main/java/com/gaotao/modules/autoWareHourceHaian/service/HaiAnIssureNotifyService.java
  4. 53
      src/main/java/com/gaotao/modules/autoWareHourceHaian/service/impl/HaiAnIssureNotifyServiceImpl.java
  5. 10
      src/main/resources/mapper/autoWareHourceHaian/HaiAnIssureNotifyMapper.xml

12
src/main/java/com/gaotao/modules/autoWareHourceHaian/controller/HaiAnIssureNotifyController.java

@ -15,6 +15,8 @@ import com.gaotao.modules.autoWareHourceHaian.entity.dto.HaiAnNoOrderMaterialAll
import com.gaotao.modules.autoWareHourceHaian.entity.dto.HaiAnNoOrderNotifyDto;
import com.gaotao.modules.autoWareHourceHaian.entity.dto.HaiAnNewSoIssueNotifyDto;
import com.gaotao.modules.customer.entity.dto.ShipmentIssueDto;
import com.gaotao.modules.factory.entity.PartAttribute;
import com.gaotao.modules.factory.entity.dto.NoOrderPartAttributeDto;
import com.gaotao.modules.autoWareHourceHaian.entity.vo.HaiAnSOIssueNotifyOrderList;
import com.gaotao.modules.autoWareHourceHaian.service.HaiAnIssureNotifyService;
import com.gaotao.modules.autoWareHourceHaian.service.HaiAnSOIssueNotifyOrderMaterialListAllocService;
@ -230,6 +232,16 @@ public class HaiAnIssureNotifyController {
return R.ok().put("rows", rows);
}
/**
* @author rqrq
* @Description 海安无订单录入料号:没有属性时先看标签,有标签才补默认属性,都没有则由服务报错 - rqrq
*/
@PostMapping(value = "/queryNoOrderPartAttribute")
public R haiAnQueryNoOrderPartAttribute(@RequestBody NoOrderPartAttributeDto data) {
PartAttribute row = haiAnIssureNotifyService.haiAnQueryNoOrderPartAttribute(data);
return R.ok().put("rows", row);
}
/**
* @author rqrq
* @Description 查询海安无单物料明细并补全立库属性字段,便于前端直接展示可用库存语义 - rqrq

9
src/main/java/com/gaotao/modules/autoWareHourceHaian/mapper/HaiAnIssureNotifyMapper.java

@ -84,4 +84,13 @@ public interface HaiAnIssureNotifyMapper {
HaiAnSOIssueNotifyHeaderData haiAnGetNotifyHeader(@Param("site") String site, @Param("notifyNo") String notifyNo);
int haiAnCancelNoOrderIssueNotify(@Param("site") String site, @Param("notifyNo") String notifyNo);
/**
* @author rqrq
* @Description 判断标签表是否已有该小site+料号,供海安无订单补默认属性前确认,不要求在库 - rqrq
* @param site 标签所属小site,对应handling_unit.site - rqrq
* @param partNo 物料编码,对应handling_unit.part_no - rqrq
* @return 1=至少有一条标签,0=没有标签 - rqrq
*/
int countHandlingUnitBySiteAndPart(@Param("site") String site, @Param("partNo") String partNo);
}

10
src/main/java/com/gaotao/modules/autoWareHourceHaian/service/HaiAnIssureNotifyService.java

@ -10,6 +10,8 @@ import com.gaotao.modules.autoWareHourceHaian.entity.dto.HaiAnNoOrderNotifyDto;
import com.gaotao.modules.autoWareHourceHaian.entity.dto.HaiAnNewSoIssueNotifyDto;
import com.gaotao.modules.autoWareHourceHaian.entity.vo.HaiAnSOIssueNotifyOrderList;
import com.gaotao.modules.customer.entity.dto.ShipmentIssueDto;
import com.gaotao.modules.factory.entity.PartAttribute;
import com.gaotao.modules.factory.entity.dto.NoOrderPartAttributeDto;
import java.util.List;
@ -45,6 +47,14 @@ public interface HaiAnIssureNotifyService {
List<HaiAnSOIssueNotifyOrderMaterialListData> haiAnGetNoOrderMaterialList(HaiAnSOIssueNotifyOrderMaterialListData data);
/**
* @author rqrq
* @Description 海安无订单按小site+料号取物料属性;没有属性时仅在标签表已有该料时补默认属性,否则报错 - rqrq
* @param queryDto site为弹窗选中的小site,componentPartNo为录入料号 - rqrq
* @return 已有或刚补建的物料属性,含是否进立库和可用库存 - rqrq
*/
PartAttribute haiAnQueryNoOrderPartAttribute(NoOrderPartAttributeDto queryDto);
void haiAnSaveNoOrderMaterialDetail(List<HaiAnSOIssueNotifyOrderMaterialListData> data);
PageUtils haiAnSearchNoOrderNotifyHeader(ShipmentIssueDto data);

53
src/main/java/com/gaotao/modules/autoWareHourceHaian/service/impl/HaiAnIssureNotifyServiceImpl.java

@ -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

10
src/main/resources/mapper/autoWareHourceHaian/HaiAnIssureNotifyMapper.xml

@ -552,4 +552,14 @@
AND notify_no = #{notifyNo}
</update>
<!-- rqrq - 海安无订单补属性前确认标签已存在;这是写入门槛,保持加锁读,避免漏看刚写入的标签 -->
<select id="countHandlingUnitBySiteAndPart" resultType="int">
SELECT CASE WHEN EXISTS (
SELECT 1
FROM handling_unit
WHERE site = #{site}
AND part_no = #{partNo}
) THEN 1 ELSE 0 END
</select>
</mapper>
Loading…
Cancel
Save