结算大类

liweidong
maxiangong 2 weeks ago
parent c9d7b1177e
commit 472a91988f
  1. 34
      blade-ops/blade-job/src/main/java/org/springblade/job/processor/oem/OemStatementMjMesTaskProcessor.java
  2. 5
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/feign/IOemStatementClient.java
  3. 5
      blade-service/blade-desk/src/main/java/org/springblade/desk/oem/feign/OemStatementClient.java
  4. 10
      blade-service/blade-desk/src/main/java/org/springblade/desk/oem/mapper/OemStatementMapper.java
  5. 69
      blade-service/blade-desk/src/main/java/org/springblade/desk/oem/mapper/OemStatementMapper.xml
  6. 6
      blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/IOemStatementService.java
  7. 29
      blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/impl/OemStatementServiceImpl.java

@ -0,0 +1,34 @@
package org.springblade.job.processor.oem;
import jakarta.annotation.Resource;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.springblade.desk.oem.feign.IOemStatementClient;
import org.springframework.stereotype.Component;
import tech.powerjob.worker.core.processor.ProcessResult;
import tech.powerjob.worker.core.processor.TaskContext;
import tech.powerjob.worker.core.processor.sdk.BasicProcessor;
/**
* 旧MES外协结算单生成定时任务
*
* @author BladeX
* @since 2026-05-08
*/
@Component
@Data
@Slf4j
public class OemStatementMjMesTaskProcessor implements BasicProcessor {
@Resource
private IOemStatementClient oemStatementClient;
@Override
public ProcessResult process(TaskContext taskContext) throws Exception {
log.info("========== 开始旧MES外协结算单生成定时任务 ==========");
oemStatementClient.generateSettlementByMjMes();
log.info("========== 结束旧MES外协结算单生成定时任务 ==========");
return new ProcessResult(true);
}
}

@ -12,7 +12,12 @@ public interface IOemStatementClient {
String API_PREFIX = "/feign/client/oem-statement"; String API_PREFIX = "/feign/client/oem-statement";
String GENERATE_SETTLEMENT = API_PREFIX + "/generate-settlement"; String GENERATE_SETTLEMENT = API_PREFIX + "/generate-settlement";
String GENERATE_SETTLEMENT_MJMES = API_PREFIX + "/generate-settlement-mjmes";
@GetMapping(GENERATE_SETTLEMENT) @GetMapping(GENERATE_SETTLEMENT)
void generateSettlement(); void generateSettlement();
@GetMapping(GENERATE_SETTLEMENT_MJMES)
void generateSettlementByMjMes();
} }

@ -16,4 +16,9 @@ public class OemStatementClient implements IOemStatementClient {
public void generateSettlement() { public void generateSettlement() {
oemStatementService.generateSettlement(); oemStatementService.generateSettlement();
} }
@Override
public void generateSettlementByMjMes() {
oemStatementService.generateSettlementByMjMes();
}
} }

@ -38,7 +38,7 @@ public interface OemStatementMapper extends BaseMapper<OemStatementEntity> {
List<OemStatementExcel> exportOemStatement(@Param("ew") Wrapper<OemStatementEntity> queryWrapper); List<OemStatementExcel> exportOemStatement(@Param("ew") Wrapper<OemStatementEntity> queryWrapper);
/** /**
* 获取未结算计划订单 * 获取未结算订单
* *
* @param query * @param query
* @return * @return
@ -66,4 +66,12 @@ public interface OemStatementMapper extends BaseMapper<OemStatementEntity> {
* @return List<StatementVO> * @return List<StatementVO>
*/ */
List<StatementVO> selectOrderDataErrorStatements(); List<StatementVO> selectOrderDataErrorStatements();
/**
* 获取未结算订单旧MES
*
* @param query
* @return
*/
List<StatementVO> selectUnsettledByMjMes(StatementQuery query);
} }

@ -370,4 +370,73 @@
AND h.ROS_STATUS = 3 AND h.ROS_STATUS = 3
AND h.MEMO LIKE '%订单数据错误%' AND h.MEMO LIKE '%订单数据错误%'
</select> </select>
<select id="selectUnsettledByMjMes" resultMap="StatementVOResultMap">
SELECT
a.wp_id,
a.wo_id,
a.ca_id,
a.oc_id,
a.pps_id,
b.pps_code as psCode,
b.pps_name as psName,
c.oc_code,
c.oc_name,
d.rework_code,
d.rework_no,
d.wo_code,
d.put_store_time,
to_char(d.put_store_time, 'yyyy-MM-dd') as PUT_STORE_DATE,
d.make_qty,
d.make_qty * e.po_area as total_area,
f.plate_thickness as ROS_THICKNESS,
f.plate_thickness,
e.plate,
e.part_code,
e.prod_ident as PRODUCT_IDENT,
p.tsb_num,
p.tsd_num,
p.tjt_num,
e.po_area as YP_AREA,
e.po_code as YP_CODE,
e.use_dept,
e.batch_no,
g.manual,
g.CRAFT_IDS,
i.WX_LIMIT,
p.part_name,
h.id,
p.part_id,
i.ca_name,
g.STATEMENT_CATEGORY_ID,
j.STATEMENT_CATEGORY,
d.CARD_NO
FROM
MJMES.rb_pr_work_plan a
INNER JOIN MJMES.bs_procedure_set b on a.pps_id = b.pps_id
INNER JOIN MJMES.bs_oem_customer c on a.oc_id = c.oc_id
INNER JOIN MJMES.pr_work_order d ON a.wo_id = d.wo_id
INNER JOIN MJMES.pj_yield_order e ON d.yo_id = e.yo_id
INNER JOIN MJMES.bs_plating f ON e.plate = f.plating
INNER JOIN MES_OEM_PROCESS g ON a.pps_id = g.PROCESS_ID AND g.IS_DELETED = 0
LEFT JOIN MES_OEM_STATEMENT h ON h.WP_ID = a.wp_id AND h.IS_DELETED = 0
INNER JOIN BS_CRAFT_ABILITY i ON i.ID = a.CA_ID AND i.IS_DELETED = 0
INNER JOIN MJMES.ds_part p ON e.part_code = p.part_code
INNER JOIN MES_OEM_STATEMENT_CATEGORY j ON g.STATEMENT_CATEGORY_ID = j.ID
<where>
d.PUT_STORE_TIME IS NOT NULL AND ( a.ID NOT IN ( SELECT WP_ID FROM MES_OEM_STATEMENT ) OR d.PUT_STORE_TIME &gt; h.CREATE_TIME )
<if test="postPlatingStorageTimeStart != null">
AND d.PUT_STORE_TIME &gt;= #{postPlatingStorageTimeStart}
</if>
<if test="postPlatingStorageTimeEnd != null">
AND d.PUT_STORE_TIME &lt; #{postPlatingStorageTimeEnd} + 1
</if>
<if test="woCode != null and woCode != ''">
AND d.WO_CODE LIKE CONCAT('%', CONCAT(#{woCode}, '%'))
</if>
<if test="ppsId != null and ppsId != ''">
AND a.PPS_ID = #{ppsId}
</if>
</where>
</select>
</mapper> </mapper>

@ -135,4 +135,10 @@ public interface IOemStatementService extends BaseService<OemStatementEntity> {
*/ */
R settlementConfirm(SettlementConfirmRequestQuery request); R settlementConfirm(SettlementConfirmRequestQuery request);
/**
* 生成旧MES结算数据
*
* @return
*/
R generateSettlementByMjMes();
} }

@ -2281,4 +2281,33 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper,
return R.success(); return R.success();
} }
@Override
public R generateSettlementByMjMes() {
List<OemStatementEntity> saves = new ArrayList<>();
// 查询未生成的结算数据
List<StatementVO> statementVOS = baseMapper.selectUnsettledByMjMes(new StatementQuery());
if (CollectionUtils.isEmpty(statementVOS)) {
return R.fail("没有需要结算的记录");
}
// 处理重复镀后入库
statementVOS = duplicatePutStore(statementVOS, saves);
// 处理不结算数据
statementVOS = noSettlement(statementVOS);
if (CollectionUtils.isEmpty(statementVOS)) {
return R.fail("没有需要结算的记录");
}
for (StatementVO statementVO : statementVOS) {
OemStatementEntity entity = new OemStatementEntity();
BeanUtils.copyProperties(statementVO, entity);
entity.setUpdateTime(new Date());
entity.setIsDeleted(0);
entity.setRosStatus(StatementVO.ERR_SETTLEMENT);
entity.setMemo("未找到报价单");
saves.add(entity);
}
// 记录结算数据
return R.status(this.saveOrUpdateBatch(saves));
}
} }

Loading…
Cancel
Save