liweidong
liweidong-hj 4 days ago
commit 9c9c7b4d54
  1. 13
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/basic/pojo/vo/UrgentPartVO.java
  2. 4
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/request/PriceSheetQuery.java
  3. 8
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/feign/IDisTaskingClient.java
  4. 4
      blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataOemClient.java
  5. 2
      blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataOemClientFallback.java
  6. 6
      blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/impl/PlanAssignSteerModifyServiceImpl.java
  7. 6
      blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/impl/UrgentPartServiceImpl.java
  8. 6
      blade-service/blade-desk/src/main/java/org/springblade/desk/oem/controller/OemOrderController.java
  9. 17
      blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/impl/OemStatementServiceImpl.java
  10. 10
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/feign/DisTaskingClient.java
  11. 2
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkOrderRunMapper.xml
  12. 2
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkOrderService.java
  13. 2
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PlateAroundServiceImpl.java
  14. 40
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderRunServiceImpl.java
  15. 6
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java
  16. 3
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/feign/ErpDataOemClientImpl.java
  17. 4
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataOemMapper.xml
  18. 1
      blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StClassRequestServiceImpl.java

@ -3,12 +3,16 @@
*/
package org.springblade.desk.basic.pojo.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.desk.basic.pojo.entity.UrgentPart;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serial;
import java.util.Date;
/**
* [急件维护] 视图实体类
@ -33,4 +37,13 @@ public class UrgentPartVO extends UrgentPart {
@Schema(description = "状态名称")
private String statusName;
@Schema(description = "需求交期")
@DateTimeFormat(pattern = DateUtil.PATTERN_DATETIME)
@JsonFormat(pattern = DateUtil.PATTERN_DATETIME)
private Date requireDateStart;
@Schema(description = "需求交期")
@DateTimeFormat(pattern = DateUtil.PATTERN_DATETIME)
@JsonFormat(pattern = DateUtil.PATTERN_DATETIME)
private Date requireDateEnd;
}

@ -2,6 +2,7 @@ package org.springblade.desk.oem.pojo.request;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.springblade.core.mp.support.Query;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDate;
@ -69,4 +70,7 @@ public class PriceSheetQuery {
@Schema(description = "价格类型")
private String pricetype;
@Schema(description = "查询条件")
private Query query;
}

@ -3,6 +3,7 @@ package org.springblade.desk.produce.feign;
import org.springblade.core.launch.constant.AppConstant;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
/**
* 调度任务同步接口
@ -20,6 +21,7 @@ public interface IDisTaskingClient {
String RECEIVE_ORDER = API_PREFIX + "/receiveOrder";
String RB_TRANSFER_ORDER = API_PREFIX + "/rbTransferOrder";
String UN_BIND_EC = API_PREFIX + "/unBindEc";
String SAVE_WORK_ORDER_RUN = API_PREFIX + "/saveWorkOrderRun";
/**
@ -43,4 +45,10 @@ public interface IDisTaskingClient {
@GetMapping(UN_BIND_EC)
boolean unBindEc();
/**
* 保存生产运行记录
*/
@GetMapping(SAVE_WORK_ORDER_RUN)
boolean saveWorkOrderRun(@RequestParam String woId);
}

@ -44,10 +44,10 @@ public interface IErpDataOemClient {
/**
* 报价单查询
*
* @param query
* @param priceSheetQuery
*/
@GetMapping(PRICE_SHEET_DATA)
R<Page<PriceSheetVO>> priceSheetData(@SpringQueryMap PriceSheetQuery priceSheetQuery, @SpringQueryMap Query query);
R<Page<PriceSheetVO>> priceSheetData(@SpringQueryMap PriceSheetQuery priceSheetQuery);
/**
* 协作外协订单接收

@ -22,7 +22,7 @@ public class IErpDataOemClientFallback implements IErpDataOemClient {
}
@Override
public R<Page<PriceSheetVO>> priceSheetData(PriceSheetQuery priceSheetQuery, Query query) {
public R<Page<PriceSheetVO>> priceSheetData(PriceSheetQuery priceSheetQuery) {
return R.fail("查询报价单 失败");
}

@ -171,7 +171,7 @@ public class PlanAssignSteerModifyServiceImpl extends BaseServiceImpl<PlanAssign
PlanAssignSteerModify modify = auditAndGetModify(id, result, remark);
Long currentUserId = AuthUtil.getUserId();
String currentUserName = AuthUtil.getUserName();
String currentUserName = AuthUtil.getNickName();
String userAccount = AuthUtil.getUserAccount();
Date now = new Date();
@ -533,11 +533,11 @@ public class PlanAssignSteerModifyServiceImpl extends BaseServiceImpl<PlanAssign
node.setLabel("审批人");
// 根据审批结果设置状态和值
if (PlanAssignSteerModify.ApprovalStatus.PASS.equals(record.getAuditResult())) {
if (RESULT_PASS.equals(record.getAuditResult())) {
node.setValue(record.getAuditorName() != null ? record.getAuditorName() : "未知");
node.setStatus("success");
}
if (PlanAssignSteerModify.ApprovalStatus.REJECT.equals(record.getAuditResult())) {
if (RESULT_REJECT.equals(record.getAuditResult())) {
node.setValue(record.getAuditorName() != null ? record.getAuditorName() : "未知");
node.setStatus("false");
}

@ -66,6 +66,9 @@ public class UrgentPartServiceImpl extends BaseServiceImpl<UrgentPartMapper, Urg
.like(StrUtil.isNotEmpty(urgentPart.getBatchNo()), UrgentPart::getBatchNo, urgentPart.getBatchNo())
.eq(Objects.nonNull(urgentPart.getStatus()), UrgentPart::getStatus, urgentPart.getStatus())
.eq(Objects.isNull(urgentPart.getStatus()),UrgentPart::getStatus, 0)
//需求交期时间范围查询条件
.ge(urgentPart.getRequireDateStart() != null, UrgentPart::getRequireDate, urgentPart.getRequireDateStart())
.le(urgentPart.getRequireDateEnd() != null, UrgentPart::getRequireDate, urgentPart.getRequireDateEnd())
.orderByDesc(UrgentPart::getUpdateTime);
IPage<UrgentPart> iPage = page(page, queryWrapper);
String userIdSet = iPage.getRecords().stream().map(s -> {
@ -169,7 +172,7 @@ public class UrgentPartServiceImpl extends BaseServiceImpl<UrgentPartMapper, Urg
if (StrUtil.isEmpty(excel.getPlanNo()) || StrUtil.isEmpty(excel.getPartCode())) {
throw new RuntimeException("计划单号和零件号为必填项");
}
UrgentPart urgentPart = BeanUtil.copyProperties(excel, UrgentPart.class);
UrgentPart urgentPart = BeanUtil.copyProperties(excel, UrgentPart.class, "status");
if (BeanUtil.isEmpty(urgentPart)){
return null;
}
@ -181,7 +184,6 @@ public class UrgentPartServiceImpl extends BaseServiceImpl<UrgentPartMapper, Urg
if (StrUtil.isNotEmpty(excel.getStatus())) {
urgentPart.setStatus(UrgentPart.UrgentPartStatusEnum.of(excel.getStatus()).getCode());
}
if (urgentPart.getStatus() == null) {
urgentPart.setStatus(urgentPart.getExpireDate().after(now) ? 0 : 1);
}

@ -184,7 +184,8 @@ public class OemOrderController extends BladeController {
@ApiOperationSupport(order = 9)
@Operation(summary = "报价单分页", description = "传入mesOemStatement")
public R<IPage<PriceSheetVO>> priceSheetData(PriceSheetQuery priceSheetQuery, Query query) {
R<Page<PriceSheetVO>> pageR = erpDataOemClient.priceSheetData(priceSheetQuery, query);
priceSheetQuery.setQuery(query);
R<Page<PriceSheetVO>> pageR = erpDataOemClient.priceSheetData(priceSheetQuery);
Page<PriceSheetVO> data = pageR.getData();
Page<PriceSheetVO> pages = new Page<>();
// 复制分页属性
@ -250,7 +251,8 @@ public class OemOrderController extends BladeController {
@Operation(summary = "报价单导出数据", description = "")
public void exportPriceSheetData(PriceSheetQuery priceSheetQuery, Query query, HttpServletResponse response) {
query.setSize(99999);
R<Page<PriceSheetVO>> pageR = erpDataOemClient.priceSheetData(priceSheetQuery, query);
priceSheetQuery.setQuery(query);
R<Page<PriceSheetVO>> pageR = erpDataOemClient.priceSheetData(priceSheetQuery);
Page<PriceSheetVO> data = pageR.getData();
List<PriceSheetVO> list = data.getRecords();
List<PriceSheetExcel> excels = new ArrayList<>();

@ -654,10 +654,10 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper,
query.setOcName(oemName);
query.setInDateStart(putStoreDate);
query.setInDateEnd(putStoreDate);
R<Page<PriceSheetVO>> pageR = erpDataOemClient.priceSheetData(query, new Query() {{
query.setQuery(new Query() {{
setSize(99999);
}});
R<Page<PriceSheetVO>> pageR = erpDataOemClient.priceSheetData(query);
if (pageR != null && pageR.getData() != null) {
return pageR.getData().getRecords();
@ -675,9 +675,10 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper,
private List<PriceSheetVO> getPriceSheets(String oemName) {
PriceSheetQuery query = new PriceSheetQuery();
query.setOcName(oemName);
R<Page<PriceSheetVO>> pageR = erpDataOemClient.priceSheetData(query, new Query() {{
query.setQuery(new Query() {{
setSize(99999);
}});
R<Page<PriceSheetVO>> pageR = erpDataOemClient.priceSheetData(query);
if (pageR != null && pageR.getData() != null) {
return pageR.getData().getRecords();
@ -1508,7 +1509,7 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper,
});
} else {
//工序分组Map<工序, 报价列表>
Map<String, List<PriceSheetVO>> priceSheetMap = priceSheetAllList.stream().collect(Collectors.groupingBy(PriceSheetVO::getGxinfo, () -> new TreeMap<>(Collections.reverseOrder()), // 按键的倒序排序
Map<String, List<PriceSheetVO>> priceSheetMap = priceSheetAllList.stream().filter(item -> item.getGxinfo() != null).collect(Collectors.groupingBy(PriceSheetVO::getGxinfo, () -> new TreeMap<>(Collections.reverseOrder()), // 按键的倒序排序
Collectors.collectingAndThen(Collectors.toList(), list -> {
// 对每个分组内的列表按生效日期倒序排序
return list.stream().sorted(Comparator.comparing(PriceSheetVO::getStartdat).reversed()).collect(Collectors.toList());
@ -1573,9 +1574,10 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper,
if (minPutStoreTime != null) {
query.setInDateEnd(minPutStoreTime.toInstant().atZone(ZoneId.systemDefault()).toLocalDate());
}
R<Page<PriceSheetVO>> pageR = erpDataOemClient.priceSheetData(query, new Query() {{
query.setQuery(new Query() {{
setSize(99999);
}});
R<Page<PriceSheetVO>> pageR = erpDataOemClient.priceSheetData(query);
if (pageR != null && pageR.getData() != null) {
return pageR.getData().getRecords();
@ -1715,11 +1717,12 @@ public class OemStatementServiceImpl extends BaseServiceImpl<OemStatementMapper,
if (startTime == null || validTime == null || putStoreTime == null) {
return false;
}
DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy-MM-dd");
DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
DateTimeFormatter fmt1 = DateTimeFormatter.ofPattern("yyyy-MM-dd");
try {
LocalDate startDate = LocalDate.parse(startTime, fmt);
LocalDate validDate = LocalDate.parse(validTime, fmt);
LocalDate putStoreDate = LocalDate.parse(putStoreTime, fmt);
LocalDate putStoreDate = LocalDate.parse(putStoreTime, fmt1);
if (preFlag) {
return !putStoreDate.isBefore(startDate);
} else {

@ -6,6 +6,7 @@ import org.springblade.core.tenant.annotation.NonDS;
import org.springblade.desk.produce.service.IDisTaskingService;
import org.springblade.desk.produce.service.IHandoverRecordService;
import org.springblade.desk.produce.service.IPdaSaveService;
import org.springblade.desk.produce.service.IWorkOrderService;
import org.springframework.web.bind.annotation.RestController;
/**
@ -25,6 +26,8 @@ public class DisTaskingClient implements IDisTaskingClient {
private final IHandoverRecordService handoverRecordService;
private final IWorkOrderService workOrderService;
@Override
public boolean syncDisTasking() {
return disTaskingService.syncDisTasking(false);
@ -44,4 +47,11 @@ public class DisTaskingClient implements IDisTaskingClient {
public boolean unBindEc() {
return pdaSaveServiceImpl.unBindEc();
}
@Override
public boolean saveWorkOrderRun(String woId) {
workOrderService.addPrWorkOrderRun(woId);
return true;
}
}

@ -133,7 +133,7 @@
AND mwor.run_type = #{query.runType}
</if>
<if test="query.orderCode != null and query.orderCode != ''">
AND two.wo_code LIKE CONCAT('%', CONCAT(#{query.orderCode}, '%'))
AND mwor.wo_code LIKE CONCAT('%', CONCAT(#{query.orderCode}, '%'))
</if>
<if test="query.partCode != null and query.partCode != ''">
AND tyo.part_code LIKE CONCAT('%', CONCAT(#{query.partCode}, '%'))

@ -295,5 +295,5 @@ public interface IWorkOrderService extends BaseService<WorkOrder> {
/**
* 生产运行记录
*/
void addPrWorkOrderRun(WorkOrder workOrder);
void addPrWorkOrderRun(String woId);
}

@ -107,7 +107,7 @@ public class PlateAroundServiceImpl extends BaseServiceImpl<PlateAroundMapper, P
List<Long> tsIds = getTsIds();
BeforePlatInVO beforePlatOutCardNo = baseMapper.getBeforePlatOutCardNo(wo.getId(), tsIds, AuthUtil.getUserId());
if (beforePlatOutCardNo == null) {
throw new ServiceException("未找到镀前入库记录,无法出库!");
throw new ServiceException("未找到镀前入库记录,请上序班组镀前入库!");
}
long count = this.count(Wrappers.lambdaQuery(PlateAround.class).eq(PlateAround::getWpId, beforePlatOutCardNo.getWpId()).eq(PlateAround::getPaType, PlateAround.BEFORE_PLAN_OUT));
if (count > 0) {

@ -163,16 +163,22 @@ public class WorkOrderRunServiceImpl extends BaseServiceImpl<WorkOrderRunMapper,
@Override
public R batchApproval(List<OemApproval> approvals) {
List<String> errors = new ArrayList<>();
for (int i = 0; i < approvals.size(); i++) {
OemApproval approval = approvals.get(i);
try {
R r = singleApprovalInNewTransaction(approval);
} catch (Exception e) {
log.error(String.format("审批失败,单据ID: {}", approval.getWorkOrderRunId()), e);
String errMsg = "审批失败,单据ID: " + approval.getWorkOrderRunId();
log.error(errMsg, e);
errors.add(errMsg + "," + e.getMessage());
}
}
if (!errors.isEmpty()) {
return R.fail(String.join(";", errors));
}
return R.success("操作完成");
}
@ -203,10 +209,11 @@ public class WorkOrderRunServiceImpl extends BaseServiceImpl<WorkOrderRunMapper,
String wxCode = workOrderRun.getWoCode();
Oem oldOemCustomer = oemMapper.selectById(workOrderRun.getInCustomer());
WorkOrderRun oldWorkOrderRun = workOrderRunMapper.selectById(wo.getWorId());
oldWorkOrderRun.setRunStatus(WorkOrderRun.RUN_STATUS_VOIDED);
workOrderRunMapper.updateById(oldWorkOrderRun);
wp = workPlanMapper.selectOne(new LambdaQueryWrapper<WorkPlan>()
.eq(WorkPlan::getWoId, wo.getId()));
if (oldWorkOrderRun != null) {
oldWorkOrderRun.setRunStatus(WorkOrderRun.RUN_STATUS_VOIDED);
workOrderRunMapper.updateById(oldWorkOrderRun);
}
wp = workPlanMapper.selectById(wo.getWpId());
wo.setCollaborate(workOrderRun.getCollaborate());
// 若当前序小于等于已接收
@ -296,16 +303,31 @@ public class WorkOrderRunServiceImpl extends BaseServiceImpl<WorkOrderRunMapper,
}
//根据外协工艺更新车间订单信息
OemCraftAbilityEntity oa = null;
Long oemId = null;
Long craftAbilityId = null;
if (wp.getStatus().equals(WorkPlan.STATUS_WORK_OK)) {
WorkPlan nextWp = workPlanMapper.selectOne(new LambdaQueryWrapper<WorkPlan>()
.eq(WorkPlan::getId, wp.getNextWpId()));
oa = oemCraftAbilityMapper.selectOne(new LambdaQueryWrapper<OemCraftAbilityEntity>().eq(OemCraftAbilityEntity::getOtherId, nextWp.getOcId())
.eq(OemCraftAbilityEntity::getCraftAbilityId, nextWp.getCaId()));
if (nextWp != null) {
oemId = nextWp.getOcId();
craftAbilityId = nextWp.getCaId();
oa = oemCraftAbilityMapper.selectOne(new LambdaQueryWrapper<OemCraftAbilityEntity>().eq(OemCraftAbilityEntity::getOtherId, oemId)
.eq(OemCraftAbilityEntity::getCraftAbilityId, craftAbilityId));
}
} else {
oa = oemCraftAbilityMapper.selectOne(new LambdaQueryWrapper<OemCraftAbilityEntity>().eq(OemCraftAbilityEntity::getOtherId, wp.getOcId())
.eq(OemCraftAbilityEntity::getCraftAbilityId, wp.getCaId()));
oemId = wp.getOcId();
craftAbilityId = wp.getCaId();
oa = oemCraftAbilityMapper.selectOne(new LambdaQueryWrapper<OemCraftAbilityEntity>().eq(OemCraftAbilityEntity::getOtherId, oemId)
.eq(OemCraftAbilityEntity::getCraftAbilityId, craftAbilityId));
}
//更改订单调度员和计划员
if (oa == null) {
Oem oem = oemMapper.selectById(oemId);
String oemName = oem != null ? oem.getOcName() : "未知厂商";
String errorMsg = String.format("外协厂商【%s】(ID:%s)的工艺能力(ID:%s)未维护,可在基础数据-外协工艺能力页面维护", oemName, oemId, craftAbilityId);
log.error(errorMsg);
throw new ServiceException(errorMsg);
}
workOrderService.maintainOrder(wo, oa.getPlanner(), oa.getDispatcher(), workOrderRun, true);
}
Date date = DateUtil.plusDays(wo.getSendDownTime(), days);

@ -2910,7 +2910,11 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
}
@Override
public void addPrWorkOrderRun(WorkOrder workOrder) {
public void addPrWorkOrderRun(String woId) {
WorkOrder workOrder = this.getById(woId);
if (workOrder == null) {
throw new ServiceException("请核实车间订单[" + woId + "]信息是否有误!!!!");
}
WorkPlan prWorkPlan = workPlanService.getById(workOrder.getWpId());
if (prWorkPlan.getOcId() != null) {
//产生外协生产进度记录信息

@ -43,7 +43,8 @@ public class ErpDataOemClientImpl implements IErpDataOemClient {
@Override
@GetMapping(PRICE_SHEET_DATA)
public R<Page<PriceSheetVO>> priceSheetData(@SpringQueryMap PriceSheetQuery priceSheetQuery, @SpringQueryMap Query query) {
public R<Page<PriceSheetVO>> priceSheetData(@SpringQueryMap PriceSheetQuery priceSheetQuery) {
Query query = priceSheetQuery.getQuery();
IPage<PriceSheetVO> iPages = erpDataOemService.priceSheetData(Condition.getPage(query), priceSheetQuery);
Page<PriceSheetVO> pages = new Page<>();

@ -31,10 +31,10 @@
AND a.remark LIKE concat(concat('%', #{query.memo}),'%')
</if>
<if test="query.inDateStart != null and query.inDateStart != ''">
AND to_date(${query.inDateStart},'YYYY-MM-DD'), <![CDATA[ >= ]]> a.startdat
AND #{query.inDateStart} <![CDATA[ >= ]]> a.startdat
</if>
<if test="query.inDateEnd != null and query.inDateEnd != ''">
AND to_date(${query.inDateEnd},'YYYY-MM-DD'), <![CDATA[ <= ]]> a.validdat
AND #{query.inDateEnd} <![CDATA[ <= ]]> a.validdat
</if>
<if test="query.validflags != null and query.validflags != ''">
AND a.validflag IN

@ -354,7 +354,6 @@ public class StClassRequestServiceImpl extends BaseServiceImpl<StClassRequestMap
record.setUserId(picker);
record.setDeptId(user.getDeptId());
record.setCreateUser(user.getUserId());
record.setUserId(crMan);
/* 原明细字段 */
record.setGoodsId(stock.getGoodsId());

Loading…
Cancel
Save