liweidong
liweidong-hj 5 days ago
commit 37c991482e
  1. 2
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/basic/pojo/entity/PlanAssignSteerModify.java
  2. 115
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/basic/pojo/entity/UrgentPart.java
  3. 6
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/basic/pojo/vo/PlanAssignSteerModifyVO.java
  4. 36
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/basic/pojo/vo/UrgentPartVO.java
  5. 14
      blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/feign/WmsTaskClient.java
  6. 4
      blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/pojo/entity/StOtherOutRecord.java
  7. 114
      blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/UrgentPartController.java
  8. 74
      blade-service/blade-desk/src/main/java/org/springblade/desk/basic/excel/UrgentPartExcel.java
  9. 32
      blade-service/blade-desk/src/main/java/org/springblade/desk/basic/mapper/UrgentPartMapper.java
  10. 19
      blade-service/blade-desk/src/main/java/org/springblade/desk/basic/mapper/UrgentPartMapper.xml
  11. 64
      blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/IUrgentPartService.java
  12. 26
      blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/impl/PlanAssignSteerModifyServiceImpl.java
  13. 235
      blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/impl/UrgentPartServiceImpl.java
  14. 25
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/PlanAssignSteerModifyController.java
  15. BIN
      blade-service/blade-desk/src/main/resources/Excel/BA/急件维护导入模板.xls
  16. 12
      blade-service/blade-wms/src/main/java/org/springblade/wms/feign/WmsTaskClientImpl.java

@ -77,7 +77,7 @@ public class PlanAssignSteerModify extends BaseEntity {
private Long createMan;
@Schema(description = "审批状态: 0-草稿, 1-一级审批中, 2-审批通过, 3-审批驳回, 4-二级审批中")
private Integer approvalStatus = ApprovalStatus.DRAFT;
private Integer approvalStatus;
@Schema(description = "附件")
private String attachment;

@ -0,0 +1,115 @@
/**
* Author: AI Assistant
*/
package org.springblade.desk.basic.pojo.entity;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import org.springblade.core.mp.base.BaseEntity;
import org.springblade.core.tool.utils.ObjectUtil;
import org.springblade.core.tool.utils.StringPool;
import java.io.Serial;
import java.util.Arrays;
import java.util.Date;
/**
* [急件维护] 实体类
*
* @author AI Assistant
* @since 2026-05-22
*/
@Data
@TableName("BS_URGENT_PART")
@Schema(description = "UrgentPart Entity对象")
@EqualsAndHashCode(callSuper = true)
public class UrgentPart extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
public static final String COL_PLAN_NO = "PLAN_NO";
public static final String COL_PART_CODE = "PART_CODE";
public static final String COL_BATCH_NO = "BATCH_NO";
public static final String COL_REQUIRE_DATE = "REQUIRE_DATE";
public static final String COL_EXPIRE_DATE = "EXPIRE_DATE";
public static final String COL_STATUS = "STATUS";
public static final String COL_MAINTAIN_MAN = "MAINTAIN_MAN";
public static final String COL_MAINTAIN_TIME = "MAINTAIN_TIME";
@Schema(description = "计划单号")
private String planNo;
@Schema(description = "零件号")
private String partCode;
@Schema(description = "批次号")
private String batchNo;
@Schema(description = "需求交期")
private Date requireDate;
@Schema(description = "到期日期")
private Date expireDate;
@Schema(description = "状态:0-生效,1-作废")
private Integer status;
@Schema(description = "维护人")
private Long maintainMan;
@Schema(description = "维护时间")
private Date maintainTime;
@Getter
@AllArgsConstructor
public enum UrgentPartStatusEnum {
EMPTY(StringPool.EMPTY, -1),
/**
* 状态0-生效1-作废
*/
EFFECTIVE("生效", 0),
VOID("作废", 1),
;
final String name;
final int code;
/**
* 匹配枚举值
*
* @param name 名称
* @return UrgentPartStatusEnum
*/
public static UrgentPartStatusEnum of(String name) {
return Arrays.stream(UrgentPartStatusEnum.values())
.filter(enumItem -> enumItem.getName().equalsIgnoreCase(name != null ? name : "web"))
.findFirst()
// 在没有找到匹配项时返回默认值
.orElse(UrgentPartStatusEnum.EMPTY);
}
/**
* 根据值获取名称
*
* @param code 状态码
* @return 状态名称
*/
public static String getName(int code) {
UrgentPartStatusEnum item = Arrays.stream(UrgentPartStatusEnum.values())
.filter(enumItem -> enumItem.getCode() == code)
.findFirst()
.orElse(null);
return ObjectUtil.isEmpty(item) ? StringPool.EMPTY : item.getName();
}
}
}

@ -32,4 +32,10 @@ public class PlanAssignSteerModifyVO extends PlanAssignSteerModify {
@Schema(description = "申请人名称")
private String createManName;
@Schema(description = "审批结果: 1-通过, 2-驳回")
Integer result;
@Schema(description = "审批意见")
String remark;
}

@ -0,0 +1,36 @@
/**
* Author: AI Assistant
*/
package org.springblade.desk.basic.pojo.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.desk.basic.pojo.entity.UrgentPart;
import java.io.Serial;
/**
* [急件维护] 视图实体类
*
* @author AI Assistant
* @since 2026-05-22
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class UrgentPartVO extends UrgentPart {
@Serial
private static final long serialVersionUID = 1L;
@Schema(description = "维护人名称")
private String maintainManName;
@Schema(description = "创建人名称")
private String createUserName;
@Schema(description = "修改人名称")
private String updateUserName;
@Schema(description = "状态名称")
private String statusName;
}

@ -1,11 +1,16 @@
package org.springblade.wms.feign;
import org.springblade.core.tool.api.R;
import org.springblade.wms.pojo.dto.StGraphiteMoldOutDTO;
import org.springblade.wms.pojo.entity.StGraphiteMoldOut;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.cloud.openfeign.SpringQueryMap;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.Date;
import java.util.List;
/**
* @version 1.0
@ -28,6 +33,8 @@ public interface WmsTaskClient {
String SAVE_SUB_ORDER_WAREHOUSING = API_PREFIX + "/saveSubOrderWarehousing";
String GENERATE_PRE_OUT_ORDER = API_PREFIX + "/generatePreOutOrder";
/**
* 物料状态监控同步erp
*/
@ -50,4 +57,11 @@ public interface WmsTaskClient {
void saveSubOrderWarehousing(@RequestParam("goodsCode")String goodsCode, @RequestParam("batchNo")String batchNo, @RequestParam("quantity")Double quantity,
@RequestParam("shId")Long shId, @RequestParam("slId")Long slId, @RequestParam("date") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")Date date,
@RequestParam("userId")Long userId) throws Exception;
/**
* 石墨模预出库
*/
@PostMapping(GENERATE_PRE_OUT_ORDER)
R<List<StGraphiteMoldOut>> generatePreOutOrder(@SpringQueryMap StGraphiteMoldOutDTO dto);
}

@ -144,6 +144,10 @@ public class StOtherOutRecord extends TenantEntity {
* 报废类型玻璃饼报废
*/
public static final Short BF_TYPE_GLASS_CAKE = 3;
/**
* 报废类型石墨模报废
*/
public static final Short BF_TYPE_GRAPHITE_MOLD = 4;
/**
* 审批中(审批中)

@ -0,0 +1,114 @@
package org.springblade.desk.basic.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.core.io.Resource;
import jakarta.servlet.http.HttpServletResponse;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.excel.util.ExcelUtil;
import org.springblade.core.log.annotation.ApiLog;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.tool.utils.Func;
import org.springblade.desk.basic.constant.BAModuleConst;
import org.springblade.desk.basic.excel.UrgentPartExcel;
import org.springblade.desk.basic.pojo.entity.UrgentPart;
import org.springblade.desk.basic.pojo.vo.UrgentPartVO;
import org.springblade.desk.basic.service.IUrgentPartService;
import org.springblade.desk.basic.util.ExcelExtUtil;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
import java.util.Map;
/**
* [急件维护] 控制器
*
* @author AI Assistant
* @since 2026-05-22
*/
@RestController
@RequestMapping(BAModuleConst.CONTROLLER_PREFIX + "/UrgentPart")
@Data
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@Slf4j
@Tag(name = "[BA][急件维护]", description = "[急件维护]接口")
public class UrgentPartController extends BladeController {
private final IUrgentPartService service;
/**
* [急件维护] 分页查询
*/
@GetMapping("/page")
@ApiOperationSupport(order = 20)
@Operation(summary = "分页查询", description = "传入UrgentPartVO Obj")
public R<IPage<UrgentPartVO>> page(UrgentPartVO urgentPart, Query query) {
IPage<UrgentPart> page = Condition.getPage(query);
IPage<UrgentPartVO> pagesVO = service.selectUrgentPartPage(
page, urgentPart
);
return R.data(pagesVO);
}
/**
* [急件维护] 导入Excel
*/
@PostMapping("/importExcel")
@ApiOperationSupport(order = 70)
@ApiLog("急件维护导入")
@Operation(summary = "导入Excel", description = "MultipartFile")
public R importExcel(@RequestParam("file") MultipartFile file) {
return service.importExcel(file);
}
/**
* [急件维护] 作废
*/
@PostMapping("/voidRecords")
@ApiOperationSupport(order = 71)
@ApiLog("急件维护作废")
@Operation(summary = "作废", description = "传入ids")
public R voidRecords(@Parameter(description = "主键集合", required = true) @RequestBody List<Long> ids) {
return service.voidRecords(ids);
}
/**
* [急件维护] 导出Excel
*/
@GetMapping("/exportExcel")
@ApiOperationSupport(order = 72)
@Operation(summary = "导出Excel", description = "传入UrgentPart")
public void exportExcel(@Parameter(hidden = true) @RequestParam Map<String, Object> urgentPart,
HttpServletResponse response) {
List<UrgentPartExcel> list = service.exportUrgentPart(Condition.getQueryWrapper(urgentPart, UrgentPart.class));
ExcelUtil.export(response, "[急件维护]数据" + DateUtil.time(),
"[急件维护]数据表", list, UrgentPartExcel.class);
}
/**
* [急件维护] 下载Excel模板
*/
@GetMapping("/downloadExcelTemplate")
@ApiOperationSupport(order = 73)
@Operation(summary = "下载Excel模板", description = "")
public ResponseEntity<Resource> downloadExcelTemplate() {
return ExcelExtUtil.downloadXlsTemplate(
"Excel/BA/急件维护导入模板.xls",
"导入模版-急件维护.xls");
}
}

@ -0,0 +1,74 @@
/**
* Author: AI Assistant
*/
package org.springblade.desk.basic.excel;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.alibaba.excel.annotation.write.style.ContentRowHeight;
import com.alibaba.excel.annotation.write.style.HeadRowHeight;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* [急件维护] Excel实体类
*
* @author AI Assistant
* @since 2026-05-22
*/
@Data
@ColumnWidth(25)
@HeadRowHeight(20)
@ContentRowHeight(18)
public class UrgentPartExcel implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 计划单号
*/
@ColumnWidth(20)
@ExcelProperty("计划单号")
private String planNo;
/**
* 零件号
*/
@ColumnWidth(20)
@ExcelProperty("零件号")
private String partCode;
/**
* 批次号
*/
@ColumnWidth(20)
@ExcelProperty("批次号")
private String batchNo;
/**
* 需求交期
*/
@ColumnWidth(20)
@ExcelProperty("需求交期")
private Date requireDate;
/**
* 到期日期
*/
@ColumnWidth(20)
@ExcelProperty("到期日期")
private Date expireDate;
/**
* 状态
*/
@ColumnWidth(20)
@ExcelProperty("状态")
private String status;
}

@ -0,0 +1,32 @@
/**
* Author: AI Assistant
*/
package org.springblade.desk.basic.mapper;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.apache.ibatis.annotations.Param;
import org.springblade.desk.basic.excel.UrgentPartExcel;
import org.springblade.desk.basic.pojo.entity.UrgentPart;
import org.springblade.desk.basic.pojo.vo.UrgentPartVO;
import java.util.List;
/**
* [急件维护] Mapper 接口
*
* @author AI Assistant
* @since 2026-05-22
*/
public interface UrgentPartMapper extends BaseMapper<UrgentPart> {
/**
* 获取导出数据
*
* @param queryWrapper 查询条件
* @return List<UrgentPartExcel>
*/
List<UrgentPartExcel> exportUrgentPart(@Param("ew") Wrapper<UrgentPart> queryWrapper);
}

@ -0,0 +1,19 @@
<?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.basic.mapper.UrgentPartMapper">
<!-- 导出数据 -->
<select id="exportUrgentPart" resultType="org.springblade.desk.basic.excel.UrgentPartExcel">
SELECT
PLAN_NO as planNo,
PART_CODE as partCode,
BATCH_NO as batchNo,
REQUIRE_DATE as requireDate,
EXPIRE_DATE as expireDate,
STATUS as status
FROM BS_URGENT_PART
${ew.customSqlSegment}
</select>
</mapper>

@ -0,0 +1,64 @@
/**
* Author: AI Assistant
*/
package org.springblade.desk.basic.service;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseService;
import org.springblade.core.tool.api.R;
import org.springblade.desk.basic.excel.UrgentPartExcel;
import org.springblade.desk.basic.pojo.entity.UrgentPart;
import org.springblade.desk.basic.pojo.vo.UrgentPartVO;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
/**
* [急件维护] 服务类
*
* @author AI Assistant
* @since 2026-05-22
*/
public interface IUrgentPartService extends BaseService<UrgentPart> {
/**
* 自定义分页
*
* @param page 分页参数
* @param urgentPart 查询参数
* @return IPage<UrgentPartVO>
*/
IPage<UrgentPartVO> selectUrgentPartPage(IPage<UrgentPart> page, UrgentPartVO urgentPart);
/**
* 导出数据
*
* @param queryWrapper 查询条件
* @return List<UrgentPartExcel>
*/
List<UrgentPartExcel> exportUrgentPart(Wrapper<UrgentPart> queryWrapper);
/**
* 检查并更新过期数据
*
* @return 更新的记录数
*/
void checkAndUpdateExpiredRecords();
/**
* 导入Excel
*
* @param file Excel文件
* @return R
*/
R importExcel(MultipartFile file);
/**
* 作废
*
* @param ids 主键ID集合
* @return R
*/
R voidRecords(List<Long> ids);
}

@ -96,19 +96,30 @@ public class PlanAssignSteerModifyServiceImpl extends BaseServiceImpl<PlanAssign
if (totalScale.compareTo(new BigDecimal("100")) != 0) {
return R.fail("分派比例总和必须等于100");
}
Long userId = AuthUtil.getUserId();
PlanAssignSteerModify entity = new PlanAssignSteerModify();
BeanUtil.copyProperties(modify, entity);
if (Objects.isNull(entity.getId())) {
entity.setCreateTime(new Date());
entity.setUpdateTime(new Date());
entity.setCreateUser(userId);
entity.setUpdateUser(userId);
save(entity);
for (PlanAssignSteerModifyDVO detail : modifyLst) {
PlanAssignSteerModifyD d = new PlanAssignSteerModifyD();
BeanUtil.copyProperties(detail, d);
d.setPasmId(entity.getId());
detail.setCreateTime(new Date());
detail.setUpdateTime(new Date());
d.setCreateUser(userId);
d.setUpdateUser(userId);
planAssignSteerModifyDService.save(d);
}
} else {
entity.setUpdateTime(new Date());
entity.setUpdateUser(userId);
updateById(entity);
planAssignSteerModifyDService.remove(Wrappers.lambdaQuery(PlanAssignSteerModifyD.class)
.eq(PlanAssignSteerModifyD::getPasmId,entity.getId()));
@ -117,6 +128,10 @@ public class PlanAssignSteerModifyServiceImpl extends BaseServiceImpl<PlanAssign
BeanUtil.copyProperties(detail, d);
d.setId(null);
d.setPasmId(entity.getId());
d.setCreateTime(new Date());
d.setUpdateTime(new Date());
d.setCreateUser(userId);
d.setUpdateUser(userId);
planAssignSteerModifyDService.save(d);
}
}
@ -367,14 +382,13 @@ public class PlanAssignSteerModifyServiceImpl extends BaseServiceImpl<PlanAssign
@Override
public PlanAssignSteerModifyVO getDetail(Long pasmId, Long caId) {
List<PlanAssignSteerModifyDVO> modifyLst = null;
PlanAssignSteerModifyVO modifyVO = null;
List<PlanAssignSteerModifyDVO> modifyLst = new ArrayList<>();
PlanAssignSteerModifyVO modifyVO = new PlanAssignSteerModifyVO();
Boolean initSteer = false;
if (pasmId != null) {
List<PlanAssignSteerModifyVO> entity = baseMapper.findByPasmId(pasmId);
List<PlanAssignSteerModifyVO> list = baseMapper.findByPasmId(pasmId);
if (list.isEmpty()) {
if (Objects.isNull( list)) {
return null;
}
@ -406,7 +420,7 @@ public class PlanAssignSteerModifyServiceImpl extends BaseServiceImpl<PlanAssign
}
if (initSteer) {
modifyVO = null;
modifyVO = new PlanAssignSteerModifyVO();
// 根据工艺能力和外协厂商查找现有分派规则
List<PlanAssignSteer> assignSteers = planAssignSteerService.list(Wrappers.lambdaQuery(PlanAssignSteer.class)
.eq(PlanAssignSteer::getPlatingId, caId));

@ -0,0 +1,235 @@
/**
* Author: AI Assistant
*/
package org.springblade.desk.basic.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import jakarta.annotation.Resource;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.excel.util.ExcelUtil;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import cn.hutool.core.bean.BeanUtil;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.tool.utils.Func;
import org.springblade.desk.basic.excel.UrgentPartExcel;
import org.springblade.desk.basic.mapper.UrgentPartMapper;
import org.springblade.desk.basic.pojo.entity.UrgentPart;
import org.springblade.desk.basic.pojo.vo.UrgentPartVO;
import org.springblade.desk.basic.service.IUrgentPartService;
import org.springblade.system.cache.UserCache;
import org.springblade.system.feign.IUserClient;
import org.springblade.system.pojo.entity.User;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import java.util.*;
import java.util.stream.Collectors;
/**
* [急件维护] 服务实现类
*
* @author AI Assistant
* @since 2026-05-22
*/
@Service
@Data
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@Slf4j
public class UrgentPartServiceImpl extends BaseServiceImpl<UrgentPartMapper, UrgentPart> implements IUrgentPartService {
@Resource
IUserClient userClient;
@Override
public IPage<UrgentPartVO> selectUrgentPartPage(IPage<UrgentPart> page, UrgentPartVO urgentPart) {
// 查询前先检查并更新过期数据
checkAndUpdateExpiredRecords();
// 使用IService的page方法查询
LambdaQueryWrapper<UrgentPart> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper
.eq(UrgentPart::getIsDeleted, 0)
.like(StrUtil.isNotEmpty(urgentPart.getPlanNo()), UrgentPart::getPlanNo, urgentPart.getPlanNo())
.like(StrUtil.isNotEmpty(urgentPart.getPartCode()), UrgentPart::getPartCode, urgentPart.getPartCode())
.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)
.orderByDesc(UrgentPart::getUpdateTime);
IPage<UrgentPart> iPage = page(page, queryWrapper);
String userIdSet = iPage.getRecords().stream().map(s -> {
ArrayList<String> userIds = new ArrayList<>();
if (Objects.nonNull(s.getCreateUser())) {
userIds.add(s.getCreateUser().toString());
}
if (Objects.nonNull(s.getUpdateUser())) {
userIds.add(s.getUpdateUser().toString());
}
if (Objects.nonNull(s.getMaintainMan())) {
userIds.add(s.getMaintainMan().toString());
}
return userIds;
}).flatMap(Collection::stream).collect(Collectors.joining( ","));
List<User> users = userClient.userListByIds(userIdSet);
Map<Long,String> userMap = users.stream().collect(Collectors.toMap(User::getId, User::getName));
List<UrgentPartVO> collect = iPage.getRecords().stream().map(s -> {
UrgentPartVO urgentPartVO = BeanUtil.copyProperties(s, UrgentPartVO.class);
// 设置状态名称
if (s.getStatus() != null) {
urgentPartVO.setStatusName(UrgentPart.UrgentPartStatusEnum.getName(s.getStatus()));
}
// 设置用户名称
if (CollUtil.isNotEmpty(userMap)) {
urgentPartVO.setMaintainManName(userMap.getOrDefault(s.getMaintainMan(), null));
urgentPartVO.setCreateUserName(userMap.getOrDefault(s.getCreateUser(), null));
urgentPartVO.setUpdateUserName(userMap.getOrDefault(s.getUpdateUser(), null));
}
return urgentPartVO;
}).collect(Collectors.toList());
IPage<UrgentPartVO> voPage = new Page<>();
BeanUtil.copyProperties(iPage, voPage, "records");
voPage.setRecords(collect);
return voPage;
}
@Override
public List<UrgentPartExcel> exportUrgentPart(Wrapper<UrgentPart> queryWrapper) {
List<UrgentPartExcel> urgentPartList = baseMapper.exportUrgentPart(queryWrapper);
return urgentPartList;
}
@Override
public void checkAndUpdateExpiredRecords() {
update(Wrappers.lambdaUpdate(UrgentPart.class)
.lt(UrgentPart::getExpireDate, new Date())
.set(UrgentPart::getStatus, 1)
.set(UrgentPart::getMaintainTime,new Date()));
}
/**
* 设置VO的用户名称
*
* @param vo 视图对象
*/
private void setVOValue(UrgentPartVO vo) {
// 设置维护人名称
if (vo.getMaintainMan() != null) {
User maintainMan = UserCache.getUser(vo.getMaintainMan());
if (maintainMan != null) {
vo.setMaintainManName(maintainMan.getRealName());
}
}
// 设置创建人名称
if (vo.getCreateUser() != null) {
User createUser = UserCache.getUser(vo.getCreateUser());
if (createUser != null) {
vo.setCreateUserName(createUser.getRealName());
}
}
// 设置修改人名称
if (vo.getUpdateUser() != null) {
User updateUser = UserCache.getUser(vo.getUpdateUser());
if (updateUser != null) {
vo.setUpdateUserName(updateUser.getRealName());
}
}
}
@Override
@Transactional(rollbackFor = Exception.class)
public R importExcel(MultipartFile file) {
try {
List<UrgentPartExcel> excelList = ExcelUtil.read(file, UrgentPartExcel.class);
if (excelList == null || excelList.isEmpty()) {
return R.fail("导入数据不能为空");
}
Long userId = AuthUtil.getUserId();
Date now = new Date();
List<UrgentPart> urgentPartList = excelList.stream().map(excel -> {
// 校验必填字段
if (StrUtil.isEmpty(excel.getPlanNo()) || StrUtil.isEmpty(excel.getPartCode())) {
throw new RuntimeException("计划单号和零件号为必填项");
}
UrgentPart urgentPart = BeanUtil.copyProperties(excel, UrgentPart.class);
if (BeanUtil.isEmpty(urgentPart)){
return null;
}
// 如果到期日期为空,默认为当前时间+60天
if (Objects.isNull(urgentPart.getExpireDate())) {
urgentPart.setExpireDate(DateUtil.plusDays(now, 60));
}
// 根据是否超过有效日期判断状态:未过期为生效(0),已过期为作废(1)
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);
}
urgentPart.setMaintainTime(now);
urgentPart.setCreateUser(userId);
urgentPart.setCreateTime(now);
urgentPart.setUpdateUser(userId);
urgentPart.setUpdateTime(now);
return urgentPart;
}).filter(BeanUtil::isNotEmpty)
.collect(Collectors.toList());
boolean result = saveBatch(urgentPartList);
if (result) {
return R.success("导入成功,共导入 " + urgentPartList.size() + " 条数据");
} else {
return R.fail("导入失败");
}
} catch (Exception e) {
log.error("导入Excel失败", e);
return R.fail("导入失败:" + e.getMessage());
}
}
@Override
@Transactional(rollbackFor = Exception.class)
public R voidRecords(List<Long> ids) {
if (CollUtil.isEmpty(ids)) {
return R.fail("请选择要作废的记录");
}
Long userId = AuthUtil.getUserId();
Date now = new Date();
// 批量更新状态为作废
LambdaUpdateWrapper<UrgentPart> queryWrapper = Wrappers.lambdaUpdate(UrgentPart.class)
.in(UrgentPart::getId, ids)
.set(UrgentPart::getStatus,1)
.set(UrgentPart::getMaintainMan,userId)
.set(UrgentPart::getMaintainTime,now);
boolean result = update(queryWrapper);
if (result) {
log.info("作废急件记录成功,IDs: {}", ids);
return R.success("作废成功");
} else {
return R.fail("作废失败");
}
}
}

@ -3,6 +3,7 @@
*/
package org.springblade.desk.quality.controller;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.v3.oas.annotations.Operation;
@ -33,6 +34,7 @@ import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
import java.util.Objects;
/**
* [分派控制调整] 控制器
@ -102,7 +104,7 @@ public class PlanAssignSteerModifyController extends BladeController {
/**
* [分派控制调整] 逻辑删除
*/
@PostMapping("/remove")
@GetMapping("/remove")
@ApiOperationSupport(order = 61)
@ApiLog("分派控制调整删除")
@Operation(summary = "逻辑删除", description = "传入ids")
@ -144,10 +146,23 @@ public class PlanAssignSteerModifyController extends BladeController {
@ApiOperationSupport(order = 91)
@ApiLog("审批")
@Operation(summary = "审批", description = "传入id, result, remark")
public R audit(
@Parameter(description = "主键ID", required = true) @RequestParam Long id,
@Parameter(description = "审批结果: 1-通过, 2-驳回", required = true) @RequestParam Integer result,
@Parameter(description = "审批意见") @RequestParam(required = false) String remark) {
public R audit(@RequestBody PlanAssignSteerModifyVO vo) {
Long id = vo.getId();
if (Objects.isNull(id)) {
return R.fail("请选择要审批的记录");
}
Integer result = vo.getResult();
if (Objects.isNull(result) || result < 1 || result > 2) {
return R.fail("审批结果: 1-通过, 2-驳回");
}
String remark = vo.getRemark();
if (2 == result && StrUtil.isEmpty(remark)) {
return R.fail("请填写审批意见");
}
return service.audit(id, result, remark);
}

@ -4,12 +4,17 @@ import io.swagger.v3.oas.annotations.Hidden;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.tenant.annotation.NonDS;
import org.springblade.core.tool.api.R;
import org.springblade.wms.pojo.dto.StGraphiteMoldOutDTO;
import org.springblade.wms.pojo.entity.StGraphiteMoldOut;
import org.springblade.wms.service.IStBuyOrderService;
import org.springblade.wms.service.IStGoodsExtService;
import org.springblade.wms.service.IStGraphiteMoldOutService;
import org.springblade.wms.service.IStOtherReceiptRecordService;
import org.springframework.web.bind.annotation.RestController;
import java.util.Date;
import java.util.List;
/**
* @version 1.0
@ -32,6 +37,8 @@ public class WmsTaskClientImpl implements WmsTaskClient{
private final IStOtherReceiptRecordService stOtherReceiptRecordService;
private final IStGraphiteMoldOutService stGraphiteMoldOutService;
@Override
public boolean executeGoodsStatusUpdate() {
stGoodsExtService.executeGoodsStatusUpdate();
@ -47,4 +54,9 @@ public class WmsTaskClientImpl implements WmsTaskClient{
public void saveSubOrderWarehousing(String goodsCode, String batchNo, Double quantity, Long shId, Long slId, Date date, Long userId) throws Exception {
stOtherReceiptRecordService.saveSubOrderWarehousing(goodsCode, batchNo, quantity, shId, slId, date, userId);
}
@Override
public R<List<StGraphiteMoldOut>> generatePreOutOrder(StGraphiteMoldOutDTO dto) {
return R.data(stGraphiteMoldOutService.generatePreOutOrder(dto));
}
}

Loading…
Cancel
Save