|
|
|
@ -16,6 +16,7 @@ import com.spring.modules.shipment.service.ShipmentRollService; |
|
|
|
import com.spring.modules.shipment.vo.ShipmentRollPrint; |
|
|
|
import com.spring.modules.shipment.vo.ShipmentRollVo; |
|
|
|
import com.spring.modules.shipment.vo.ShipmentVo; |
|
|
|
import lombok.Data; |
|
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
@ -25,6 +26,10 @@ import org.springframework.util.StringUtils; |
|
|
|
|
|
|
|
import java.math.BigDecimal; |
|
|
|
import java.math.RoundingMode; |
|
|
|
import java.text.ParseException; |
|
|
|
import java.text.SimpleDateFormat; |
|
|
|
import java.time.LocalDate; |
|
|
|
import java.time.format.DateTimeFormatter; |
|
|
|
import java.util.*; |
|
|
|
import java.util.stream.Collectors; |
|
|
|
|
|
|
|
@ -59,9 +64,28 @@ public class ShipmentRollServiceImpl extends ServiceImpl<ShipmentRollMapper, Shi |
|
|
|
throw new RuntimeException("卷号:" + rollData.getFinalRollNo() + "状态为" + rollData.getStatus()); |
|
|
|
} |
|
|
|
shipmentRollVo.setRollNo(rollData.getFinalRollNo()); |
|
|
|
// 获取PartNo 的属性 |
|
|
|
String packageNum = baseMapper.getPartPackageNum(rollData.getSite(), rollData.getPartNo()); |
|
|
|
int value = 0; |
|
|
|
// 获取 物料最小失效天数 |
|
|
|
String effectiveDays = baseMapper.getPartPackageNum(rollData.getSite(), rollData.getPartNo(),"P00019"); |
|
|
|
try { |
|
|
|
value = Integer.parseInt(effectiveDays); |
|
|
|
} catch (Exception e) { |
|
|
|
throw new RuntimeException(rollData.getPartNo() + "的最小失效天数格式不正确"); |
|
|
|
} |
|
|
|
if (value <= 0) { |
|
|
|
throw new RuntimeException(rollData.getPartNo() + "的最小失效天数维护不正确"); |
|
|
|
} |
|
|
|
|
|
|
|
LocalDate now = LocalDate.now(); |
|
|
|
LocalDate date = LocalDate.parse(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(rollData.getExpiredDate()), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); |
|
|
|
long days = date.toEpochDay() - now.toEpochDay(); |
|
|
|
// 判断当前日期 是否在失效日期之前 |
|
|
|
if (new Date().after(rollData.getExpiredDate()) || days <= value) { |
|
|
|
throw new RuntimeException(rollData.getPartNo() + "在最小失效日期内"); |
|
|
|
} |
|
|
|
value = 0; |
|
|
|
// 获取PartNo 的属性 |
|
|
|
String packageNum = baseMapper.getPartPackageNum(rollData.getSite(), rollData.getPartNo(),"P00014"); |
|
|
|
try { |
|
|
|
value = Integer.parseInt(packageNum); |
|
|
|
} catch (Exception e) { |
|
|
|
@ -108,13 +132,13 @@ public class ShipmentRollServiceImpl extends ServiceImpl<ShipmentRollMapper, Shi |
|
|
|
.eq(ShipmentRoll::getPartNo, rollData.getPartNo()) |
|
|
|
//.eq(ShipmentRoll::getBoxNo, shipmentRollVo.getBoxNo()) |
|
|
|
.eq(ShipmentRoll::getSite, shipmentRollVo.getSite()).count(); |
|
|
|
BigDecimal needNum = num.subtract(new BigDecimal(count)); |
|
|
|
if (BigDecimal.ZERO.compareTo(needNum) == 0){ |
|
|
|
BigDecimal needRollNum = num.subtract(new BigDecimal(count)); |
|
|
|
if (BigDecimal.ZERO.compareTo(needRollNum) <= 0){ |
|
|
|
throw new RuntimeException("该物料已满足发货数量,无法再次添加!"); |
|
|
|
} |
|
|
|
log.info("needNum:{}",needNum); |
|
|
|
log.info("needNum:{}",needRollNum); |
|
|
|
// 先入先出 |
|
|
|
List<SoFinalRollData> soFinalRollData = baseMapper.selectSoFinalRollDataByRollNo(rollData, needNum.intValue()); |
|
|
|
List<SoFinalRollData> soFinalRollData = baseMapper.selectSoFinalRollDataByRollNo(rollData, needRollNum.intValue()); |
|
|
|
if (soFinalRollData.isEmpty()){ |
|
|
|
throw new RuntimeException("卷号:"+rollData.getFinalRollNo()+",已被删除,请刷新后重试"); |
|
|
|
} |
|
|
|
@ -124,6 +148,7 @@ public class ShipmentRollServiceImpl extends ServiceImpl<ShipmentRollMapper, Shi |
|
|
|
if (rollData.getCreatedDate().after(latestTime)){ |
|
|
|
throw new RuntimeException("请按照先入先出规则,出库早生产的箱子,当前允许扫的最晚时间为:"+latestTime.toLocaleString()); |
|
|
|
} |
|
|
|
|
|
|
|
// 最终校验是否重复扫描 |
|
|
|
if (!lambdaQuery() |
|
|
|
.eq(ShipmentRoll::getRollNo,shipmentRollVo.getRollNo()) |
|
|
|
|