Merge remote-tracking branch 'origin/master'

liweidong
绫Umbrella 1 month 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 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 = "子件类型") @Schema(description = "子件类型")
private String subType; 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 = "设备名称") @Schema(description = "设备名称")
private String equipmentName; private String equipmentName;
/**
* 同步状态
*/
@Schema(description = "同步状态")
private String syncStatus;
} }

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

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

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

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

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

@ -38,6 +38,8 @@ import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query; import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R; import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func; 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 org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; 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.tool.utils.DateUtil;
import org.springblade.core.excel.util.ExcelUtil; import org.springblade.core.excel.util.ExcelUtil;
import org.springblade.core.tool.constant.BladeConstant; import org.springblade.core.tool.constant.BladeConstant;
import java.util.ArrayList;
import java.util.Map; import java.util.Map;
import java.util.List; import java.util.List;
import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
@ -68,6 +72,8 @@ public class DsPartRelationController extends BladeController {
private final IDsPartRelationService dsPartRelationService; private final IDsPartRelationService dsPartRelationService;
private final IDsPartService dsPartService;
/** /**
* 部件-子件关联表 详情 * 部件-子件关联表 详情
*/ */
@ -100,6 +106,24 @@ public class DsPartRelationController extends BladeController {
return R.data(pages); 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; 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.tags.Tag;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter; 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.dto.DsTaskBillDTO;
import org.springblade.desk.dashboard.pojo.entity.BsFillingDetailEntity; import org.springblade.desk.dashboard.pojo.entity.BsFillingDetailEntity;
import org.springblade.desk.dashboard.service.IBsFillingDetailService; import org.springblade.desk.dashboard.service.IBsFillingDetailService;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
@ -185,10 +187,12 @@ public class DsTaskBillController extends BladeController {
public R handleDsTaskBill(@Valid @RequestBody DsTaskBillDTO dto) { public R handleDsTaskBill(@Valid @RequestBody DsTaskBillDTO dto) {
Long tbId = dto.getTbId(); Long tbId = dto.getTbId();
String fillMemo = dto.getFillMemo(); String fillMemo = dto.getFillMemo();
List<BsFillingDetailEntity> fillingDetailList = dto.getFillingDetailList(); String fileUrl = dto.getFileUrl();
List<Long> deleteIds = dto.getDeleteIds(); 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="PF_STATUS" property="pfStatus"/>
<result column="PART_VERSION" property="partVersion"/> <result column="PART_VERSION" property="partVersion"/>
<result column="IS_ELECTROPLATING" property="isElectroplating"/> <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> </resultMap>
<update id="updateNextDueByIds"> <update id="updateNextDueByIds">

@ -24,17 +24,20 @@
<result column="EQUIPMENT_CODE" property="equipmentCode"/> <result column="EQUIPMENT_CODE" property="equipmentCode"/>
<result column="EQUIPMENT_ID" property="equipmentId"/> <result column="EQUIPMENT_ID" property="equipmentId"/>
<result column="EQUIPMENT_NAME" property="equipmentName"/> <result column="EQUIPMENT_NAME" property="equipmentName"/>
<result column="SYNC_STATUS" property="syncStatus"/>
</resultMap> </resultMap>
<select id="selectDsSpecialProPage" resultMap="dsSpecialProResultMap"> <select id="selectDsSpecialProPage" resultType="org.springblade.desk.dashboard.pojo.vo.DsSpecialProVO">
select * from DS_SPECIAL_PRO where is_deleted = 0 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"> <if test="dsSpecialPro.wcId != null">
and WC_ID = #{dsSpecialPro.wcId} and sp.WC_ID = #{dsSpecialPro.wcId}
</if> </if>
<if test="dsSpecialPro.equipmentId != null"> <if test="dsSpecialPro.equipmentId != null">
and EQUIPMENT_ID = #{dsSpecialPro.equipmentId} and sp.EQUIPMENT_ID = #{dsSpecialPro.equipmentId}
</if> </if>
order by sp.UPDATE_TIME desc
</select> </select>
@ -46,6 +49,8 @@
SELECT * FROM ds_special_pro a SELECT * FROM ds_special_pro a
WHERE IS_DELETED = 0 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 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> </select>
</mapper> </mapper>

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

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

@ -356,7 +356,12 @@ public class DsTaskingServiceImpl extends BaseServiceImpl<DsTaskingMapper, DsTas
List<DsPartRelationEntity> partRelationEntityList = partRelationService.selectDsPartRelationByPartId(partEntity.getId()); List<DsPartRelationEntity> partRelationEntityList = partRelationService.selectDsPartRelationByPartId(partEntity.getId());
for (DsPartRelationEntity dsPartRelationEntity : partRelationEntityList) { for (DsPartRelationEntity dsPartRelationEntity : partRelationEntityList) {
DsPartEntity zPartEntity = partService.getById(dsPartRelationEntity.getChildPartId()); 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()){ if(null == zPartEntity.getNextDue()){
throw new ServiceException("【子件号】"+zPartEntity.getPartCode()+"工艺超期"); throw new ServiceException("【子件号】"+zPartEntity.getPartCode()+"工艺超期");
@ -365,13 +370,6 @@ public class DsTaskingServiceImpl extends BaseServiceImpl<DsTaskingMapper, DsTas
if (nextDue.before(new Date())) { if (nextDue.before(new Date())) {
throw new ServiceException("【子件号】"+zPartEntity.getPartCode()+"工艺超期"); 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()); // List<DsProcessEntity> zProcessEntities = processService.selectDsProcessByCraftId(zCraft.getId());
// if(CollectionUtils.isEmpty(zProcessEntities)){ // if(CollectionUtils.isEmpty(zProcessEntities)){
// throw new ServiceException("【子件号】工艺未编制工序"); // throw new ServiceException("【子件号】工艺未编制工序");
@ -1005,6 +1003,7 @@ public class DsTaskingServiceImpl extends BaseServiceImpl<DsTaskingMapper, DsTas
dsTasking.setVersion(partVersion); dsTasking.setVersion(partVersion);
// todo 查审理单 获取返修原因 // todo 查审理单 获取返修原因
// 2. 保存任务信息 // 2. 保存任务信息
if(TaskingConstant.TASK_STATUS_ALREADY.equals(dsTasking.getTaskStatus())){ if(TaskingConstant.TASK_STATUS_ALREADY.equals(dsTasking.getTaskStatus())){
dsTasking.setTaskStatus(TaskingConstant.TASK_STATUS_UNDERWAY); 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.mp.support.Query;
import org.springblade.core.tool.api.R; import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func; 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.util.ExcelExtUtil;
import org.springblade.desk.basic.wrapper.OemWrapper;
import org.springblade.desk.device.pojo.entity.MeasurementRecordsEntity; import org.springblade.desk.device.pojo.entity.MeasurementRecordsEntity;
import org.springblade.desk.oem.pojo.excel.OemAndAbilityImport; import org.springblade.desk.oem.pojo.excel.OemAndAbilityImport;
import org.springblade.desk.oem.pojo.excel.OemMeritsExcel; 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 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) @ApiOperationSupport(order = 8)
@Operation(summary = "外协手动结算", description = "") @Operation(summary = "外协手动结算", description = "")
@ApiLog("外协手动结算") @ApiLog("外协手动结算")
public R oemSettleAccounts(@Valid @RequestBody OemSettleAccountsSave oemSettleAccountsSave) { public R oemManualSettlement(@Valid @RequestBody OemSettleAccountsSave oemSettleAccountsSave) {
return mesOemStatementService.oemSettleAccounts(oemSettleAccountsSave.getStatementList(), oemSettleAccountsSave.getPrice(), oemSettleAccountsSave.getPutStoreDate()); return mesOemStatementService.oemManualSettlement(oemSettleAccountsSave.getStatementList(), oemSettleAccountsSave.getPrice());
} }
/** /**

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

@ -48,7 +48,7 @@ public interface IOemStatementService extends BaseService<OemStatementEntity> {
* @param putStoreDate 镀后入库时间 * @param putStoreDate 镀后入库时间
* @return * @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 jakarta.annotation.Resource;
import org.springblade.core.mp.support.Query; import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R; 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.mapper.PlatingTypeRulesMapper;
import org.springblade.desk.oem.pojo.entity.OemStatementEntity; import org.springblade.desk.oem.pojo.entity.OemStatementEntity;
import org.springblade.desk.oem.pojo.entity.PlatingTypeRulesEntity; import org.springblade.desk.oem.pojo.entity.PlatingTypeRulesEntity;
@ -68,6 +69,44 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper,
} }
@Override @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) { public R oemSettleAccounts(List<StatementVO> statementVOS, BigDecimal price, LocalDate putStoreDate) {
// 定义计数器 // 定义计数器
AtomicInteger countSuccess = new AtomicInteger(0); AtomicInteger countSuccess = new AtomicInteger(0);
@ -110,7 +149,7 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper,
//【结算异常】 //【结算异常】
statementVOList.forEach(statementVO -> { statementVOList.forEach(statementVO -> {
statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT); statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT);
statementVO.setMemo(String.format("外协厂商【%s】匹配无报价记录", oemName)); statementVO.setMemo(String.format("外协厂商【%s】-未找到报价", oemName));
}); });
} else { } else {
//工序分组Map<工序, 报价列表> //工序分组Map<工序, 报价列表>
@ -209,13 +248,83 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper,
//2.以外协名称查出的全部报价单 //2.以外协名称查出的全部报价单
String oemName = listEntry.getKey(); 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()) { if (priceSheetAllList.isEmpty()) {
//【结算异常】 //【结算异常】
statementVOList.forEach(statementVO -> { statementVOList.forEach(statementVO -> {
statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT); statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT);
statementVO.setMemo(String.format("外协厂商【%s】匹配无报价记录", oemName)); statementVO.setMemo(String.format("外协厂商【%s】-未找到报价", oemName));
}); });
} else { } else {
//工序分组Map<工序, 报价列表> //工序分组Map<工序, 报价列表>
@ -292,76 +401,76 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper,
BigDecimal price, LocalDate putStoreDate, BigDecimal price, LocalDate putStoreDate,
AtomicInteger countSuccess, AtomicInteger countError) { AtomicInteger countSuccess, AtomicInteger countError) {
// 1. 查询报价单 // 1. 查询报价单
List<PriceSheetVO> priceSheetAllList = getPriceSheets(oemName, putStoreDate); // List<PriceSheetVO> priceSheetAllList = getPriceSheets(oemName, putStoreDate);
//假数据测试用 //假数据测试用
// List<PriceSheetVO> priceSheetAllList = new ArrayList<>(); List<PriceSheetVO> priceSheetAllList = new ArrayList<>();
// PriceSheetVO priceSheet1 = new PriceSheetVO(); PriceSheetVO priceSheet1 = new PriceSheetVO();
// priceSheet1.setPrice("60"); priceSheet1.setPrice("60");
// priceSheet1.setSplyname(oemName); priceSheet1.setSplyname(oemName);
// priceSheet1.setPrtum("件"); priceSheet1.setPrtum("件");
// priceSheet1.setWono("WO-N2510424439-R002"); priceSheet1.setWono("WO-N2510424439-R002");
// priceSheet1.setSeqid("GXJG-20250228018"); priceSheet1.setSeqid("GXJG-20250228018");
// priceSheet1.setGxinfo("玻璃封接电化学抛光"); priceSheet1.setGxinfo("玻璃封接电化学抛光");
// priceSheetAllList.add(priceSheet1); priceSheetAllList.add(priceSheet1);
// PriceSheetVO priceSheet2 = new PriceSheetVO(); PriceSheetVO priceSheet2 = new PriceSheetVO();
// priceSheet2.setPrice("26"); priceSheet2.setPrice("26");
// priceSheet2.setSplyname(oemName); priceSheet2.setSplyname(oemName);
// priceSheet2.setPrtum("件"); priceSheet2.setPrtum("件");
// priceSheet2.setSeqid("GXJG-20250228012"); priceSheet2.setSeqid("GXJG-20250228012");
// priceSheet2.setGxinfo("玻璃封接电镀去氧化皮"); priceSheet2.setGxinfo("玻璃封接电镀去氧化皮");
// priceSheet2.setPrtlotno("JI和JHT"); priceSheet2.setPrtlotno("JI和JHT");
// priceSheet2.setStairflag("单批阶梯价(按单件面积)"); priceSheet2.setStairflag("单批阶梯价(按单件面积)");
// priceSheet2.setLower("5"); priceSheet2.setLower("5");
// priceSheet2.setUpper("0"); priceSheet2.setUpper("0");
// priceSheet2.setPrtno("21E6-575-10724-%螺母"); priceSheet2.setPrtno("21E6-575-10724-%螺母");
// priceSheetAllList.add(priceSheet2); priceSheetAllList.add(priceSheet2);
// PriceSheetVO priceSheet3 = new PriceSheetVO(); PriceSheetVO priceSheet3 = new PriceSheetVO();
// priceSheet3.setPrice("34"); priceSheet3.setPrice("34");
// priceSheet3.setSplyname(oemName); priceSheet3.setSplyname(oemName);
// priceSheet3.setPrtum("件"); priceSheet3.setPrtum("件");
// priceSheet3.setSeqid("GXJG-20250228012"); priceSheet3.setSeqid("GXJG-20250228012");
// priceSheet3.setGxinfo("玻璃封接电镀去氧化皮"); priceSheet3.setGxinfo("玻璃封接电镀去氧化皮");
// priceSheet3.setPrtlotno("JI和JHT"); priceSheet3.setPrtlotno("JI和JHT");
// priceSheet3.setStairflag("单批阶梯价(按单件面积)"); priceSheet3.setStairflag("单批阶梯价(按单件面积)");
// priceSheet3.setLower("10"); priceSheet3.setLower("10");
// priceSheet3.setUpper("5.00001"); priceSheet3.setUpper("5.00001");
// priceSheet3.setPrtno("21E6-575-10724-%螺母"); priceSheet3.setPrtno("21E6-575-10724-%螺母");
// priceSheetAllList.add(priceSheet3); priceSheetAllList.add(priceSheet3);
// PriceSheetVO priceSheet4 = new PriceSheetVO(); PriceSheetVO priceSheet4 = new PriceSheetVO();
// priceSheet4.setPrice("15"); priceSheet4.setPrice("15");
// priceSheet4.setSplyname(oemName); priceSheet4.setSplyname(oemName);
// priceSheet4.setPrtum("件"); priceSheet4.setPrtum("件");
// priceSheet4.setSeqid("GXJG-20250228012"); priceSheet4.setSeqid("GXJG-20250228012");
// priceSheet4.setGxinfo("玻璃封接电镀去氧化皮"); priceSheet4.setGxinfo("玻璃封接电镀去氧化皮");
// priceSheet4.setPrtlotno("JHT"); priceSheet4.setPrtlotno("JHT");
// priceSheet4.setStairflag("非阶梯价"); priceSheet4.setStairflag("非阶梯价");
// priceSheet4.setPrtno("21E6-575-10724-%螺母"); priceSheet4.setPrtno("21E6-575-10724-%螺母");
// priceSheetAllList.add(priceSheet4); priceSheetAllList.add(priceSheet4);
// PriceSheetVO priceSheet5 = new PriceSheetVO(); PriceSheetVO priceSheet5 = new PriceSheetVO();
// priceSheet5.setPrice("99"); priceSheet5.setPrice("99");
// priceSheet5.setSplyname(oemName); priceSheet5.setSplyname(oemName);
// priceSheet5.setPrtum("件"); priceSheet5.setPrtum("件");
// priceSheet5.setSeqid("GXJG-20250228012"); priceSheet5.setSeqid("GXJG-20250228012");
// priceSheet5.setGxinfo("玻璃封接电镀去氧化皮"); priceSheet5.setGxinfo("玻璃封接电镀去氧化皮");
// priceSheet5.setStairflag("非阶梯价"); priceSheet5.setStairflag("非阶梯价");
// priceSheet5.setPrtno("21E6-575-10724-%螺母"); priceSheet5.setPrtno("21E6-575-10724-%螺母");
// priceSheet5.setRemark("氰化亚金钾380.01-400元/克(未税)"); priceSheet5.setRemark("氰化亚金钾380.01-400元/克(未税)");
// priceSheetAllList.add(priceSheet5); priceSheetAllList.add(priceSheet5);
// PriceSheetVO priceSheet6 = new PriceSheetVO(); PriceSheetVO priceSheet6 = new PriceSheetVO();
// priceSheet6.setPrice("200"); priceSheet6.setPrice("200");
// priceSheet6.setSplyname(oemName); priceSheet6.setSplyname(oemName);
// priceSheet6.setPrtum("件"); priceSheet6.setPrtum("件");
// priceSheet6.setSeqid("GXJG-20250228012"); priceSheet6.setSeqid("GXJG-20250228012");
// priceSheet6.setGxinfo("玻璃封接电镀去氧化皮"); priceSheet6.setGxinfo("玻璃封接电镀去氧化皮");
// priceSheet6.setStairflag("非阶梯价"); priceSheet6.setStairflag("非阶梯价");
// priceSheet6.setPrtno("21E6-575-10724-%螺母"); priceSheet6.setPrtno("21E6-575-10724-%螺母");
// priceSheet6.setRemark("氰化亚金钾400.01-500元/克(未税)"); priceSheet6.setRemark("氰化亚金钾400.01-500元/克(未税)");
// priceSheetAllList.add(priceSheet6); priceSheetAllList.add(priceSheet6);
if (priceSheetAllList.isEmpty()) { if (priceSheetAllList.isEmpty()) {
// 【结算异常】 // 【结算异常】
statementVOList.forEach(statementVO -> { statementVOList.forEach(statementVO -> {
statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT); statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT);
statementVO.setMemo(String.format("外协厂商【%s】匹配无报价记录", oemName)); statementVO.setMemo(String.format("外协厂商【%s】-未找到报价", oemName));
}); });
} else { } else {
// 2. 工序分组Map<工序, 报价列表> // 2. 工序分组Map<工序, 报价列表>
@ -435,7 +544,7 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper,
@Override @Override
public R approval(OemSettleAccountsApproval oemSettleAccountsApproval) { public R approval(OemSettleAccountsApproval oemSettleAccountsApproval) {
List<Long> ids = oemSettleAccountsApproval.getIds(); List<Long> ids = Func.toLongList(oemSettleAccountsApproval.getIds());
if (CollectionUtils.isEmpty(ids)) { if (CollectionUtils.isEmpty(ids)) {
return R.fail("未选取结算单"); return R.fail("未选取结算单");
} }
@ -568,7 +677,7 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper,
if (!priceSheetMap.containsKey(psName)) { if (!priceSheetMap.containsKey(psName)) {
//【结算异常】 //【结算异常】
statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT); 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; return null;
} }
//获得外协厂商该工序下报价单列表 //获得外协厂商该工序下报价单列表
@ -599,7 +708,7 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper,
//多条【结算异常】 //多条【结算异常】
if (woNoPriceSheetList.size() > 1 && flag) { if (woNoPriceSheetList.size() > 1 && flag) {
statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT); 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; return true;
} }
@ -621,7 +730,7 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper,
priceSheetList = woNoPriceSheetMap.get("EMPTY_WONO"); priceSheetList = woNoPriceSheetMap.get("EMPTY_WONO");
if (priceSheetList.size() < 1) { if (priceSheetList.size() < 1) {
statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT); 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; return true;
} else { } else {
@ -649,7 +758,7 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper,
if (priceSheetList.size() < 1) { if (priceSheetList.size() < 1) {
//结算异常:无报价记录结算结果 //结算异常:无报价记录结算结果
statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT); 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; return true;
} }
//保存结果,结束当前规则匹配,进入下一规则匹配 //保存结果,结束当前规则匹配,进入下一规则匹配
@ -682,7 +791,7 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper,
if (remarksByPrice.size() < 1) { if (remarksByPrice.size() < 1) {
//结算异常:无报价记录结算结果 //结算异常:无报价记录结算结果
statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT); 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; return true;
} }
//保存结果,结束当前规则匹配,进入下一规则匹配 //保存结果,结束当前规则匹配,进入下一规则匹配
@ -726,7 +835,7 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper,
if (prtnoPriceSheetMap.isEmpty()) { if (prtnoPriceSheetMap.isEmpty()) {
//结算异常:无报价记录结算结果 //结算异常:无报价记录结算结果
statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT); 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; return true;
} }
//总价 //总价
@ -744,7 +853,7 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper,
if (tjtPriceSheetList.size() > 1 && flag) { if (tjtPriceSheetList.size() > 1 && flag) {
//结算异常:多条报价记录结算结果 //结算异常:多条报价记录结算结果
statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT); 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; return true;
} }
//唯一使用此报价单**结算** //唯一使用此报价单**结算**
@ -758,7 +867,7 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper,
if (tsdPriceSheetList.size() > 1 && flag) { if (tsdPriceSheetList.size() > 1 && flag) {
//结算异常:多条报价记录结算结果 //结算异常:多条报价记录结算结果
statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT); 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; return true;
} }
//唯一使用此报价单**结算** //唯一使用此报价单**结算**
@ -772,7 +881,7 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper,
if (tsbPriceSheetList.size() > 1 && flag) { if (tsbPriceSheetList.size() > 1 && flag) {
//结算异常:多条报价记录结算结果 //结算异常:多条报价记录结算结果
statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT); 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; return true;
} }
//唯一使用此报价单**结算** //唯一使用此报价单**结算**
@ -792,7 +901,7 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper,
} else { } else {
//结算异常:无报价记录结算结果 //结算异常:无报价记录结算结果
statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT); 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; return true;
} }
} }
@ -829,12 +938,12 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper,
} else if (trueCount > 1) { } else if (trueCount > 1) {
//结算异常:多条报价记录结算结果 //结算异常:多条报价记录结算结果
statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT); 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; return true;
} else { } else {
//结算异常:无报价记录结算结果 //结算异常:无报价记录结算结果
statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT); 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; return true;
} }
} }
@ -951,7 +1060,7 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper,
//如果无报价,结算异常:无报价记录结算结果 //如果无报价,结算异常:无报价记录结算结果
if (null == priceSheetList || priceSheetList.isEmpty()) { if (null == priceSheetList || priceSheetList.isEmpty()) {
statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT); 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; return true;
} }
//如果只剩唯一报价,则直接使用 //如果只剩唯一报价,则直接使用
@ -978,11 +1087,11 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper,
}).collect(Collectors.groupingBy(PriceSheetVO::getStairflag)); }).collect(Collectors.groupingBy(PriceSheetVO::getStairflag));
if (StairPriceSheetMap.keySet().size() > 1) { if (StairPriceSheetMap.keySet().size() > 1) {
statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT); 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; return true;
} else if (StairPriceSheetMap.keySet().size() < 1) { } else if (StairPriceSheetMap.keySet().size() < 1) {
statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT); 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; return true;
} }
if (StairPriceSheetMap.keySet().contains("非阶梯价")) { if (StairPriceSheetMap.keySet().contains("非阶梯价")) {
@ -990,11 +1099,11 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper,
List<PriceSheetVO> priceSheetVOS = StairPriceSheetMap.get("非阶梯价"); List<PriceSheetVO> priceSheetVOS = StairPriceSheetMap.get("非阶梯价");
if (null == priceSheetVOS || priceSheetVOS.isEmpty()) { if (null == priceSheetVOS || priceSheetVOS.isEmpty()) {
statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT); 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 if (null != priceSheetVOS && priceSheetVOS.size() > 1 && flag) { } else if (null != priceSheetVOS && priceSheetVOS.size() > 1 && flag) {
statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT); 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;
} }
//唯一使用此报价单**结算** //唯一使用此报价单**结算**
@ -1028,7 +1137,7 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper,
}).collect(Collectors.toList()); }).collect(Collectors.toList());
if (null != priceSheetVOList && priceSheetVOList.size() > 1 && flag) { if (null != priceSheetVOList && priceSheetVOList.size() > 1 && flag) {
statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT); 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 if ((null != priceSheetVOList && priceSheetVOList.size() == 1) || (!flag && null != priceSheetVOList && priceSheetVOList.size() > 1)) { } 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; return true;
} }
statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT); 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;
} }
return true; return true;
@ -1068,7 +1177,7 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper,
}).collect(Collectors.toList()); }).collect(Collectors.toList());
if (null != priceSheetVOList && priceSheetVOList.size() > 1 && flag) { if (null != priceSheetVOList && priceSheetVOList.size() > 1 && flag) {
statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT); 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 if (null != priceSheetVOList && priceSheetVOList.size() == 1 || (!flag && null != priceSheetVOList && priceSheetVOList.size() > 1)) { } 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; return true;
} }
statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT); 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;
} }
return true; return true;
} else { } else {
//todo:qyl 5.其他阶梯价类型暂不处理,找客户确认 //todo:qyl 5.其他阶梯价类型暂不处理,找客户确认
statementVO.setRosStatus(StatementVO.ERR_SETTLEMENT); 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; return true;
} }
} }

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

Loading…
Cancel
Save