外协结算定时任务

master
maxiangong 2 days ago
parent 972159475b
commit 705c8e5c67
  1. 33
      blade-ops/blade-job/src/main/java/org/springblade/job/processor/oem/OemStatementTaskProcessor.java
  2. 18
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/feign/IOemStatementClient.java
  3. 3
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/entity/OemStatementEntity.java
  4. 30
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/entity/OemStatementTaskLogEntity.java
  5. 15
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/vo/StatementVO.java
  6. 11
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/util/PriceMatcher.java
  7. 19
      blade-service/blade-desk/src/main/java/org/springblade/desk/oem/feign/OemStatementClient.java
  8. 8
      blade-service/blade-desk/src/main/java/org/springblade/desk/oem/mapper/OemStatementMapper.java
  9. 80
      blade-service/blade-desk/src/main/java/org/springblade/desk/oem/mapper/OemStatementMapper.xml
  10. 18
      blade-service/blade-desk/src/main/java/org/springblade/desk/oem/mapper/OemStatementTaskLogMapper.java
  11. 23
      blade-service/blade-desk/src/main/java/org/springblade/desk/oem/mapper/OemStatementTaskLogMapper.xml
  12. 5
      blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/IOemStatementService.java
  13. 24
      blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/IOemStatementTaskLogService.java
  14. 823
      blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/impl/OemStatementServiceImpl.java
  15. 26
      blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/impl/OemStatementTaskLogServiceImpl.java

@ -0,0 +1,33 @@
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;
/**
* 外协结算单生成定时任务
*
* @author BladeX
* @since 2026-05-08
*/
@Component
@Data
@Slf4j
public class OemStatementTaskProcessor implements BasicProcessor {
@Resource
private IOemStatementClient oemStatementClient;
@Override
public ProcessResult process(TaskContext taskContext) throws Exception {
log.info("========== 开始外协结算单生成定时任务 ==========");
oemStatementClient.generateSettlement();
log.info("========== 结束外协结算单生成定时任务 ==========");
return new ProcessResult(true);
}
}

@ -0,0 +1,18 @@
package org.springblade.desk.oem.feign;
import org.springblade.core.launch.constant.AppConstant;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
@FeignClient(
value = AppConstant.APPLICATION_DESK_NAME
)
public interface IOemStatementClient {
String API_PREFIX = "/feign/client/oem-statement";
String GENERATE_SETTLEMENT = API_PREFIX + "/generate-settlement";
@GetMapping(GENERATE_SETTLEMENT)
void generateSettlement();
}

@ -134,4 +134,7 @@ public class OemStatementEntity extends BaseEntity {
@Schema(description = "备注")
private String memo;
@Schema(description = "标准工序代码")
private String standardProcessCode;
}

@ -0,0 +1,30 @@
package org.springblade.desk.oem.pojo.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.mp.base.BaseEntity;
import java.io.Serial;
import java.util.Date;
/**
* 外协结算任务日志 实体类
*
* @author maxg
* @since 2026-05-08
*/
@Data
@TableName("MES_OEM_STATEMENT_TASK_LOG")
@Schema(description = "OemStatementTaskLog对象")
@EqualsAndHashCode(callSuper = true)
public class OemStatementTaskLogEntity extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
@Schema(description = "镀后入库时间")
private Date putStoreTime;
}

@ -107,4 +107,19 @@ public class StatementVO extends OemStatementEntity {
* 同外协厂家下有效期内的全部该工序报价
*/
private List<PriceSheetVO> priceSheetList;
@Schema(description = "需结算工艺能力")
private String craftIds;
@Schema(description = "返工单号")
private String reworkCode;
@Schema(description = "返工顺序")
private String reworkNo;
@Schema(description = "计划部门")
private String planDeptcode;
@Schema(description = "工艺能力类型")
private String wxLimit;
}

@ -97,4 +97,15 @@ public class PriceMatcher {
.filter(remark -> containsPrice(remark, targetPrice))
.collect(Collectors.toSet());
}
/**
* 判断价格是否匹配
*
* @param remark
* @param targetPrice
* @return
*/
public static boolean isContainsPrice(String remark, BigDecimal targetPrice) {
return containsPrice(remark, targetPrice);
}
}

@ -0,0 +1,19 @@
package org.springblade.desk.oem.feign;
import io.swagger.v3.oas.annotations.Hidden;
import jakarta.annotation.Resource;
import org.springblade.desk.oem.service.IOemStatementService;
import org.springframework.web.bind.annotation.RestController;
@RestController
@Hidden
public class OemStatementClient implements IOemStatementClient {
@Resource
private IOemStatementService oemStatementService;
@Override
public void generateSettlement() {
oemStatementService.generateSettlement();
}
}

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

@ -86,6 +86,12 @@
<result column="tsb_num" property="tsbNum"/>
<result column="tsd_num" property="tsdNum"/>
<result column="tjt_num" property="tjtNum"/>
<result column="CRAFT_IDS" property="craftIds"/>
<result column="REWORK_CODE" property="reworkCode"/>
<result column="REWORK_NO" property="reworkNo"/>
<result column="PLAN_DEPTCODE" property="planDeptcode"/>
<result column="WX_LIMIT" property="wxLimit"/>
</resultMap>
<select id="selectOemStatementPage" resultMap="StatementVOResultMap">
@ -218,4 +224,78 @@
FROM MES_OEM_STATEMENT ${ew.customSqlSegment}
</select>
<select id="selectUnsettled" resultMap="StatementVOResultMap">
SELECT
a.id AS WP_ID,
a.wo_id,
a.ca_id,
a.OC_ID,
a.pps_id as ps_id,
b.name as ps_name,
c.code as OC_CODE,
d.REWORK_CODE,
d.REWORK_NO,
d.wo_code,
to_char(d.PUT_STORE_TIME, 'yyyy-MM-dd') AS PUT_STORE_TIME,
d.MAKE_QTY,
e.PLATE_THICKNESS1 as ROS_THICKNESS,
e.PLATE_THICKNESS1 as PLATE_THICKNESS,
e.PLAN_DEPTCODE,
e.plate,
e.PART_CODE,
e.PRODUCT_IDENT as PROD_IDENT,
e.tsb_num AS tsb_num,
e.tsd_num AS tsd_num,
e.tjt_num AS tjt_num,
e.YP_AREA AS YP_AREA,
d.MAKE_QTY * e.YP_AREA AS total_area,
g.manual,
g.CRAFT_IDS,
i.WX_LIMIT,
p.part_name
FROM
MES_WORK_PLAN a
INNER JOIN BS_PROCESS_SET b ON a.PPS_ID = b.ID AND b.IS_DELETED = 0
INNER JOIN BS_OEM c ON a.OC_ID = c.ID AND c.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 MES_OEM_PROCESS g ON b.ID = g.PROCESS_ID AND g.IS_DELETED = 0
LEFT JOIN MES_OEM_STATEMENT h ON h.WP_ID = a.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 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>
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>
</where>
GROUP BY
a.id,
a.wo_id,
a.OC_ID,
a.pps_id,
a.ca_id,
b.name,
c.code,
d.REWORK_CODE,
d.REWORK_NO,
d.wo_code,
d.PUT_STORE_TIME,
d.MAKE_QTY,
e.PLATE_THICKNESS1,
e.PLAN_DEPTCODE,
e.plate,
e.PART_CODE,
e.PRODUCT_IDENT,
e.tsb_num,
e.tsd_num,
e.tjt_num,
e.YP_AREA,
g.manual,
g.CRAFT_IDS,
i.WX_LIMIT,
p.part_name
</select>
</mapper>

@ -0,0 +1,18 @@
package org.springblade.desk.oem.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springblade.desk.oem.pojo.entity.OemStatementTaskLogEntity;
import java.util.Date;
/**
* 外协结算任务日志 Mapper 接口
*
* @author maxg
* @since 2026-05-08
*/
public interface OemStatementTaskLogMapper extends BaseMapper<OemStatementTaskLogEntity> {
Date getLastMaxPutStoreTime();
}

@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.springblade.desk.oem.mapper.OemStatementTaskLogMapper">
<!-- 通用查询映射结果 -->
<resultMap id="mesOemStatementTaskLogResultMap" type="org.springblade.desk.oem.pojo.entity.OemStatementTaskLogEntity">
<result column="ID" property="id"/>
<result column="PUT_STORE_TIME" property="putStoreTime"/>
<result column="CREATE_USER" property="createUser"/>
<result column="CREATE_TIME" property="createTime"/>
<result column="CREATE_DEPT" property="createDept"/>
<result column="UPDATE_USER" property="updateUser"/>
<result column="UPDATE_TIME" property="updateTime"/>
<result column="STATUS" property="status"/>
<result column="IS_DELETED" property="isDeleted"/>
</resultMap>
<select id="getLastMaxPutStoreTime" resultType="java.util.Date">
SELECT MAX(PUT_STORE_TIME) FROM MES_OEM_STATEMENT_TASK_LOG WHERE IS_DELETED = 0
</select>
</mapper>

@ -84,4 +84,9 @@ public interface IOemStatementService extends BaseService<OemStatementEntity> {
*/
R notNeedSettlement(List<StatementVO> list);
/**
* 生成结算数据
*/
void generateSettlement();
}

@ -0,0 +1,24 @@
package org.springblade.desk.oem.service;
import org.springblade.core.mp.base.BaseService;
import org.springblade.desk.oem.pojo.entity.OemStatementTaskLogEntity;
import java.util.Date;
public interface IOemStatementTaskLogService extends BaseService<OemStatementTaskLogEntity> {
/**
* 获取最大镀后入库时间
*
* @return
*/
Date getLastMaxPutStoreTime();
/**
* 保存最大镀后入库时间
*
* @param putStoreTime
*/
void saveMaxPutStoreTime(Date putStoreTime);
}

@ -0,0 +1,26 @@
package org.springblade.desk.oem.service.impl;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.desk.oem.mapper.OemStatementTaskLogMapper;
import org.springblade.desk.oem.pojo.entity.OemStatementTaskLogEntity;
import org.springblade.desk.oem.service.IOemStatementTaskLogService;
import org.springframework.stereotype.Service;
import java.util.Date;
@Service
public class OemStatementTaskLogServiceImpl extends BaseServiceImpl<OemStatementTaskLogMapper, OemStatementTaskLogEntity> implements IOemStatementTaskLogService {
@Override
public Date getLastMaxPutStoreTime() {
return baseMapper.getLastMaxPutStoreTime();
}
@Override
public void saveMaxPutStoreTime(Date putStoreTime) {
OemStatementTaskLogEntity entity = new OemStatementTaskLogEntity();
entity.setPutStoreTime(putStoreTime);
this.save(entity);
}
}
Loading…
Cancel
Save