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

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

Loading…
Cancel
Save