|
|
|
|
@ -1,7 +1,9 @@ |
|
|
|
|
package org.springblade.desk.oem.service.impl; |
|
|
|
|
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil; |
|
|
|
|
import com.alibaba.nacos.common.utils.CollectionUtils; |
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; |
|
|
|
|
import com.baomidou.mybatisplus.core.toolkit.StringUtils; |
|
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
|
|
|
|
import jakarta.annotation.Resource; |
|
|
|
|
@ -11,6 +13,7 @@ import org.springblade.desk.oem.mapper.PlatingTypeRulesMapper; |
|
|
|
|
import org.springblade.desk.oem.pojo.entity.OemStatementEntity; |
|
|
|
|
import org.springblade.desk.oem.pojo.entity.PlatingTypeRulesEntity; |
|
|
|
|
import org.springblade.desk.oem.pojo.excel.OemStatementExcel; |
|
|
|
|
import org.springblade.desk.oem.pojo.request.OemSettleAccountsApproval; |
|
|
|
|
import org.springblade.desk.oem.pojo.request.PriceSheetQuery; |
|
|
|
|
import org.springblade.desk.oem.pojo.request.StatementQuery; |
|
|
|
|
import org.springblade.desk.oem.mapper.OemStatementMapper; |
|
|
|
|
@ -70,7 +73,73 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper, |
|
|
|
|
|
|
|
|
|
//2.以外协名称,日期查出的全部报价单
|
|
|
|
|
String oemName = listEntry.getKey(); |
|
|
|
|
List<PriceSheetVO> priceSheetAllList = getPriceSheets(oemName, putStoreDate); |
|
|
|
|
// List<PriceSheetVO> priceSheetAllList = getPriceSheets(oemName, putStoreDate);
|
|
|
|
|
|
|
|
|
|
//假数据测试用
|
|
|
|
|
List<PriceSheetVO> priceSheetAllList = new ArrayList<>(); |
|
|
|
|
PriceSheetVO priceSheet1 = new PriceSheetVO(); |
|
|
|
|
priceSheet1.setPrice("60"); |
|
|
|
|
priceSheet1.setSplyname(oemName); |
|
|
|
|
priceSheet1.setPrtum("件"); |
|
|
|
|
priceSheet1.setWono("WO-N2510424439-R002"); |
|
|
|
|
priceSheet1.setSeqid("GXJG-20250228018"); |
|
|
|
|
priceSheet1.setGxinfo("玻璃封接电化学抛光"); |
|
|
|
|
priceSheetAllList.add(priceSheet1); |
|
|
|
|
PriceSheetVO priceSheet2 = new PriceSheetVO(); |
|
|
|
|
priceSheet2.setPrice("26"); |
|
|
|
|
priceSheet2.setSplyname(oemName); |
|
|
|
|
priceSheet2.setPrtum("件"); |
|
|
|
|
priceSheet2.setSeqid("GXJG-20250228012"); |
|
|
|
|
priceSheet2.setGxinfo("玻璃封接电镀去氧化皮"); |
|
|
|
|
priceSheet2.setPrtlotno("JI和JHT"); |
|
|
|
|
priceSheet2.setStairflag("单批阶梯价(按单件面积)"); |
|
|
|
|
priceSheet2.setLower("5"); |
|
|
|
|
priceSheet2.setUpper("0"); |
|
|
|
|
priceSheet2.setPrtno("21E6-575-10724-%螺母"); |
|
|
|
|
priceSheetAllList.add(priceSheet2); |
|
|
|
|
PriceSheetVO priceSheet3 = new PriceSheetVO(); |
|
|
|
|
priceSheet3.setPrice("34"); |
|
|
|
|
priceSheet3.setSplyname(oemName); |
|
|
|
|
priceSheet3.setPrtum("件"); |
|
|
|
|
priceSheet3.setSeqid("GXJG-20250228012"); |
|
|
|
|
priceSheet3.setGxinfo("玻璃封接电镀去氧化皮"); |
|
|
|
|
priceSheet3.setPrtlotno("JI和JHT"); |
|
|
|
|
priceSheet3.setStairflag("单批阶梯价(按单件面积)"); |
|
|
|
|
priceSheet3.setLower("10"); |
|
|
|
|
priceSheet3.setUpper("5.00001"); |
|
|
|
|
priceSheet3.setPrtno("21E6-575-10724-%螺母"); |
|
|
|
|
priceSheetAllList.add(priceSheet3); |
|
|
|
|
PriceSheetVO priceSheet4 = new PriceSheetVO(); |
|
|
|
|
priceSheet4.setPrice("15"); |
|
|
|
|
priceSheet4.setSplyname(oemName); |
|
|
|
|
priceSheet4.setPrtum("件"); |
|
|
|
|
priceSheet4.setSeqid("GXJG-20250228012"); |
|
|
|
|
priceSheet4.setGxinfo("玻璃封接电镀去氧化皮"); |
|
|
|
|
priceSheet4.setPrtlotno("JHT"); |
|
|
|
|
priceSheet4.setStairflag("非阶梯价"); |
|
|
|
|
priceSheet4.setPrtno("21E6-575-10724-%螺母"); |
|
|
|
|
priceSheetAllList.add(priceSheet4); |
|
|
|
|
PriceSheetVO priceSheet5 = new PriceSheetVO(); |
|
|
|
|
priceSheet5.setPrice("99"); |
|
|
|
|
priceSheet5.setSplyname(oemName); |
|
|
|
|
priceSheet5.setPrtum("件"); |
|
|
|
|
priceSheet5.setSeqid("GXJG-20250228012"); |
|
|
|
|
priceSheet5.setGxinfo("玻璃封接电镀去氧化皮"); |
|
|
|
|
priceSheet5.setStairflag("非阶梯价"); |
|
|
|
|
priceSheet5.setPrtno("21E6-575-10724-%螺母"); |
|
|
|
|
priceSheet5.setRemark("氰化亚金钾380.01-400元/克(未税)"); |
|
|
|
|
priceSheetAllList.add(priceSheet5); |
|
|
|
|
PriceSheetVO priceSheet6 = new PriceSheetVO(); |
|
|
|
|
priceSheet6.setPrice("200"); |
|
|
|
|
priceSheet6.setSplyname(oemName); |
|
|
|
|
priceSheet6.setPrtum("件"); |
|
|
|
|
priceSheet6.setSeqid("GXJG-20250228012"); |
|
|
|
|
priceSheet6.setGxinfo("玻璃封接电镀去氧化皮"); |
|
|
|
|
priceSheet6.setStairflag("非阶梯价"); |
|
|
|
|
priceSheet6.setPrtno("21E6-575-10724-%螺母"); |
|
|
|
|
priceSheet6.setRemark("氰化亚金钾400.01-500元/克(未税)"); |
|
|
|
|
priceSheetAllList.add(priceSheet6); |
|
|
|
|
|
|
|
|
|
if (priceSheetAllList.isEmpty()) { |
|
|
|
|
//【结算异常】
|
|
|
|
|
statementVOList.forEach(statementVO -> { |
|
|
|
|
@ -90,13 +159,13 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper, |
|
|
|
|
//3.为每个结算单匹配报价集合
|
|
|
|
|
statementVOList.forEach(statementVO -> { |
|
|
|
|
List<PriceSheetVO> matchedPriceSheets = MatchTheQuotations(statementVO, priceSheetMap); |
|
|
|
|
if (matchedPriceSheets.isEmpty()) { |
|
|
|
|
if (null == matchedPriceSheets || matchedPriceSheets.isEmpty()) { |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
statementVO.setPriceSheetList(matchedPriceSheets); |
|
|
|
|
//4.匹配规则,过滤出唯一报价
|
|
|
|
|
//①.匹配车间订单号
|
|
|
|
|
if (ruleWoNo(statementVO)) { |
|
|
|
|
if (ruleWoNo(statementVO, true)) { |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
//②.匹配物料名称和质量等级
|
|
|
|
|
@ -108,7 +177,7 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper, |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
//④.涂色标、涂色带、涂箭头
|
|
|
|
|
if (ruleColor(statementVO)) { |
|
|
|
|
if (ruleColor(statementVO, true)) { |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
//⑤.物料号匹配
|
|
|
|
|
@ -116,7 +185,7 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper, |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
//⑥.阶梯价匹配
|
|
|
|
|
if (ruleTieredPricing(statementVO)) { |
|
|
|
|
if (ruleTieredPricing(statementVO, true)) { |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
@ -127,6 +196,7 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper, |
|
|
|
|
OemStatementEntity entity = new OemStatementEntity(); |
|
|
|
|
BeanUtils.copyProperties(statementVO, entity); |
|
|
|
|
entity.setUpdateTime(new Date()); |
|
|
|
|
entity.setIsDeleted(0); |
|
|
|
|
return entity; |
|
|
|
|
}) |
|
|
|
|
.collect(Collectors.toList()); |
|
|
|
|
@ -136,6 +206,203 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper, |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public List<StatementVO> preSettlement(List<StatementVO> statementVOS, BigDecimal price) { |
|
|
|
|
//1.以外协厂商分组的Map<厂家名称, 待结算工序结算单列表>
|
|
|
|
|
Map<String, List<StatementVO>> oemAndStatementMap = statementVOS.stream().collect(Collectors.groupingBy(StatementVO::getOcName)); |
|
|
|
|
for (Map.Entry<String, List<StatementVO>> listEntry : oemAndStatementMap.entrySet()) { |
|
|
|
|
//外协厂商下全部需要结算的结算单
|
|
|
|
|
List<StatementVO> statementVOList = listEntry.getValue(); |
|
|
|
|
|
|
|
|
|
//2.以外协名称查出的全部报价单
|
|
|
|
|
String oemName = listEntry.getKey(); |
|
|
|
|
// List<PriceSheetVO> priceSheetAllList = getPriceSheets(oemName);
|
|
|
|
|
|
|
|
|
|
//假数据测试用
|
|
|
|
|
List<PriceSheetVO> priceSheetAllList = new ArrayList<>(); |
|
|
|
|
PriceSheetVO priceSheet1 = new PriceSheetVO(); |
|
|
|
|
priceSheet1.setPrice("60"); |
|
|
|
|
priceSheet1.setSplyname(oemName); |
|
|
|
|
priceSheet1.setPrtum("件"); |
|
|
|
|
priceSheet1.setWono("WO-N2510424439-R002"); |
|
|
|
|
priceSheet1.setSeqid("GXJG-20250228018"); |
|
|
|
|
priceSheet1.setGxinfo("玻璃封接电化学抛光"); |
|
|
|
|
priceSheet1.setStartdat("2026-01-15"); |
|
|
|
|
priceSheetAllList.add(priceSheet1); |
|
|
|
|
PriceSheetVO priceSheet2 = new PriceSheetVO(); |
|
|
|
|
priceSheet2.setPrice("26"); |
|
|
|
|
priceSheet2.setSplyname(oemName); |
|
|
|
|
priceSheet2.setPrtum("件"); |
|
|
|
|
priceSheet2.setSeqid("GXJG-20250228012"); |
|
|
|
|
priceSheet2.setGxinfo("玻璃封接电镀去氧化皮"); |
|
|
|
|
priceSheet2.setPrtlotno("JI和JHT"); |
|
|
|
|
priceSheet2.setStairflag("单批阶梯价(按单件面积)"); |
|
|
|
|
priceSheet2.setLower("5"); |
|
|
|
|
priceSheet2.setUpper("0"); |
|
|
|
|
priceSheet2.setPrtno("21E6-575-10724-%螺母"); |
|
|
|
|
priceSheet2.setStartdat("2026-01-15"); |
|
|
|
|
priceSheetAllList.add(priceSheet2); |
|
|
|
|
PriceSheetVO priceSheet3 = new PriceSheetVO(); |
|
|
|
|
priceSheet3.setPrice("34"); |
|
|
|
|
priceSheet3.setSplyname(oemName); |
|
|
|
|
priceSheet3.setPrtum("件"); |
|
|
|
|
priceSheet3.setSeqid("GXJG-20250228012"); |
|
|
|
|
priceSheet3.setGxinfo("玻璃封接电镀去氧化皮"); |
|
|
|
|
priceSheet3.setPrtlotno("JI和JHT"); |
|
|
|
|
priceSheet3.setStairflag("单批阶梯价(按单件面积)"); |
|
|
|
|
priceSheet3.setLower("10"); |
|
|
|
|
priceSheet3.setUpper("5.00001"); |
|
|
|
|
priceSheet3.setPrtno("21E6-575-10724-%螺母"); |
|
|
|
|
priceSheet3.setStartdat("2026-01-15"); |
|
|
|
|
priceSheetAllList.add(priceSheet3); |
|
|
|
|
PriceSheetVO priceSheet4 = new PriceSheetVO(); |
|
|
|
|
priceSheet4.setPrice("15"); |
|
|
|
|
priceSheet4.setSplyname(oemName); |
|
|
|
|
priceSheet4.setPrtum("件"); |
|
|
|
|
priceSheet4.setSeqid("GXJG-20250228012"); |
|
|
|
|
priceSheet4.setGxinfo("玻璃封接电镀去氧化皮"); |
|
|
|
|
priceSheet4.setPrtlotno("JHT"); |
|
|
|
|
priceSheet4.setStairflag("非阶梯价"); |
|
|
|
|
priceSheet4.setPrtno("21E6-575-10724-%螺母"); |
|
|
|
|
priceSheet4.setStartdat("2026-01-15"); |
|
|
|
|
priceSheetAllList.add(priceSheet4); |
|
|
|
|
PriceSheetVO priceSheet5 = new PriceSheetVO(); |
|
|
|
|
priceSheet5.setPrice("99"); |
|
|
|
|
priceSheet5.setSplyname(oemName); |
|
|
|
|
priceSheet5.setPrtum("件"); |
|
|
|
|
priceSheet5.setSeqid("GXJG-20250228012"); |
|
|
|
|
priceSheet5.setGxinfo("玻璃封接电镀去氧化皮"); |
|
|
|
|
priceSheet5.setStairflag("非阶梯价"); |
|
|
|
|
priceSheet5.setPrtno("21E6-575-10724-%螺母"); |
|
|
|
|
priceSheet5.setRemark("氰化亚金钾380.01-400元/克(未税)"); |
|
|
|
|
priceSheet5.setStartdat("2026-01-15"); |
|
|
|
|
priceSheetAllList.add(priceSheet5); |
|
|
|
|
PriceSheetVO priceSheet6 = new PriceSheetVO(); |
|
|
|
|
priceSheet6.setPrice("200"); |
|
|
|
|
priceSheet6.setSplyname(oemName); |
|
|
|
|
priceSheet6.setPrtum("件"); |
|
|
|
|
priceSheet6.setSeqid("GXJG-20250228012"); |
|
|
|
|
priceSheet6.setGxinfo("玻璃封接电镀去氧化皮"); |
|
|
|
|
priceSheet6.setStairflag("非阶梯价"); |
|
|
|
|
priceSheet6.setPrtno("21E6-575-10724-%螺母"); |
|
|
|
|
priceSheet6.setRemark("氰化亚金钾400.01-500元/克(未税)"); |
|
|
|
|
priceSheet6.setStartdat("2026-01-16"); |
|
|
|
|
priceSheetAllList.add(priceSheet6); |
|
|
|
|
if (priceSheetAllList.isEmpty()) { |
|
|
|
|
//【结算异常】
|
|
|
|
|
statementVOList.forEach(statementVO -> { |
|
|
|
|
statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT); |
|
|
|
|
statementVO.setMemo(String.format("外协厂商【%s】匹配无报价记录", oemName)); |
|
|
|
|
}); |
|
|
|
|
} else { |
|
|
|
|
//工序分组Map<工序, 报价列表>
|
|
|
|
|
Map<String, List<PriceSheetVO>> priceSheetMap = priceSheetAllList.stream() |
|
|
|
|
.collect(Collectors.groupingBy( |
|
|
|
|
PriceSheetVO::getGxinfo, |
|
|
|
|
() -> new TreeMap<>(Collections.reverseOrder()), // 按键的倒序排序
|
|
|
|
|
Collectors.collectingAndThen( |
|
|
|
|
Collectors.toList(), |
|
|
|
|
list -> { |
|
|
|
|
// 对每个分组内的列表按生效日期倒序排序
|
|
|
|
|
return list.stream() |
|
|
|
|
.sorted(Comparator.comparing(PriceSheetVO::getStartdat).reversed()) |
|
|
|
|
.collect(Collectors.toList()); |
|
|
|
|
} |
|
|
|
|
) |
|
|
|
|
)); |
|
|
|
|
//3.为每个结算单匹配报价集合
|
|
|
|
|
statementVOList.forEach(statementVO -> { |
|
|
|
|
List<PriceSheetVO> matchedPriceSheets = MatchTheQuotations(statementVO, priceSheetMap); |
|
|
|
|
if (null == matchedPriceSheets || matchedPriceSheets.isEmpty()) { |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
statementVO.setPriceSheetList(matchedPriceSheets); |
|
|
|
|
//4.匹配规则,过滤出唯一报价
|
|
|
|
|
//①.匹配车间订单号
|
|
|
|
|
if (ruleWoNo(statementVO, false)) { |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
//②.匹配物料名称和质量等级
|
|
|
|
|
if (rulePartNameAndProdIdent(statementVO)) { |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
//③.匹配金价银价
|
|
|
|
|
if (ruleGoldAndSilverPrices(statementVO, price)) { |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
//④.涂色标、涂色带、涂箭头
|
|
|
|
|
if (ruleColor(statementVO, false)) { |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
//⑤.物料号匹配
|
|
|
|
|
if (ruleGoods(statementVO)) { |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
//⑥.阶梯价匹配
|
|
|
|
|
if (ruleTieredPricing(statementVO, false)) { |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
return statementVOS; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public R approval(OemSettleAccountsApproval oemSettleAccountsApproval) { |
|
|
|
|
List<Long> ids = oemSettleAccountsApproval.getIds(); |
|
|
|
|
if (CollectionUtils.isEmpty(ids)) { |
|
|
|
|
return R.fail("未选取结算单"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
UpdateWrapper<OemStatementEntity> updateWrapper = new UpdateWrapper<>(); |
|
|
|
|
|
|
|
|
|
if (3 == oemSettleAccountsApproval.getApprovalStatus()) { |
|
|
|
|
//审核通过
|
|
|
|
|
updateWrapper |
|
|
|
|
.set("approval_status", OemStatementEntity.APPROVAL_STATUS_VIA) |
|
|
|
|
.set("memo", "外协结算完成") |
|
|
|
|
.set("ros_status", OemStatementEntity.OK_SETTLEMENT) |
|
|
|
|
.in("id", ids); |
|
|
|
|
} else { |
|
|
|
|
//审核不通过:(1)原因为不需要结算的更新为【无需结算】(2)原因是基础数据有误的更新为【结算异常】
|
|
|
|
|
if (1 == oemSettleAccountsApproval.getReason()) { |
|
|
|
|
updateWrapper |
|
|
|
|
.set("approval_status", OemStatementEntity.APPROVAL_STATUS_VIA) |
|
|
|
|
.set("memo", "无需结算") |
|
|
|
|
.set("ros_status", OemStatementEntity.NOT_NEED_SETTLEMENT) |
|
|
|
|
.in("id", ids); |
|
|
|
|
} else { |
|
|
|
|
updateWrapper |
|
|
|
|
.set("approval_status", OemStatementEntity.APPROVAL_STATUS_FAIL) |
|
|
|
|
.set("memo", "基础数据有误") |
|
|
|
|
.set("ros_status", OemStatementEntity.ERR_SETTLEMENT) |
|
|
|
|
.in("id", ids); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return R.status(baseMapper.update(null, updateWrapper) > 0); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public R notNeedSettlement(List<StatementVO> list) { |
|
|
|
|
if (null != list && list.size() > 0) { |
|
|
|
|
List<OemStatementEntity> saves = list.stream() |
|
|
|
|
.map(statementVO -> { |
|
|
|
|
OemStatementEntity entity = new OemStatementEntity(); |
|
|
|
|
BeanUtils.copyProperties(statementVO, entity); |
|
|
|
|
entity.setApprovalStatus(OemStatementEntity.APPROVAL_STATUS_VIA); |
|
|
|
|
entity.setRosStatus(OemStatementEntity.NOT_NEED_SETTLEMENT); |
|
|
|
|
entity.setMemo("无需结算"); |
|
|
|
|
entity.setUpdateTime(new Date()); |
|
|
|
|
return entity; |
|
|
|
|
}) |
|
|
|
|
.collect(Collectors.toList()); |
|
|
|
|
baseMapper.insertOrUpdate(saves); |
|
|
|
|
} |
|
|
|
|
return R.fail("未选取结算单"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 获取报价单列表 |
|
|
|
|
*/ |
|
|
|
|
@ -145,13 +412,30 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper, |
|
|
|
|
query.setInDateStart(putStoreDate); |
|
|
|
|
query.setInDateEnd(putStoreDate); |
|
|
|
|
|
|
|
|
|
// R<Page<PriceSheetVO>> pageR = erpDataOemClient.priceSheetData(query, new Query() {{
|
|
|
|
|
// setSize(99999);
|
|
|
|
|
// }});
|
|
|
|
|
R<Page<PriceSheetVO>> pageR = erpDataOemClient.priceSheetData(query, new Query() {{ |
|
|
|
|
setSize(99999); |
|
|
|
|
}}); |
|
|
|
|
|
|
|
|
|
if (pageR != null && pageR.getData() != null) { |
|
|
|
|
return pageR.getData().getRecords(); |
|
|
|
|
} |
|
|
|
|
return Collections.emptyList(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 获取报价单列表 |
|
|
|
|
*/ |
|
|
|
|
private List<PriceSheetVO> getPriceSheets(String oemName) { |
|
|
|
|
PriceSheetQuery query = new PriceSheetQuery(); |
|
|
|
|
query.setOcName(oemName); |
|
|
|
|
|
|
|
|
|
R<Page<PriceSheetVO>> pageR = erpDataOemClient.priceSheetData(query, new Query() {{ |
|
|
|
|
setSize(99999); |
|
|
|
|
}}); |
|
|
|
|
|
|
|
|
|
// if (pageR != null && pageR.getData() != null) {
|
|
|
|
|
// return pageR.getData().getRecords();
|
|
|
|
|
// }
|
|
|
|
|
if (pageR != null && pageR.getData() != null) { |
|
|
|
|
return pageR.getData().getRecords(); |
|
|
|
|
} |
|
|
|
|
return Collections.emptyList(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -177,9 +461,10 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper, |
|
|
|
|
* 规则:匹配车间订单号 |
|
|
|
|
* |
|
|
|
|
* @param statementVO |
|
|
|
|
* @param flag 结算true,预结算false |
|
|
|
|
* @return |
|
|
|
|
*/ |
|
|
|
|
private boolean ruleWoNo(StatementVO statementVO) { |
|
|
|
|
private boolean ruleWoNo(StatementVO statementVO, boolean flag) { |
|
|
|
|
List<PriceSheetVO> priceSheetList = statementVO.getPriceSheetList(); |
|
|
|
|
//取出匹配车间订单号的报价和无车间订单号的报价
|
|
|
|
|
Map<String, List<PriceSheetVO>> woNoPriceSheetMap = priceSheetList.stream() |
|
|
|
|
@ -194,7 +479,7 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper, |
|
|
|
|
if (woNoPriceSheetMap.containsKey(statementVO.getWoCode())) { |
|
|
|
|
List<PriceSheetVO> woNoPriceSheetList = woNoPriceSheetMap.get(statementVO.getWoCode()); |
|
|
|
|
//多条【结算异常】
|
|
|
|
|
if (woNoPriceSheetList.size() > 1) { |
|
|
|
|
if (woNoPriceSheetList.size() > 1 && flag) { |
|
|
|
|
statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT); |
|
|
|
|
statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%s】,工作订单号【%s】匹配多条报价记录", statementVO.getOcName(), statementVO.getPartName(), statementVO.getWoCode())); |
|
|
|
|
//结算异常:多条报价记录结算结果
|
|
|
|
|
@ -205,6 +490,7 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper, |
|
|
|
|
BigDecimal unitPrice = new BigDecimal(priceSheet.getPrice()); |
|
|
|
|
BigDecimal qty = new BigDecimal(statementVO.getMakeQty()); |
|
|
|
|
statementVO.setRosStatus(StatementVO.IN_SETTLEMENT); |
|
|
|
|
statementVO.setApprovalStatus(StatementVO.APPROVAL_STATUS_UNDER); |
|
|
|
|
statementVO.setUnitPrice(unitPrice); |
|
|
|
|
statementVO.setUnit(priceSheet.getPrtum()); |
|
|
|
|
statementVO.setTotalPrice(unitPrice.multiply(qty)); |
|
|
|
|
@ -263,7 +549,7 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper, |
|
|
|
|
List<PriceSheetVO> priceSheetList = statementVO.getPriceSheetList(); |
|
|
|
|
String plateGoodsCode = statementVO.getPlateGoodsCode(); |
|
|
|
|
//判断传入参数的当前金价银价 > 0 && 零件镀层物料编码不为空,则需匹配规则
|
|
|
|
|
if (price.compareTo(BigDecimal.ZERO) > 0 && StringUtils.isEmpty(plateGoodsCode)) { |
|
|
|
|
if (price.compareTo(BigDecimal.ZERO) > 0 && !StringUtils.isEmpty(plateGoodsCode)) { |
|
|
|
|
//取出所有备注
|
|
|
|
|
Map<String, List<PriceSheetVO>> remarkPriceSheetMap = priceSheetList.stream() |
|
|
|
|
.filter(priceSheet -> { |
|
|
|
|
@ -297,9 +583,10 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper, |
|
|
|
|
* 涂色标、涂色带、涂箭头匹配规则 |
|
|
|
|
* |
|
|
|
|
* @param statementVO |
|
|
|
|
* @param flag 结算true,预结算false |
|
|
|
|
* @return |
|
|
|
|
*/ |
|
|
|
|
private boolean ruleColor(StatementVO statementVO) { |
|
|
|
|
private boolean ruleColor(StatementVO statementVO, boolean flag) { |
|
|
|
|
List<PriceSheetVO> priceSheetList = statementVO.getPriceSheetList(); |
|
|
|
|
//结算单色标色带箭头数量>0,需要匹配报价里色标色带箭头
|
|
|
|
|
//如果结算单没有数量,直接返回false进入下个规则
|
|
|
|
|
@ -336,7 +623,7 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper, |
|
|
|
|
String quotation = ""; |
|
|
|
|
if (tjtNum > 0 && prtnoPriceSheetMap.containsKey("涂箭头")) { |
|
|
|
|
List<PriceSheetVO> tjtPriceSheetList = prtnoPriceSheetMap.get("涂箭头"); |
|
|
|
|
if (tjtPriceSheetList.size() > 1) { |
|
|
|
|
if (tjtPriceSheetList.size() > 1 && flag) { |
|
|
|
|
//结算异常:多条报价记录结算结果
|
|
|
|
|
statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT); |
|
|
|
|
statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%s】,涂箭头数量【%s】匹配多条报价记录", statementVO.getOcName(), statementVO.getPartName(), tjtNum)); |
|
|
|
|
@ -350,7 +637,7 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper, |
|
|
|
|
} |
|
|
|
|
if (tsdNum > 0 && prtnoPriceSheetMap.containsKey("涂色带")) { |
|
|
|
|
List<PriceSheetVO> tsdPriceSheetList = prtnoPriceSheetMap.get("涂色带"); |
|
|
|
|
if (tsdPriceSheetList.size() > 1) { |
|
|
|
|
if (tsdPriceSheetList.size() > 1 && flag) { |
|
|
|
|
//结算异常:多条报价记录结算结果
|
|
|
|
|
statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT); |
|
|
|
|
statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%s】,涂色带数量【%s】匹配多条报价记录", statementVO.getOcName(), statementVO.getPartName(), tsdNum)); |
|
|
|
|
@ -364,7 +651,7 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper, |
|
|
|
|
} |
|
|
|
|
if (tsbNum > 0 && prtnoPriceSheetMap.containsKey("涂色标")) { |
|
|
|
|
List<PriceSheetVO> tsbPriceSheetList = prtnoPriceSheetMap.get("涂色标"); |
|
|
|
|
if (tsbPriceSheetList.size() > 1) { |
|
|
|
|
if (tsbPriceSheetList.size() > 1 && flag) { |
|
|
|
|
//结算异常:多条报价记录结算结果
|
|
|
|
|
statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT); |
|
|
|
|
statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%s】,涂色标数量【%s】匹配多条报价记录", statementVO.getOcName(), statementVO.getPartName(), tsbNum)); |
|
|
|
|
@ -379,12 +666,13 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper, |
|
|
|
|
//如总价大于0,则报价成功
|
|
|
|
|
if (totalPrice.compareTo(BigDecimal.ZERO) > 0) { |
|
|
|
|
statementVO.setRosStatus(StatementVO.IN_SETTLEMENT); |
|
|
|
|
statementVO.setApprovalStatus(StatementVO.APPROVAL_STATUS_UNDER); |
|
|
|
|
statementVO.setTotalPrice(totalPrice); |
|
|
|
|
statementVO.setMemo("结算中"); |
|
|
|
|
statementVO.setQuotation(quotation); |
|
|
|
|
return true; |
|
|
|
|
} else { |
|
|
|
|
//结算异常:多条报价记录结算结果
|
|
|
|
|
//结算异常:无报价记录结算结果
|
|
|
|
|
statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT); |
|
|
|
|
statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%s】涂色标、涂色带、涂箭头匹配无报价记录", statementVO.getOcName(), statementVO.getPartName())); |
|
|
|
|
return true; |
|
|
|
|
@ -446,7 +734,9 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper, |
|
|
|
|
if (StringUtils.isEmpty(plate)) { |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
Map<String, List<PriceSheetVO>> map = priceSheetList.stream().collect(Collectors.groupingBy(PriceSheetVO::getPrtno)); |
|
|
|
|
Map<String, List<PriceSheetVO>> map = priceSheetList.stream() |
|
|
|
|
.filter(vo -> vo.getPrtno() != null) // 过滤掉prtno为null的对象
|
|
|
|
|
.collect(Collectors.groupingBy(PriceSheetVO::getPrtno)); |
|
|
|
|
//1.精确匹配,完整的镀种
|
|
|
|
|
if (map.containsKey(plate)) { |
|
|
|
|
statementVO.setPriceSheetList(map.get(plate)); |
|
|
|
|
@ -454,9 +744,8 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper, |
|
|
|
|
} |
|
|
|
|
//2.使用模糊查询。根据订单中的镀种,到镀种映射表中查询对应的代码,再根据代码查找报价,适用于:Ap.Ni15、Ap.Ni20有同一个报价Ap.Ni%Cu%Xn%
|
|
|
|
|
LambdaQueryWrapper<PlatingTypeRulesEntity> queryWrapper = new LambdaQueryWrapper(); |
|
|
|
|
queryWrapper.eq(PlatingTypeRulesEntity::getOrderPlat, plate) |
|
|
|
|
.orderByDesc(PlatingTypeRulesEntity::getCreateTime) // 按创建时间降序
|
|
|
|
|
.last("AND ROWNUM = 1"); // 只取第一条
|
|
|
|
|
queryWrapper.apply("ROWNUM = 1").eq(PlatingTypeRulesEntity::getOrderPlat, plate) |
|
|
|
|
.orderByDesc(PlatingTypeRulesEntity::getCreateTime); |
|
|
|
|
PlatingTypeRulesEntity platingTypeRulesEntity = platingTypeRulesMapper.selectOne(queryWrapper); |
|
|
|
|
if (platingTypeRulesEntity == null || StringUtils.isBlank(platingTypeRulesEntity.getQuotationPlat())) { |
|
|
|
|
return false; |
|
|
|
|
@ -481,7 +770,9 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper, |
|
|
|
|
if (StringUtils.isEmpty(partCode)) { |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
Map<String, List<PriceSheetVO>> map = priceSheetList.stream().collect(Collectors.groupingBy(PriceSheetVO::getPrtno)); |
|
|
|
|
Map<String, List<PriceSheetVO>> map = priceSheetList.stream() |
|
|
|
|
.filter(vo -> vo.getPrtno() != null) // 过滤掉prtno为null的对象
|
|
|
|
|
.collect(Collectors.groupingBy(PriceSheetVO::getPrtno)); |
|
|
|
|
//1.精确匹配,完整的零件号
|
|
|
|
|
if (map.containsKey(partCode)) { |
|
|
|
|
statementVO.setPriceSheetList(map.get(partCode)); |
|
|
|
|
@ -491,7 +782,7 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper, |
|
|
|
|
Map<String, List<PriceSheetVO>> newMap = map.entrySet().stream() |
|
|
|
|
.filter(entry -> entry.getKey().contains("-%")) |
|
|
|
|
.collect(Collectors.toMap( |
|
|
|
|
entry -> entry.getKey().split("%")[0], // 只保留%之前的部分
|
|
|
|
|
entry -> entry.getKey().split("-%")[0], // 只保留%之前的部分
|
|
|
|
|
Map.Entry::getValue |
|
|
|
|
)); |
|
|
|
|
List<PriceSheetVO> priceSheetVOList = newMap.entrySet().stream() |
|
|
|
|
@ -519,7 +810,9 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper, |
|
|
|
|
if (StringUtils.isEmpty(plateThickness)) { |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
Map<String, List<PriceSheetVO>> map = priceSheetList.stream().collect(Collectors.groupingBy(PriceSheetVO::getPrtno)); |
|
|
|
|
Map<String, List<PriceSheetVO>> map = priceSheetList.stream() |
|
|
|
|
.filter(vo -> vo.getPrtno() != null) // 过滤掉prtno为null的对象
|
|
|
|
|
.collect(Collectors.groupingBy(PriceSheetVO::getPrtno)); |
|
|
|
|
//镀层厚度值相等,保存报价集合
|
|
|
|
|
if (map.containsKey(plateThickness)) { |
|
|
|
|
statementVO.setPriceSheetList(map.get(plateThickness)); |
|
|
|
|
@ -532,9 +825,10 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper, |
|
|
|
|
* 规则:阶梯价匹配 |
|
|
|
|
* |
|
|
|
|
* @param statementVO |
|
|
|
|
* @param flag 结算true,预结算false |
|
|
|
|
* @return |
|
|
|
|
*/ |
|
|
|
|
private boolean ruleTieredPricing(StatementVO statementVO) { |
|
|
|
|
private boolean ruleTieredPricing(StatementVO statementVO, boolean flag) { |
|
|
|
|
List<PriceSheetVO> priceSheetList = statementVO.getPriceSheetList(); |
|
|
|
|
//如果无报价,结算异常:无报价记录结算结果
|
|
|
|
|
if (null == priceSheetList || priceSheetList.isEmpty()) { |
|
|
|
|
@ -549,6 +843,7 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper, |
|
|
|
|
BigDecimal unitPrice = new BigDecimal(priceSheet.getPrice()); |
|
|
|
|
BigDecimal qty = new BigDecimal(statementVO.getMakeQty()); |
|
|
|
|
statementVO.setRosStatus(StatementVO.IN_SETTLEMENT); |
|
|
|
|
statementVO.setApprovalStatus(StatementVO.APPROVAL_STATUS_UNDER); |
|
|
|
|
statementVO.setUnitPrice(unitPrice); |
|
|
|
|
statementVO.setUnit(priceSheet.getPrtum()); |
|
|
|
|
statementVO.setTotalPrice(unitPrice.multiply(qty)); |
|
|
|
|
@ -577,11 +872,11 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper, |
|
|
|
|
List<PriceSheetVO> priceSheetVOS = StairPriceSheetMap.get("非阶梯价"); |
|
|
|
|
if (null == priceSheetVOS || priceSheetVOS.isEmpty()) { |
|
|
|
|
statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT); |
|
|
|
|
statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%s】,阶梯价【】匹配无报价记录", statementVO.getOcName(), statementVO.getPartName(), "非阶梯价")); |
|
|
|
|
statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%s】,阶梯价【%s】匹配无报价记录", statementVO.getOcName(), statementVO.getPartName(), "非阶梯价")); |
|
|
|
|
return true; |
|
|
|
|
} else if (null != priceSheetVOS && priceSheetVOS.size() > 1) { |
|
|
|
|
} else if (null != priceSheetVOS && priceSheetVOS.size() > 1 && flag) { |
|
|
|
|
statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT); |
|
|
|
|
statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%s】,阶梯价【】匹配多条报价记录", statementVO.getOcName(), statementVO.getPartName(), "非阶梯价")); |
|
|
|
|
statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%s】,阶梯价【%s】匹配多条报价记录", statementVO.getOcName(), statementVO.getPartName(), "非阶梯价")); |
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
//唯一使用此报价单**结算**
|
|
|
|
|
@ -589,6 +884,7 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper, |
|
|
|
|
BigDecimal unitPrice = new BigDecimal(priceSheet.getPrice()); |
|
|
|
|
BigDecimal qty = new BigDecimal(statementVO.getMakeQty()); |
|
|
|
|
statementVO.setRosStatus(StatementVO.IN_SETTLEMENT); |
|
|
|
|
statementVO.setApprovalStatus(StatementVO.APPROVAL_STATUS_UNDER); |
|
|
|
|
statementVO.setUnitPrice(unitPrice); |
|
|
|
|
statementVO.setUnit(priceSheet.getPrtum()); |
|
|
|
|
statementVO.setTotalPrice(unitPrice.multiply(qty)); |
|
|
|
|
@ -607,20 +903,22 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper, |
|
|
|
|
if (null != priceSheetVOS && priceSheetVOS.size() > 1) { |
|
|
|
|
List<PriceSheetVO> priceSheetVOList = priceSheetVOS.stream() |
|
|
|
|
.filter(vo -> { |
|
|
|
|
//现场数据库里lower是上限,upper反而是下限
|
|
|
|
|
double lower = Double.parseDouble(vo.getLower()); |
|
|
|
|
double upper = Double.parseDouble(vo.getUpper()); |
|
|
|
|
return ypAreaValue >= lower && ypAreaValue <= upper; |
|
|
|
|
return ypAreaValue >= upper && ypAreaValue <= lower; |
|
|
|
|
}).collect(Collectors.toList()); |
|
|
|
|
if (null != priceSheetVOList && priceSheetVOList.size() > 1) { |
|
|
|
|
if (null != priceSheetVOList && priceSheetVOList.size() > 1 && flag) { |
|
|
|
|
statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT); |
|
|
|
|
statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%s】,阶梯价【】匹配多条报价记录", statementVO.getOcName(), statementVO.getPartName(), "单批阶梯价(按单件面积)")); |
|
|
|
|
statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%s】,阶梯价【%s】匹配多条报价记录", statementVO.getOcName(), statementVO.getPartName(), "单批阶梯价(按单件面积)")); |
|
|
|
|
return true; |
|
|
|
|
} else if (null != priceSheetVOList && priceSheetVOList.size() == 1) { |
|
|
|
|
} else if ((null != priceSheetVOList && priceSheetVOList.size() == 1) || (!flag && null != priceSheetVOList && priceSheetVOList.size() > 1)) { |
|
|
|
|
//唯一使用此报价单**结算**
|
|
|
|
|
PriceSheetVO priceSheet = priceSheetVOList.get(0); |
|
|
|
|
BigDecimal unitPrice = new BigDecimal(priceSheet.getPrice()); |
|
|
|
|
BigDecimal qty = new BigDecimal(statementVO.getMakeQty()); |
|
|
|
|
statementVO.setRosStatus(StatementVO.IN_SETTLEMENT); |
|
|
|
|
statementVO.setApprovalStatus(StatementVO.APPROVAL_STATUS_UNDER); |
|
|
|
|
statementVO.setUnitPrice(unitPrice); |
|
|
|
|
statementVO.setUnit(priceSheet.getPrtum()); |
|
|
|
|
statementVO.setTotalPrice(unitPrice.multiply(qty)); |
|
|
|
|
@ -629,7 +927,7 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper, |
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT); |
|
|
|
|
statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%s】,阶梯价【】匹配无报价记录", statementVO.getOcName(), statementVO.getPartName(), "单批阶梯价(按单件面积)")); |
|
|
|
|
statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%s】,阶梯价【%s】匹配无报价记录", statementVO.getOcName(), statementVO.getPartName(), "单批阶梯价(按单件面积)")); |
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
return true; |
|
|
|
|
@ -645,20 +943,22 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper, |
|
|
|
|
if (null != priceSheetVOS && priceSheetVOS.size() > 1) { |
|
|
|
|
List<PriceSheetVO> priceSheetVOList = priceSheetVOS.stream() |
|
|
|
|
.filter(vo -> { |
|
|
|
|
//现场数据库里lower是上限,upper反而是下限
|
|
|
|
|
double lower = Double.parseDouble(vo.getLower()); |
|
|
|
|
double upper = Double.parseDouble(vo.getUpper()); |
|
|
|
|
return totalAreaValue >= lower && totalAreaValue <= upper; |
|
|
|
|
return totalAreaValue >= upper && totalAreaValue <= lower; |
|
|
|
|
}).collect(Collectors.toList()); |
|
|
|
|
if (null != priceSheetVOList && priceSheetVOList.size() > 1) { |
|
|
|
|
if (null != priceSheetVOList && priceSheetVOList.size() > 1 && flag) { |
|
|
|
|
statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT); |
|
|
|
|
statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%s】,阶梯价【】匹配多条报价记录", statementVO.getOcName(), statementVO.getPartName(), "单批阶梯价(按单批面积)")); |
|
|
|
|
statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%s】,阶梯价【%s】匹配多条报价记录", statementVO.getOcName(), statementVO.getPartName(), "单批阶梯价(按单批面积)")); |
|
|
|
|
return true; |
|
|
|
|
} else if (null != priceSheetVOList && priceSheetVOList.size() == 1) { |
|
|
|
|
} else if (null != priceSheetVOList && priceSheetVOList.size() == 1 || (!flag && null != priceSheetVOList && priceSheetVOList.size() > 1)) { |
|
|
|
|
//唯一使用此报价单**结算**
|
|
|
|
|
PriceSheetVO priceSheet = priceSheetVOList.get(0); |
|
|
|
|
BigDecimal unitPrice = new BigDecimal(priceSheet.getPrice()); |
|
|
|
|
BigDecimal qty = new BigDecimal(statementVO.getMakeQty()); |
|
|
|
|
statementVO.setRosStatus(StatementVO.IN_SETTLEMENT); |
|
|
|
|
statementVO.setApprovalStatus(StatementVO.APPROVAL_STATUS_UNDER); |
|
|
|
|
statementVO.setUnitPrice(unitPrice); |
|
|
|
|
statementVO.setUnit(priceSheet.getPrtum()); |
|
|
|
|
statementVO.setTotalPrice(unitPrice.multiply(qty)); |
|
|
|
|
@ -667,7 +967,7 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper, |
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT); |
|
|
|
|
statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%s】,阶梯价【】匹配无报价记录", statementVO.getOcName(), statementVO.getPartName(), "单批阶梯价(按单批面积)")); |
|
|
|
|
statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%s】,阶梯价【%s】匹配无报价记录", statementVO.getOcName(), statementVO.getPartName(), "单批阶梯价(按单批面积)")); |
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
return true; |
|
|
|
|
@ -707,7 +1007,7 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper, |
|
|
|
|
String prodIdent = statementVO.getProdIdent(); |
|
|
|
|
|
|
|
|
|
// 如果 prtlotno 是 "/",条件满足
|
|
|
|
|
if ("/".equals(prtlotno)) { |
|
|
|
|
if (null == prtlotno || "/".equals(prtlotno)) { |
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|