master
liweidong-hj 3 months ago
parent d6f7f37b05
commit 0bda6ae94d
  1. 2
      src/main/java/com/nov/KgLowDurable/common/Approver.java
  2. 2
      src/main/java/com/nov/KgLowDurable/config/FileUploadConfig.java
  3. 14
      src/main/java/com/nov/KgLowDurable/constant/BatchConstant.java
  4. 140
      src/main/java/com/nov/KgLowDurable/constant/OnePutApproverConstant.java
  5. 4
      src/main/java/com/nov/KgLowDurable/controller/LdPurchaseEndController.java
  6. 2
      src/main/java/com/nov/KgLowDurable/mapper/LdOneOutStorageDetailMapper.java
  7. 2
      src/main/java/com/nov/KgLowDurable/mapper/LdOnePutStorageDetailMapper.java
  8. 18
      src/main/java/com/nov/KgLowDurable/mapper/RoleUserMapper.java
  9. 18
      src/main/java/com/nov/KgLowDurable/pojo/dto/ApplyRequest/ApplyData.java
  10. 26
      src/main/java/com/nov/KgLowDurable/pojo/dto/ApplyRequest/ApplyRequest.java
  11. 19
      src/main/java/com/nov/KgLowDurable/pojo/dto/ApplyRequest/Approver.java
  12. 18
      src/main/java/com/nov/KgLowDurable/pojo/dto/ApplyRequest/Content.java
  13. 17
      src/main/java/com/nov/KgLowDurable/pojo/dto/ApplyRequest/DateValue.java
  14. 18
      src/main/java/com/nov/KgLowDurable/pojo/dto/ApplyRequest/TableRow.java
  15. 17
      src/main/java/com/nov/KgLowDurable/pojo/dto/ApplyRequest/TableValue.java
  16. 40
      src/main/java/com/nov/KgLowDurable/pojo/dto/ApplyRequest/Value.java
  17. 28
      src/main/java/com/nov/KgLowDurable/pojo/entity/RoleUser.java
  18. 2
      src/main/java/com/nov/KgLowDurable/pojo/vo/LdOneOutStorageInfoVO.java
  19. 9
      src/main/java/com/nov/KgLowDurable/service/ILdOneOutStorageDetailService.java
  20. 7
      src/main/java/com/nov/KgLowDurable/service/ILdOnePutStorageDetailService.java
  21. 20
      src/main/java/com/nov/KgLowDurable/service/IRoleUserService.java
  22. 6
      src/main/java/com/nov/KgLowDurable/service/IUserService.java
  23. 48
      src/main/java/com/nov/KgLowDurable/service/Impl/LdConsumerFormServiceImpl.java
  24. 15
      src/main/java/com/nov/KgLowDurable/service/Impl/LdOneFormServiceImpl.java
  25. 7
      src/main/java/com/nov/KgLowDurable/service/Impl/LdOneOutStorageDetailServiceImpl.java
  26. 19
      src/main/java/com/nov/KgLowDurable/service/Impl/LdOneOutStorageServiceImpl.java
  27. 5
      src/main/java/com/nov/KgLowDurable/service/Impl/LdOnePutStorageDetailServiceImpl.java
  28. 82
      src/main/java/com/nov/KgLowDurable/service/Impl/LdOnePutStorageServiceImpl.java
  29. 3
      src/main/java/com/nov/KgLowDurable/service/Impl/LdPurchaseEndServiceImpl.java
  30. 6
      src/main/java/com/nov/KgLowDurable/service/Impl/LdTwoOutStorageDetailServiceImpl.java
  31. 10
      src/main/java/com/nov/KgLowDurable/service/Impl/LdTwoOutStorageServiceImpl.java
  32. 27
      src/main/java/com/nov/KgLowDurable/service/Impl/RoleUserServiceImpl.java
  33. 27
      src/main/java/com/nov/KgLowDurable/service/Impl/UserServiceImpl.java
  34. 3
      src/main/java/com/nov/KgLowDurable/util/SerialNumberUtil.java
  35. 6
      src/main/resources/mapper/LdOneOutStorageDetailMapper.xml
  36. 5
      src/main/resources/mapper/LdOnePutStorageDetailMapper.xml
  37. 15
      src/main/resources/mapper/RoleUserMapper.xml

@ -11,5 +11,7 @@ public class Approver {
private List<String> userid; // 审批人id列表
public Approver(int i, List<String> anXingHe) {
}
}

@ -9,7 +9,7 @@ import org.springframework.stereotype.Component;
public class FileUploadConfig {
// 本地服务器地址
@Value("${file.upload.server:http://192.168.0.107:8083}")
@Value("${file.upload.server:http://localhost:8083}")
private String serverUrl;
// 基础存储路径

@ -98,6 +98,20 @@ public interface BatchConstant {
*/
String SCRAP = "2";
/** web角色信息*/
/**
* 部门库存管理员
*/
String DEPT_STOCK_ADMIN = "deptStockAdmin";
/**
* 站库存管理员
*/
String STATION_STOCK_ADMIN = "stationStockAdmin";

@ -0,0 +1,140 @@
package com.nov.KgLowDurable.constant;
/**
* @author: liweidong
* @create: 2026-01-09
*/
public class OnePutApproverConstant {
// ==================== 基本信息字段 ====================
/**
* 入库人 - 文本控件
* 对应表单中的"入库人"字段
*/
public static final String TEXT_INBOUND_PERSON = "Text-1753842895562";
/**
* 采购单名称 - 文本控件
* 对应表单中的"采购单名称"字段
*/
public static final String TEXT_PURCHASE_ORDER_NAME = "Text-1764895727005";
/**
* 入库单号 - 文本控件
* 对应表单中的"入库单号"字段
*/
public static final String TEXT_INBOUND_ORDER_NO = "Text-1765952634498";
/**
* 入库日期 - 日期控件
* 对应表单中的"入库日期"字段
*/
public static final String DATE_INBOUND_DATE = "Date-1765952657849";
/**
* 入库人部门 - 文本控件
* 对应表单中的"入库人部门"字段
*/
public static final String TEXT_DEPARTMENT = "Text-1767928426958";
/**
* 物资类型 - 文本控件
* 对应表单中的"物资类型"字段
*/
public static final String TEXT_MATERIAL_TYPE = "Text-1767928458421";
/**
* 事由 - 文本域控件
* 对应表单中的"事由"字段
*/
public static final String TEXTAREA_REASON = "Textarea-1765952756865";
/**
* 物资列表 - 表格控件
* 对应表单中的物资明细表格
*/
public static final String TABLE_MATERIAL_LIST = "Table-1752131467618";
// ==================== 表格列字段 ====================
/**
* 物资名称 - 表格列文本控件
* 对应表格中的"物资名称"
*/
public static final String TABLE_COL_MATERIAL_NAME = "Text-1764896053375";
/**
* 物资编号 - 表格列文本控件
* 对应表格中的"物资编号"
*/
public static final String TABLE_COL_MATERIAL_CODE = "Text-1764896063342";
/**
* 规格型号 - 表格列文本控件
* 对应表格中的"规格型号"
*/
public static final String TABLE_COL_SPECIFICATION = "Text-1753775946265";
/**
* 单位 - 表格列文本控件
* 对应表格中的"单位"
*/
public static final String TABLE_COL_UNIT = "Text-1753775948881";
/**
* 类别 - 表格列文本控件
* 对应表格中的"类别"
*/
public static final String TABLE_COL_CATEGORY = "Text-1767928477965";
/**
* 计划数量 - 表格列文本控件
* 对应表格中的"计划数量"
*/
public static final String TABLE_COL_PLAN_QUANTITY = "Text-1765952944297";
/**
* 已入库数量 - 表格列文本控件
* 对应表格中的"已入库数量"
*/
public static final String TABLE_COL_INBOUND_QUANTITY = "Text-1765952953209";
/**
* 单价 - 表格列文本控件
* 对应表格中的"单价"
*/
public static final String TABLE_COL_UNIT_PRICE = "Text-1765952961761";
/**
* 本次入库数量 - 表格列文本控件
* 对应表格中的"本次入库数量"
*/
public static final String TABLE_COL_CURRENT_INBOUND_QUANTITY = "Text-1765952974081";
// ==================== 字段类型 ====================
public static final String TEXT = "Text";
public static final String DATE = "Date";
public static final String TEXTAREA = "Textarea";
public static final String TABLE = "Table";
public static final Integer CHOOSE_DEPARTMENT = 0;
public static final String TEMPLATE_ID = "3WN6zH1mDGyoi5qWQcpBvgZMoevfG63f4ZTytiYt";
public static final Integer NOTIFY_TYPE = 2;
public static final Integer USE_TEMPLATE_APPROVER = 0;
}

@ -58,12 +58,8 @@ public class LdPurchaseEndController {
})
public Result getPurchasesByIds( @RequestParam(required = false) String ids) {
try {
List<LdOnePutStorageDetail> quarters = purchaseEndService.getPurchasesByIds(ids);
return Result.OK(quarters);
} catch (Exception e) {
return Result.error("获取采购单数据");
}
}
}

@ -1,6 +1,7 @@
package com.nov.KgLowDurable.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.nov.KgLowDurable.pojo.entity.LdOneOutStorageDetail;
import com.nov.KgLowDurable.pojo.vo.LdOneOutStorageDetailVO;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@ -22,4 +23,5 @@ public interface LdOneOutStorageDetailMapper extends BaseMapper<LdOneOutStorageD
List<LdOneOutStorageDetail> selectByOneOutStorageId(@Param("oneOutStorageId") Long oneOutStorageId);
List<LdOneOutStorageDetailVO> selectByOneOutId(@Param("oneOutStorageId") Long oneOutStorageId);
}

@ -18,4 +18,6 @@ public interface LdOnePutStorageDetailMapper extends BaseMapper<LdOnePutStorageD
List<LdOnePutStorageDetail> selectSummaryData(@Param("collect")List<Long> collect);
List<LdOnePutStorageDetail> selectByOnePutStorageId(@Param("onePutStorageId") Long onePutStorageId);
List<LdOnePutStorageDetail> selectByLdPurchaseEndId(@Param("ldPurchaseEndId") Long ldPurchaseEndId);
}

@ -0,0 +1,18 @@
package com.nov.KgLowDurable.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.nov.KgLowDurable.pojo.entity.RoleUser;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* Mapper 接口
*
* @author Chill
*/
public interface RoleUserMapper extends BaseMapper<RoleUser> {
List<RoleUser> selectByUserId(@Param("userId") String userId);
}

@ -0,0 +1,18 @@
package com.nov.KgLowDurable.pojo.dto.ApplyRequest;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @author: liweidong
* @create: 2026-01-09
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class ApplyData {
private List<Content> contents;
}

@ -0,0 +1,26 @@
package com.nov.KgLowDurable.pojo.dto.ApplyRequest;
import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @author: liweidong
* @create: 2026-01-09
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
public class ApplyRequest {
private ApplyData applyData;
private List<Approver> approver;
private Integer chooseDepartment;
private String creatorUserid;
private Integer notifyType;
private String templateId;
private Integer useTemplateApprover;
}

@ -0,0 +1,19 @@
package com.nov.KgLowDurable.pojo.dto.ApplyRequest;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @author: liweidong
* @create: 2026-01-09
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Approver {
private Integer attr;
private List<String> userid;
}

@ -0,0 +1,18 @@
package com.nov.KgLowDurable.pojo.dto.ApplyRequest;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author: liweidong
* @create: 2026-01-09
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Content {
private String control;
private String id;
private Value value;
}

@ -0,0 +1,17 @@
package com.nov.KgLowDurable.pojo.dto.ApplyRequest;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author: liweidong
* @create: 2026-01-09
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class DateValue {
private String type;
private String sTimestamp;
}

@ -0,0 +1,18 @@
package com.nov.KgLowDurable.pojo.dto.ApplyRequest;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @author: liweidong
* @create: 2026-01-09
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class TableRow {
private List<Content> list;
}

@ -0,0 +1,17 @@
package com.nov.KgLowDurable.pojo.dto.ApplyRequest;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @author: liweidong
* @create: 2026-01-09
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class TableValue {
private List<TableRow> children;
}

@ -0,0 +1,40 @@
package com.nov.KgLowDurable.pojo.dto.ApplyRequest;
import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @author: liweidong
* @create: 2026-01-09
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
public class Value {
// 用于Text、Textarea、Selector等控件
private String text;
// 用于Date控件
private DateValue date;
// 用于Table控件 - 直接是List<TableRow>
private List<TableRow> children;
// 静态工厂方法
public static Value textValue(String text) {
return new Value(text, null, null);
}
public static Value dateValue(DateValue date) {
return new Value(null, date, null);
}
public static Value tableValue(List<TableRow> rows) {
return new Value(null, null, rows);
}
}

@ -0,0 +1,28 @@
package com.nov.KgLowDurable.pojo.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.nov.KgLowDurable.annotation.Schema;
import lombok.Data;
import java.io.Serializable;
/**
* 实体类
*
* @author Chill
*/
@Data
@TableName("t_role_user")
@Schema(description = "RoleUser对象")
public class RoleUser implements Serializable {
/**
* 角色id
*/
private Integer roleId;
/**
* 用户id
*/
private String userId;
}

@ -26,6 +26,6 @@ public class LdOneOutStorageInfoVO implements Serializable {
/**
* 一级出库明细
*/
private List<LdOneOutStorageDetail> ldOneOutStorageDetails;
private List<LdOneOutStorageDetailVO> ldOneOutStorageDetails;
}

@ -1,6 +1,8 @@
package com.nov.KgLowDurable.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.nov.KgLowDurable.pojo.entity.LdOneOutStorageDetail;
import com.nov.KgLowDurable.pojo.vo.LdOneOutStorageDetailVO;
import java.util.List;
/**
@ -45,4 +47,11 @@ public interface ILdOneOutStorageDetailService extends IService<LdOneOutStorageD
* @return
*/
int deleteByIds(List<Long> ids);
/**
* 根据一级出库ID查询 明细信息
* @param oneOutStorageId
* @return
*/
List<LdOneOutStorageDetailVO> getByOneOutId(Long oneOutStorageId);
}

@ -37,4 +37,11 @@ public interface ILdOnePutStorageDetailService extends IService<LdOnePutStorageD
* @return
*/
int deleteByIds(List<Long> ids);
/**
* 查询已入库数量
* @param ldPurchaseEndId
* @return
*/
List<LdOnePutStorageDetail> getInboundQuantity(Long ldPurchaseEndId);
}

@ -0,0 +1,20 @@
package com.nov.KgLowDurable.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.nov.KgLowDurable.pojo.entity.RoleUser;
import java.util.List;
/**
* 服务类
*
* @author Chill
*/
public interface IRoleUserService extends IService<RoleUser> {
/**
* 根据用户Id 获取角色信息
* @param userId
* @return
*/
List<RoleUser> selectByUserId(String userId);
}

@ -40,4 +40,10 @@ public interface IUserService extends IService<User> {
* @return
*/
List<User> getUserByDeptId(String departmentId);
/**
* 入库审批
* @param json
*/
void submitPutApproval(String json);
}

@ -3,16 +3,23 @@ package com.nov.KgLowDurable.service.Impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.nov.KgLowDurable.constant.BatchConstant;
import com.nov.KgLowDurable.exception.CustomerException;
import com.nov.KgLowDurable.mapper.LdConsumerFormMapper;
import com.nov.KgLowDurable.pojo.entity.LdConsumerForm;
import com.nov.KgLowDurable.pojo.entity.Role;
import com.nov.KgLowDurable.pojo.entity.RoleUser;
import com.nov.KgLowDurable.pojo.entity.User;
import com.nov.KgLowDurable.pojo.vo.LdTwoInventoryVO;
import com.nov.KgLowDurable.service.ILdConsumerFormService;
import com.nov.KgLowDurable.service.ILdDurableFormService;
import com.nov.KgLowDurable.service.*;
import lombok.AllArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
/**
* 服务实现类
@ -28,6 +35,15 @@ public class LdConsumerFormServiceImpl extends ServiceImpl<LdConsumerFormMapper,
@Autowired
ILdDurableFormService durableFormService;
@Autowired
IUserService userService;
@Autowired
IRoleUserService roleUserService;
@Autowired
IRoleService roleService;
@Override
public LdConsumerForm getByMaterialId(Long materialId) {
return consumerFormMapper.selectByMaterialId(materialId);
@ -40,6 +56,34 @@ public class LdConsumerFormServiceImpl extends ServiceImpl<LdConsumerFormMapper,
@Override
public PageInfo<LdConsumerForm> getConsumerFormList(String departmentId, String materialName, Integer num, Integer pageNum, Integer pageSize) {
// User user = userService.getById(userId);
// if(null == user){
// throw new CustomerException("用户信息不存在");
// }
// List<RoleUser> roleUserList = roleUserService.selectByUserId(userId);
// if(CollectionUtils.isEmpty(roleUserList)){
// throw new CustomerException("该用户没有任何角色信息: "+user.getName());
// }
//
// // 先找出所有角色
// Set<String> roleCodes = roleUserList.stream()
// .map(roleUser -> roleService.getById(roleUser.getRoleId()))
// .map(Role::getCode)
// .collect(Collectors.toSet());
//
// // 检查是否有有效角色
// if (!roleCodes.contains(BatchConstant.DEPT_STOCK_ADMIN) &&
// !roleCodes.contains(BatchConstant.STATION_STOCK_ADMIN)) {
// throw new CustomerException("该用户角色无法获取信息: " + user.getName());
// }
//
// // 按优先级处理
// if (roleCodes.contains(BatchConstant.STATION_STOCK_ADMIN)) {
// departmentId = null;
// } else if (roleCodes.contains(BatchConstant.DEPT_STOCK_ADMIN)) {
// departmentId = user.getDepartment();
// }
PageHelper.startPage(pageNum,pageSize);
List<LdConsumerForm> ldConsumerFormList = consumerFormMapper.selectConsumerFormList(departmentId,materialName,num);
PageInfo<LdConsumerForm> pageInfo = new PageInfo<>(ldConsumerFormList);

@ -59,9 +59,24 @@ public class LdOneFormServiceImpl extends ServiceImpl<LdOneFormMapper, LdOneForm
//收集所有数据
List<LdOneForm> list = new ArrayList<>();
for (LdOneForm oneForm : oneFormList) {
if(BatchConstant.CONSUMER.equals(oneForm.getType())){
List<LdOneForm> formList = oneFormMapper.selectByMaterialId(oneForm.getMaterialId(), oneForm.getType());
if(CollectionUtils.isEmpty(formList)){
oneForm.setNum(new BigDecimal(0));
list.add(oneForm);
}else {
list.addAll(formList);
}
}else {
LdOneForm ldOneForm = oneFormMapper.selectById(oneForm.getId());
if(null == ldOneForm){
oneForm.setNum(new BigDecimal(0));
list.add(oneForm);
}else {
list.add(ldOneForm);
}
}
}
//分组并求和
List<LdOneForm> mergedList = list.stream()

@ -6,6 +6,7 @@ import com.nov.KgLowDurable.mapper.LdOnePutStorageDetailMapper;
import com.nov.KgLowDurable.pojo.entity.LdMaterial;
import com.nov.KgLowDurable.pojo.entity.LdOneOutStorageDetail;
import com.nov.KgLowDurable.pojo.entity.LdOnePutStorageDetail;
import com.nov.KgLowDurable.pojo.vo.LdOneOutStorageDetailVO;
import com.nov.KgLowDurable.service.ILdMaterialService;
import com.nov.KgLowDurable.service.ILdOneOutStorageDetailService;
import com.nov.KgLowDurable.service.ILdOnePutStorageDetailService;
@ -66,4 +67,10 @@ public class LdOneOutStorageDetailServiceImpl extends ServiceImpl<LdOneOutStorag
public int deleteByIds(List<Long> ids) {
return oneOutStorageDetailMapper.deleteBatchIds(ids);
}
@Override
public List<LdOneOutStorageDetailVO> getByOneOutId(Long oneOutStorageId) {
return oneOutStorageDetailMapper.selectByOneOutId(oneOutStorageId);
}
}

@ -322,9 +322,9 @@ public class LdOneOutStorageServiceImpl extends ServiceImpl<LdOneOutStorageMappe
.map(LdOneOutStorageDetail::getOutboundQuantity)
.reduce(BigDecimal.ZERO, BigDecimal::add);
detailEntity.setOutboundSumQuantity(currentQuantity.add(totalOutboundQuantity));
// detailEntity.setOutboundSumQuantity(currentQuantity.add(totalOutboundQuantity));
} else {
detailEntity.setOutboundSumQuantity(currentQuantity);
// detailEntity.setOutboundSumQuantity(currentQuantity);
}
}
@ -435,15 +435,22 @@ public class LdOneOutStorageServiceImpl extends ServiceImpl<LdOneOutStorageMappe
if(null == ldOneOutStorage){
throw new CustomerException("出库ID有误");
}
List<LdOneOutStorageDetail> ldOneOutStorageDetailList = oneOutStorageDetailService.getByOneOutStorageId(ldOneOutStorage.getId());
for (LdOneOutStorageDetail oneOutStorageDetail : ldOneOutStorageDetailList) {
List<LdOneOutStorageDetail> oneOutDetailList = oneOutStorageDetailService.selectByDemandEndId(oneOutStorageDetail.getLdDemandEndId());
BigDecimal sum = oneOutDetailList.stream()
List<LdOneOutStorageDetailVO> ldOneOutStorageDetailList = oneOutStorageDetailService.getByOneOutId(ldOneOutStorage.getId());
for (LdOneOutStorageDetailVO oneOutStorageDetail : ldOneOutStorageDetailList) {
//本次出库数量
oneOutStorageDetail.setTheOutboundQuantity(oneOutStorageDetail.getOutboundQuantity());
//计算已出库储量
if(null != oneOutStorageDetail.getLdDemandEndId()){
List<LdOneOutStorageDetail> oneOutVODetailList = oneOutStorageDetailService.selectByDemandEndId(oneOutStorageDetail.getLdDemandEndId());
BigDecimal sum = oneOutVODetailList.stream()
.map(LdOneOutStorageDetail::getOutboundQuantity)
.filter(Objects::nonNull)
.reduce(BigDecimal.ZERO, BigDecimal::add);
oneOutStorageDetail.setOutboundQuantity(sum);
}
}
LdOneOutStorageInfoVO ldOneOutStorageInfoVO = new LdOneOutStorageInfoVO();
ldOneOutStorageInfoVO.setLdOneOutStorage(ldOneOutStorage);

@ -58,4 +58,9 @@ public class LdOnePutStorageDetailServiceImpl extends ServiceImpl<LdOnePutStorag
public int deleteByIds(List<Long> ids) {
return onePutStorageDetailMapper.deleteBatchIds(ids);
}
@Override
public List<LdOnePutStorageDetail> getInboundQuantity(Long ldPurchaseEndId) {
return onePutStorageDetailMapper.selectByLdPurchaseEndId(ldPurchaseEndId);
}
}

@ -1,10 +1,15 @@
package com.nov.KgLowDurable.service.Impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.nov.KgLowDurable.constant.BatchConstant;
import com.nov.KgLowDurable.constant.OnePutApproverConstant;
import com.nov.KgLowDurable.exception.CustomerException;
import com.nov.KgLowDurable.mapper.LdOnePutStorageMapper;
import com.nov.KgLowDurable.pojo.dto.ApplyRequest.*;
import com.nov.KgLowDurable.pojo.dto.LdOnePutStorageDto;
import com.nov.KgLowDurable.pojo.entity.*;
import com.nov.KgLowDurable.pojo.vo.LdOnePutStorageDetailVO;
@ -20,10 +25,7 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.*;
import java.util.stream.Collectors;
/**
@ -316,8 +318,76 @@ public class LdOnePutStorageServiceImpl extends ServiceImpl<LdOnePutStorageMappe
*/
private void submitForApproval(LdOnePutStorageDto dto) {
if (BatchConstant.SUBMIT.equals(dto.getStatus())) {
// TODO: 调用审批接口
// approvalService.submitApproval(dto);
List<TableRow> tableRowList = new ArrayList<>();
for (LdOnePutStorageDetailVO ldOnePutStorageDetailVO : dto.getLdOnePutStorageDetailVOList()) {
// 查询已入库数量
List<LdOnePutStorageDetail> onePutStorageDetailList = onePutStorageDetailService.getInboundQuantity(ldOnePutStorageDetailVO.getLdPurchaseEndId());
BigDecimal totalInboundQuantity = onePutStorageDetailList.stream()
.map(LdOnePutStorageDetail::getInboundQuantity)
.filter(Objects::nonNull)
.reduce(BigDecimal.ZERO, BigDecimal::add);
// 1. 创建表格行
TableRow tableRow = new TableRow(Arrays.asList(
new Content(OnePutApproverConstant.TEXT, OnePutApproverConstant.TABLE_COL_MATERIAL_NAME, Value.textValue(ldOnePutStorageDetailVO.getMaterialName())),
new Content(OnePutApproverConstant.TEXT, OnePutApproverConstant.TABLE_COL_MATERIAL_CODE, Value.textValue(ldOnePutStorageDetailVO.getMaterialCode())),
new Content(OnePutApproverConstant.TEXT, OnePutApproverConstant.TABLE_COL_SPECIFICATION, Value.textValue(ldOnePutStorageDetailVO.getModel())),
new Content(OnePutApproverConstant.TEXT, OnePutApproverConstant.TABLE_COL_UNIT, Value.textValue(ldOnePutStorageDetailVO.getUnit())),
new Content(OnePutApproverConstant.TEXT, OnePutApproverConstant.TABLE_COL_CATEGORY, Value.textValue( BatchConstant.CONSUMER.equals(ldOnePutStorageDetailVO.getType())?"易耗":"耐用")),
new Content(OnePutApproverConstant.TEXT, OnePutApproverConstant.TABLE_COL_PLAN_QUANTITY, Value.textValue(String.valueOf(ldOnePutStorageDetailVO.getRequiredQuantity()))),
new Content(OnePutApproverConstant.TEXT, OnePutApproverConstant.TABLE_COL_INBOUND_QUANTITY, Value.textValue(String.valueOf(totalInboundQuantity))),
new Content(OnePutApproverConstant.TEXT, OnePutApproverConstant.TABLE_COL_UNIT_PRICE, Value.textValue(String.valueOf(ldOnePutStorageDetailVO.getUnitPrice()))),
new Content(OnePutApproverConstant.TEXT, OnePutApproverConstant.TABLE_COL_CURRENT_INBOUND_QUANTITY, Value.textValue(String.valueOf(ldOnePutStorageDetailVO.getTheInboundQuantity())))
));
tableRowList.add(tableRow);
}
// 2. 创建主要内容(完全按照您的JSON结构)
List<Content> contents = Arrays.asList(
new Content(OnePutApproverConstant.TEXT, OnePutApproverConstant.TEXT_INBOUND_PERSON, Value.textValue(dto.getUserInfoVO().getName())),
new Content(OnePutApproverConstant.TEXT, OnePutApproverConstant.TEXT_PURCHASE_ORDER_NAME, Value.textValue(dto.getPurchaseEndInfo())),
new Content(OnePutApproverConstant.TEXT, OnePutApproverConstant.TEXT_INBOUND_ORDER_NO, Value.textValue(dto.getOrderNo())),
new Content(OnePutApproverConstant.DATE, OnePutApproverConstant.DATE_INBOUND_DATE, Value.dateValue(new DateValue("hour", String.valueOf(dto.getInDate().getTime())))),
new Content(OnePutApproverConstant.TEXT, OnePutApproverConstant.TEXT_DEPARTMENT, Value.textValue(dto.getUserInfoVO().getDepartment())),
new Content(OnePutApproverConstant.TEXT, OnePutApproverConstant.TEXT_MATERIAL_TYPE, Value.textValue("1".equals(dto.getMaterialType())?"办公物资":"其他物资")),
new Content(OnePutApproverConstant.TEXTAREA, OnePutApproverConstant.TEXTAREA_REASON, Value.textValue(dto.getReason())),
new Content(OnePutApproverConstant.TABLE, OnePutApproverConstant.TABLE_MATERIAL_LIST,
Value.tableValue(tableRowList))
);
// 3. 创建审批人
List<LdApprove> ldApproves = approveService.getByFromId(dto.getId(), "0");
List<Approver> approvers = new ArrayList<>();
for (LdApprove ldApprove : ldApproves) {
Approver approver = new Approver();
approver.setAttr(2);
approver.setUserid(Arrays.asList(ldApprove.getUserId()));
approvers.add(approver);
}
// 4. 创建完整对象
ApplyData applyData = new ApplyData(contents);
ApplyRequest applyRequest = new ApplyRequest(
applyData,
approvers,
OnePutApproverConstant.CHOOSE_DEPARTMENT,
dto.getUserInfoVO().getUserId(),
OnePutApproverConstant.NOTIFY_TYPE,
OnePutApproverConstant.TEMPLATE_ID,
OnePutApproverConstant.USE_TEMPLATE_APPROVER
);
try {
// 5. 序列化
ObjectMapper mapper = new ObjectMapper();
String json = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(applyRequest);
userService.submitPutApproval(json);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
}
}

@ -91,6 +91,9 @@ public class LdPurchaseEndServiceImpl extends ServiceImpl<LdPurchaseEndMapper, L
for (LdPurchaseEnd ldPurchaseEnd : ldPurchaseEndList) {
LdMaterial material = materialService.getById(ldPurchaseEnd.getMaterialId());
if(null == material){
throw new CustomerException("物资不存在 请检查物资是否存在:"+ldPurchaseEnd.getMaterialName());
}
LdOnePutStorageDetail onePutStorageDetail = new LdOnePutStorageDetail();
onePutStorageDetail.setMaterialId(ldPurchaseEnd.getMaterialId());
onePutStorageDetail.setMaterialName(ldPurchaseEnd.getMaterialName());

@ -57,10 +57,12 @@ public class LdTwoOutStorageDetailServiceImpl extends ServiceImpl<LdTwoOutStorag
List<LdTwoInventoryVO> twoInventoryList = new ArrayList<>();
if(!CollectionUtils.isEmpty(consumerIds)){
twoInventoryList = consumerFormService.getByIds(consumerIds);
List<LdTwoInventoryVO> consumerList = consumerFormService.getByIds(consumerIds);
twoInventoryList.addAll(consumerList);
}
if(!CollectionUtils.isEmpty(durableIds)){
twoInventoryList = durableFormService.getByIds(durableIds);
List<LdTwoInventoryVO> durableList = durableFormService.getByIds(durableIds);
twoInventoryList.addAll(durableList);
}
return twoInventoryList;
}

@ -72,7 +72,7 @@ public class LdTwoOutStorageServiceImpl extends ServiceImpl<LdTwoOutStorageMappe
LdTwoOutStorage ldTwoOutStorage = dto.getLdTwoOutStorage();
// 生成出库单号
String orderNo = serialNumberUtil.generateSimple("SO");
String orderNo = serialNumberUtil.generateSimple("SOW");
ldTwoOutStorage.setOrderNo(orderNo);
// 设置出库操作人
@ -118,10 +118,16 @@ public class LdTwoOutStorageServiceImpl extends ServiceImpl<LdTwoOutStorageMappe
throw new CustomerException("获取审批人失败: " + e.getMessage());
}
// 5. todo 提交审批
//提交审批
submitForApproval(dto);
return true;
}
private void submitForApproval(LdTwoOutStorageDto dto) {
//todo
}
@Override
public LdTwoOutStorageInfoVO getDetail(Long twoOutStorageId) {
//基础信息

@ -0,0 +1,27 @@
package com.nov.KgLowDurable.service.Impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.nov.KgLowDurable.mapper.RoleUserMapper;
import com.nov.KgLowDurable.pojo.entity.RoleUser;
import com.nov.KgLowDurable.service.IRoleUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* 服务实现类
*
* @author Chill
*/
@Service
public class RoleUserServiceImpl extends ServiceImpl<RoleUserMapper, RoleUser> implements IRoleUserService {
@Autowired
RoleUserMapper roleUserMapper;
@Override
public List<RoleUser> selectByUserId(String userId) {
return roleUserMapper.selectByUserId(userId);
}
}

@ -296,4 +296,31 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
public List<User> getUserByDeptId(String departmentId) {
return userMapper.selectByDepartmentId(departmentId);
}
@Override
public void submitPutApproval(String json) {
// Map<String, String> headers = new HashMap<String, String>() {{
// put("Content-Type", "application/json");
// }};
//
// Map<String, String> querys = new HashMap<String, String>() {{
// }};
//
// String resp = null;
// try {
// resp = EntityUtils.toString(
// HttpUtils.doPost(
// "http://10.90.100.231:8132",
// "/qywx/applySubmit",
// "POST",
// headers,
// querys,
// json
// ).getEntity()
// );
// } catch (Exception e) {
// e.printStackTrace();
// }
}
}

@ -49,7 +49,7 @@ public class SerialNumberUtil {
// 最大序列号
private static final int MAX_SEQUENCE = 999;
// 默认前缀集合
private static final String[] DEFAULT_PREFIXES = {"FI","FID","FO","FOD","SI","SID", "SO", "SOD"};
private static final String[] DEFAULT_PREFIXES = {"FI","FID","FO","FOD","SI","SID", "SOW", "SOD"};
/**
* 生成单个单号
@ -215,7 +215,6 @@ public class SerialNumberUtil {
);
}
// ============ 私有辅助方法 ============
/**
* 验证前缀格式

@ -80,6 +80,12 @@
FROM ld_one_out_storage_detail
WHERE one_out_storage_id = #{oneOutStorageId}
</select>
<select id="selectByOneOutId" resultType="com.nov.KgLowDurable.pojo.vo.LdOneOutStorageDetailVO">
SELECT
<include refid="baseColumnList" />
FROM ld_one_out_storage_detail
WHERE one_out_storage_id = #{oneOutStorageId}
</select>
</mapper>

@ -106,5 +106,10 @@
FROM ld_one_put_storage_detail
WHERE one_put_storage_id = #{onePutStorageId}
</select>
<select id="selectByLdPurchaseEndId" resultType="com.nov.KgLowDurable.pojo.entity.LdOnePutStorageDetail">
SELECT
<include refid="baseColumnList" />
FROM ld_one_put_storage_detail where ld_purchase_end_id = #{ldPurchaseEndId} and inbound_status = 2
</select>
</mapper>

@ -0,0 +1,15 @@
<?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="com.nov.KgLowDurable.mapper.RoleUserMapper">
<!-- 通用查询映射结果 -->
<resultMap id="roleMenuResultMap" type="com.nov.KgLowDurable.pojo.entity.RoleUser">
<result column="role_id" property="roleId"/>
<result column="user_id" property="userId"/>
</resultMap>
<select id="selectByUserId" resultType="com.nov.KgLowDurable.pojo.entity.RoleUser">
select * from t_role_user where user_id = #{userId}
</select>
</mapper>
Loading…
Cancel
Save