二级入库回调添加web端的处理逻辑

master
liuqingkun 2 months ago
parent f5b2909945
commit 93b763473e
  1. 23
      src/main/java/com/nov/KgLowDurable/mapper/LdErstockOutFormMapper.java
  2. 14
      src/main/java/com/nov/KgLowDurable/mapper/LdErstockOutMapper.java
  3. 114
      src/main/java/com/nov/KgLowDurable/pojo/entity/LdErstockOut.java
  4. 112
      src/main/java/com/nov/KgLowDurable/pojo/entity/LdErstockOutForm.java
  5. 25
      src/main/java/com/nov/KgLowDurable/service/ILdErstockOutFromService.java
  6. 14
      src/main/java/com/nov/KgLowDurable/service/ILdErstockOutService.java
  7. 26
      src/main/java/com/nov/KgLowDurable/service/Impl/LdErstockOutFromServiceImpl.java
  8. 18
      src/main/java/com/nov/KgLowDurable/service/Impl/LdErstockOutServiceImpl.java
  9. 90
      src/main/java/com/nov/KgLowDurable/service/Impl/LdTwoInventoryRecordServiceImpl.java
  10. 7
      src/main/java/com/nov/KgLowDurable/service/Impl/LdTwoOutStorageServiceImpl.java
  11. 7
      src/main/java/com/nov/KgLowDurable/service/Impl/UserServiceImpl.java
  12. 9
      src/main/resources/mapper/LdErstockOutFormMapper.xml

@ -0,0 +1,23 @@
package com.nov.KgLowDurable.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.nov.KgLowDurable.pojo.entity.LdDurableForm;
import com.nov.KgLowDurable.pojo.entity.LdErstockOutForm;
import java.util.List;
/**
* 移动端二级库出库表接口
*
* @author liweidong
*/
public interface LdErstockOutFormMapper extends BaseMapper<LdErstockOutForm> {
/**
* 根据移动端二级库出库ID查询明细
*
* @param outId
* @return
*/
List<LdErstockOutForm> listByOutId(Long outId);
}

@ -0,0 +1,14 @@
package com.nov.KgLowDurable.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.nov.KgLowDurable.pojo.entity.LdErstockOut;
/**
* 移动端二级库出库表接口
*
* @author liweidong
*/
public interface LdErstockOutMapper extends BaseMapper<LdErstockOut> {
}

@ -0,0 +1,114 @@
package com.nov.KgLowDurable.pojo.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
/**
* 移动端二级库出库表实体类
*
* @author: liweidong
* @create: 2025-12-26
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("ld_erstock_out")
public class LdErstockOut implements Serializable {
private static final long serialVersionUID = 1L;
/**
* ID - 主键自增
*/
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 二级出库编号
*/
@TableField("so_no")
private String soNo;
/**
* 申请人id
*/
@TableField("user_id")
private String proposerId;
/**
* 申请人姓名
*/
@TableField("user_name")
private String proposerName;
/**
* 提交时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@TableField("opt_time")
private Date optTime;
/**
* 部门ID
*/
@TableField("department_id")
private String departmentId;
/**
* 部门
*/
@TableField("department")
private String department;
/**
* 事由
*/
@TableField("reason")
private String reason;
/**
* 物资类型办公物资/其他物资
*/
@TableField("material_type")
private String materialType;
/**
* 出库人ID
*/
@TableField("shipper_id")
private String shipperId;
/**
* 出库人名称
*/
@TableField("shipper_name")
private String shipperName;
/**
* 审批编号
*/
@TableField("sp_no")
private String spNo;
/**
* 出库状态0-未出库1-已出库2-已驳回
*/
private String status;
/**
* 分组名称
*/
private String groupName;
/**
* 审批人员
*/
private String approvers;
}

@ -0,0 +1,112 @@
package com.nov.KgLowDurable.pojo.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
/**
* 移动端二级库出库表实体类
*
* @author: liweidong
* @create: 2025-12-26
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("ld_erstock_out_form")
public class LdErstockOutForm implements Serializable {
private static final long serialVersionUID = 1L;
/**
* ID - 主键自增
*/
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 二级出库ID
*/
@TableField("out_id")
private Long outId;
/**
* 二级出库单号
*/
@TableField("out_no")
private Long outNo;
/**
* 二级出库明细单号
*/
@TableField("out_detail_no")
private Long outDetailNo;
/**
* 物资ID
*/
@TableField("material_id")
private String materialId;
/**
* 二级库物资id易耗品是为空 物资编号
*/
@TableField("stock_id")
private String stockId;
/**
* 二级库物资名称
*/
@TableField("stock_name")
private String stockName;
/**
* 规格型号
*/
@TableField("model")
private String model;
/**
* 类别耐用品/易耗品
*/
@TableField("type")
private String type;
/**
* 单位
*/
@TableField("unit")
private String unit;
/**
* 数量耐用品默认为1
*/
@TableField("num")
private String num;
/**
* 物品详细描述
*/
@TableField("remark")
private String remark;
/**
* 申请原因
*/
@TableField("reason")
private String reason;
/**
* 提交时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@TableField("opt_time")
private Date optTime;
}

@ -0,0 +1,25 @@
package com.nov.KgLowDurable.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.nov.KgLowDurable.pojo.entity.LdDurableForm;
import com.nov.KgLowDurable.pojo.entity.LdErstockOut;
import com.nov.KgLowDurable.pojo.entity.LdErstockOutForm;
import java.util.List;
/**
* 移动端二级库
*
* @author liweidong
*/
public interface ILdErstockOutFromService extends IService<LdErstockOutForm> {
/**
* 根据移动端二级库出库ID查询明细
*
* @param outId
* @return
*/
List<LdErstockOutForm> listByOutId(Long outId);
}

@ -0,0 +1,14 @@
package com.nov.KgLowDurable.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.nov.KgLowDurable.pojo.entity.LdErstockOut;
/**
* 移动端二级库
*
* @author liweidong
*/
public interface ILdErstockOutService extends IService<LdErstockOut> {
}

@ -0,0 +1,26 @@
package com.nov.KgLowDurable.service.Impl;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.nov.KgLowDurable.mapper.LdErstockOutFormMapper;
import com.nov.KgLowDurable.pojo.entity.LdDurableForm;
import com.nov.KgLowDurable.pojo.entity.LdErstockOutForm;
import com.nov.KgLowDurable.service.ILdErstockOutFromService;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* 服务实现类
*/
@Service
@AllArgsConstructor
public class LdErstockOutFromServiceImpl extends ServiceImpl<LdErstockOutFormMapper, LdErstockOutForm> implements ILdErstockOutFromService {
@Override
public List<LdErstockOutForm> listByOutId(Long outId) {
return baseMapper.listByOutId(outId);
}
}

@ -0,0 +1,18 @@
package com.nov.KgLowDurable.service.Impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.nov.KgLowDurable.mapper.LdErstockOutMapper;
import com.nov.KgLowDurable.pojo.entity.LdErstockOut;
import com.nov.KgLowDurable.service.ILdErstockOutService;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
/**
* 服务实现类
*/
@Service
@AllArgsConstructor
public class LdErstockOutServiceImpl extends ServiceImpl<LdErstockOutMapper, LdErstockOut> implements ILdErstockOutService {
}

@ -1,4 +1,6 @@
package com.nov.KgLowDurable.service.Impl;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
@ -14,8 +16,10 @@ import lombok.AllArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.sql.Wrapper;
import java.time.LocalDateTime;
import java.util.List;
@ -43,12 +47,18 @@ public class LdTwoInventoryRecordServiceImpl extends ServiceImpl<LdTwoInventoryR
@Autowired
ILdDurableFormService durableFormService;
@Autowired
ILdErstockOutService ldErstockOutService;
@Autowired
ILdErstockOutFromService ldErstockOutFromService;
@Override
public PageInfo<LdTwoInventoryRecord> getTwoInventoryRecordList(Long consumerFormId, String transactionType, Integer pageNum, Integer pageSize) {
PageHelper.startPage(pageNum,pageSize);
PageHelper.startPage(pageNum, pageSize);
// 查询全部
List<LdTwoInventoryRecord> ldTwoInventoryRecordList = twoInventoryRecordMapper.selectByConsumerFormId(consumerFormId,transactionType);
List<LdTwoInventoryRecord> ldTwoInventoryRecordList = twoInventoryRecordMapper.selectByConsumerFormId(consumerFormId, transactionType);
// 返回结果
PageInfo<LdTwoInventoryRecord> pageInfo = new PageInfo<>(ldTwoInventoryRecordList);
return pageInfo;
@ -57,15 +67,17 @@ public class LdTwoInventoryRecordServiceImpl extends ServiceImpl<LdTwoInventoryR
@Override
public boolean approve(ApproveDto approveDto) {
LdTwoOutStorage twoOutStorage = twoOutStorageService.getById(approveDto.getTwoOutStorageId());
if(null == twoOutStorage){
throw new CustomerException("未查到二级出库单");
if (null == twoOutStorage) {
// 若web的二级出库未查到,插下移动端的二级出库ld_erstock_out
return approveWeb(approveDto);
}
//更新审批状态
if(!approveDto.getApproveResult()){
if (!approveDto.getApproveResult()) {
twoOutStorage.setStatus(BatchConstant.APPROVAL_FAILED);
twoOutStorageService.updateById(twoOutStorage);
return true;
}else {
} else {
twoOutStorage.setStatus(BatchConstant.APPROVE);
twoOutStorageService.updateById(twoOutStorage);
}
@ -73,13 +85,13 @@ public class LdTwoInventoryRecordServiceImpl extends ServiceImpl<LdTwoInventoryR
//库存入库
List<LdTwoOutStorageDetail> ldTwoOutStorageDetailList = twoOutStorageDetailService.selectByTwoOutStorageId(approveDto.getTwoOutStorageId());
for (LdTwoOutStorageDetail twoOutStorageDetail : ldTwoOutStorageDetailList) {
if(BatchConstant.CONSUMER.equals(twoOutStorageDetail.getType())){
if (BatchConstant.CONSUMER.equals(twoOutStorageDetail.getType())) {
LdConsumerForm consumerForm = consumerFormService.getById(twoOutStorageDetail.getTwoInventoryId());
//计算差值
BigDecimal difference = consumerForm.getNum().subtract(twoOutStorageDetail.getNum());
consumerForm.setNum(difference);
boolean updateConfumerForm = consumerFormService.updateById(consumerForm);
if(!updateConfumerForm){
if (!updateConfumerForm) {
throw new CustomerException("易耗品更新失败");
}
//出库记录
@ -93,15 +105,71 @@ public class LdTwoInventoryRecordServiceImpl extends ServiceImpl<LdTwoInventoryR
.setDepartmentId(approveDto.getDepartmentId())
.setDepartmentName(approveDto.getDepartmentName());
int insertTwoInventoryRecord = twoInventoryRecordMapper.insert(ldTwoInventoryRecord);
if(insertTwoInventoryRecord <= 0){
if (insertTwoInventoryRecord <= 0) {
throw new CustomerException("出库记录保存失败");
}
}else {
} else {
LdDurableForm durableForm = durableFormService.getById(twoOutStorageDetail.getTwoInventoryId());
durableForm.setIsBorrow(BatchConstant.LEND);
durableForm.setNum(new BigDecimal(0));
boolean updateDurableForm = durableFormService.updateById(durableForm);
if(!updateDurableForm){
if (!updateDurableForm) {
throw new CustomerException("耐用品更新失败");
}
}
}
return true;
}
private boolean approveWeb(ApproveDto approveDto) {
LdErstockOut ldErstockOut = ldErstockOutService.getById(approveDto.getTwoOutStorageId());
if (null == ldErstockOut) {
throw new CustomerException("未查到二级出库单");
}
// 更新审批状态, ld_erstock_out表出库状态status不一致。审批通过后需要改为1,驳回后需要改为2
if (!approveDto.getApproveResult()) {
ldErstockOut.setStatus(BatchConstant.SUBMIT);
ldErstockOutService.updateById(ldErstockOut);
return true;
} else {
ldErstockOut.setStatus(BatchConstant.TEMPORARY);
ldErstockOutService.updateById(ldErstockOut);
}
List<LdErstockOutForm> outFormList = ldErstockOutFromService.listByOutId(approveDto.getTwoOutStorageId());
for (LdErstockOutForm ldErstockOutForm : outFormList) {
// todo 移动端的类存储的是代码(YH)还是汉字(易耗品)
if (BatchConstant.CONSUMER.equals(ldErstockOutForm.getType())) {
// 获取二级库存
LdConsumerForm consumerForm = consumerFormService.getById(ldErstockOutForm.getStockId());
BigDecimal num = new BigDecimal(ldErstockOutForm.getNum());
//计算差值
BigDecimal difference = consumerForm.getNum().subtract(num);
consumerForm.setNum(difference);
boolean updateConfumerForm = consumerFormService.updateById(consumerForm);
if (!updateConfumerForm) {
throw new CustomerException("易耗品更新失败");
}
//出库记录
LdTwoInventoryRecord ldTwoInventoryRecord = new LdTwoInventoryRecord()
.setConsumerFormId(consumerForm.getId().longValue())
.setTransactionType(BatchConstant.OUT_WAREHOUSE)
.setQuantity(num)
.setOperatorId(approveDto.getOperatorId())
.setOperatorName(approveDto.getOperatorName())
.setOperationTime(approveDto.getOperationTime())
.setDepartmentId(approveDto.getDepartmentId())
.setDepartmentName(approveDto.getDepartmentName());
int insertTwoInventoryRecord = twoInventoryRecordMapper.insert(ldTwoInventoryRecord);
if (insertTwoInventoryRecord <= 0) {
throw new CustomerException("出库记录保存失败");
}
} else {
LdDurableForm durableForm = durableFormService.getById(ldErstockOutForm.getStockId());
durableForm.setIsBorrow(BatchConstant.LEND);
durableForm.setNum(new BigDecimal(0));
boolean updateDurableForm = durableFormService.updateById(durableForm);
if (!updateDurableForm) {
throw new CustomerException("耐用品更新失败");
}
}

@ -1,4 +1,5 @@
package com.nov.KgLowDurable.service.Impl;
import com.baomidou.mybatisplus.core.toolkit.StringPool;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
@ -167,7 +168,7 @@ public class LdTwoOutStorageServiceImpl extends ServiceImpl<LdTwoOutStorageMappe
new Content(TwoOutApproverConstant.TEXT, TwoOutApproverConstant.TABLE_COL_CATEGORY, Value.textValue( BatchConstant.CONSUMER.equals(twoOutStorageDetail.getType())?"易耗":"耐用")),
new Content(TwoOutApproverConstant.TEXT, TwoOutApproverConstant.TABLE_COL_OUTBOUND_PERSON, Value.textValue(dto.getUserInfoVO().getName())),
new Content(TwoOutApproverConstant.TEXT, TwoOutApproverConstant.TABLE_COL_OUTBOUND_QUANTITY, Value.textValue(String.valueOf(twoOutStorageDetail.getNum()))),
new Content(TwoOutApproverConstant.TEXT, TwoOutApproverConstant.TABLE_COL_MATERIAL_DESCRIPTION, Value.textValue(null)),
new Content(TwoOutApproverConstant.TEXT, TwoOutApproverConstant.TABLE_COL_MATERIAL_DESCRIPTION, Value.textValue(StringPool.EMPTY)),
new Content(TwoOutApproverConstant.TEXT, TwoOutApproverConstant.TABLE_COL_INVENTORY, Value.textValue(String.valueOf(num)))
));
tableRowList.add(tableRow);
@ -178,7 +179,7 @@ public class LdTwoOutStorageServiceImpl extends ServiceImpl<LdTwoOutStorageMappe
new Content(TwoOutApproverConstant.TEXT, TwoOutApproverConstant.TEXT_RECEIVER, Value.textValue(dto.getLdTwoOutStorage().getProposerName())),
new Content(TwoOutApproverConstant.TEXT, TwoOutApproverConstant.TEXT_DEPARTMENT, Value.textValue(dto.getLdTwoOutStorage().getDepartment())),
new Content(TwoOutApproverConstant.TEXT, TwoOutApproverConstant.TEXT_ORDER_NO, Value.textValue(dto.getLdTwoOutStorage().getOrderNo())),
new Content(TwoOutApproverConstant.TEXT, TwoOutApproverConstant.OUT_GROUP, Value.textValue("自由出库".equals(dto.getLdTwoOutStorage().getGroupName()) ? null :
new Content(TwoOutApproverConstant.TEXT, TwoOutApproverConstant.OUT_GROUP, Value.textValue("自由出库".equals(dto.getLdTwoOutStorage().getGroupName()) ? StringPool.EMPTY :
dto.getLdTwoOutStorage().getGroupName())),
new Content(TwoOutApproverConstant.TEXT, TwoOutApproverConstant.TEXTAREA_REASON, Value.textValue(dto.getLdTwoOutStorage().getReason())),
new Content(TwoOutApproverConstant.TABLE, TwoOutApproverConstant.TABLE_MATERIAL_LIST,
@ -212,7 +213,7 @@ public class LdTwoOutStorageServiceImpl extends ServiceImpl<LdTwoOutStorageMappe
// 5. 序列化
ObjectMapper mapper = new ObjectMapper();
String json = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(applyRequest);
System.out.println(json);
log.info("二级出库提交审批,data = {}", json);
userService.submitApproval(json);
} catch (JsonProcessingException e) {
e.printStackTrace();

@ -157,7 +157,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
"}";
@Override
public String getApprover(String mainErDepartment, String type,Long formId) {
public String getApprover(String mainErDepartment, String type, Long formId) {
// 参数校验
if (!StringUtils.hasText(type)) {
throw new IllegalArgumentException("审批类型不能为空");
@ -170,13 +170,15 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
}};
Map<String, String> querys = new HashMap();
querys. put("type",type);
querys.put("type", type);
if ("1".equals(type)) {
querys.put("deptId", mainErDepartment);
}
String resp = null;
try {
log.info("获取审批人开始, mainErDepartment:{}, type:{}, formId:{}", mainErDepartment, type, formId);
log.info("获取审批人开始, host:{}, path:{}, querys:{}", "http://10.90.100.231:8132", "/ld-person-form/getApprove", JSONObject.toJSONString(querys));
resp = EntityUtils.toString(
HttpUtils.doGet(
"http://10.90.100.231:8132",
@ -189,6 +191,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
} catch (Exception e) {
e.printStackTrace();
}
log.info("获取审批人接收, resp:{}", resp);
try {
// 1.解析模拟数据

@ -0,0 +1,9 @@
<?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.LdErstockOutFormMapper">
<select id = "listByOutId" resultType = "com.nov.KgLowDurable.pojo.entity.LdErstockOutForm">
SELECT *
FROM ld_erstock_out_form
where out_id = #{outId}
</select>
</mapper>
Loading…
Cancel
Save