Merge remote-tracking branch 'origin/master'

This commit is contained in:
zhangzhiqiang
2023-05-25 19:45:27 +08:00
32 changed files with 1239 additions and 1633 deletions

View File

@@ -0,0 +1,21 @@
package org.nl.wms.mps_manage.ordermanage.controller.saleOrder;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 生产订单表 前端控制器
* </p>
*
* @author generator
* @since 2023-05-25
*/
@RestController
@RequestMapping("/mpsSaleOrder")
public class MpsSaleOrderController {
}

View File

@@ -0,0 +1,16 @@
package org.nl.wms.mps_manage.ordermanage.service.saleOrder;
import org.nl.wms.mps_manage.ordermanage.service.saleOrder.dao.MpsSaleOrder;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 生产订单表 服务类
* </p>
*
* @author generator
* @since 2023-05-25
*/
public interface IMpsSaleOrderService extends IService<MpsSaleOrder> {
}

View File

@@ -0,0 +1,165 @@
package org.nl.wms.mps_manage.ordermanage.service.saleOrder.dao;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* <p>
* 生产订单表
* </p>
*
* @author generator
* @since 2023-05-25
*/
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("mps_sale_order")
public class MpsSaleOrder implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 销售单标识
*/
private Long sale_id;
/**
* 销售单号
*/
private String sale_code;
/**
* 明细序号
*/
private BigDecimal seq_no;
/**
* 销售单类型
*/
private String sale_type;
/**
* 物料标识
*/
private Long material_id;
/**
* 状态
*/
private String status;
/**
* 销售数量
*/
private BigDecimal sale_qty;
/**
* 生产顺序
*/
private BigDecimal produce_seq;
/**
* 客户标识
*/
private Long cust_id;
/**
* 客户编码
*/
private String cust_code;
/**
* 客户名称
*/
private String cust_name;
/**
* 计量单位标识
*/
private Long qty_unit_id;
/**
* 计划交期
*/
private String plandeliver_date;
/**
* 创建人
*/
private Long create_id;
/**
* 创建人姓名
*/
private String create_name;
/**
* 创建时间
*/
private String create_time;
/**
* 提交人
*/
private Long audit_optid;
/**
* 提交时间
*/
private String audit_time;
/**
* 提交人姓名
*/
private String audit_optname;
/**
* 确认人
*/
private Long confirm_optid;
/**
* 确认人姓名
*/
private String confirm_optname;
/**
* 确认时间
*/
private String confirm_time;
/**
* 是否删除
*/
private String is_delete;
/**
* 备注
*/
private String remark;
/**
* 车间标识
*/
private Long workshop_id;
/**
* 生产数量
*/
private BigDecimal product_qty;
/**
* 预入库数量
*/
private BigDecimal instor_qty;
/**
* 发货数量
*/
private BigDecimal sendout_qty;
}

View File

@@ -0,0 +1,16 @@
package org.nl.wms.mps_manage.ordermanage.service.saleOrder.dao.mapper;
import org.nl.wms.mps_manage.ordermanage.service.saleOrder.dao.MpsSaleOrder;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* 生产订单表 Mapper 接口
* </p>
*
* @author generator
* @since 2023-05-25
*/
public interface MpsSaleOrderMapper extends BaseMapper<MpsSaleOrder> {
}

View File

@@ -0,0 +1,5 @@
<?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.nl.wms.mps_manage.ordermanage.service.saleOrder.dao.mapper.MpsSaleOrderMapper">
</mapper>

View File

@@ -0,0 +1,20 @@
package org.nl.wms.mps_manage.ordermanage.service.saleOrder.impl;
import org.nl.wms.mps_manage.ordermanage.service.saleOrder.dao.MpsSaleOrder;
import org.nl.wms.mps_manage.ordermanage.service.saleOrder.dao.mapper.MpsSaleOrderMapper;
import org.nl.wms.mps_manage.ordermanage.service.saleOrder.IMpsSaleOrderService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 生产订单表 服务实现类
* </p>
*
* @author generator
* @since 2023-05-25
*/
@Service
public class MpsSaleOrderServiceImpl extends ServiceImpl<MpsSaleOrderMapper, MpsSaleOrder> implements IMpsSaleOrderService {
}

View File

@@ -0,0 +1,74 @@
package org.nl.wms.storage_manage.productmanage.controller.iostorInv;
import com.alibaba.fastjson.JSONObject;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.nl.common.anno.Log;
import org.nl.common.domain.query.PageQuery;
import org.nl.wms.storage_manage.productmanage.service.iostorInv.IStIvtIostorinvCpOutService;
import org.nl.wms.storage_manage.productmanage.service.iostorInv.IStIvtIostorinvCpService;
import org.nl.wms.storage_manage.productmanage.service.iostorInv.dto.IostorInvQuery;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
@RestController
@RequiredArgsConstructor
@Api(tags = "成品出库")
@RequestMapping("/api/productOut")
@Slf4j
public class IStivtlostorivnCpOutController {
@Autowired
private IStIvtIostorinvCpOutService iStIvtIostorinvCpOutService;
@GetMapping
@Log("查询出库单")
@ApiOperation("查询出库单")
public ResponseEntity<Object> query(IostorInvQuery query, PageQuery page){
return new ResponseEntity<>(iStIvtIostorinvCpOutService.pageQuery(query,page),HttpStatus.OK);
}
@PostMapping
@Log("创建出库单")
@ApiOperation("创建出库单")
public ResponseEntity<Object> create(@RequestBody JSONObject whereJson){
iStIvtIostorinvCpOutService.create(whereJson);
return new ResponseEntity<>(HttpStatus.OK);
}
@PostMapping("/update")
@Log("修改出库单")
@ApiOperation("修改出库单")
public ResponseEntity<Object> update(@RequestBody JSONObject whereJson){
iStIvtIostorinvCpOutService.update(whereJson);
return new ResponseEntity<>(HttpStatus.OK);
}
@PostMapping("/delete")
@Log("删除出库单")
@ApiOperation("删除出库单")
public ResponseEntity<Object> delete(@RequestBody Long[] ids){
iStIvtIostorinvCpOutService.delete(ids);
return new ResponseEntity<>(HttpStatus.OK);
}
@PostMapping("/getIosInvDtl")
@Log("获取明细")
@ApiOperation("获取明细")
public ResponseEntity<Object> getIosInvDtl(@RequestBody JSONObject whereJson){
return new ResponseEntity<>(iStIvtIostorinvCpOutService.getIosInvDtl(whereJson),HttpStatus.OK);
}
@PostMapping("/getIosInvDis")
@Log("获取分配明细")
@ApiOperation("获取明细")
public ResponseEntity<Object> getIosInvDis(@RequestBody JSONObject whereJson){
return new ResponseEntity<>(iStIvtIostorinvCpOutService.getIosInvDis(whereJson),HttpStatus.OK);
}
}

View File

@@ -0,0 +1,86 @@
package org.nl.wms.storage_manage.productmanage.service.iostorInv;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.service.IService;
import org.nl.common.domain.query.PageQuery;
import org.nl.wms.storage_manage.productmanage.service.iostorInv.dao.StIvtIostorinvCp;
import org.nl.wms.storage_manage.productmanage.service.iostorInv.dto.IostorInvQuery;
import java.util.List;
/**
* <p>
* 出库单主表 服务类
* </p>
*
* @author generator
* @since 2023-05-04
*/
public interface IStIvtIostorinvCpOutService extends IService<StIvtIostorinvCp> {
/**
* 分页查询
* @param query,page /
* @return JSONObject
*/
Object pageQuery(IostorInvQuery query, PageQuery page);
/**
* 创建
* @param form /
*/
void create(JSONObject form);
/**
* 更新相关联的表
* @param form /
*/
void update(JSONObject form);
/**
* 查询出出库单明细
* @param whereJson
* {
* "bill_code": 单据号
* "iostorinv_id": 主表标识
* }
* @return List
* {
* "明细表所有字段"
* "material_code": 物料编码
* "material_name": 物料名称
* "material_spec": 物料批次
* }
*/
List getIosInvDtl(JSONObject whereJson);
/**
* 查询出出库单分配明细
* @param whereJson
* {
* "iostorinvdtl_id": 明细表标识
* "iostorinv_id": 主表标识
* }
*
* @return List
* {
* "分配表所有字段"
* "bucketunique":箱号
* "qty": 数量
* "material_code": 物料编码
* "material_name": 物料名称
* "material_spec": 物料批次
* }
*/
List getIosInvDis(JSONObject whereJson);
/**
* 删除
* @param ids
* {
* 主表id..
* }
*/
void delete(Long[] ids);
}

View File

@@ -0,0 +1,275 @@
package org.nl.wms.storage_manage.productmanage.service.iostorInv.impl;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import io.jsonwebtoken.lang.Assert;
import org.jetbrains.annotations.NotNull;
import org.nl.common.TableDataInfo;
import org.nl.common.domain.query.PageQuery;
import org.nl.common.publish.BussEventMulticaster;
import org.nl.common.publish.event.PointEvent;
import org.nl.common.utils.IdUtil;
import org.nl.common.utils.SecurityUtils;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.modules.system.util.CodeUtil;
import org.nl.wms.masterdata_manage.service.vehicle.IMdPbBucketrecordService;
import org.nl.wms.masterdata_manage.service.vehicle.IMdPbStoragevehicleextService;
import org.nl.wms.masterdata_manage.service.vehicle.IMdPbStoragevehicleinfoService;
import org.nl.wms.masterdata_manage.service.vehicle.dao.MdPbBucketrecord;
import org.nl.wms.masterdata_manage.service.vehicle.dao.MdPbStoragevehicleext;
import org.nl.wms.masterdata_manage.service.vehicle.dao.MdPbStoragevehicleinfo;
import org.nl.wms.masterdata_manage.storage.service.storage.IStIvtBsrealstorattrService;
import org.nl.wms.masterdata_manage.storage.service.storage.IStIvtStructattrService;
import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtBsrealstorattr;
import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtStructattr;
import org.nl.wms.product_manage.sch.manage.TaskStatusEnum;
import org.nl.wms.scheduler_manage.service.point.ISchBasePointService;
import org.nl.wms.scheduler_manage.service.point.dao.SchBasePoint;
import org.nl.wms.scheduler_manage.service.task.ISchBaseTaskService;
import org.nl.wms.scheduler_manage.service.task.dao.SchBaseTask;
import org.nl.wms.storage_manage.CHANGE_BILL_TYPE_ENUM;
import org.nl.wms.storage_manage.IOSEnum;
import org.nl.wms.storage_manage.productmanage.service.iostorInv.*;
import org.nl.wms.storage_manage.productmanage.service.iostorInv.dao.StIvtIostorinvCp;
import org.nl.wms.storage_manage.productmanage.service.iostorInv.dao.StIvtIostorinvdisCp;
import org.nl.wms.storage_manage.productmanage.service.iostorInv.dao.StIvtIostorinvdisdtlCp;
import org.nl.wms.storage_manage.productmanage.service.iostorInv.dao.StIvtIostorinvdtlCp;
import org.nl.wms.storage_manage.productmanage.service.iostorInv.dao.mapper.StIvtIostorinvCpMapper;
import org.nl.wms.storage_manage.productmanage.service.iostorInv.dto.IostorInvQuery;
import org.nl.wms.storage_manage.productmanage.service.structIvt.IStIvtStructivtCpService;
import org.nl.wms.storage_manage.productmanage.util.ChangeIvtUtil;
import org.nl.wms.storage_manage.productmanage.util.DivRuleCpService;
import org.nl.wms.storage_manage.productmanage.util.RuleUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.function.Consumer;
import java.util.stream.Collectors;
/**
* <p>
* 出库单主表 服务实现类
* </p>
*
* @author generator
* @since 2023-05-04
*/
@Service
public class StIvtIostorinvCpOutServiceImpl extends ServiceImpl<StIvtIostorinvCpMapper, StIvtIostorinvCp> implements IStIvtIostorinvCpOutService {
@Autowired
protected IStIvtIostorinvdtlCpService iostorinvdtlCpService; // 成品出入库明细表服务
@Autowired
protected IStIvtIostorinvdisCpService iostorinvdisCpService; // 成品出入库分配表服务
@Autowired
protected IStIvtIostorinvdisdtlCpService iStIvtIostorinvdisdtlCpService; // 成品出入库分配明细表服务
@Autowired
protected IStIvtBsrealstorattrService stIvtBsrealstorattrService; // 实物属性表表服务
@Autowired
protected IMdPbStoragevehicleinfoService iMdPbStoragevehicleinfoService; // 载具信息表服务
@Autowired
protected IMdPbStoragevehicleextService iMdPbStoragevehicleextService; // 载具扩展属性信息表服务
@Autowired
protected DivRuleCpService divRuleCpService; // 成品分配规则服务类
@Autowired
protected IStIvtStructattrService iStIvtStructattrService; // 仓位属性服务
@Autowired
private ISchBaseTaskService iSchBaseTaskService; // 任务表服务
@Autowired
private ISchBasePointService iSchBasePointService; // 点位服务
@Autowired
private IStIvtStructivtCpService iStIvtStructivtCpService; // 库存服务
@Autowired
protected IMdPbBucketrecordService iMdPbBucketrecordService; // 包装箱记录表服务
@Override
public Object pageQuery(IostorInvQuery query, PageQuery page) {
// 查询条件
query.setIo_type(IOSEnum.IO_TYPE.code("出库"));
page.setSort("bill_code,DESC");
// 分页查询
Page<StIvtIostorinvCp> pageQuery = this.page(page.build(), query.build());
TableDataInfo<StIvtIostorinvCp> build = TableDataInfo.build(pageQuery);
return build;
}
@Override
@Transactional(rollbackFor = Exception.class)
public void create(JSONObject form) {
JSONArray rows = form.getJSONArray("tableData");
if (ObjectUtil.isEmpty(rows)) throw new BadRequestException("请求参数不能为空");
// 调用主表 插入/更新方法
StIvtIostorinvCp stIvtIostorinvCp = packageMstForm(new StIvtIostorinvCp(), form, false);
// 插入主表
this.save(stIvtIostorinvCp);
// 调用明细表 插入/更新方法
iostorinvdtlCpService.create(rows, stIvtIostorinvCp.getIostorinv_id());
}
@Override
@Transactional(rollbackFor = Exception.class)
public void update(JSONObject form) {
JSONArray rows = form.getJSONArray("tableData");
if (ObjectUtil.isEmpty(rows)) throw new BadRequestException("明细不能为空");
StIvtIostorinvCp iostorinvCp = this.getOne(new QueryWrapper<StIvtIostorinvCp>().eq("iostorinv_id", form.getString("iostorinv_id")));
packageMstForm(iostorinvCp,form,true);
//创建明细
iostorinvdtlCpService.create(rows, iostorinvCp.getIostorinv_id());
// 更新主表
this.updateById(iostorinvCp);
}
@Override
public List getIosInvDtl(JSONObject whereJson) {
// 查询主表明细
List<Map> maps = iostorinvdtlCpService.queryInvDtlByInv(whereJson);
return maps;
}
@Override
public List getIosInvDis(JSONObject whereJson) {
// 查询分配表
List<Map> maps = iostorinvdisCpService.queryInvDisByInvdtl(whereJson);
return maps;
}
@Override
public void delete(Long[] ids) {
for (Long id : ids) {
StIvtIostorinvCp dao = this.getOne(new QueryWrapper<StIvtIostorinvCp>().eq("iostorinv_id", id));
dao.setIs_delete(true);
this.updateById(dao);
}
}
@NotNull
private StIvtIostorinvCp packageMstForm(StIvtIostorinvCp stIvtIostorinvCp,JSONObject whereJson,Boolean isUpdate) {
JSONArray rows = whereJson.getJSONArray("tableData");
if (!isUpdate){
// 新增
stIvtIostorinvCp.setIostorinv_id(IdUtil.getStringId());
stIvtIostorinvCp.setBill_code(CodeUtil.getNewCode("IO_CODE"));
stIvtIostorinvCp.setIo_type(IOSEnum.IO_TYPE.code("出库"));
stIvtIostorinvCp.setBuss_type(whereJson.getString("bill_type"));
stIvtIostorinvCp.setBill_type(stIvtIostorinvCp.getBuss_type());
stIvtIostorinvCp.setBill_status(IOSEnum.BILL_STATUS.code("生成"));
stIvtIostorinvCp.setCreate_id(SecurityUtils.getCurrentUserId());
stIvtIostorinvCp.setCreate_name(SecurityUtils.getCurrentNickName());
stIvtIostorinvCp.setCreate_time(new Date());
stIvtIostorinvCp.setIs_delete(false);
// TODO 暂时写死
stIvtIostorinvCp.setSysdeptid("111");
stIvtIostorinvCp.setSyscompanyid("111");
}else {
// 修改
stIvtIostorinvCp.setUpdate_id(SecurityUtils.getCurrentUserId());
stIvtIostorinvCp.setUpdate_name(SecurityUtils.getCurrentNickName());
stIvtIostorinvCp.setUpdate_time(new Date());
}
stIvtIostorinvCp.setBiz_date(whereJson.getString("biz_date").substring(0,10));
// 获取仓库信息
QueryWrapper<StIvtBsrealstorattr> wrapper = new QueryWrapper<>();
wrapper.lambda()
.eq(StIvtBsrealstorattr::getStor_id,whereJson.getString("stor_id"))
.eq(StIvtBsrealstorattr::getIs_used, true);
StIvtBsrealstorattr bsrealDao = stIvtBsrealstorattrService.getOne(wrapper);
if (ObjectUtil.isEmpty(bsrealDao)) throw new BadRequestException("仓库不存在或未启用!");
stIvtIostorinvCp.setStor_id(bsrealDao.getStor_id());
stIvtIostorinvCp.setStor_code(bsrealDao.getStor_code());
stIvtIostorinvCp.setStor_name(bsrealDao.getStor_name());
stIvtIostorinvCp.setTotal_qty(whereJson.getBigDecimal("total_qty"));
stIvtIostorinvCp.setDetail_count(rows.size());
stIvtIostorinvCp.setRemark(whereJson.getString("remark"));
return stIvtIostorinvCp;
}
@NotNull
public void updateMst(String iostorinv_id) {
/*
更新主表
*/
StIvtIostorinvCp mstDao = this.baseMapper.selectOne(
new QueryWrapper<StIvtIostorinvCp>().lambda()
.eq(StIvtIostorinvCp::getIostorinv_id, iostorinv_id)
);
mstDao.setUpdate_id(SecurityUtils.getCurrentUserId());
mstDao.setUpdate_name(SecurityUtils.getCurrentNickName());
mstDao.setUpdate_time(new Date());
mstDao.setDis_id(SecurityUtils.getCurrentUserId());
mstDao.setDis_name(SecurityUtils.getCurrentNickName());
mstDao.setDis_time(DateUtil.now());
// 查询主表下所有明细
List<StIvtIostorinvdtlCp> dtlDaoList = iostorinvdtlCpService.list(
new QueryWrapper<StIvtIostorinvdtlCp>().lambda()
.eq(StIvtIostorinvdtlCp::getIostorinv_id, iostorinv_id)
);
// 判断是否都为分配完
boolean is_true = dtlDaoList
.stream()
.allMatch(row -> row.getBill_status().equals(IOSEnum.BILL_STATUS.code("分配完")));
if (is_true) {
// 更新主表为分配完
mstDao.setBill_status(IOSEnum.BILL_STATUS.code("分配完"));
} else {
// 更新主表为分配中
mstDao.setBill_status(IOSEnum.BILL_STATUS.code("分配中"));
}
// 判断是否为生成
boolean is_create = dtlDaoList
.stream()
.allMatch(row -> row.getBill_status().equals(IOSEnum.BILL_STATUS.code("生成")));
if (is_create) mstDao.setBill_status(IOSEnum.BILL_STATUS.code("生成"));
this.updateById(mstDao);
}
}

View File

@@ -389,8 +389,10 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl<StIvtIostorinvCpMap
iStIvtStructattrService.updateById(attrDao);
// 4.更新库存
StIvtIostorinvdtlCp dtlDao = iostorinvdtlCpService.getById(disDao.getIostorinvdtl_id());
disDao.setStruct_id(attrDao.getStruct_id());
iStIvtStructivtCpService.UpdateIvt(ivtDataParam(disDao,ChangeIvtUtil.ADDWAREHOUSING_QTY));
iStIvtStructivtCpService.UpdateIvt(ivtDataParam(disDao,ChangeIvtUtil.ADDWAREHOUSING_QTY,dtlDao.getSource_billdtl_id()));
}
@@ -448,7 +450,7 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl<StIvtIostorinvCpMap
);
// 更新库存
iStIvtStructivtCpService.UpdateIvt(ivtDataParam(disDao,ChangeIvtUtil.SUBWAREHOUSING_QTY));
iStIvtStructivtCpService.UpdateIvt(ivtDataParam(disDao,ChangeIvtUtil.SUBWAREHOUSING_QTY,null));
// 4.更新分配
iostorinvdisCpService.updateById(
@@ -585,7 +587,7 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl<StIvtIostorinvCpMap
}
// 2更新库存
iStIvtStructivtCpService.UpdateIvt(ivtDataParam(dao,ChangeIvtUtil.SUBWAREHOUSING_ADDIVT_QTY));
iStIvtStructivtCpService.UpdateIvt(ivtDataParam(dao,ChangeIvtUtil.SUBWAREHOUSING_ADDIVT_QTY,null));
// 3解锁终点
unLockNext(dao.getStruct_id(),dao.getStoragevehicle_code());
@@ -738,7 +740,7 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl<StIvtIostorinvCpMap
this.updateById(mstDao);
}
public JSONObject ivtDataParam(StIvtIostorinvdisCp disDao,String type) {
public JSONObject ivtDataParam(StIvtIostorinvdisCp disDao,String change_type,String sale_id) {
JSONObject ivtParam = new JSONObject();
ivtParam.put("struct_id", disDao.getStruct_id());
ivtParam.put("material_id", disDao.getMaterial_id());
@@ -746,7 +748,8 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl<StIvtIostorinvCpMap
ivtParam.put("quality_scode", disDao.getQuality_scode());
ivtParam.put("ivt_level", disDao.getIvt_level());
ivtParam.put("change_qty", disDao.getReal_qty());
ivtParam.put("change_type", type);
ivtParam.put("change_type", change_type);
ivtParam.put("sale_id", sale_id);
return ivtParam;
}

View File

@@ -25,6 +25,7 @@ public interface IStIvtStructivtCpService extends IService<StIvtStructivtCp> {
* ivt_level库存等级
* change_qty变动数量
* change_type变动类型
* sale_id: 生产订单标识
* }
*/
void UpdateIvt(JSONObject json);

View File

@@ -101,6 +101,7 @@ public class StIvtStructivtCpServiceImpl extends ServiceImpl<StIvtStructivtCpMap
dao.setIvt_qty(BigDecimal.valueOf(0));
dao.setWarehousing_qty(json.getBigDecimal("change_qty"));
dao.setQty_unit_id(materDao.getBase_unit_id());
dao.setSale_id(json.getString("sale_id"));
this.save(dao);
} else {