Merge remote-tracking branch 'origin/master'

liweidong
绫Umbrella 3 weeks ago
commit c1c04f6f4e
  1. 6
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/dto/DsTaskBillDTO.java
  2. 19
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsPartEntity.java
  3. 6
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsSpecialProEntity.java
  4. 6
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsTaskBillEntity.java
  5. 7
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/vo/DsSpecialProVO.java
  6. 4
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/request/OemSettleAccountsApproval.java
  7. 2
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/request/OemSettleAccountsSave.java
  8. 2
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/request/StatementQuery.java
  9. 24
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/controller/DsPartRelationController.java
  10. 10
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/controller/DsTaskBillController.java
  11. 4
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/PartMapper.xml
  12. 13
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/SpecialProMapper.xml
  13. 1
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/TaskBillMapper.xml
  14. 5
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsTaskBillService.java
  15. 32
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsTaskBillServiceImpl.java
  16. 15
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsTaskingServiceImpl.java
  17. 17
      blade-service/blade-desk/src/main/java/org/springblade/desk/oem/controller/OemProcessController.java
  18. 4
      blade-service/blade-desk/src/main/java/org/springblade/desk/oem/controller/OemStatementController.java
  19. 6
      blade-service/blade-desk/src/main/java/org/springblade/desk/oem/mapper/OemStatementMapper.xml
  20. 2
      blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/IOemStatementService.java
  21. 291
      blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/impl/OemStatementServiceImpl.java
  22. 4
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/InspectionTaskMapper.xml
  23. BIN
      blade-service/blade-desk/src/main/resources/Excel/QA/实验项目管理.xls

@ -49,8 +49,10 @@ public class DsTaskBillDTO extends DsTaskBillEntity {
private String fillMemo;
private List<BsFillingDetailEntity> fillingDetailList;
// private List<BsFillingDetailEntity> fillingDetailList;
//
// private List<Long> deleteIds;
private List<Long> deleteIds;
private String fileUrl;
}

@ -325,4 +325,23 @@ public class DsPartEntity extends BaseEntity {
@Schema(description = "子件类型")
private String subType;
/**
* 玻璃饼直径
*/
@Schema(description = "玻璃饼直径")
private BigDecimal blbDiameter;
/**
* 壳体最大外径
*/
@Schema(description = "壳体最大外径")
private BigDecimal externalDiameter;
/**
* 镀层厚度2
*/
@Schema(description = "镀层厚度2")
private BigDecimal plateThicknessTwo;
}

@ -122,4 +122,10 @@ public class DsSpecialProEntity extends BaseEntity {
@Schema(description = "设备名称")
private String equipmentName;
/**
* 同步状态
*/
@Schema(description = "同步状态")
private String syncStatus;
}

@ -123,6 +123,12 @@ public class DsTaskBillEntity extends BaseEntity {
@Schema(description = "设备名称")
private String equipmentName;
/**
* 文件路径
*/
@Schema(description = "文件路径")
private String fileUrl;
/**
* 未处理
*/

@ -25,6 +25,7 @@
*/
package org.springblade.desk.dashboard.pojo.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import org.springblade.desk.dashboard.pojo.entity.DsSpecialProEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
@ -42,4 +43,10 @@ public class DsSpecialProVO extends DsSpecialProEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 文件路径
*/
@Schema(description = "文件路径")
private String fileUrl;
}

@ -15,9 +15,9 @@ public class OemSettleAccountsApproval {
/**
* 结算单IDList
*/
@Schema(description = "结算单IDList", required = true)
@Schema(description = "结算单IDStrList", required = true)
@NotNull(message = "结算单ID不能为空")
private List<Long> ids;
private String ids;
/**
* 审批意见
*/

@ -18,7 +18,7 @@ public class OemSettleAccountsSave {
@DateTimeFormat(pattern = "yyyy-MM-dd")
@Schema(description = "镀后入库时间")
@NotNull(message = "镀后入库时间不能为空")
// @NotNull(message = "镀后入库时间不能为空")
private LocalDate putStoreDate;
@Schema(description = "现执行价格")

@ -54,7 +54,7 @@ public class StatementQuery {
* 工序IDS
*/
@Schema(description = "工序IDs(传字符串1,2,3,4)")
private String ppsIds;
private String psCode;
/**
* 外协厂商IDS
*/

@ -38,6 +38,8 @@ import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springblade.desk.dashboard.pojo.entity.DsPartEntity;
import org.springblade.desk.dashboard.service.IDsPartService;
import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
@ -50,6 +52,8 @@ import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.excel.util.ExcelUtil;
import org.springblade.core.tool.constant.BladeConstant;
import java.util.ArrayList;
import java.util.Map;
import java.util.List;
import jakarta.servlet.http.HttpServletResponse;
@ -68,6 +72,8 @@ public class DsPartRelationController extends BladeController {
private final IDsPartRelationService dsPartRelationService;
private final IDsPartService dsPartService;
/**
* 部件-子件关联表 详情
*/
@ -100,6 +106,24 @@ public class DsPartRelationController extends BladeController {
return R.data(pages);
}
@GetMapping("/getSubParts")
@ApiOperationSupport(order = 3)
@Operation(summary = "分页", description = "传入dsPartRelation")
public R<List<DsPartEntity>> getSubParts(String partCode) {
List<DsPartEntity> pages = new ArrayList<>();
QueryWrapper<DsPartRelationEntity> relationQuery = new QueryWrapper<>();
relationQuery.eq("part_code", partCode);
List<DsPartRelationEntity> list = dsPartRelationService.list(relationQuery);
if(null != list && list.size() > 0){
List<Long> childPartIds = list.stream().map(DsPartRelationEntity::getChildPartId).toList();
QueryWrapper<DsPartEntity> partQuery = new QueryWrapper<>();
partQuery.in("id", childPartIds);
pages = dsPartService.list(partQuery);
}
return R.data(pages);
}
/**
* 部件-子件关联表 新增
*/

@ -25,6 +25,7 @@
*/
package org.springblade.desk.dashboard.controller;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
@ -41,6 +42,7 @@ import org.springblade.core.tool.utils.Func;
import org.springblade.desk.dashboard.pojo.dto.DsTaskBillDTO;
import org.springblade.desk.dashboard.pojo.entity.BsFillingDetailEntity;
import org.springblade.desk.dashboard.service.IBsFillingDetailService;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
@ -185,10 +187,12 @@ public class DsTaskBillController extends BladeController {
public R handleDsTaskBill(@Valid @RequestBody DsTaskBillDTO dto) {
Long tbId = dto.getTbId();
String fillMemo = dto.getFillMemo();
List<BsFillingDetailEntity> fillingDetailList = dto.getFillingDetailList();
List<Long> deleteIds = dto.getDeleteIds();
String fileUrl = dto.getFileUrl();
if(tbId == null || StringUtils.isEmpty(fileUrl)){
return R.fail("tbId 和 fileUrl 不能为空");
}
return R.status(dsTaskBillService.handleDsTaskBill(tbId,fillMemo,fillingDetailList,deleteIds));
return R.status(dsTaskBillService.handleDsTaskBill(tbId,fillMemo,fileUrl));
}

@ -127,6 +127,10 @@
<result column="PF_STATUS" property="pfStatus"/>
<result column="PART_VERSION" property="partVersion"/>
<result column="IS_ELECTROPLATING" property="isElectroplating"/>
<result column="SUB_TYPE" property="subType"/>
<result column="BLB_DIAMETER" property="blbDiameter"/>
<result column="EXTERNAL_DIAMETER" property="externalDiameter"/>
<result column="PLATE_THICKNESS_TWO" property="plateThicknessTwo"/>
</resultMap>
<update id="updateNextDueByIds">

@ -24,17 +24,20 @@
<result column="EQUIPMENT_CODE" property="equipmentCode"/>
<result column="EQUIPMENT_ID" property="equipmentId"/>
<result column="EQUIPMENT_NAME" property="equipmentName"/>
<result column="SYNC_STATUS" property="syncStatus"/>
</resultMap>
<select id="selectDsSpecialProPage" resultMap="dsSpecialProResultMap">
select * from DS_SPECIAL_PRO where is_deleted = 0
<select id="selectDsSpecialProPage" resultType="org.springblade.desk.dashboard.pojo.vo.DsSpecialProVO">
select sp.*,tb.FILE_URL from DS_SPECIAL_PRO sp left join DS_TASK_BILL tb on sp.ID = tb.SP_ID
where sp.is_deleted = 0
<if test="dsSpecialPro.wcId != null">
and WC_ID = #{dsSpecialPro.wcId}
and sp.WC_ID = #{dsSpecialPro.wcId}
</if>
<if test="dsSpecialPro.equipmentId != null">
and EQUIPMENT_ID = #{dsSpecialPro.equipmentId}
and sp.EQUIPMENT_ID = #{dsSpecialPro.equipmentId}
</if>
order by sp.UPDATE_TIME desc
</select>
@ -46,6 +49,8 @@
SELECT * FROM ds_special_pro a
WHERE IS_DELETED = 0
AND to_char(NVL(a.last_due_time, a.create_time) - a.rem_days, 'yyyy-mm-dd HH24:MI:SS') &lt; #{nextRunTimeStr}
AND a.SYNC_STATUS = 0
</select>
</mapper>

@ -25,6 +25,7 @@
<result column="STATUS" property="status"/>
<result column="equipment_id" property="equipmentId"/>
<result column="equipment_name" property="equipmentName"/>
<result column="file_url" property="fileUrl"/>
</resultMap>

@ -68,9 +68,8 @@ public interface IDsTaskBillService extends BaseService<DsTaskBillEntity> {
*处理特殊工艺任务
* @param tbId
* @param fillMemo
* @param fillingDetailList
* @param deleteIds
* @param fileUrl
* @return
*/
boolean handleDsTaskBill(Long tbId, String fillMemo, List<BsFillingDetailEntity> fillingDetailList, List<Long> deleteIds);
boolean handleDsTaskBill(Long tbId, String fillMemo,String fileUrl);
}

@ -26,6 +26,7 @@
package org.springblade.desk.dashboard.service.impl;
import com.alibaba.druid.sql.visitor.functions.Function;
import com.google.common.base.Strings;
import lombok.extern.slf4j.Slf4j;
import org.springblade.desk.dashboard.pojo.entity.BsFillingDetailEntity;
import org.springblade.desk.dashboard.pojo.entity.DsSpecialProEntity;
import org.springblade.desk.dashboard.pojo.entity.DsTaskBillEntity;
@ -53,6 +54,7 @@ import java.util.List;
* @author BladeX
* @since 2025-11-22
*/
@Slf4j
@Service
public class DsTaskBillServiceImpl extends BaseServiceImpl<DsTaskBillMapper, DsTaskBillEntity> implements IDsTaskBillService {
@ -82,12 +84,10 @@ public class DsTaskBillServiceImpl extends BaseServiceImpl<DsTaskBillMapper, DsT
@Override
public void createCraSpecTask() {
//定时器运行时间
Date runTime = new Date();
//定时器下次运行时间(+1 天)
//例 今天 runTime 2026/01/25 nextRunTimeStr 2026/01/26
String nextRunTimeStr = LocalDateTime.now().plusDays(1).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
//查询特殊过程项
//查询特殊过程项 "提醒时间" = 最后到期时间 - 提前提醒天数
List<DsSpecialProEntity> spList = specialProService.listSpByTime(nextRunTimeStr);
if(CollectionUtils.isEmpty(spList)){
return;
@ -97,10 +97,6 @@ public class DsTaskBillServiceImpl extends BaseServiceImpl<DsTaskBillMapper, DsT
int next = 1;
for (DsSpecialProEntity dsSpecialPro : spList) {
//如果有未处理任务
dsTaskBill = taskBillMapper.getTaskBillBySpId(dsSpecialPro.getId(), DsTaskBillEntity.TBSTATUS_NOT);
if (dsTaskBill != null) {
continue;
}
dsTaskBill = new DsTaskBillEntity();
dsTaskBill.setTbCode(this.nextCode(next));
dsTaskBill.setSpId(dsSpecialPro.getId());
@ -117,6 +113,15 @@ public class DsTaskBillServiceImpl extends BaseServiceImpl<DsTaskBillMapper, DsT
dsTaskBill.setEquipmentName(dsSpecialPro.getEquipmentName());
dsTaskBill.setCreateTime(new Date());
int insert = taskBillMapper.insert(dsTaskBill);
if(insert<=0){
log.error("特殊过程项同步失败");
}
//更新状态
dsSpecialPro.setSyncStatus("1");
boolean update = specialProService.updateById(dsSpecialPro);
if(!update){
log.error("特殊过程项修改失败");
}
next++;
//todo 发消息到工艺员
// pfMessageService.sendMessage("产线:" + dsSpecialPro.getBsWorkCenter().getWcName() + ",已生成新的工艺任务,请及时处理!",
@ -125,10 +130,11 @@ public class DsTaskBillServiceImpl extends BaseServiceImpl<DsTaskBillMapper, DsT
}
@Override
public boolean handleDsTaskBill(Long tbId, String fillMemo, List<BsFillingDetailEntity> fillingDetailList, List<Long> deleteIds) {
public boolean handleDsTaskBill(Long tbId, String fillMemo,String fileUrl) {
DsTaskBillEntity dsTaskBill = taskBillMapper.selectById(tbId);
dsTaskBill.setFillMemo(fillMemo);
dsTaskBill.setTbStatus(DsTaskBillEntity.TBSTATUS_END);
dsTaskBill.setFileUrl(fileUrl);
int update = taskBillMapper.updateById(dsTaskBill);
//存入上次处理时间
@ -136,16 +142,6 @@ public class DsTaskBillServiceImpl extends BaseServiceImpl<DsTaskBillMapper, DsT
dsSpecialPro.setLastDueTime(new Date());
boolean update1 = specialProService.updateById(dsSpecialPro);
if (fillingDetailList.size() > 0) {
for (BsFillingDetailEntity fillingDetail : fillingDetailList) {
fillingDetail.setBusId(tbId);
fillingDetail.setBusType(BsFillingDetailEntity.DS_TASK_BILL);
fillingDetailService.save(fillingDetail);
}
}
if (deleteIds.size() > 0) {
fillingDetailService.deleteLogic(deleteIds);
}
return true;
}

@ -356,7 +356,12 @@ public class DsTaskingServiceImpl extends BaseServiceImpl<DsTaskingMapper, DsTas
List<DsPartRelationEntity> partRelationEntityList = partRelationService.selectDsPartRelationByPartId(partEntity.getId());
for (DsPartRelationEntity dsPartRelationEntity : partRelationEntityList) {
DsPartEntity zPartEntity = partService.getById(dsPartRelationEntity.getChildPartId());
if(null != zPartEntity){
assert zPartEntity != null;
if(null != zPartEntity.getSinTerType()){
List<DsCraftEntity> zCraftList = craftService.getPartCraft(zPartEntity.getId(),"2");
if(CollectionUtils.isEmpty(zCraftList) ){
throw new ServiceException("子件工艺缺失");
}
//检验子件超期
if(null == zPartEntity.getNextDue()){
throw new ServiceException("【子件号】"+zPartEntity.getPartCode()+"工艺超期");
@ -365,13 +370,6 @@ public class DsTaskingServiceImpl extends BaseServiceImpl<DsTaskingMapper, DsTas
if (nextDue.before(new Date())) {
throw new ServiceException("【子件号】"+zPartEntity.getPartCode()+"工艺超期");
}
}
assert zPartEntity != null;
if(null != zPartEntity.getSinTerType()){
List<DsCraftEntity> zCraftList = craftService.getPartCraft(zPartEntity.getId(),"2");
if(CollectionUtils.isEmpty(zCraftList) ){
throw new ServiceException("子件工艺缺失");
}
// List<DsProcessEntity> zProcessEntities = processService.selectDsProcessByCraftId(zCraft.getId());
// if(CollectionUtils.isEmpty(zProcessEntities)){
// throw new ServiceException("【子件号】工艺未编制工序");
@ -1005,6 +1003,7 @@ public class DsTaskingServiceImpl extends BaseServiceImpl<DsTaskingMapper, DsTas
dsTasking.setVersion(partVersion);
// todo 查审理单 获取返修原因
// 2. 保存任务信息
if(TaskingConstant.TASK_STATUS_ALREADY.equals(dsTasking.getTaskStatus())){
dsTasking.setTaskStatus(TaskingConstant.TASK_STATUS_UNDERWAY);

@ -15,7 +15,10 @@ import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springblade.desk.basic.pojo.entity.Oem;
import org.springblade.desk.basic.pojo.vo.OemVO;
import org.springblade.desk.basic.util.ExcelExtUtil;
import org.springblade.desk.basic.wrapper.OemWrapper;
import org.springblade.desk.device.pojo.entity.MeasurementRecordsEntity;
import org.springblade.desk.oem.pojo.excel.OemAndAbilityImport;
import org.springblade.desk.oem.pojo.excel.OemMeritsExcel;
@ -69,6 +72,20 @@ public class OemProcessController extends BladeController {
return R.data(OemProcessWrapper.build().entityVO(detail));
}
/**
* 外协工序下拉选择
*
* @return
*/
@GetMapping("/listForSelect")
@ApiOperationSupport(order = 2)
@Operation(summary = "list下拉选择", description = "")
public R<List<OemProcessVO>> listForSelect() {
List<OemProcessEntity> list = mesOemProcessService.list();
List<OemProcessVO> listVO = OemProcessWrapper.build().listVO(list);
return R.data(listVO);
}
/**
* 外协工序 自定义分页
*/

@ -123,8 +123,8 @@ public class OemStatementController extends BladeController {
@ApiOperationSupport(order = 8)
@Operation(summary = "外协手动结算", description = "")
@ApiLog("外协手动结算")
public R oemSettleAccounts(@Valid @RequestBody OemSettleAccountsSave oemSettleAccountsSave) {
return mesOemStatementService.oemSettleAccounts(oemSettleAccountsSave.getStatementList(), oemSettleAccountsSave.getPrice(), oemSettleAccountsSave.getPutStoreDate());
public R oemManualSettlement(@Valid @RequestBody OemSettleAccountsSave oemSettleAccountsSave) {
return mesOemStatementService.oemManualSettlement(oemSettleAccountsSave.getStatementList(), oemSettleAccountsSave.getPrice());
}
/**

@ -194,9 +194,9 @@
#{id}
</foreach>
</if>
<if test="query.ppsIds != null and query.ppsIds != ''">
AND g.ID IN
<foreach collection="query.ppsIds.split(',')" item="id"
<if test="query.psCode != null and query.psCode != ''">
AND g.oem_process_code IN
<foreach collection="query.psCode.split(',')" item="id"
open="(" separator="," close=")" index="index">
#{id}
</foreach>

@ -48,7 +48,7 @@ public interface IOemStatementService extends BaseService<OemStatementEntity> {
* @param putStoreDate 镀后入库时间
* @return
*/
R oemSettleAccounts(List<StatementVO> statementVOS, BigDecimal price, LocalDate putStoreDate);
R oemManualSettlement(List<StatementVO> statementVOS, BigDecimal price);
/**
* 外协自动结算

@ -11,6 +11,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import jakarta.annotation.Resource;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springblade.desk.oem.mapper.PlatingTypeRulesMapper;
import org.springblade.desk.oem.pojo.entity.OemStatementEntity;
import org.springblade.desk.oem.pojo.entity.PlatingTypeRulesEntity;
@ -68,6 +69,44 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper,
}
@Override
public R oemManualSettlement(List<StatementVO> statementVOS, BigDecimal price) {
// 初始化成功和失败计数器
AtomicInteger totalSuccess = new AtomicInteger(0);
AtomicInteger totalError = new AtomicInteger(0);
//按照镀后入库日期分组后,调用结算方法
Map<String, List<StatementVO>> groupedMap = statementVOS.stream()
.filter(vo -> vo.getPutStoreTime() != null && !vo.getPutStoreTime().trim().isEmpty())
.collect(Collectors.groupingBy(StatementVO::getPutStoreTime));
groupedMap.entrySet().forEach(stringListEntry -> {
R result = oemSettleAccounts(stringListEntry.getValue(), price, LocalDate.parse(stringListEntry.getKey()));
if (result != null && result.isSuccess()) {
Map<String, Object> data = (Map<String, Object>) result.getData();
if (data != null) {
Object successObj = data.get("success");
Object errorObj = data.get("error");
if (successObj instanceof Integer) {
totalSuccess.addAndGet((Integer) successObj);
} else if (successObj instanceof Number) {
totalSuccess.addAndGet(((Number) successObj).intValue());
}
if (errorObj instanceof Integer) {
totalError.addAndGet((Integer) errorObj);
} else if (errorObj instanceof Number) {
totalError.addAndGet(((Number) errorObj).intValue());
}
}
}
});
return R.data(Map.of(
"success", totalSuccess.get(),
"error", totalError.get()
));
}
public R oemSettleAccounts(List<StatementVO> statementVOS, BigDecimal price, LocalDate putStoreDate) {
// 定义计数器
AtomicInteger countSuccess = new AtomicInteger(0);
@ -110,7 +149,7 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper,
//【结算异常】
statementVOList.forEach(statementVO -> {
statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT);
statementVO.setMemo(String.format("外协厂商【%s】匹配无报价记录", oemName));
statementVO.setMemo(String.format("外协厂商【%s】-未找到报价", oemName));
});
} else {
//工序分组Map<工序, 报价列表>
@ -209,13 +248,83 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper,
//2.以外协名称查出的全部报价单
String oemName = listEntry.getKey();
List<PriceSheetVO> priceSheetAllList = getPriceSheets(oemName);
// 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));
statementVO.setMemo(String.format("外协厂商【%s】-未找到报价", oemName));
});
} else {
//工序分组Map<工序, 报价列表>
@ -292,76 +401,76 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper,
BigDecimal price, LocalDate putStoreDate,
AtomicInteger countSuccess, AtomicInteger countError) {
// 1. 查询报价单
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);
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 -> {
statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT);
statementVO.setMemo(String.format("外协厂商【%s】匹配无报价记录", oemName));
statementVO.setMemo(String.format("外协厂商【%s】-未找到报价", oemName));
});
} else {
// 2. 工序分组Map<工序, 报价列表>
@ -435,7 +544,7 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper,
@Override
public R approval(OemSettleAccountsApproval oemSettleAccountsApproval) {
List<Long> ids = oemSettleAccountsApproval.getIds();
List<Long> ids = Func.toLongList(oemSettleAccountsApproval.getIds());
if (CollectionUtils.isEmpty(ids)) {
return R.fail("未选取结算单");
}
@ -568,7 +677,7 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper,
if (!priceSheetMap.containsKey(psName)) {
//【结算异常】
statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT);
statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%s】匹配无报价记录", statementVO.getOcName(), psName));
statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%s】-未找到报价", statementVO.getOcName(), psName));
return null;
}
//获得外协厂商该工序下报价单列表
@ -599,7 +708,7 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper,
//多条【结算异常】
if (woNoPriceSheetList.size() > 1 && flag) {
statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT);
statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%s】,工作订单号【%s】匹配多条报价记录", statementVO.getOcName(), statementVO.getPartName(), statementVO.getWoCode()));
statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%s】,工作订单号【%s】-报价不唯一", statementVO.getOcName(), statementVO.getPartName(), statementVO.getWoCode()));
//结算异常:多条报价记录结算结果
return true;
}
@ -621,7 +730,7 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper,
priceSheetList = woNoPriceSheetMap.get("EMPTY_WONO");
if (priceSheetList.size() < 1) {
statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT);
statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%s】匹配无报价记录", statementVO.getOcName(), statementVO.getPartName()));
statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%s】-未找到报价", statementVO.getOcName(), statementVO.getPartName()));
//结算异常:无报价记录结算结果
return true;
} else {
@ -649,7 +758,7 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper,
if (priceSheetList.size() < 1) {
//结算异常:无报价记录结算结果
statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT);
statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%s】,物料名【%s】,质量等级【%s】匹配无报价记录", statementVO.getOcName(), statementVO.getPartName(), statementVO.getPartName(), statementVO.getProdIdent()));
statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%s】,物料名【%s】,质量等级【%s】-未找到报价", statementVO.getOcName(), statementVO.getPartName(), statementVO.getPartName(), statementVO.getProdIdent()));
return true;
}
//保存结果,结束当前规则匹配,进入下一规则匹配
@ -682,7 +791,7 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper,
if (remarksByPrice.size() < 1) {
//结算异常:无报价记录结算结果
statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT);
statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%s】,金价银价【%s】匹配无报价记录", statementVO.getOcName(), statementVO.getPartName(), price));
statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%s】,金价银价【%s】-未找到报价", statementVO.getOcName(), statementVO.getPartName(), price));
return true;
}
//保存结果,结束当前规则匹配,进入下一规则匹配
@ -726,7 +835,7 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper,
if (prtnoPriceSheetMap.isEmpty()) {
//结算异常:无报价记录结算结果
statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT);
statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%s】涂色标、涂色带、涂箭头匹配无报价记录", statementVO.getOcName(), statementVO.getPartName()));
statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%s】涂色标、涂色带、涂箭头-未找到报价", statementVO.getOcName(), statementVO.getPartName()));
return true;
}
//总价
@ -744,7 +853,7 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper,
if (tjtPriceSheetList.size() > 1 && flag) {
//结算异常:多条报价记录结算结果
statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT);
statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%s】,涂箭头数量【%s】匹配多条报价记录", statementVO.getOcName(), statementVO.getPartName(), tjtNum));
statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%s】,涂箭头数量【%s】-报价不唯一", statementVO.getOcName(), statementVO.getPartName(), tjtNum));
return true;
}
//唯一使用此报价单**结算**
@ -758,7 +867,7 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper,
if (tsdPriceSheetList.size() > 1 && flag) {
//结算异常:多条报价记录结算结果
statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT);
statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%s】,涂色带数量【%s】匹配多条报价记录", statementVO.getOcName(), statementVO.getPartName(), tsdNum));
statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%s】,涂色带数量【%s】-报价不唯一", statementVO.getOcName(), statementVO.getPartName(), tsdNum));
return true;
}
//唯一使用此报价单**结算**
@ -772,7 +881,7 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper,
if (tsbPriceSheetList.size() > 1 && flag) {
//结算异常:多条报价记录结算结果
statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT);
statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%s】,涂色标数量【%s】匹配多条报价记录", statementVO.getOcName(), statementVO.getPartName(), tsbNum));
statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%s】,涂色标数量【%s】-报价不唯一", statementVO.getOcName(), statementVO.getPartName(), tsbNum));
return true;
}
//唯一使用此报价单**结算**
@ -792,7 +901,7 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper,
} else {
//结算异常:无报价记录结算结果
statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT);
statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%s】涂色标、涂色带、涂箭头匹配无报价记录", statementVO.getOcName(), statementVO.getPartName()));
statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%s】涂色标、涂色带、涂箭头-未找到报价", statementVO.getOcName(), statementVO.getPartName()));
return true;
}
}
@ -829,12 +938,12 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper,
} else if (trueCount > 1) {
//结算异常:多条报价记录结算结果
statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT);
statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%s】,物料号匹配多条报价记录", statementVO.getOcName(), statementVO.getPartName()));
statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%s】,物料号-报价不唯一", statementVO.getOcName(), statementVO.getPartName()));
return true;
} else {
//结算异常:无报价记录结算结果
statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT);
statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%s】,物料号匹配无报价记录", statementVO.getOcName(), statementVO.getPartName()));
statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%s】,物料号-未找到报价", statementVO.getOcName(), statementVO.getPartName()));
return true;
}
}
@ -951,7 +1060,7 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper,
//如果无报价,结算异常:无报价记录结算结果
if (null == priceSheetList || priceSheetList.isEmpty()) {
statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT);
statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%s】,阶梯价匹配无报价记录", statementVO.getOcName(), statementVO.getPartName()));
statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%s】,阶梯价-未找到报价", statementVO.getOcName(), statementVO.getPartName()));
return true;
}
//如果只剩唯一报价,则直接使用
@ -978,11 +1087,11 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper,
}).collect(Collectors.groupingBy(PriceSheetVO::getStairflag));
if (StairPriceSheetMap.keySet().size() > 1) {
statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT);
statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%s】,阶梯价类型【%s】匹配多条报价记录", statementVO.getOcName(), statementVO.getPartName(), String.join(", ", StairPriceSheetMap.keySet())));
statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%s】,阶梯价类型【%s】-报价不唯一", statementVO.getOcName(), statementVO.getPartName(), String.join(", ", StairPriceSheetMap.keySet())));
return true;
} else if (StairPriceSheetMap.keySet().size() < 1) {
statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT);
statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%s】,阶梯价匹配无报价记录", statementVO.getOcName(), statementVO.getPartName()));
statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%s】,阶梯价-未找到报价", statementVO.getOcName(), statementVO.getPartName()));
return true;
}
if (StairPriceSheetMap.keySet().contains("非阶梯价")) {
@ -990,11 +1099,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】,阶梯价【%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 && flag) {
statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT);
statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%s】,阶梯价【%s】匹配多条报价记录", statementVO.getOcName(), statementVO.getPartName(), "非阶梯价"));
statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%s】,阶梯价【%s】-报价不唯一", statementVO.getOcName(), statementVO.getPartName(), "非阶梯价"));
return true;
}
//唯一使用此报价单**结算**
@ -1028,7 +1137,7 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper,
}).collect(Collectors.toList());
if (null != priceSheetVOList && priceSheetVOList.size() > 1 && flag) {
statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT);
statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%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) || (!flag && null != priceSheetVOList && priceSheetVOList.size() > 1)) {
//唯一使用此报价单**结算**
@ -1045,7 +1154,7 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper,
return true;
}
statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT);
statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%s】,阶梯价【%s】匹配无报价记录", statementVO.getOcName(), statementVO.getPartName(), "单批阶梯价(按单件面积)"));
statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%s】,阶梯价【%s】-未找到报价", statementVO.getOcName(), statementVO.getPartName(), "单批阶梯价(按单件面积)"));
return true;
}
return true;
@ -1068,7 +1177,7 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper,
}).collect(Collectors.toList());
if (null != priceSheetVOList && priceSheetVOList.size() > 1 && flag) {
statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT);
statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%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 || (!flag && null != priceSheetVOList && priceSheetVOList.size() > 1)) {
//唯一使用此报价单**结算**
@ -1085,14 +1194,14 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper,
return true;
}
statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT);
statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%s】,阶梯价【%s】匹配无报价记录", statementVO.getOcName(), statementVO.getPartName(), "单批阶梯价(按单批面积)"));
statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%s】,阶梯价【%s】-未找到报价", statementVO.getOcName(), statementVO.getPartName(), "单批阶梯价(按单批面积)"));
return true;
}
return true;
} else {
//todo:qyl 5.其他阶梯价类型暂不处理,找客户确认
statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT);
statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%s】,阶梯价匹配无报价记录", statementVO.getOcName(), statementVO.getPartName()));
statementVO.setMemo(String.format("外协厂商【%s】,工序内容【%s】,阶梯价-未找到报价", statementVO.getOcName(), statementVO.getPartName()));
return true;
}
}

@ -242,7 +242,7 @@
SELECT
wo.*,
-- 完工时间:仅当运行状态为15时取更新时间,否则为null
CASE WHEN wo.RUN_STATUS = 15 THEN wo.update_time ELSE null END AS finishDate,
CASE WHEN wo.RUN_STATUS = 2 THEN wo.update_time ELSE null END AS finishDate,
yo.id AS yoId,
ts.TS_NAME AS mainProcessingUnit,
yo.USE_DEPT AS needDeptName,
@ -270,7 +270,7 @@
-- 班组 ts
LEFT JOIN BS_TEAM_SET ts ON wp.MAKE_TEAM = ts.ID
WHERE
wo.IS_DELETED = 0
wo.IS_DELETED = 0 and wo.RUN_STATUS = 2
<if test="q.wpId != null">
AND t.WP_ID = #{q.wpId}
</if>

Loading…
Cancel
Save