外协订单结算-结算异常Tab-匹配标准工序代码

liweidong
张乾翔 2 months ago
parent 1c42f5f453
commit 46434490a3
  1. 11
      blade-service/blade-desk/src/main/java/org/springblade/desk/oem/controller/OemStatementController.java
  2. 7
      blade-service/blade-desk/src/main/java/org/springblade/desk/oem/mapper/OemStatementMapper.java
  3. 24
      blade-service/blade-desk/src/main/java/org/springblade/desk/oem/mapper/OemStatementMapper.xml
  4. 2
      blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/IOemStatementService.java
  5. 71
      blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/impl/OemStatementServiceImpl.java

@ -239,4 +239,15 @@ public class OemStatementController extends BladeController {
ExcelUtil.export(response, "外协预结算单数据" + DateUtil.time(), "外协预结算单数据表", excels, OemStatementExcel.class);
}
/**
* 匹配标准工序代码
*/
@PostMapping("/matchStandardProcessCode")
@ApiOperationSupport(order = 15)
@Operation(summary = "匹配标准工序代码", description = "批量更新结算异常数据的标准工序代码")
@ApiLog("外协结算 匹配标准工序代码")
public R matchStandardProcessCode() {
return mesOemStatementService.matchStandardProcessCode();
}
}

@ -52,4 +52,11 @@ public interface OemStatementMapper extends BaseMapper<OemStatementEntity> {
* @return
*/
List<Long> selectSettledWoIds(@Param("woIds") List<Long> woIds);
/**
* 查询结算异常数据带关联字段
*
* @return List<StatementVO>
*/
List<StatementVO> selectErrorStatements();
}

@ -401,5 +401,29 @@
</foreach>
</if>
</where>
order by PUT_STORE_TIME desc
</select>
<!-- 查询结算异常数据(带关联字段) -->
<select id="selectErrorStatements" resultMap="StatementVOResultMap">
SELECT
h.ID,
a.pps_id as ps_id,
e.PART_CODE,
p.PART_NAME,
e.PLATE,
e.PLATE_THICKNESS1 as PLATE_THICKNESS,
h.ROS_STATUS,
h.MEMO,
h.STANDARD_PROCESS_CODE
FROM MES_OEM_STATEMENT h
INNER JOIN MES_WORK_PLAN a ON h.WP_ID = a.ID AND a.IS_DELETED = 0
INNER JOIN BS_PROCESS_SET b ON a.PPS_ID = b.ID AND b.IS_DELETED = 0
INNER JOIN MES_WORK_ORDER d ON a.WO_ID = d.ID AND d.IS_DELETED = 0
INNER JOIN MES_YIELD_ORDER e ON d.YO_ID = e.ID AND e.IS_DELETED = 0
INNER JOIN DS_PART_VERSION pv ON e.part_code = pv.part_code AND e.part_version = pv.part_version AND pv.IS_DELETED = 0
INNER JOIN DS_PART p ON pv.PART_ID = p.ID AND p.IS_DELETED = 0
WHERE h.IS_DELETED = 0
AND h.ROS_STATUS = 3
</select>
</mapper>

@ -104,4 +104,6 @@ public interface IOemStatementService extends BaseService<OemStatementEntity> {
*/
List<StatementVO> manualPreSettlement(StatementQuery mesOemStatement);
R matchStandardProcessCode();
}

@ -1,6 +1,7 @@
package org.springblade.desk.oem.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.nacos.common.utils.CollectionUtils;
import com.alibaba.nacos.shaded.com.google.common.collect.Lists;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
@ -550,16 +551,30 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper,
}
UpdateWrapper<OemStatementEntity> updateWrapper = new UpdateWrapper<>();
/**
* 2026/5/15
* 审核不通过结算状态更新为结算异常-异常原因MES结算审核不通过
* 审核通过结算状态更新为待推送
* */
if (3 == oemSettleAccountsApproval.getApprovalStatus()) {
//审核通过
updateWrapper.set("approval_status", OemStatementEntity.APPROVAL_STATUS_VIA).set("memo", "外协结算完成").set("ros_status", OemStatementEntity.OK_SETTLEMENT).in("id", ids);
updateWrapper.set("approval_status", OemStatementEntity.APPROVAL_STATUS_VIA)
.set("memo", "外协结算完成")
.set("ros_status", OemStatementEntity.OK_SETTLEMENT)
.in("id", ids);
} else {
//审核不通过:(1)原因为不需要结算的更新为【无需结算】(2)原因是基础数据有误的更新为【结算异常】
if (1 == oemSettleAccountsApproval.getReason()) {
updateWrapper.set("approval_status", OemStatementEntity.APPROVAL_STATUS_VIA).set("memo", "无需结算").set("total_price", null).set("unit_price", null).set("quotation", "").set("ros_status", OemStatementEntity.NOT_NEED_SETTLEMENT).in("id", ids);
updateWrapper.set("approval_status", OemStatementEntity.APPROVAL_STATUS_VIA)
.set("memo", "无需结算").set("total_price", null).set("unit_price", null)
.set("quotation", "")
.set("ros_status", OemStatementEntity.NOT_NEED_SETTLEMENT)
.in("id", ids);
} else {
updateWrapper.set("approval_status", OemStatementEntity.APPROVAL_STATUS_FAIL).set("memo", "基础数据有误").set("ros_status", OemStatementEntity.ERR_SETTLEMENT).in("id", ids);
updateWrapper.set("approval_status", OemStatementEntity.APPROVAL_STATUS_FAIL)
.set("memo", "基础数据有误")
.set("ros_status", OemStatementEntity.ERR_SETTLEMENT)
.in("id", ids);
}
}
@ -1980,4 +1995,52 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper,
return settlementList;
}
@Override
public R matchStandardProcessCode() {
// 1. 查询所有【结算异常】状态的数据(带关联字段)
List<StatementVO> errorStatements = baseMapper.selectErrorStatements();
if (CollectionUtils.isEmpty(errorStatements)) {
return R.success("没有需要匹配的结算异常数据");
}
// 2. 过滤掉异常原因为"无需结算、重复镀后入库"的数据
List<StatementVO> needMatchList = errorStatements.stream()
.filter(vo -> {
String memo = vo.getMemo();
// 排除"无需结算"和"重复镀后入库"
return !StrUtil.contains(memo, "无需结算")
&& !StrUtil.contains(memo, "重复镀后入库");
})
.collect(Collectors.toList());
if (CollectionUtils.isEmpty(needMatchList)) {
return R.success("没有需要匹配标准工序代码的数据");
}
// 3. 执行匹配逻辑
matchStandardProcess(needMatchList);
// 4. 更新数据库
List<OemStatementEntity> updateList = needMatchList.stream()
//.filter(vo -> StringUtils.isNotEmpty(vo.getStandardProcessCode()))
.map(vo -> {
OemStatementEntity entity = new OemStatementEntity();
entity.setId(vo.getId());
entity.setStandardProcessCode(vo.getStandardProcessCode());
entity.setUpdateTime(new Date());
return entity;
})
.collect(Collectors.toList());
if (!CollectionUtils.isEmpty(updateList)) {
this.updateBatchById(updateList);
}
return R.success();
}
}

Loading…
Cancel
Save