Merge branch 'master' into develop-QA

develop-QA
Tom Li 3 months ago
commit 391917639d
  1. 65
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/device/pojo/vo/ToolingLibraryVO.java
  2. 19
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/entity/YieldOrder.java
  3. 32
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/InBatchesDTO.java
  4. 2
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/TurnTypeDTO.java
  5. 4
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/UpdatePriorityDTO.java
  6. 6
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/WorkOrderDTO.java
  7. 4
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/BsProcedureTeam.java
  8. 2
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/WorkOrderRun.java
  9. 4
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/WorkPlan.java
  10. 3
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/WorkPlanRun.java
  11. 4
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/BatchPrepareVO.java
  12. 6
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/WorkOrderVO.java
  13. 28
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/WorkPlanRunVO.java
  14. 20
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/WorkPlanVO.java
  15. 48
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/YieldOrderVO.java
  16. 12
      blade-service/blade-desk/pom.xml
  17. 32
      blade-service/blade-desk/src/main/java/org/springblade/desk/device/controller/MeasuringUpkeepController.java
  18. 9
      blade-service/blade-desk/src/main/java/org/springblade/desk/device/mapper/MeasuringUpkeepMapper.java
  19. 50
      blade-service/blade-desk/src/main/java/org/springblade/desk/device/mapper/MeasuringUpkeepMapper.xml
  20. 9
      blade-service/blade-desk/src/main/java/org/springblade/desk/device/service/IMeasuringUpkeepService.java
  21. 7
      blade-service/blade-desk/src/main/java/org/springblade/desk/device/service/impl/MeasuringUpkeepServiceImpl.java
  22. 3
      blade-service/blade-desk/src/main/java/org/springblade/desk/device/service/impl/RecorderServiceImpl.java
  23. 16
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/IYieldOrderService.java
  24. 24
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldOrderServiceImpl.java
  25. 13
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/RbProduceManageController.java
  26. 85
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/SjProduceManageController.java
  27. 6
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/BsProcedureTeamMapper.xml
  28. 136
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkOrderMapper.xml
  29. 36
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkOrderRunMapper.xml
  30. 6
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkOrderService.java
  31. 81
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java
  32. 2
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkPlanServiceImpl.java

@ -0,0 +1,65 @@
package org.springblade.desk.device.pojo.vo;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serial;
/**
* 量具库 视图实体类
*
* @author qyl
* @since 2026-01-26
*/
@Data
public class ToolingLibraryVO {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@JsonSerialize(using = ToStringSerializer.class)
private Long id;
@Schema(description = "物料ID")
Long goodsId;
@Schema(description = "仓库ID")
Long shId;
@Schema(description = "库位ID")
Long slId;
@Schema(description = "物料名称")
String goodsName;
@Schema(description = "物料编码")
String goodsCode;
@Schema(description = "物料规格")
String specifications;
@Schema(description = "生产批次号")
String piNo;
@Schema(description = "仓库")
String shName;
@Schema(description = "库位号")
String location;
@Schema(description = "库存数量")
String quantity;
@Schema(description = "等级")
String quantityLevel;
@Schema(description = "金额")
Double balanceMoney;
@Schema(description = "累计使用次数")
String sumNum;
}

@ -77,6 +77,23 @@ public class YieldOrder extends BaseEntity {
*/
public static Integer YIELD_TYPE_6 = 6;
/**
* 烧结石墨模未准备
*/
public static Short SJ_MOLD_PREPARATION_1 = 1;
/**
* 烧结石墨模已准备
*/
public static Short SJ_MOLD_PREPARATION_2 = 2;
/**
* 烧结齐套未流转
*/
public static Short SJ_KIT_PREPARATION_1 = 1;
/**
* 烧结齐套已流转
*/
public static Short SJ_KIT_PREPARATION_2 = 2;
/**
* 作业中心
*/
@ -346,7 +363,7 @@ public class YieldOrder extends BaseEntity {
* 流转人
*/
@TableField(value = "KIT_PREPARATION_MAN")
private String kitPreparationMan;
private Long kitPreparationMan;
/**
* 流转时间

@ -0,0 +1,32 @@
package org.springblade.desk.produce.pojo.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
/**
* 分批 数据传输对象实体类
* @author litao
*/
@Data
public class InBatchesDTO {
@Schema(description = "车间订单id")
private Long id;
@Schema(description = "加工数量")
private Long makeQty;
@Schema(description = "批次")
private String batchNo;
@Schema(description = "路线卡号")
private String cardNo;
@Schema(description = "订单编号")
private String woCode;
@Schema(description = "备注")
private String memo;
}

@ -13,7 +13,7 @@ import java.util.List;
public class TurnTypeDTO {
@Schema(description = "生产订单id")
private Long id;
private Long yoId;
@Schema(description = "订单类型")
private Integer yieldType;

@ -12,8 +12,8 @@ import java.util.Date;
@Data
public class UpdatePriorityDTO {
@Schema(description = "生产订单id")
private Long id;
@Schema(description = "车间订单id")
private Long woId;
@Schema(description = "需求交期")
private Date demandDate;

@ -11,10 +11,10 @@ import lombok.Data;
public class WorkOrderDTO {
@Schema(description = "订单类型:1-热表,2-烧结,3-玻璃饼,4-壳体,5-插针,6-石墨模")
private Short yieldType;
private String yieldType;
@Schema(description = "运行状态:1.正常,2.已下达,3.加工中,4.检验中,13.审理中,14.返工中,15.已完工,21已作废")
private Integer runStatus;
@Schema(description = "运行状态:1.正常,2.已下达,3.加工中,4.检验中,13.审理中,14.返工中,15.已完工,21已关闭")
private String runStatus;
@Schema(description = "流程卡号")
private String cardNo;

@ -1,6 +1,10 @@
package org.springblade.desk.produce.pojo.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;

@ -2,7 +2,6 @@ package org.springblade.desk.produce.pojo.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.mp.base.BaseEntity;
@ -21,7 +20,6 @@ import java.util.Map;
@TableName("MES_WORK_ORDER_RUN")
@Schema(description = "MesWorkOrderRun对象")
@EqualsAndHashCode(callSuper = true)
@Builder
public class WorkOrderRun extends BaseEntity {
@Serial

@ -56,9 +56,9 @@ public class WorkPlan extends BaseEntity {
@Schema(description = "车间订单")
private Long woId;
/**
*
*
*/
@Schema(description = "工")
@Schema(description = "工")
private Long ppsId;
/**
* 工序号

@ -2,7 +2,6 @@ package org.springblade.desk.produce.pojo.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.mp.base.BaseEntity;
@ -16,7 +15,7 @@ import java.util.Date;
* @author BladeX
*/
@Data
@TableName("MES_WORK_ORDER_RUN")
@TableName("MES_WORK_PLAN_RUN")
@Schema(description = "WorkPlanRun对象")
@EqualsAndHashCode(callSuper = true)
public class WorkPlanRun extends BaseEntity {

@ -11,6 +11,10 @@ import org.springblade.desk.order.pojo.entity.YieldOrder;
*/
@Data
public class BatchPrepareVO {
@Schema(description = "车间订单id")
private Long id;
@Schema(description = "生产订单")
private YieldOrder yieldOrder;

@ -19,6 +19,12 @@ public class WorkOrderVO extends WorkOrder {
@Serial
private static final long serialVersionUID = 1L;
@Schema(description = "车间订单ID")
private Long woId;
@Schema(description = "生产订单ID")
private Long yoId;
@Schema(description = "主加工单位:班组")
private String mainTsName;

@ -0,0 +1,28 @@
package org.springblade.desk.produce.pojo.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.desk.basic.pojo.entity.ProcessAbility;
import org.springblade.desk.produce.pojo.entity.WorkOrderRun;
import org.springblade.desk.produce.pojo.entity.WorkPlan;
import org.springblade.desk.produce.pojo.entity.WorkPlanRun;
/**
* 分批准备数据 视图实体类
*
* @author litao
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class WorkPlanRunVO extends WorkPlanRun {
@Schema(description = "车间订单运行记录")
private WorkOrderRun workOrderRun;
@Schema(description = "作业计划工序")
private WorkPlanVO workPlan;
@Schema(description = "工艺能力")
private ProcessAbility processAbility;
}

@ -0,0 +1,20 @@
package org.springblade.desk.produce.pojo.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.desk.dashboard.pojo.entity.BsProcessSetEntity;
import org.springblade.desk.produce.pojo.entity.WorkPlanRun;
/**
* 分批准备数据 视图实体类
*
* @author litao
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class WorkPlanVO extends WorkPlanRun {
@Schema(description = "工序")
private BsProcessSetEntity processSet;
}

@ -0,0 +1,48 @@
package org.springblade.desk.produce.pojo.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.springblade.desk.order.pojo.entity.YieldOrder;
import java.util.Date;
/**
* 烧结配套齐套流转 视图实体类
*
* @author litao
*/
@Data
public class YieldOrderVO {
@Schema(description = "moldFlag")
private Integer moldFlag;
@Schema(description = "kitFlag")
private Integer kitFlag;
@Schema(description = "计划单号")
private String ypCode;
@Schema(description = "流程卡号")
private String cardNo;
@Schema(description = "零件号")
private String partCode;
@Schema(description = "批次号")
private String batchNo;
@Schema(description = "需求交期-开始")
private Date demandDateStart;
@Schema(description = "需求交期-结束")
private Date demandDateEnd;
@Schema(description = "计划下达时间-开始")
private Date releaseDateStart;
@Schema(description = "计划下达时间-结束")
private Date releaseDateEnd;
}

@ -118,12 +118,12 @@
<artifactId>aviator</artifactId>
<version>5.4.3</version>
</dependency>
<dependency>
<groupId>org.springblade</groupId>
<artifactId>blade-wms</artifactId>
<version>4.6.0.RELEASE</version>
<scope>compile</scope>
</dependency>
<!-- <dependency>-->
<!-- <groupId>org.springblade</groupId>-->
<!-- <artifactId>blade-wms</artifactId>-->
<!-- <version>4.6.0.RELEASE</version>-->
<!-- <scope>compile</scope>-->
<!-- </dependency>-->
</dependencies>
<build>

@ -17,8 +17,9 @@ import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springblade.desk.device.pojo.excel.MeasuringUpkeepExcel;
import org.springblade.desk.device.pojo.request.MeasuringUpkeepQuery;
import org.springblade.wms.feign.StRealtimeStockClient;
import org.springblade.wms.pojo.vo.StRealtimeStockVO;
import org.springblade.desk.device.pojo.vo.ToolingLibraryVO;
//import org.springblade.wms.feign.StRealtimeStockClient;
//import org.springblade.wms.pojo.vo.StRealtimeStockVO;
import org.springframework.beans.BeanUtils;
import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.core.metadata.IPage;
@ -50,8 +51,8 @@ public class MeasuringUpkeepController extends BladeController {
private final IMeasuringUpkeepService measuringUpkeepService;
@Resource
private StRealtimeStockClient client;
// @Resource
// private StRealtimeStockClient client;
/**
* 量具保养 详情
*/
@ -157,20 +158,21 @@ public class MeasuringUpkeepController extends BladeController {
@GetMapping("/newlyAddedList")
@ApiOperationSupport(order = 3)
@Operation(summary = "量具保养新增页面列表", description = "传入stRealtimeStock,默认过滤量具类型仓库,按sumNum排序")
public R<IPage<StRealtimeStockVO>> pageToolsData(StRealtimeStockVO stRealtimeStock, Query query) {
public R<IPage<ToolingLibraryVO>> pageToolsData(Query query) {
if (StrUtil.isBlank(query.getAscs()) && StrUtil.isBlank(query.getDescs())) {
query.setDescs("sumNum"); // 默认按sumNum降序排序
query.setDescs("sum_num"); // 默认按sumNum降序排序
}
R<Page<StRealtimeStockVO>> measuringTools = client.getMeasuringTools(stRealtimeStock, query);
Page<StRealtimeStockVO> data = measuringTools.getData();
Page<StRealtimeStockVO> pages = new Page<>();
// 复制分页属性
pages.setRecords(data.getRecords());
pages.setTotal(data.getTotal());
pages.setCurrent(data.getCurrent());
pages.setSize(data.getSize());
pages.setPages(data.getPages());
// R<Page<StRealtimeStockVO>> measuringTools = client.getMeasuringTools(stRealtimeStock, query);
// Page<StRealtimeStockVO> data = measuringTools.getData();
// Page<StRealtimeStockVO> pages = new Page<>();
// // 复制分页属性
// pages.setRecords(data.getRecords());
// pages.setTotal(data.getTotal());
// pages.setCurrent(data.getCurrent());
// pages.setSize(data.getSize());
// pages.setPages(data.getPages());
IPage<ToolingLibraryVO> pages = measuringUpkeepService.selectToolingLibraryPage(Condition.getPage(query));
return R.data(pages);
}

@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.apache.ibatis.annotations.Param;
import org.springblade.desk.device.pojo.vo.ToolingLibraryVO;
import java.util.List;
@ -28,6 +29,14 @@ public interface MeasuringUpkeepMapper extends BaseMapper<MeasuringUpkeepEntity>
*/
List<MeasuringUpkeepVO> selectMeasuringUpkeepPage(IPage page, MeasuringUpkeepQuery query);
/**
* 自定义分页
*
* @param page 分页参数
* @return List<ToolingLibraryVO>
*/
List<ToolingLibraryVO> selectToolingLibraryPage(IPage page);
/**
* 获取导出数据

@ -66,6 +66,33 @@
<!-- 状态名称映射(可通过字典或计算字段获取) -->
<result column="status_name" property="statusName"/>
</resultMap>
<!-- 定义结果映射 -->
<resultMap id="stRealtimeStockResultMap" type="org.springblade.desk.device.pojo.vo.ToolingLibraryVO">
<!-- 基类字段映射 -->
<id column="id" property="id"/>
<!-- 关联的ST_REALTIME_STOCK表字段映射 -->
<result column="goods_id" property="goodsId"/>
<result column="sh_id" property="shId"/>
<result column="sl_id" property="slId"/>
<!-- 关联的st_goods表字段映射 -->
<result column="goods_name" property="goodsName"/>
<result column="goods_code" property="goodsCode"/>
<result column="specifications" property="specifications"/>
<!-- 关联的ST_STOREHOUSE表字段映射 -->
<result column="sh_name" property="shName"/>
<!-- 关联的ST_STORAGE_LOCATION表字段映射 -->
<result column="location" property="location"/>
<!-- ST_REALTIME_STOCK表本身字段映射 -->
<result column="pi_no" property="piNo"/>
<result column="quantity" property="quantity"/>
<result column="quantity_level" property="quantityLevel"/>
<result column="balance_money" property="balanceMoney"/>
<result column="sum_num" property="sumNum"/>
</resultMap>
<!-- 多表联合查询SQL -->
<select id="selectMeasuringUpkeepPage" resultMap="MeasuringUpkeepVOResultMap">
@ -93,12 +120,12 @@
FROM MES_MEASURING_UPKEEP mmu
LEFT JOIN ST_REALTIME_STOCK st ON mmu.mi_id = st.id
LEFT JOIN st_goods g ON st.goods_id = g.id
LEFT JOIN ST_GOODS g ON st.goods_id = g.id
LEFT JOIN ST_STOREHOUSE sh ON st.sh_id = sh.id
LEFT JOIN ST_STORAGE_LOCATION sl ON st.sl_id = sl.id
<where>
<if test="query.status != null">
AND mmu.status = #{query.statuss}
AND mmu.status = #{query.status}
</if>
<if test="query.location != null and query.location != ''">
AND sl.location LIKE CONCAT('%', CONCAT(#{query.location}, '%'))
@ -123,6 +150,25 @@
ORDER BY mmu.create_time DESC
</select>
<select id="selectToolingLibraryPage" resultMap="stRealtimeStockResultMap">
SELECT
st.*,
g.goods_name,
g.goods_code,
g.specifications,
sh.sh_name,
sl.location
FROM ST_REALTIME_STOCK st
LEFT JOIN ST_GOODS g ON st.goods_id = g.id
LEFT JOIN ST_STOREHOUSE sh ON st.sh_id = sh.id
LEFT JOIN ST_STORAGE_LOCATION sl ON st.sl_id = sl.id
<where>
st.is_deleted = 0
AND sh.is_deleted = 0
<!-- 2. 固定条件:量具库(对应 StStorehouse.TYPE_RULE = 5) -->
AND sh.type = 5
</where>
</select>
<select id="exportMeasuringUpkeep" resultType="org.springblade.desk.device.pojo.excel.MeasuringUpkeepExcel">
SELECT *

@ -8,6 +8,7 @@ import org.springblade.desk.device.pojo.request.MeasuringUpkeepQuery;
import org.springblade.desk.device.pojo.vo.MeasuringUpkeepVO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseService;
import org.springblade.desk.device.pojo.vo.ToolingLibraryVO;
import java.util.List;
@ -27,6 +28,14 @@ public interface IMeasuringUpkeepService extends BaseService<MeasuringUpkeepEnti
*/
IPage<MeasuringUpkeepVO> selectMeasuringUpkeepPage(IPage<MeasuringUpkeepVO> page, MeasuringUpkeepQuery measuringUpkeep);
/**
* 自定义分页
*
* @param page 分页参数
* @return IPage<ToolingLibraryVO>
*/
IPage<ToolingLibraryVO> selectToolingLibraryPage(IPage<ToolingLibraryVO> page);
/**
* 导出数据

@ -17,6 +17,7 @@ import org.springblade.desk.device.pojo.excel.MeasuringUpkeepExcel;
import org.springblade.desk.device.pojo.request.MeasuringUpkeepQuery;
import org.springblade.desk.device.pojo.vo.MeasuringUpkeepVO;
import org.springblade.desk.device.mapper.MeasuringUpkeepMapper;
import org.springblade.desk.device.pojo.vo.ToolingLibraryVO;
import org.springblade.desk.device.service.IMeasuringUpkeepService;
import org.springblade.desk.jobtransfer.pojo.vo.PostHandleVO;
import org.springblade.system.cache.SysCache;
@ -67,6 +68,12 @@ public class MeasuringUpkeepServiceImpl extends BaseServiceImpl<MeasuringUpkeepM
return page.setRecords(dataList);
}
@Override
public IPage<ToolingLibraryVO> selectToolingLibraryPage(IPage<ToolingLibraryVO> page) {
List<ToolingLibraryVO> dataList = baseMapper.selectToolingLibraryPage(page);
return page.setRecords(dataList);
}
@Override
public List<MeasuringUpkeepExcel> exportMeasuringUpkeep(Wrapper<MeasuringUpkeepEntity> queryWrapper) {

@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.extern.slf4j.Slf4j;
import jakarta.annotation.Resource;
import org.apache.commons.lang3.time.DateFormatUtils;
import org.springblade.desk.device.mapper.EquipmentMapper;
import org.springblade.desk.device.pojo.entity.EquipmentEntity;
import org.springblade.desk.device.pojo.entity.RecorderCompareEntity;
@ -126,7 +127,7 @@ public class RecorderServiceImpl extends BaseServiceImpl<RecorderMapper, Recorde
jsonObject = JSONObject.parseObject(recorderEntity.getMemo(), JSONObject.class);
if (jsonObject == null) continue;
xData.add(recorderEntity.getRecordDate().toString());
xData.add(DateFormatUtils.format(recorderEntity.getRecordDate(), "yyyy-MM-dd HH:mm:ss"));
for (Map.Entry<String, RecorderCompareEntity> var : compreLst.entrySet()) {
Double d = 0d;

@ -177,4 +177,20 @@ public interface IYieldOrderService extends BaseService<YieldOrder> {
YieldOrder getYoByCardNo(String cardNo);
void updateYieldStatus(Long yoId, Integer curStatusVoided, double v);
/**
* 烧结齐套发送
*
* @param yoId
* @return
*/
boolean sendKit(Long yoId);
/**
* 烧结齐套完成
*
* @param yoId
* @return
*/
boolean moldComplete(Long yoId);
}

@ -14,6 +14,7 @@ import org.springblade.common.exception.BusinessException;
import org.springblade.common.utils.StringPrefixUtils;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.utils.BeanUtil;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.tool.utils.ObjectUtil;
@ -41,6 +42,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Random;
@ -666,6 +668,28 @@ public class YieldOrderServiceImpl extends BaseServiceImpl<YieldOrderMapper, Yie
}
}
@Override
public boolean sendKit(Long yoId) {
YieldOrder yieldOrder = this.getById(yoId);
if (yieldOrder == null) {
throw new ServiceException("生产订单不存在");
}
yieldOrder.setSjKitPreparation(2L);
yieldOrder.setKitPreparationMan(AuthUtil.getUserId());
yieldOrder.setKitPreparationTime(new Date());
return this.updateById(yieldOrder);
}
@Override
public boolean moldComplete(Long yoId) {
YieldOrder yieldOrder = this.getById(yoId);
if (yieldOrder == null) {
throw new ServiceException("生产订单不存在");
}
yieldOrder.setSjMoldPreparation(2L);
return this.updateById(yieldOrder);
}
/**
* 验证零件子件信息
*

@ -14,19 +14,18 @@ import org.springblade.desk.produce.pojo.dto.*;
import org.springblade.desk.produce.pojo.entity.WorkOrder;
import org.springblade.desk.produce.pojo.vo.BatchPrepareVO;
import org.springblade.desk.produce.pojo.vo.WorkOrderVO;
import org.springblade.desk.produce.service.IWorkOrderRunService;
import org.springblade.desk.produce.service.IWorkOrderService;
import org.springblade.desk.produce.wrapper.WorkOrderWrapper;
import org.springframework.web.bind.annotation.*;
/**
* 热表车间订单
* 热表生产管理
* @author litao
*/
@RestController
@RequiredArgsConstructor
@RequestMapping("/workOrder")
@Tag(name = "热表车间订单", description = "接口")
@Tag(name = "热表生产管理", description = "接口")
public class RbProduceManageController extends BladeController {
private final IWorkOrderService workOrderService;
@ -49,9 +48,9 @@ public class RbProduceManageController extends BladeController {
@PostMapping(value = "/inBatches")
@ApiOperationSupport(order = 3)
@Operation(summary = "分批", description = "传入WorkOrder")
public R inBatches(@RequestBody WorkOrder workOrder) {
public R inBatches(@RequestBody InBatchesDTO inBatchesDTO) {
Long userId = AuthUtil.getUserId();
return R.data(workOrderService.inBatches(workOrder.getId(), workOrder, userId));
return R.data(workOrderService.inBatches(inBatchesDTO.getId(), inBatchesDTO, userId));
}
@PostMapping(value = "/turnType")
@ -59,7 +58,7 @@ public class RbProduceManageController extends BladeController {
@Operation(summary = "转烧结", description = "传入YieldOrder")
public R turnType(@RequestBody TurnTypeDTO turnTypeDTO) {
Long userId = AuthUtil.getUserId();
return R.data(workOrderService.turnType(turnTypeDTO.getId(), turnTypeDTO.getYieldType(), userId));
return R.data(workOrderService.turnType(turnTypeDTO.getYoId(), turnTypeDTO.getYieldType(), userId));
}
@PostMapping(value = "/updateStatus")
@ -89,7 +88,7 @@ public class RbProduceManageController extends BladeController {
@ApiOperationSupport(order = 8)
@Operation(summary = "更改车间订单优先级", description = "传入WorkOrder")
public R updatePriority(@RequestBody UpdatePriorityDTO updatePriorityDTO) {
WorkOrder wo = workOrderService.getById(updatePriorityDTO.getId());
WorkOrder wo = workOrderService.getById(updatePriorityDTO.getWoId());
wo.setPriority(WorkOrder.PRIORITY_SCH_IMP);
wo.setDemandDate(updatePriorityDTO.getDemandDate());
return R.data(workOrderService.updateById(wo));

@ -0,0 +1,85 @@
package org.springblade.desk.produce.controller;
import com.alibaba.nacos.common.utils.StringUtils;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springblade.desk.order.pojo.entity.YieldOrder;
import org.springblade.desk.order.service.IYieldOrderService;
import org.springblade.desk.produce.pojo.dto.InBatchesDTO;
import org.springblade.desk.produce.pojo.dto.WorkOrderDTO;
import org.springblade.desk.produce.pojo.vo.WorkOrderVO;
import org.springblade.desk.produce.pojo.vo.YieldOrderVO;
import org.springblade.desk.produce.wrapper.WorkOrderWrapper;
import org.springframework.web.bind.annotation.*;
/**
* 烧结生产管理
*
* @author litao
*/
@RestController
@RequiredArgsConstructor
@RequestMapping("/sjWorkOrder")
@Tag(name = "烧结生产管理", description = "接口")
public class SjProduceManageController extends BladeController {
private final IYieldOrderService yieldOrderService;
@GetMapping("/page")
@ApiOperationSupport(order = 1)
@Operation(summary = "烧结配套齐套流转列表", description = "传入WorkOrderVO")
public R<IPage<YieldOrder>> page(YieldOrderVO yieldOrder, Query query) {
Integer moldFlag = yieldOrder.getMoldFlag();
Integer kitFlag = yieldOrder.getKitFlag();
if (moldFlag == null || kitFlag == null) {
throw new ServiceException("缺少必要参数:moldFlag、kitFlag");
}
LambdaQueryWrapper<YieldOrder> queryWrapper = Wrappers.lambdaQuery();
queryWrapper.eq(YieldOrder::getStatus, YieldOrder.CUR_STATUS_NORMAL);
queryWrapper.and(wrapper -> wrapper.eq(YieldOrder::getYieldType, YieldOrder.YIELD_TYPE_2).or().like(YieldOrder::getMemo, "铆卡钉"));
if (moldFlag == 0) {
queryWrapper.and(wrapper -> wrapper.isNull(YieldOrder::getSjMoldPreparation).or().ne(YieldOrder::getSjMoldPreparation, YieldOrder.SJ_MOLD_PREPARATION_2));
}
if (moldFlag == 1 && kitFlag == 0) {
queryWrapper.and(wrapper -> wrapper.isNull(YieldOrder::getSjKitPreparation).ne(YieldOrder::getSjKitPreparation, YieldOrder.SJ_KIT_PREPARATION_2));
}
if (moldFlag == 1 && kitFlag == 1) {
queryWrapper.eq(YieldOrder::getSjKitPreparation, YieldOrder.SJ_KIT_PREPARATION_2);
}
queryWrapper.like(StringUtils.isNotBlank(yieldOrder.getYpCode()), YieldOrder::getYpCode, yieldOrder.getYpCode());
queryWrapper.like(StringUtils.isNotBlank(yieldOrder.getCardNo()), YieldOrder::getCardNo, yieldOrder.getCardNo());
queryWrapper.like(StringUtils.isNotBlank(yieldOrder.getPartCode()), YieldOrder::getPartCode, yieldOrder.getPartCode());
queryWrapper.like(StringUtils.isNotBlank(yieldOrder.getBatchNo()), YieldOrder::getBatchNo, yieldOrder.getBatchNo());
queryWrapper.between(yieldOrder.getDemandDateStart() != null && yieldOrder.getDemandDateEnd() != null, YieldOrder::getDemandDate, yieldOrder.getDemandDateStart(), yieldOrder.getDemandDateEnd());
queryWrapper.between(yieldOrder.getReleaseDateStart() != null && yieldOrder.getReleaseDateEnd() != null, YieldOrder::getReleaseDate, yieldOrder.getReleaseDateStart(), yieldOrder.getReleaseDateEnd());
IPage<YieldOrder> page = yieldOrderService.page(Condition.getPage(query), queryWrapper);
return R.data(page);
}
@PostMapping(value = "/moldComplete")
@ApiOperationSupport(order = 2)
@Operation(summary = "模具准备完成", description = "yoId")
public R moldComplete(@RequestParam Long yoId) {
return R.data(yieldOrderService.moldComplete(yoId));
}
@PostMapping(value = "/sendKit")
@ApiOperationSupport(order = 3)
@Operation(summary = "烧结齐套发送", description = "yoId")
public R sendKit(@RequestParam Long yoId) {
return R.data(yieldOrderService.sendKit(yoId));
}
}

@ -4,8 +4,8 @@
<select id="findBsProcedureTeamByPpsId" resultType="org.springblade.desk.produce.pojo.entity.BsProcedureTeam">
select a.* from bs_procedure_team a
inner join bs_procedure_set b on a.PPS_ID= b.PPS_ID
inner join BS_TEAM_SET c on a.TS_ID = c.TS_ID
where b.pps_id = #{id} and c.DELETED = 0 order by c.TS_ID
inner join BS_PROCESS_SET b on a.PPS_ID= b.ID
inner join BS_TEAM_SET c on a.TS_ID = c.ID
where b.ID = #{id} and c.IS_DELETED = 0 order by c.ID
</select>
</mapper>

@ -2,73 +2,37 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.springblade.desk.produce.mapper.WorkOrderMapper">
<!-- 通用查询映射结果 -->
<resultMap id="workOrderResultMap" type="org.springblade.desk.produce.pojo.entity.WorkOrder">
<result column="TS_ID" property="tsId"/>
<result column="OC_ID" property="ocId"/>
<result column="TEST_QTY" property="testQty"/>
<result column="LOSS_QTY" property="lossQty"/>
<result column="PLATE_SINGLE_QUOTA" property="plateSingleQuota"/>
<result column="PUSH_FLAG" property="pushFlag"/>
<result column="PLATE_GOODS_CODE" property="plateGoodsCode"/>
<result column="PGR_ID" property="pgrId"/>
<result column="QUOTA_EXCEPTIONAL" property="quotaExceptional"/>
<result column="MES_CARD_NO" property="mesCardNo"/>
<result column="RECEPTION_TIME" property="receptionTime"/>
<result column="OUT_TIME" property="outTime"/>
<result column="COLLABORATE" property="collaborate"/>
<result column="LAST_INSTORE_TIME" property="lastInstoreTime"/>
<result column="MEET_CYCLE" property="meetCycle"/>
<result column="MEMO" property="memo"/>
<result column="SCHED_STATUS" property="schedStatus"/>
<result column="READ_STATUS" property="readStatus"/>
<result column="QC_REWORK_CODE" property="qcReworkCode"/>
<result column="OLD_RUN_STATUS" property="oldRunStatus"/>
<result column="RE_IN_STORE" property="reInStore"/>
<result column="CREATE_USER" property="createUser"/>
<result column="CREATE_DEPT" property="createDept"/>
<result column="CREATE_TIME" property="createTime"/>
<result column="UPDATE_USER" property="updateUser"/>
<result column="UPDATE_TIME" property="updateTime"/>
<result column="STATUS" property="status"/>
<result column="IS_DELETED" property="isDeleted"/>
<result column="ID" property="id"/>
<result column="YO_ID" property="yoId"/>
<result column="CARD_NO" property="cardNo"/>
<result column="BATCH_NO" property="batchNo"/>
<result column="WO_CODE" property="woCode"/>
<result column="MAKE_QTY" property="makeQty"/>
<result column="PLAN_END_DATE" property="planEndDate"/>
<result column="WP_ID" property="wpId"/>
<result column="INVENTORY_QTY" property="inventoryQty"/>
<result column="RUN_STATUS" property="runStatus"/>
<result column="PICKING_STATUS" property="pickingStatus"/>
<result column="OEM" property="oem"/>
<result column="PRIORITY" property="priority"/>
<result column="WOR_ID" property="worId"/>
<result column="APPROVAL_STATUS" property="approvalStatus"/>
<result column="SCRAP_QTY" property="scrapQty"/>
<result column="OEM_OUT" property="oemOut"/>
<result column="OEM_TYPE" property="oemType"/>
<result column="REWORK_CODE" property="reworkCode"/>
<result column="REWORK_NO" property="reworkNo"/>
<result column="PLANNER" property="planner"/>
<result column="DISPATCHER" property="dispatcher"/>
<result column="PRINT_FLAG" property="printFlag"/>
<result column="SEND_DOWN_TIME" property="sendDownTime"/>
<result column="PRINT_MAN" property="printMan"/>
<result column="PUT_STORE_TIME" property="putStoreTime"/>
<result column="REWORK_MEMO" property="reworkMemo"/>
<result column="DEMAND_DATE" property="demandDate"/>
<result column="PRINT_TIME" property="printTime"/>
<result column="PRINT_CODE" property="printCode"/>
<result column="HANDOVER_TIME" property="handoverTime"/>
<result column="CLOSE_TIME" property="closeTime"/>
<result column="CLOSE_MAN" property="closeMan"/>
</resultMap>
<select id="selectWorkOrderPage" resultMap="workOrderResultMap">
<select id="getMaxByCodePattern" resultType="org.springblade.desk.produce.pojo.entity.WorkOrder">
SELECT * FROM (select * from MES_WORK_ORDER where WO_CODE like concat(#{codePattern},'%') order by WO_CODE desc) WHERE ROWNUM = 1
</select>
<select id="getMaxByCardNo" resultType="org.springblade.desk.produce.pojo.entity.WorkOrder">
SELECT * FROM (select a.* from MES_WORK_ORDER a INNER JOIN MES_YIELD_ORDER b on a.yo_id = b.id where a.card_no like concat(#{cardNo},'%')
<if test="ypCode != null and ypCode != ''">
AND b.YP_CODE LIKE concat(#{ypCode},'%')
</if>
order by a.card_no desc ) WHERE ROWNUM = 1
</select>
<select id="getWorkOrderByCardNo" resultType="org.springblade.desk.produce.pojo.entity.WorkOrder">
SELECT * FROM (select * from MES_WORK_ORDER where card_no = #{code}
<if test="i == -1">
and run_status = -1
</if>
order by id desc ) WHERE ROWNUM = 1
</select>
<select id="getMaxByBatchNo" resultType="org.springblade.desk.produce.pojo.entity.WorkOrder">
SELECT * FROM (SELECT a.*
FROM MES_WORK_ORDER a INNER JOIN MES_YIELD_ORDER b ON a.yo_id = b.id
WHERE a.batch_no LIKE concat(#{codePattern},'%') AND LENGTH(a.batch_no) = LENGTH(#{codePattern}) + 2
AND b.YP_CODE LIKE concat(#{ypCode},'%')
ORDER BY a.batch_no DESC) WHERE ROWNUM = 1
</select>
<select id="getMaxByMesCardNo" resultType="org.springblade.desk.produce.pojo.entity.WorkOrder">
SELECT * FROM (SELECT * FROM MES_WORK_ORDER WHERE mes_card_no LIKE concat(#{codePattern},'%') ORDER BY mes_card_no DESC) WHERE ROWNUM = 1
</select>
<select id="selectWorkOrderPage" resultType="org.springblade.desk.produce.pojo.vo.WorkOrderVO">
SELECT
mwo.ID woId,
mwo.YO_ID yoId,
mwo.TS_ID tsId,
mwo.OC_ID ocId,
mwp.MAKE_TEAM makeTeam,
@ -112,9 +76,12 @@
LEFT JOIN MES_WORK_PLAN mwp ON mwo.WP_ID = mwp.ID
LEFT JOIN MES_WORK_PLAN nmwp ON mwp.NEXT_WP_ID = nmwp.ID
<where>
is_deleted = 0
mwo.is_deleted = 0
<if test="workOrder.runStatus != null and workOrder.runStatus != ''">
AND mwo.RUN_STATUS = #{workOrder.runStatus}
AND mwo.RUN_STATUS IN
<foreach collection="workOrder.runStatus.split(',')" item="runStatus" open="(" separator="," close=")">
#{runStatus}
</foreach>
</if>
<if test="workOrder.cardNo != null and workOrder.cardNo != ''">
AND mwo.CARD_NO LIKE concat(concat('%', #{workOrder.cardNo}),'%')
@ -131,35 +98,14 @@
<if test="workOrder.yoCode != null and workOrder.yoCode != ''">
AND myo.YO_CODE LIKE concat(concat('%', #{workOrder.yoCode}),'%')
</if>
<if test="workOrder.yieldType != null and workOrder.yieldType != ''">
AND myo.YIELD_TYPE IN
<foreach collection="workOrder.yieldType.split(',')" item="yieldType" open="(" separator="," close=")">
#{yieldType}
</foreach>
</if>
</where>
ORDER BY mwo.CREATE_TIME DESC
</select>
<select id="getMaxByCodePattern" resultType="org.springblade.desk.produce.pojo.entity.WorkOrder">
SELECT * FROM (select * from MES_WORK_ORDER where WO_CODE like concat(#{codePattern},'%') order by WO_CODE desc) WHERE ROWNUM = 1
</select>
<select id="getMaxByCardNo" resultType="org.springblade.desk.produce.pojo.entity.WorkOrder">
SELECT * FROM (select * from MES_WORK_ORDER where card_no like concat(#{cardNo},'%')
<if test="ypCode != null and ypCode != ''">
AND YP_CODE LIKE concat(#{ypCode},'%')
</if>
order by card_no desc ) WHERE ROWNUM = 1
</select>
<select id="getWorkOrderByCardNo" resultType="org.springblade.desk.produce.pojo.entity.WorkOrder">
SELECT * FROM (select * from MES_WORK_ORDER where card_no = #{code}
<if test="i == -1">
and run_status = -1
</if>
order by wo_id desc ) WHERE ROWNUM = 1
</select>
<select id="getMaxByBatchNo" resultType="org.springblade.desk.produce.pojo.entity.WorkOrder">
SELECT * FROM (SELECT a.*
FROM MES_WORK_ORDER a INNER JOIN MES_YIELD_ORDER b ON a.yo_id = b.id
WHERE a.batch_no LIKE concat(#{codePattern},'%') AND LENGTH(a.batch_no) = LENGTH(#{codePattern}) + 2
AND b.po_code LIKE concat(#{ypCode},'%')
ORDER BY a.batch_no DESC) WHERE ROWNUM = 1
</select>
<select id="getMaxByMesCardNo" resultType="org.springblade.desk.produce.pojo.entity.WorkOrder">
SELECT * FROM (SELECT * FROM MES_WORK_ORDER WHERE mes_card_no LIKE concat(#{codePattern},'%') ORDER BY mes_card_no DESC) WHERE ROWNUM = 1
</select>
</mapper>

@ -1,36 +0,0 @@
<?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.produce.mapper.WorkOrderRunMapper">
<!-- 通用查询映射结果 -->
<resultMap id="workOrderRunResultMap" type="org.springblade.desk.produce.pojo.entity.WorkOrderRun">
<result column="ID" property="id"/>
<result column="WO_ID" property="woId"/>
<result column="WO_CODE" property="woCode"/>
<result column="RUN_TYPE" property="runType"/>
<result column="OUT_TEAM" property="outTeam"/>
<result column="IN_TEAM" property="inTeam"/>
<result column="OUT_CUSTOMER" property="outCustomer"/>
<result column="IN_CUSTOMER" property="inCustomer"/>
<result column="MEMO" property="memo"/>
<result column="APPROVAL_MAN" property="approvalMan"/>
<result column="APPROVAL_MEMO" property="approvalMemo"/>
<result column="PRINT_FLAG" property="printFlag"/>
<result column="DELIVER_KEY" property="deliverKey"/>
<result column="CLOSE_OR_NOT" property="closeOrNot"/>
<result column="PRINT_MAN" property="printMan"/>
<result column="RUN_STATUS" property="runStatus"/>
<result column="SYSTEM_DATA" property="systemData"/>
<result column="COLLABORATE" property="collaborate"/>
<result column="APPROVAL_TIME" property="approvalTime"/>
<result column="CREATE_USER" property="createUser"/>
<result column="CREATE_DEPT" property="createDept"/>
<result column="CREATE_TIME" property="createTime"/>
<result column="UPDATE_USER" property="updateUser"/>
<result column="UPDATE_TIME" property="updateTime"/>
<result column="STATUS" property="status"/>
<result column="IS_DELETED" property="isDeleted"/>
</resultMap>
</mapper>

@ -2,6 +2,7 @@ package org.springblade.desk.produce.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseService;
import org.springblade.desk.produce.pojo.dto.InBatchesDTO;
import org.springblade.desk.produce.pojo.dto.ListProProcessDTO;
import org.springblade.desk.produce.pojo.dto.WorkOrderDTO;
import org.springblade.desk.produce.pojo.entity.WorkOrder;
@ -9,6 +10,7 @@ import org.springblade.desk.produce.pojo.entity.WorkOrderRun;
import org.springblade.desk.produce.pojo.entity.WorkPlanRun;
import org.springblade.desk.produce.pojo.vo.BatchPrepareVO;
import org.springblade.desk.produce.pojo.vo.WorkOrderVO;
import org.springblade.desk.produce.pojo.vo.WorkPlanRunVO;
import java.util.List;
@ -30,7 +32,7 @@ public interface IWorkOrderService extends BaseService<WorkOrder> {
BatchPrepareVO batchesPrepare(Long woId);
boolean inBatches(Long oldWoId, WorkOrder workOrder, Long userId);
boolean inBatches(Long oldWoId, InBatchesDTO inBatchesDTO, Long userId);
boolean turnType(Long id, Integer yieldType, Long userId);
@ -42,5 +44,5 @@ public interface IWorkOrderService extends BaseService<WorkOrder> {
* <p>方法名: listProProcess </p>
* <p>方法描述: 转单加载组装数据 </p>
*/
List<WorkPlanRun> listProProcess(ListProProcessDTO listProProcessDTO);
List<WorkPlanRunVO> listProProcess(ListProProcessDTO listProProcessDTO);
}

@ -2,23 +2,28 @@ package org.springblade.desk.produce.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.desk.basic.service.IProcessAbilityService;
import org.springblade.desk.dashboard.pojo.entity.BsProcessSetEntity;
import org.springblade.desk.dashboard.service.IBsProcessSetService;
import org.springblade.desk.order.pojo.entity.YieldOrder;
import org.springblade.desk.order.pojo.enums.YieldOrderEnum;
import org.springblade.desk.order.service.IYieldOrderService;
import org.springblade.desk.produce.mapper.WorkOrderMapper;
import org.springblade.desk.produce.pojo.dto.InBatchesDTO;
import org.springblade.desk.produce.pojo.dto.ListProProcessDTO;
import org.springblade.desk.produce.pojo.dto.WorkOrderDTO;
import org.springblade.desk.produce.pojo.entity.*;
import org.springblade.desk.produce.pojo.vo.BatchPrepareVO;
import org.springblade.desk.produce.pojo.vo.WorkOrderVO;
import org.springblade.desk.produce.pojo.vo.WorkPlanRunVO;
import org.springblade.desk.produce.pojo.vo.WorkPlanVO;
import org.springblade.desk.produce.service.*;
import org.springblade.desk.quality.pojo.entity.InspectionTask;
import org.springblade.desk.quality.pojo.entity.PlanTest;
@ -27,12 +32,13 @@ import org.springblade.desk.quality.service.IPlanTestService;
import org.springblade.desk.quality.service.IWorkPlanItemService;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.transaction.annotation.Transactional;
import java.rmi.ServerException;
import java.time.Instant;
import java.time.LocalDateTime;
import java.util.*;
import java.util.stream.Collectors;
import static com.alibaba.fastjson2.util.DateUtils.DEFAULT_ZONE_ID;
@ -69,6 +75,8 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
private final IPlateAroundService plateAroundService;
private final IProcessAbilityService processAbilityService;
@Override
public IPage<WorkOrderVO> selectWorkOrderPage(IPage<WorkOrderVO> page, WorkOrderDTO workOrder) {
return page.setRecords(baseMapper.selectWorkOrderPage(page, workOrder));
@ -79,6 +87,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
WorkOrder workOrder = this.getById(woId);
YieldOrder yieldOrder = yieldOrderService.getById(workOrder.getYoId());
BatchPrepareVO batchPrepareVO = new BatchPrepareVO();
batchPrepareVO.setId(woId);
batchPrepareVO.setYieldOrder(yieldOrder);
batchPrepareVO.setWoCode(this.nextCode(yieldOrder.getYpCode()));
batchPrepareVO.setCardNo(this.nextCardNo(yieldOrder.getYpCode(),workOrder.getCardNo()));
@ -88,7 +97,8 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
}
@Override
public boolean inBatches(Long oldWoId, WorkOrder workOrder, Long userId) {
@Transactional(rollbackFor = Exception.class)
public boolean inBatches(Long oldWoId, InBatchesDTO inBatchesDTO, Long userId) {
WorkOrder oldWo = this.getById(oldWoId);
WorkOrder newWo = new WorkOrder();
YieldOrder newYie = new YieldOrder();
@ -97,21 +107,21 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
BeanUtils.copyProperties(oldYie, newYie);
newYie.setId(null);
newYie.setYpQty(workOrder.getMakeQty());
newYie.setBatchNo(workOrder.getBatchNo());
newYie.setCardNo(workOrder.getCardNo());
newYie.setYpQty(inBatchesDTO.getMakeQty());
newYie.setBatchNo(inBatchesDTO.getBatchNo());
newYie.setCardNo(inBatchesDTO.getCardNo());
newYie.setMemo("分批创建订单,用于二次来查原单");
newYie.setStatus(YieldOrderEnum.STATUS_PROCESSING.getCode());
yieldOrderService.save(newYie);
YieldOrder newPj1 = yieldOrderService.getYoByCardNo(workOrder.getCardNo());
YieldOrder newPj1 = yieldOrderService.getYoByCardNo(inBatchesDTO.getCardNo());
newWo.setId(null);
newWo.setYoId(newPj1.getId());
newWo.setMakeQty(workOrder.getMakeQty());
newWo.setWoCode(workOrder.getWoCode());
newWo.setBatchNo(workOrder.getBatchNo());
newWo.setMakeQty(inBatchesDTO.getMakeQty());
newWo.setWoCode(inBatchesDTO.getWoCode());
newWo.setBatchNo(inBatchesDTO.getBatchNo());
newWo.setOemType(-1);
newWo.setCardNo(workOrder.getCardNo());
newWo.setMemo(workOrder.getMemo());
newWo.setCardNo(inBatchesDTO.getCardNo());
newWo.setMemo(inBatchesDTO.getMemo());
newWo.setMesCardNo(this.nextMesCardNo(oldWo.getMesCardNo()));
oldWo.setMakeQty(oldWo.getMakeQty() - newWo.getMakeQty());
@ -148,9 +158,16 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
//产生车间运行记录信息
WorkOrderRun oldRun = workOrderRunService.getById(oldWo.getWorId());
WorkOrderRun wr = WorkOrderRun.builder().woId(newWo.getId()).woCode(newWo.getWoCode()).runType(WorkOrderRun.RUN_TYPE_2)
.inTeam(oldRun != null ? oldRun.getInTeam() : null).memo("分批(厂内)").approvalMan(userId).systemData("1")
.collaborate(newWo.getCollaborate()).runStatus(WorkOrderRun.RUN_STATUS_ISSUED).build();
WorkOrderRun wr = new WorkOrderRun();
wr.setWoId(newWo.getId());
wr.setWoCode(newWo.getWoCode());
wr.setRunType(WorkOrderRun.RUN_TYPE_2);
wr.setInTeam(oldRun != null ? oldRun.getInTeam() : null);
wr.setMemo("分批(厂内)");
wr.setApprovalMan(userId);
wr.setSystemData("1");
wr.setCollaborate(newWo.getCollaborate());
wr.setRunStatus(WorkOrderRun.RUN_STATUS_ISSUED);
workOrderRunService.save(wr);
newWo.setWorId(wr.getId());
//保存作业计划
@ -181,6 +198,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
}
@Override
@Transactional(rollbackFor = Exception.class)
public boolean transferBill(List<WorkOrderRun> workOrderRunList, List<WorkPlanRun> wprList) {
if (wprList == null || wprList.isEmpty()) {
return false;
@ -261,7 +279,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
}
@Override
public List<WorkPlanRun> listProProcess(ListProProcessDTO listProProcessDTO) {
public List<WorkPlanRunVO> listProProcess(ListProProcessDTO listProProcessDTO) {
List<Long> woIds = listProProcessDTO.getWoIds();
Integer runType = listProProcessDTO.getRunType();
if (CollectionUtils.isEmpty(woIds) || runType == null) {
@ -269,11 +287,12 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
}
Long curWoId = woIds.get(0);
List<WorkPlan> wpList = workPlanService.list(Wrappers.lambdaQuery(WorkPlan.class).eq(WorkPlan::getWoId, curWoId));
List<WorkPlanRun> wprList = new ArrayList<>(wpList.size());
List<WorkOrderRun> workOrderRuns = workOrderRunService.list(Wrappers.lambdaQuery(WorkOrderRun.class).eq(WorkOrderRun::getWoId, curWoId));
List<WorkPlanRunVO> wprList = new ArrayList<>(wpList.size());
// 拿出第一个单子对应的可以派外协的工序
String proName = "";
for (WorkPlan wp : wpList) {
WorkPlanRun wpr = new WorkPlanRun();
WorkPlanRunVO wpr = new WorkPlanRunVO();
//验证
if (!this.checkWp(wp, runType)) {
continue;
@ -292,9 +311,15 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
proName = proName + "," + wp.getOrders() + "_" + wp.getPpsId();
}
wpr.setCaId(wp.getCaId());
wpr.setProcessAbility(processAbilityService.getById(wp.getCaId()));
wpr.setStartTime(localDateTimeToDate(wp.getStartTime()));
wpr.setEndTime(localDateTimeToDate(wp.getEndTime()));
wpr.setWpId(wp.getWoId());
WorkPlanVO wpVO = new WorkPlanVO();
BeanUtils.copyProperties(wp, wpr);
wpVO.setProcessSet(bsProcessSetService.getById(wp.getPpsId()));
wpr.setWpId(wp.getId());
wpr.setWorkPlan(wpVO);
wpr.setWorkOrderRun(CollectionUtils.isNotEmpty(workOrderRuns) ? workOrderRuns.get(0) : null);
wprList.add(wpr);
}
@ -376,17 +401,23 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
// 如果是烧结部件,子件同样关闭
YieldOrder yieldOrder = yieldOrderService.getById(workOrder.getYoId());
if (YieldOrder.YIELD_TYPE_2.equals(yieldOrder.getYieldType())) {
List<WorkOrder> prWorkOrderList = this.list(Wrappers.lambdaQuery(WorkOrder.class).eq(WorkOrder::getYoId, yieldOrder.getId()));
if (prWorkOrderList != null && !prWorkOrderList.isEmpty()) {
for (WorkOrder prWorkOrder : prWorkOrderList) {
if (prWorkOrder.getRunStatus() < WorkOrder.RUN_STATUS_COMPLETED) {
// 修改为关闭
prWorkOrder.setRunStatus(WorkOrder.RUN_STATUS_VOIDED);
this.updateById(prWorkOrder);
List<YieldOrder> list = yieldOrderService.list(Wrappers.lambdaQuery(YieldOrder.class).eq(YieldOrder::getFatherYoId, yieldOrder.getId()));
if (CollectionUtils.isNotEmpty(list)) {
// 将list转换为id集合
List<Long> yoIds = list.stream().map(YieldOrder::getId).toList();
List<WorkOrder> prWorkOrderList = this.list(Wrappers.lambdaQuery(WorkOrder.class).in(WorkOrder::getYoId, yoIds));
if (prWorkOrderList != null && !prWorkOrderList.isEmpty()) {
for (WorkOrder prWorkOrder : prWorkOrderList) {
if (prWorkOrder.getRunStatus() < WorkOrder.RUN_STATUS_COMPLETED) {
// 修改为关闭
prWorkOrder.setRunStatus(WorkOrder.RUN_STATUS_VOIDED);
}
}
this.updateBatchById(prWorkOrderList);
}
}
}
this.updateById(workOrder);
}
}

@ -205,7 +205,7 @@ public class WorkPlanServiceImpl extends BaseServiceImpl<WorkPlanMapper, WorkPla
wp.setFrontWpId(null);
wp.setNextWpId(null);
wp.setCreateTime(new Date());
wp.setFrontWpId(frontWp.getId());
wp.setFrontWpId(frontWp == null ? null : frontWp.getId());
if (frontWp != null) {
frontWp.setNextWpId(wp.getId());
}

Loading…
Cancel
Save