加工周期调整

liweidong
qinyulong 1 month ago
parent b7d68c1e29
commit c0f2064aba
  1. 60
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/device/pojo/entity/MeasurementRecordsEntity.java
  2. 48
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/enums/ProcessCycleEnum.java
  3. 4
      blade-service/blade-desk/src/main/java/org/springblade/desk/oem/mapper/OemStatementMapper.xml
  4. 12
      blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/IOemStatementService.java
  5. 44
      blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/impl/OemStatementServiceImpl.java
  6. 22
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderRunServiceImpl.java
  7. 36
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java
  8. 4
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataOemMapper.xml

@ -19,122 +19,122 @@ import java.util.Date;
@EqualsAndHashCode(callSuper = true)
public class MeasurementRecordsEntity extends BaseEntity {
@Schema(name = "名称(设备名称)")
//@Column(name = "mc_name")
//@Column(name = "MC_NAME")
private String mcName;
@Schema(name = "规格")
//@Column(name = "norms")
//@Column(name = "NORMS")
private String norms;
@Schema(name = "类别(管理类别)")
//@Column(name = "mc_class")
//@Column(name = "MC_CLASS")
private String mcClass;
@Schema(name = "计量类型")
//@Column(name = "label_no")
//@Column(name = "LABEL_NO")
private String labelNo;
@Schema(name = "计量子类型")
//@Column(name = "str2")
//@Column(name = "STR2")
private String str2;
@Schema(name = "编号(测量设备编码)")
//@Column(name = "mc_code")
//@Column(name = "MC_CODE")
private String mcCode;
@Schema(name = "使用单位(试用部门)")
//@Column(name = "use_unit")
//@Column(name = "USE_UNIT")
private String useUnit;
@Schema(name = "精度(精度等级)")
//@Column(name = "accuracy")
//@Column(name = "ACCURACY")
private String accuracy;
@Schema(name = "出厂编号")
//@Column(name = "oem_code")
//@Column(name = "OEM_CODE")
private String oemCode;
@Schema(name = "生产厂家(制造厂商)")
//@Column(name = "mc_oem")
//@Column(name = "MC_OEM")
private String mcOem;
@Schema(name = "启用日期")
//@Column(name = "enable_date")
//@Column(name = "ENABLE_DATE")
private Date enableDate;
@Schema(name = "检定日期")
//@Column(name = "when_dccept")
//@Column(name = "WHEN_DCCEPT")
private String whenDccept;
@Schema(name = "型号(型号)")
//@Column(name = "mc_type")
//@Column(name = "MC_TYPE")
private String mcType;
@Schema(name = "检定周期(检定周期)")
//@Column(name = "test_cycle")
//@Column(name = "TEST_CYCLE")
private Integer testCycle;
@Schema(name = "到期日期(有效日期)")
//@Column(name = "due_date")
//@Column(name = "DUE_DATE")
private Date dueDate;
@Schema(name = "报废日期")
//@Column(name = "date2")
//@Column(name = "DATE2")
private Date date2;
@Schema(name = "状态")
//@Column(name = "belong")
//@Column(name = "BELONG")
private String belong;
@Schema(name = "停用日期")
//@Column(name = "when_buy")
//@Column(name = "WHEN_BUY")
private Date whenBuy;
@Schema(name = "检定部门")
//@Column(name = "test_dept")
//@Column(name = "TEST_DEPT")
private String testDept;
@Schema(name = "检定/校验方法(检定校准方法)")
//@Column(name = "test_method")
//@Column(name = "TEST_METHOD")
private String testMethod;
@Schema(name = "备注")
//@Column(name = "str9")
//@Column(name = "STR9")
private String str9;
@Schema(name = "备注2")
//@Column(name = "str10")
//@Column(name = "STR10")
private String str10;
@Schema(name = "使用人工号")
//@Column(name = "assets_no")
//@Column(name = "ASSETS_NO")
private String assetsNo;
@Schema(name = "责任人")
//@Column(name = "str6")
//@Column(name = "STR6")
private String str6;
@Schema(name = "用途分类")
//@Column(name = "purpose_class")
//@Column(name = "PURPOSE_CLASS")
private String purposeClass;
@Schema(name = "超期情况")
//@Column(name = "is_over_str")
//@Column(name = "IS_OVER_STR")
private String isOverStr;
@Schema(name = "类型", title = "1、仪表计量;2、设备计量")
//@Column(name = "cm_type")
//@Column(name = "CM_TYPE")
private Short cmType;
@Schema(name = "是否送检", title = "1:是,0:否")
//@Column(name = "censorship")
//@Column(name = "CENSORSHIP")
private Boolean censorship;
@Schema(name = "检验状态", title = "1:在检,0:未检")
//@Column(name = "check_status")
//@Column(name = "CHECK_STATUS")
private Boolean checkStatus;
@Schema(name = "检验结果", title = "1:合格,0:不合格")
//@Column(name = "check_result")
//@Column(name = "CHECK_RESULT")
private Boolean checkResult;
}

@ -0,0 +1,48 @@
package org.springblade.desk.produce.pojo.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* 加工周期枚举
*
* @author qyl
* @serial 2026年2月28日
*/
@Getter
@AllArgsConstructor
public enum ProcessCycleEnum {
/**
* 加工周期(外协)+
*/
BC_TYPE_CYCLE_OEM(5),
/**
* 加工周期(协作)+
*/
BC_TYPE_CYCLE_HELP(5),
/**
* 加工周期(热表)+
*/
BC_TYPE_CYCLE_HEAT(5),
/**
* 加工周期(烧结)+
*/
BC_TYPE_CYCLE_SIN_TER(5),
/**
* 加工周期(玻璃饼)+
*/
BC_TYPE_CYCLE_SIN_BL(5),
/**
* 加工周期(模具)+
*/
BC_TYPE_CYCLE_SIN_MJ(5),
/**
* 加工周期(金属件)+
*/
BC_TYPE_CYCLE_SIN_JS(5),
;
final Integer value;
}

@ -119,8 +119,8 @@
LEFT JOIN MES_OEM_STATEMENT h ON h.WP_ID = a.ID
INNER JOIN BS_CRAFT_ABILITY I on I.ID = a.CA_ID
WHERE d.PUT_STORE_TIME is not null
AND (g.craft_ids like '%'||i.ID||'%' or g.craft_ids is null)
/*and ((g.bop_name in ('浸保护剂','除镀层','清洗(返修)') and e.po_code not like 'W%') OR g.bop_name not in
/*AND (g.craft_ids like '%'||i.ID||'%' or g.craft_ids is null)
and ((g.bop_name in ('浸保护剂','除镀层','清洗(返修)') and e.po_code not like 'W%') OR g.bop_name not in
('浸保护剂','除镀层','清洗(返修)'))*/
AND ((h.ROS_STATUS IS NOT NULL) OR ( a.ID NOT IN ( SELECT WP_ID FROM MES_OEM_STATEMENT)))

@ -1,6 +1,7 @@
package org.springblade.desk.oem.service;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import org.springblade.core.tool.api.R;
import org.springblade.desk.oem.pojo.entity.OemStatementEntity;
import org.springblade.desk.oem.pojo.excel.OemStatementExcel;
import org.springblade.desk.oem.pojo.request.StatementQuery;
@ -9,6 +10,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseService;
import org.springblade.desk.oem.pojo.vo.StatementVO;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.List;
/**
@ -36,4 +39,13 @@ public interface IOemStatementService extends BaseService<OemStatementEntity> {
*/
List<OemStatementExcel> exportOemStatement(Wrapper<OemStatementEntity> queryWrapper);
/**
* 外协结算
*
* @param statementVOS 结算单以车间执行计划为主表
* @param price 金价
* @param putStoreDate 镀后入库时间
* @return
*/
R oemSettleAccounts(List<StatementVO> statementVOS, BigDecimal price, LocalDate putStoreDate);
}

@ -1,18 +1,30 @@
package org.springblade.desk.oem.service.impl;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import jakarta.annotation.Resource;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springblade.desk.dashboard.utils.DateUtils;
import org.springblade.desk.oem.pojo.entity.OemStatementEntity;
import org.springblade.desk.oem.pojo.excel.OemStatementExcel;
import org.springblade.desk.oem.pojo.request.PriceSheetQuery;
import org.springblade.desk.oem.pojo.request.StatementQuery;
import org.springblade.desk.oem.pojo.vo.OemStatementVO;
import org.springblade.desk.oem.mapper.OemStatementMapper;
import org.springblade.desk.oem.pojo.vo.PriceSheetVO;
import org.springblade.desk.oem.pojo.vo.StatementVO;
import org.springblade.desk.oem.service.IOemStatementService;
import org.springblade.erpdata.feign.IErpDataOemClient;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseServiceImpl;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 外协结算单 服务实现类
@ -23,6 +35,9 @@ import java.util.List;
@Service
public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper, OemStatementEntity> implements IOemStatementService {
@Resource
private IErpDataOemClient erpDataOemClient;
@Override
public IPage<StatementVO> selectOemStatementPage(IPage<StatementVO> page, StatementQuery mesOemStatement) {
return page.setRecords(baseMapper.selectOemStatementPage(page, mesOemStatement));
@ -38,4 +53,33 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper,
return mesOemStatementList;
}
@Override
public R oemSettleAccounts(List<StatementVO> statementVOS, BigDecimal price, LocalDate putStoreDate) {
//以外协厂商分组的Map<厂家代码, 待结算工序结算单列表>
Map<String, List<StatementVO>> oemAndStatementMap = statementVOS.stream().collect(Collectors.groupingBy(StatementVO::getOemCode));
for (Map.Entry<String, List<StatementVO>> listEntry : oemAndStatementMap.entrySet()) {
//外协厂商下全部需要结算的结算单
List<StatementVO> statementVOList = listEntry.getValue();
//以外协代码,日期查出的全部报价单
String oemCode = listEntry.getKey();
PriceSheetQuery query = new PriceSheetQuery();
query.setOcCode(oemCode);
query.setInDateStart(putStoreDate);
query.setInDateEnd(putStoreDate);
R<Page<PriceSheetVO>> pageR = erpDataOemClient.priceSheetData(query, new Query() {{
setSize(99999);
}});
//外协厂商下规定日期内的全部报价单
List<PriceSheetVO> priceSheetVOList = null;
if (pageR != null && pageR.getData() != null && pageR.getData().getRecords() != null && pageR.getData().getRecords().size() > 0) {
priceSheetVOList = pageR.getData().getRecords();
}
statementVOList.forEach(statementVO -> {
});
}
return null;
}
}

@ -28,9 +28,11 @@ import org.springblade.desk.order.pojo.entity.YieldOrder;
import org.springblade.desk.order.pojo.enums.YieldOrderEnum;
import org.springblade.desk.produce.mapper.*;
import org.springblade.desk.produce.pojo.entity.*;
import org.springblade.desk.produce.pojo.enums.ProcessCycleEnum;
import org.springblade.desk.produce.service.IPlateAroundService;
import org.springblade.desk.produce.service.IWorkOrderRunService;
import org.springblade.desk.produce.service.IWorkOrderService;
import org.springblade.erpdata.feign.IErpDataOemClient;
import org.springblade.system.cache.DictCache;
import org.springblade.system.pojo.enums.DictEnum;
import org.springframework.context.annotation.Lazy;
@ -79,6 +81,8 @@ public class WorkOrderRunServiceImpl extends BaseServiceImpl<WorkOrderRunMapper,
private IWorkOrderService workOrderService;
private final IErpDataOemClient erpDataOemClient;
@Resource
@Lazy
private void setPostHandleService(IPlateAroundService plateAroundService) {
@ -322,24 +326,24 @@ public class WorkOrderRunServiceImpl extends BaseServiceImpl<WorkOrderRunMapper,
wo.setTsId(nextWorkPlan.getMakeTeam());
}
wo.setOemType(Integer.valueOf("-1"));
//todo 加工周期(热表)+
// int days = Integer.valueOf(bsBusConfigService.getBusConfig(BsBusConfig.BC_TYPE_CYCLE_HEAT, BsBusConfig.BC_NAME_CYCLE_HEAT).getBcValue());
int days = 5;
//加工周期(热表)+
int days = ProcessCycleEnum.BC_TYPE_CYCLE_HEAT.getValue();
Date date = DateUtil.plusDays(wo.getSendDownTime(), days);
wo.setPlanEndDate(DateUtil.format(date,DateUtil.PATTERN_DATETIME));
workOrderMapper.updateById(wo);
wo = workOrderMapper.selectById(wo.getId());
//todo 更改订单调度员和计划员
// prWorkOrderService.maintainOrder(wo, wo.getMakeTeam().getPlanner(), wo.getMakeTeam().getDispatcher(), workOrderRun, false);
//更改订单调度员和计划员
TeamSet makeTeam = teamSetMapper.selectById(wo.getTsId());
workOrderService.maintainOrder(wo, makeTeam.getPlanner(), makeTeam.getDispatcher(), workOrderRun, false);
//更新车间订单主责任单位
//todo 更新车间订单主责任单位
// prWorkOrderService.updateHostWorkUnit(wo.getId());
//todo 关闭erp外协订单,程序调用存储过程
//关闭erp外协订单,程序调用存储过程
if (!yo.getManualIncrease()) {
// workOrderRunMapper.closeErpOrder(wxCode, workOrderRun.getApprovalMemo());
erpDataOemClient.closeErpOrder(wxCode, workOrderRun.getApprovalMemo());
}
//是否存在外协工序
List<WorkPlan> workPlans = workPlanMapper.selectList(new LambdaQueryWrapper<WorkPlan>()
@ -366,9 +370,9 @@ public class WorkOrderRunServiceImpl extends BaseServiceImpl<WorkOrderRunMapper,
// this.withYield(yo.getId());
//生产订单接收
yo.setReceiveStatus(YieldOrder.CUR_STATUS_NORMAL);
//todo 关闭erp外协订单,程序调用存储过程
//关闭erp外协订单,程序调用存储过程
if (!yo.getManualIncrease() && oldOemCustomer != null) {
// workOrderRunMapper.closeErpOrder(wxCode, workOrderRun.getApprovalMemo());
erpDataOemClient.closeErpOrder(wxCode, workOrderRun.getApprovalMemo());
}
}
} else {

@ -36,6 +36,7 @@ import org.springblade.desk.produce.pojo.dto.QueryByReadStatusDTO;
import org.springblade.desk.produce.pojo.dto.WorkOrderDTO;
import org.springblade.desk.produce.pojo.entity.*;
import org.springblade.desk.produce.pojo.enums.WorkOrderEnum;
import org.springblade.desk.produce.pojo.enums.ProcessCycleEnum;
import org.springblade.desk.produce.pojo.vo.*;
import org.springblade.desk.produce.service.*;
import org.springblade.desk.quality.pojo.entity.InspectionTask;
@ -1029,21 +1030,15 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
public void maintainOrder(WorkOrder workOrder, Long planner, Long dispatcher, WorkOrderRun workOrderRun, Boolean oem) throws Exception {
YieldOrder pjYieldOrder = yieldOrderMapper.selectById(workOrder.getYoId());
int days = 5;
//todo 旧MES有个烧结配置,从配置里读取信息。外协改为通过字典方式读取
// BsBusConfig bc;
// 旧MES有个烧结配置,从配置里读取信息。改为通过枚举方式读取
if (oem) {
// bc = bsBusConfigService.getBusConfig(BsBusConfig.BC_TYPE_CYCLE_OEM, BsBusConfig.BC_NAME_CYCLE_OEM);
if (StringUtil.isNotBlank(DictCache.getValue(DictEnum.PROCESS_CYCLE, WorkOrder.OEM_TYPE_WHOLE))) {
days = Integer.valueOf(DictCache.getValue(DictEnum.PROCESS_CYCLE, WorkOrder.OEM_TYPE_WHOLE));
}
days = ProcessCycleEnum.BC_TYPE_CYCLE_OEM.getValue();
workOrder.setOem("1");
workOrder.setOemOut("0");
workOrder.setOemType(WorkOrder.OEM_TYPE_WHOLE);
Date date = DateUtil.plusDays(workOrder.getSendDownTime(), days);
workOrder.setPlanEndDate(DateUtil.format(date, DateUtil.PATTERN_DATETIME));
pjYieldOrder.setBusinessType(YieldOrder.BUSINESS_TYPE_WX);
} else {
// bc = bsBusConfigService.getBusConfig(BsBusConfig.BC_TYPE_CYCLE_HEAT, BsBusConfig.BC_NAME_CYCLE_HEAT);
days = ProcessCycleEnum.BC_TYPE_CYCLE_HEAT.getValue();
workOrder.setOem("0");
workOrder.setOemOut("1");
workOrder.setOemType(Integer.valueOf(FlowConst.STATUS_NEW));
@ -1059,17 +1054,18 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
workOrder.setDispatcher(dispatcher);
workOrder.setWorId(workOrderRun.getId());
// if (PjYieldOrder.YIELD_TYPE_2.equals(pjYieldOrder.getYieldType())) {
// bc = bsBusConfigService.getBusConfig(BsBusConfig.BC_TYPE_CYCLE_SIN_TER, BsBusConfig.BC_NAME_CYCLE_SIN_TER);
// } else if (PjYieldOrder.YIELD_TYPE_3.equals(pjYieldOrder.getYieldType())) {
// bc = bsBusConfigService.getBusConfig(BsBusConfig.BC_TYPE_CYCLE_SIN_BL, BsBusConfig.BC_NAME_CYCLE_BLB);
// } else if (PjYieldOrder.YIELD_TYPE_4.equals(pjYieldOrder.getYieldType()) ||
// PjYieldOrder.YIELD_TYPE_5.equals(pjYieldOrder.getYieldType())) {
// bc = bsBusConfigService.getBusConfig(BsBusConfig.BC_TYPE_CYCLE_SIN_JS, BsBusConfig.BC_NAME_CYCLE_JSJ);
// } else if (PjYieldOrder.YIELD_TYPE_6.equals(pjYieldOrder.getYieldType())) {
// bc = bsBusConfigService.getBusConfig(BsBusConfig.BC_TYPE_CYCLE_SIN_MJ, BsBusConfig.BC_NAME_CYCLE_MJ);
// }
// prWorkOrder.setPlanEndDate(DateTools.dateAdd(prWorkOrder.getSendDownTime(), 5, Integer.valueOf(bc.getBcValue())));
if (YieldOrder.YIELD_TYPE_2.equals(pjYieldOrder.getYieldType())) {
days = ProcessCycleEnum.BC_TYPE_CYCLE_SIN_TER.getValue();
} else if (YieldOrder.YIELD_TYPE_3.equals(pjYieldOrder.getYieldType())) {
days = ProcessCycleEnum.BC_TYPE_CYCLE_SIN_BL.getValue();
} else if (YieldOrder.YIELD_TYPE_4.equals(pjYieldOrder.getYieldType()) ||
YieldOrder.YIELD_TYPE_5.equals(pjYieldOrder.getYieldType())) {
days = ProcessCycleEnum.BC_TYPE_CYCLE_SIN_JS.getValue();
} else if (YieldOrder.YIELD_TYPE_6.equals(pjYieldOrder.getYieldType())) {
days = ProcessCycleEnum.BC_TYPE_CYCLE_SIN_MJ.getValue();
}
Date date = DateUtil.plusDays(workOrder.getSendDownTime(), days);
workOrder.setPlanEndDate(DateUtil.format(date, DateUtil.PATTERN_DATETIME));
baseMapper.updateById(workOrder);
}

@ -28,10 +28,10 @@
AND a.remark LIKE concat(concat('%', #{query.memo}),'%')
</if>
<if test="query.inDateStart != null and query.inDateStart != ''">
AND a.startdat, <![CDATA[ >= ]]> to_date(#{query.inDateStart},'YYYY-MM-DD HH24:MI:SS')
AND to_date(#{query.inDateStart},'YYYY-MM-DD HH24:MI:SS'), <![CDATA[ >= ]]> a.startdat
</if>
<if test="query.inDateEnd != null and query.inDateEnd != ''">
AND a.startdat, <![CDATA[ <= ]]> to_date(#{query.inDateEnd},'YYYY-MM-DD HH24:MI:SS')
AND to_date(#{query.inDateEnd},'YYYY-MM-DD HH24:MI:SS'), <![CDATA[ <= ]]> a.validdat
</if>
</where>
-- ORDER BY a.reqdate DESC

Loading…
Cancel
Save