pangyang 4 weeks ago
commit 0334fffe69
  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. 10
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/controller/DsTaskBillController.java
  7. 4
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/PartMapper.xml
  8. 13
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/SpecialProMapper.xml
  9. 1
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/TaskBillMapper.xml
  10. 5
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsTaskBillService.java
  11. 32
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsTaskBillServiceImpl.java
  12. 15
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsTaskingServiceImpl.java

@ -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;
}

@ -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);

Loading…
Cancel
Save