Commit 3ac58936 authored by 李驰骋's avatar 李驰骋

盘点、调拨功能

parent 4b09e508
package com.topsunit.scanservice.ximai.controller;
import com.topsunit.scanservice.ximai.dto.CmsmcCriteria;
import com.topsunit.scanservice.ximai.dto.CmsmcDto;
import com.topsunit.scanservice.ximai.dto.CmsniCriteria;
import com.topsunit.scanservice.ximai.dto.CmsniDto;
import com.topsunit.scanservice.ximai.service.CmsniService;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Optional;
/**
......@@ -28,4 +32,9 @@ public class CmsniController {
public Optional<CmsniDto> getForScan(@RequestBody CmsniCriteria criteria){
return cmsniService.getForScan(criteria);
}
@ApiOperation("查询仓库列表")
@PostMapping("/cmsni/getCmsniList")
public List<CmsniDto> getCmsniList(@RequestBody CmsniCriteria criteria){
return cmsniService.getCmsniList(criteria);
}
}
package com.topsunit.scanservice.ximai.controller;
import com.topsunit.scanservice.ximai.dto.*;
import com.topsunit.scanservice.ximai.service.InvmbService;
import com.topsunit.scanservice.ximai.service.InvmcService;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Optional;
/**
* <p>Title: InvmcController</p>
* <p>Description: 品号仓储信息档</p>
*
* @author chicheng.li
* @version V1.0
* @date 2024/12/27
*/
@RestController
public class InvmcController {
@Autowired
private InvmcService invmcService;
@ApiModelProperty("品号仓储信息查询")
@PostMapping("/invml/getforinvmlinfo")
public List<InvmlDto> getForInvmbInfo(@RequestBody InvmlCriteria criteria) {
return invmcService.getInvmlList(criteria);
}
}
package com.topsunit.scanservice.ximai.controller;
import com.topsunit.scanservice.ximai.dto.StockAllocateParams;
import com.topsunit.scanservice.ximai.dto.StockSaleOutQueryParams;
import com.topsunit.scanservice.ximai.dto.StockTakingParams;
import com.topsunit.scanservice.ximai.service.InvtaService;
import io.swagger.annotations.ApiModelProperty;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>Title: StockTakingController</p>
* <p>Description: 库存相关操作</p>
*
* @author chicheng.li
* @version V1.0
* @date 2024/12/27
*/
@RestController
public class StockController {
@Autowired
private InvtaService invtaService;
@ApiModelProperty("库存盘点确认")
@PostMapping("/stockTaking/confirm")
public void stockTakingConfirm(@RequestBody StockTakingParams params) {
invtaService.createInvtaByStockTaking(params);
}
@ApiModelProperty("库存调拨确认")
@PostMapping("/stockAllocate/confirm")
public void stockAllocateConfirm(@RequestBody StockAllocateParams params) {
invtaService.createInvtaByStockAllocate(params);
}
@ApiModelProperty("销售出库通知单查询")
@PostMapping("/stockSaleOut/list")
public void stockSaleOutList(@RequestBody StockSaleOutQueryParams params) {
//invtaService.createInvtaByStockAllocate(params);
}
@ApiModelProperty("销售出库通知单库存查询")
@PostMapping("/stockSaleOut/stockList")
public void stockSaleOutStockList(@RequestBody StockSaleOutQueryParams params) {
//invtaService.createInvtaByStockAllocate(params);
}
@ApiModelProperty("销售出库确认")
@PostMapping("/stockSaleOut/confirm")
public void stockSaleOutConfirm(@RequestBody StockSaleOutQueryParams params) {
//invtaService.createInvtaByStockAllocate(params);
}
}
......@@ -5,6 +5,7 @@ import com.topsunit.scanservice.ximai.entity.CmsniId;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import java.util.List;
import java.util.Optional;
......@@ -19,4 +20,5 @@ import java.util.Optional;
public interface CmsniDao extends JpaRepository<Cmsni, CmsniId>, JpaSpecificationExecutor<Cmsni> {
Optional<Cmsni> findFirstByNi002(String ni002);
List<Cmsni> findByNi001(String ni001);
}
package com.topsunit.scanservice.ximai.dao;
import com.topsunit.scanservice.ximai.entity.Invma;
import com.topsunit.scanservice.ximai.entity.Invta;
import com.topsunit.scanservice.ximai.entity.Sfctb;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import java.util.Optional;
/**
* <p>Title: InvtaDao</p>
* <p>Description: InvtaDao</p>
*
* @author chicheng.li
* @version V1.0
* @date 2024/12/27
*/
public interface InvtaDao extends JpaRepository<Invta, String>, JpaSpecificationExecutor<Invta> {
Optional<Invta> findFirstByTa001AndTa002StartingWithOrderByTa002Desc(String ta001, String ta002);
}
package com.topsunit.scanservice.ximai.dao;
import com.topsunit.scanservice.ximai.entity.Invma;
import com.topsunit.scanservice.ximai.entity.Invtb;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
/**
* <p>Title: InvtbDao</p>
* <p>Description: InvtbDao</p>
*
* @author chicheng.li
* @version V1.0
* @date 2024/12/27
*/
public interface InvtbDao extends JpaRepository<Invtb, String>, JpaSpecificationExecutor<Invtb> {
}
package com.topsunit.scanservice.ximai.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* <p>Title: CmsniCriteria</p>
* <p>Description: 仓库库位档 - 查询条件</p>
......@@ -7,18 +10,15 @@ package com.topsunit.scanservice.ximai.dto;
* @author xi.feng
* @version V1.0
*/
@Data
public class CmsniCriteria {
/**
* 库位编号
*/
@ApiModelProperty("库位编号")
private String ni002;
public String getNi002() {
return ni002;
}
public void setNi002(String ni002) {
this.ni002 = ni002;
}
@ApiModelProperty("仓库编号")
private String ni001;
}
package com.topsunit.scanservice.ximai.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* <p>Title: CmsniDto</p>
* <p>Description: 仓库库位档</p>
......@@ -8,41 +11,22 @@ package com.topsunit.scanservice.ximai.dto;
* @author xi.feng
* @version V1.0
*/
@Data
public class CmsniDto {
/**
* 仓库编号
*/
@ApiModelProperty("仓库编号")
private String ni001;
/**
* 库位编号
*/
@ApiModelProperty("库位编号")
private String ni002;
/**
* 库位说明
*/
@ApiModelProperty("库位说明")
private String ni003;
public String getNi001() {
return ni001;
}
public void setNi001(String ni001) {
this.ni001 = ni001;
}
public String getNi002() {
return ni002;
}
public void setNi002(String ni002) {
this.ni002 = ni002;
}
public String getNi003() {
return ni003;
}
public void setNi003(String ni003) {
this.ni003 = ni003;
}
}
......@@ -6,8 +6,8 @@ import lombok.Data;
import javax.persistence.Id;
/**
* <p>Title: InvmbCriteria</p>
* <p>Description: 品号基本信息档查询条件</p>
* <p>Title: InvmlCriteria</p>
* <p>Description: 品号仓位查询条件</p>
*
* @author chicheng.li
* @version V1.0
......
package com.topsunit.scanservice.ximai.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.persistence.Id;
import java.math.BigDecimal;
/**
* <p>Title: InvtaCreateParams</p>
* <p>Description: 交易单据单头档</p>
*
* @author chicheng.li
* @version V1.0
* @date 2024/12/27
*/
@Data
public class InvtaCreateParams {
/**
* 105:盘盈
* 106:盘亏
*/
@Id
@ApiModelProperty("单别")
private String ta001;
@Id
@ApiModelProperty("单号")
private String ta002;
@ApiModelProperty("交易日期")
private String ta003;
@ApiModelProperty("部门编号")
private String ta004="";
@ApiModelProperty("备注")
private String ta005="";
@ApiModelProperty("审核码")
private String ta006="N";
@ApiModelProperty("打印次数")
private Integer ta007=0;
@ApiModelProperty("工厂编号")
private String ta008="01";
@ApiModelProperty("单据性质码")
private String ta009;
@ApiModelProperty("件数")
private Integer ta010=0;
@ApiModelProperty("总数量")
private BigDecimal ta011;
@ApiModelProperty("总金额")
private BigDecimal ta012;
@ApiModelProperty("生成分录")
private String ta013="N";
@ApiModelProperty("单据日期")
private String ta014;
@ApiModelProperty("审核者")
private String ta015;
@ApiModelProperty("总包装数量")
private BigDecimal ta016;
@ApiModelProperty("签核状态码")
private String ta017="N";
@ApiModelProperty("海关手册")
private String ta018;
@ApiModelProperty("审批意见")
private String ta019;
@ApiModelProperty("不合格原因")
private String ta020;
@ApiModelProperty("传送次数")
private Integer ta021;
@ApiModelProperty("汇入日期")
private String ta022;
@ApiModelProperty("门店编号")
private String ta023;
@ApiModelProperty("对方汇出日期")
private String ta024;
@ApiModelProperty("单据来源")
private String ta025="1";
}
package com.topsunit.scanservice.ximai.dto;
import com.topsunit.scanservice.ximai.entity.EntityBase;
import com.topsunit.scanservice.ximai.entity.InvtaId;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.IdClass;
import java.math.BigDecimal;
/**
* <p>Title: InvtaDto</p>
* <p>Description: 交易单据单头档</p>
*
* @author chicheng.li
* @version V1.0
* @date 2024/12/27
*/
@Data
public class InvtaDto {
/**
* 105:盘盈
* 106:盘亏
*/
@Id
@ApiModelProperty("单别")
private String ta001;
@Id
@ApiModelProperty("单号")
private String ta002;
@ApiModelProperty("交易日期")
private String ta003;
@ApiModelProperty("部门编号")
private String ta004;
@ApiModelProperty("备注")
private String ta005;
@ApiModelProperty("审核码")
private String ta006;
@ApiModelProperty("打印次数")
private Integer ta007;
@ApiModelProperty("工厂编号")
private String ta008;
@ApiModelProperty("单据性质码")
private String ta009;
@ApiModelProperty("件数")
private Integer ta010;
@ApiModelProperty("总数量")
private BigDecimal ta011;
@ApiModelProperty("总金额")
private BigDecimal ta012;
@ApiModelProperty("生成分录")
private String ta013;
@ApiModelProperty("单据日期")
private String ta014;
@ApiModelProperty("审核者")
private String ta015;
@ApiModelProperty("总包装数量")
private BigDecimal ta016;
@ApiModelProperty("签核状态码")
private String ta017;
@ApiModelProperty("海关手册")
private String ta018;
@ApiModelProperty("审批意见")
private String ta019;
@ApiModelProperty("不合格原因")
private String ta020;
@ApiModelProperty("传送次数")
private Integer ta021;
@ApiModelProperty("汇入日期")
private String ta022;
@ApiModelProperty("门店编号")
private String ta023;
@ApiModelProperty("对方汇出日期")
private String ta024;
}
package com.topsunit.scanservice.ximai.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.persistence.Id;
import java.math.BigDecimal;
/**
* <p>Title: InvtbCreateParams</p>
* <p>Description: 交易单据单身档</p>
*
* @author chicheng.li
* @version V1.0
* @date 2024/12/27
*/
@Data
public class InvtbCreateParams {
@ApiModelProperty("单别")
private String tb001;
@ApiModelProperty("单号")
private String tb002;
@ApiModelProperty("序号")
private String tb003;
@ApiModelProperty("品号")
private String tb004;
@ApiModelProperty("品名")
private String tb005;
@ApiModelProperty("规格")
private String tb006;
@ApiModelProperty("数量")
private BigDecimal tb007;
@ApiModelProperty("单位")
private String tb008;
@ApiModelProperty("库存数量")
private BigDecimal tb009;
@ApiModelProperty("单位成本")
private BigDecimal tb010;
@ApiModelProperty("金额")
private BigDecimal tb011;
@ApiModelProperty("转出库")
private String tb012;
@ApiModelProperty("转入库")
private String tb013;
@ApiModelProperty("批号")
private String tb014="********************";
@ApiModelProperty("有效日期")
private String tb015;
@ApiModelProperty("复检日期")
private String tb016;
@ApiModelProperty("备注")
private String tb017;
@ApiModelProperty("审核码")
private String tb018="N";
@ApiModelProperty("预留字段")
private String tb019;
@ApiModelProperty("小单位")
private String tb020;
@ApiModelProperty("项目编号")
private String tb021="********************";
@ApiModelProperty("包装数量")
private BigDecimal tb022=BigDecimal.ZERO;
@ApiModelProperty("包装单位")
private String tb023;
@ApiModelProperty("存储位置")
private String tb024;
@ApiModelProperty("已销毁数量")
private BigDecimal tb025;
@ApiModelProperty("件装")
private BigDecimal tb026;
@ApiModelProperty("件数")
private BigDecimal tb027;
@ApiModelProperty("批号说明")
private String tb028;
@ApiModelProperty("转出库位")
private String tb029;
@ApiModelProperty("转入库位")
private String tb030;
@ApiModelProperty("生产日期")
private String tb031;
}
package com.topsunit.scanservice.ximai.dto;
import com.topsunit.scanservice.ximai.entity.EntityBase;
import com.topsunit.scanservice.ximai.entity.InvtaId;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.IdClass;
import java.math.BigDecimal;
/**
* <p>Title: InvtbDto</p>
* <p>Description: 交易单据单身档</p>
*
* @author chicheng.li
* @version V1.0
* @date 2024/12/27
*/
@Data
public class InvtbDto {
@Id
@ApiModelProperty("单别")
private String tb001;
@Id
@ApiModelProperty("单号")
private String tb002;
@Id
@ApiModelProperty("序号")
private String tb003;
@ApiModelProperty("品号")
private String tb004;
@ApiModelProperty("品名")
private String tb005;
@ApiModelProperty("规格")
private String tb006;
@ApiModelProperty("数量")
private BigDecimal tb007;
@ApiModelProperty("单位")
private String tb008;
@ApiModelProperty("库存数量")
private BigDecimal tb009;
@ApiModelProperty("单位成本")
private BigDecimal tb010;
@ApiModelProperty("金额")
private BigDecimal tb011;
@ApiModelProperty("转出库")
private String tb012;
@ApiModelProperty("转入库")
private String tb013;
@ApiModelProperty("批号")
private String tb014;
@ApiModelProperty("有效日期")
private String tb015;
@ApiModelProperty("复检日期")
private String tb016;
@ApiModelProperty("备注")
private String tb017;
@ApiModelProperty("审核码")
private String tb018;
@ApiModelProperty("预留字段")
private String tb019;
@ApiModelProperty("小单位")
private String tb020;
@ApiModelProperty("项目编号")
private String tb021;
@ApiModelProperty("包装数量")
private BigDecimal tb022;
@ApiModelProperty("包装单位")
private String tb023;
@ApiModelProperty("存储位置")
private String tb024;
@ApiModelProperty("已销毁数量")
private BigDecimal tb025;
@ApiModelProperty("件装")
private BigDecimal tb026;
@ApiModelProperty("件数")
private BigDecimal tb027;
@ApiModelProperty("批号说明")
private String tb028;
@ApiModelProperty("转出库位")
private String tb029;
@ApiModelProperty("转入库位")
private String tb030;
@ApiModelProperty("生产日期")
private String tb031;
}
package com.topsunit.scanservice.ximai.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
/**
* 库存调拨参数
*/
@Data
public class StockAllocateParams {
@ApiModelProperty("调拨明细")
List<StockAllocateDetail> data;
@Data
public static class StockAllocateDetail{
@ApiModelProperty("物料号")
String materialNo;
@ApiModelProperty("物料名称")
String materialName;
@ApiModelProperty("仓库")
String warehouse;
@ApiModelProperty("储位")
String location;
@ApiModelProperty("调拨数量")
BigDecimal allocateQuantity;
@ApiModelProperty("调入仓库")
String allocateWarehouse;
@ApiModelProperty("调出储位")
String allocateLocation;
}
}
package com.topsunit.scanservice.ximai.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
/**
* 销售出库参数
*/
@Data
public class StockSaleOutDto {
@ApiModelProperty("交货单号")
String applyNo;
@ApiModelProperty("交货数量")
BigDecimal outQuantity;
@ApiModelProperty("通知单明细")
List<StockSaleOutDetail> data;
@Data
public static class StockSaleOutDetail{
@ApiModelProperty("物料号")
String materialNo;
@ApiModelProperty("物料名称")
String materialName;
@ApiModelProperty("计划出库日期")
String planOutDate;
}
}
package com.topsunit.scanservice.ximai.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
/**
* 销售出库参数
*/
@Data
public class StockSaleOutParams {
@ApiModelProperty("交货单号")
String applyNo;
@ApiModelProperty("交货数量")
BigDecimal outQuantity;
@ApiModelProperty("确认明细")
List<StockSaleOutDto.StockSaleOutDetail> data;
@Data
public static class StockSaleOutDetail{
@ApiModelProperty("物料号")
String materialNo;
@ApiModelProperty("物料名称")
String materialName;
@ApiModelProperty("计划出库日期")
String planOutDate;
@ApiModelProperty("出库数量")
String outQuantity;
@ApiModelProperty("仓库")
String warehouse;
@ApiModelProperty("储位")
String location;
}
}
package com.topsunit.scanservice.ximai.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
/**
* 销售出库参数
*/
@Data
public class StockSaleOutQueryParams {
@ApiModelProperty("出货通知单号")
String saleOutNo;
}
package com.topsunit.scanservice.ximai.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
/**
* 库存盘点参数
*/
@Data
public class StockTakingParams {
@ApiModelProperty("盘点明细")
List<StockTakingDetail> data;
@Data
public static class StockTakingDetail{
@ApiModelProperty("物料号")
String materialNo;
@ApiModelProperty("物料名称")
String materialName;
@ApiModelProperty("仓库")
String warehouse;
@ApiModelProperty("储位")
String location;
@ApiModelProperty("库存数量")
BigDecimal stockQuantity;
@ApiModelProperty("盘点数量")
BigDecimal physicalQuantity;
@ApiModelProperty("是否新增")
int isAppend=0;
}
}
package com.topsunit.scanservice.ximai.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
/**
* 库存盘点参数
*/
@Data
public class StockTransactionParams {
@ApiModelProperty("物料号")
String materialNo;
@ApiModelProperty("物料名称")
String materialName;
@ApiModelProperty("仓库")
String warehouse;
@ApiModelProperty("储位")
String location;
@ApiModelProperty("操作数量")
BigDecimal quantity;
@ApiModelProperty("调入仓库")
String allocateWarehouse;
@ApiModelProperty("调出储位")
String allocateLocation;
}
package com.topsunit.scanservice.ximai.entity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.IdClass;
import java.math.BigDecimal;
/**
* <p>Title: Invta</p>
* <p>Description: 交易单据单头档</p>
*
* @author chicheng.li
* @version V1.0
* @date 2024/12/27
*/
@Data
@Entity
@IdClass(InvtaId.class)
public class Invta extends EntityBase {
/**
* 105:盘盈
* 106:盘亏
*/
@Id
@ApiModelProperty("单别")
private String ta001;
@Id
@ApiModelProperty("单号")
private String ta002;
@ApiModelProperty("交易日期")
private String ta003;
@ApiModelProperty("部门编号")
private String ta004;
@ApiModelProperty("备注")
private String ta005;
@ApiModelProperty("审核码")
private String ta006;
@ApiModelProperty("打印次数")
private Integer ta007;
@ApiModelProperty("工厂编号")
private String ta008;
@ApiModelProperty("单据性质码")
private String ta009;
@ApiModelProperty("件数")
private Integer ta010=0;
@ApiModelProperty("总数量")
private BigDecimal ta011;
@ApiModelProperty("总金额")
private BigDecimal ta012;
@ApiModelProperty("生成分录")
private String ta013="N";
@ApiModelProperty("单据日期")
private String ta014;
@ApiModelProperty("审核者")
private String ta015;
@ApiModelProperty("总包装数量")
private BigDecimal ta016;
@ApiModelProperty("签核状态码")
private String ta017;
@ApiModelProperty("海关手册")
private String ta018;
@ApiModelProperty("审批意见")
private String ta019;
@ApiModelProperty("不合格原因")
private String ta020;
@ApiModelProperty("传送次数")
private Integer ta021;
@ApiModelProperty("汇入日期")
private String ta022;
@ApiModelProperty("门店编号")
private String ta023;
@ApiModelProperty("对方汇出日期")
private String ta024;
}
package com.topsunit.scanservice.ximai.entity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.Objects;
@Data
public class InvtaId implements Serializable {
@ApiModelProperty("单别")
private String ta001;
@ApiModelProperty("单号")
private String ta002;
}
package com.topsunit.scanservice.ximai.entity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.IdClass;
import java.math.BigDecimal;
/**
* <p>Title: Invtb</p>
* <p>Description: 交易单据单身档</p>
*
* @author chicheng.li
* @version V1.0
* @date 2024/12/27
*/
@Data
@Entity
@IdClass(InvtbId.class)
public class Invtb extends EntityBase {
@Id
@ApiModelProperty("单别")
private String tb001;
@Id
@ApiModelProperty("单号")
private String tb002;
@Id
@ApiModelProperty("序号")
private String tb003;
@ApiModelProperty("品号")
private String tb004;
@ApiModelProperty("品名")
private String tb005;
@ApiModelProperty("规格")
private String tb006;
@ApiModelProperty("数量")
private BigDecimal tb007;
@ApiModelProperty("单位")
private String tb008;
@ApiModelProperty("库存数量")
private BigDecimal tb009;
@ApiModelProperty("单位成本")
private BigDecimal tb010;
@ApiModelProperty("金额")
private BigDecimal tb011;
@ApiModelProperty("转出库")
private String tb012;
@ApiModelProperty("转入库")
private String tb013;
@ApiModelProperty("批号")
private String tb014;
@ApiModelProperty("有效日期")
private String tb015;
@ApiModelProperty("复检日期")
private String tb016;
@ApiModelProperty("备注")
private String tb017;
@ApiModelProperty("审核码")
private String tb018;
@ApiModelProperty("预留字段")
private String tb019;
@ApiModelProperty("小单位")
private String tb020;
@ApiModelProperty("项目编号")
private String tb021;
@ApiModelProperty("包装数量")
private BigDecimal tb022;
@ApiModelProperty("包装单位")
private String tb023;
@ApiModelProperty("存储位置")
private String tb024;
@ApiModelProperty("已销毁数量")
private BigDecimal tb025;
@ApiModelProperty("件装")
private BigDecimal tb026;
@ApiModelProperty("件数")
private BigDecimal tb027;
@ApiModelProperty("批号说明")
private String tb028;
@ApiModelProperty("转出库位")
private String tb029;
@ApiModelProperty("转入库位")
private String tb030;
@ApiModelProperty("生产日期")
private String tb031;
}
package com.topsunit.scanservice.ximai.entity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.persistence.Id;
import java.io.Serializable;
@Data
public class InvtbId implements Serializable {
@ApiModelProperty("单别")
private String tb001;
@ApiModelProperty("单号")
private String tb002;
@ApiModelProperty("序号")
private String tb003;
}
......@@ -6,7 +6,9 @@ import com.topsunit.scanservice.ximai.dto.CmsniDto;
import com.topsunit.scanservice.ximai.dto.mapper.CmsniMapper;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
/**
* <p>Title: CmsniService</p>
......@@ -29,4 +31,9 @@ public class CmsniService {
return cmsniDao.findFirstByNi002(criteria.getNi002())
.map(cmsniMapper::toCmsniDto);
}
public List<CmsniDto> getCmsniList(CmsniCriteria criteria){
return cmsniDao.findByNi001(criteria.getNi001()).stream()
.map(cmsniMapper::toCmsniDto).collect(Collectors.toList());
}
}
package com.topsunit.scanservice.ximai.service;
import com.topsunit.scanservice.ximai.dao.InvmaDao;
import com.topsunit.scanservice.ximai.dao.InvmbDao;
import com.topsunit.scanservice.ximai.dao.InvmcDao;
import com.topsunit.scanservice.ximai.dao.InvmlDao;
import com.topsunit.scanservice.ximai.dto.*;
import com.topsunit.scanservice.ximai.dto.mapper.InvmbMapper;
import com.topsunit.scanservice.ximai.dto.mapper.InvmlMapper;
import com.topsunit.scanservice.ximai.entity.Invma;
import com.topsunit.scanservice.ximai.entity.Invmb;
import com.topsunit.scanservice.ximai.entity.Invmc;
import com.topsunit.scanservice.ximai.entity.Invml;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.RequestBody;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.stream.Collectors;
/**
* <p>Title: InvmcService</p>
* <p>Description: 品号仓储信息档</p>
*
* @author chicheng.li
* @version V1.0
* @date 2024/12/27
*/
@Service
public class InvmcService {
@Autowired
private InvmcDao invmcDao;
@Autowired
private InvmlDao invmlDao;
@Autowired
private InvmlMapper invmlMapper;
public List<InvmlDto> getInvmlList(InvmlCriteria criteria) {
Specification<Invml> query = new Specification<Invml>() {
@Override
public Predicate toPredicate(Root<Invml> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder criteriaBuilder) {
List<Predicate> predicates = new ArrayList<Predicate>();
if (StringUtils.isNotBlank(criteria.getMl001())) {
Predicate predicate = criteriaBuilder.equal(root.get("ml001"), criteria.getMl001() );
predicates.add(predicate);
}
if (StringUtils.isNotBlank(criteria.getMl002())) {
Predicate predicate = criteriaBuilder.equal(root.get("ml002"), criteria.getMl002());
predicates.add(predicate);
}
return criteriaQuery.where(predicates.toArray(new Predicate[0])).getRestriction();
}
};
List<Invml> list = invmlDao.findAll(query);
return invmlMapper.toInvmlDto(list);
}
}
package com.topsunit.scanservice.ximai.service;
import cn.hutool.core.bean.BeanUtil;
import com.topsunit.scanservice.ximai.common.DateUtil;
import com.topsunit.scanservice.ximai.common.TopsunitException;
import com.topsunit.scanservice.ximai.dao.*;
import com.topsunit.scanservice.ximai.dto.*;
import com.topsunit.scanservice.ximai.dto.mapper.InvmlMapper;
import com.topsunit.scanservice.ximai.entity.Invmb;
import com.topsunit.scanservice.ximai.entity.Invml;
import com.topsunit.scanservice.ximai.entity.Invta;
import com.topsunit.scanservice.ximai.entity.Invtb;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.stereotype.Service;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
/**
* <p>Title: InvtaService</p>
* <p>Description: 交易单据单</p>
*
* @author chicheng.li
* @version V1.0
* @date 2024/12/27
*/
@Service
public class InvtaService {
@Autowired
private InvtaDao invtaDao;
@Autowired
private InvtbDao invtbDao;
@Autowired
private InvmbDao invmbDao;
private String inventory_shortage = "106";
private String inventory_overage = "105";
private String inventory_allocate = "128";
/**
* 创建盘点交易单据
* @param params
*/
public void createInvtaByStockTaking(StockTakingParams params){
List<StockTakingParams.StockTakingDetail> data = params.getData();
//分组盘盈与盘亏
List<StockTransactionParams> overageData = new ArrayList<>();
List<StockTransactionParams> shortageData = new ArrayList<>();
data.forEach(s->{
StockTransactionParams temp = BeanUtil.toBeanIgnoreError(s, StockTransactionParams.class);
temp.setQuantity(s.getPhysicalQuantity().subtract(s.getStockQuantity()).abs());
if(s.getPhysicalQuantity().subtract(s.getStockQuantity()).compareTo(BigDecimal.ZERO)>0){
overageData.add(temp);
}else if(s.getPhysicalQuantity().subtract(s.getStockQuantity()).compareTo(BigDecimal.ZERO)<0){
shortageData.add(temp);
}
});
if(!overageData.isEmpty()){
this.saveData(this.inventory_overage, overageData);
}
if(!shortageData.isEmpty()){
this.saveData(this.inventory_shortage, shortageData);
}
}
/**
* 创建调拨交易单据
* @param params
*/
public void createInvtaByStockAllocate(StockAllocateParams params){
List<StockTransactionParams> tempData = new ArrayList<>();
List<StockAllocateParams.StockAllocateDetail> data = params.getData();
data.forEach(s->{
StockTransactionParams temp = BeanUtil.toBeanIgnoreError(s, StockTransactionParams.class);
temp.setQuantity(s.getAllocateQuantity());
tempData.add(temp);
});
if(!data.isEmpty()){
this.saveData(this.inventory_overage, tempData);
}
}
private void saveData(String type,List<StockTransactionParams> data){
InvtaCreateParams invtaDto = new InvtaCreateParams();
Invta invta = BeanUtil.toBeanIgnoreError(invtaDto, Invta.class);
String ta002 = this.getNewTa002(type);
invta.setTa001(type);
invta.setTa002(ta002);
if(type.equals(inventory_allocate)){
invta.setTa009("12");
}else{
invta.setTa009("11");
}
invta.setTa003(DateUtil.currentDateString());
int i=1;
BigDecimal total = BigDecimal.ZERO;
for(StockTransactionParams detail : data){
InvtbCreateParams invtbDto = new InvtbCreateParams();
//查询物料
Invmb invmb = invmbDao.findById(detail.getMaterialNo())
.orElseThrow(()->new TopsunitException(String.format("未找到物料:%s", detail.getMaterialNo())));
Invtb invtb = BeanUtil.toBeanIgnoreError(invtbDto, Invtb.class);
invtb.setTb001(invta.getTa001());
invtb.setTb002(invta.getTa002());
invtb.setTb003(StringUtils.leftPad(i+"",4, "0"));
invtb.setTb004(detail.getMaterialNo());
invtb.setTb005(detail.getMaterialName());
invtb.setTb006(invmb.getMb003());
invtb.setTb008(invmb.getMb149());
//盘点数量
invtb.setTb007(detail.getQuantity());
invtb.setTb009(detail.getQuantity());
//盘点仓库、库位
invtb.setTb012(detail.getWarehouse());
invtb.setTb029(detail.getLocation());
invtb.setTb013(detail.getAllocateWarehouse());
invtb.setTb030(detail.getAllocateLocation());
invtbDao.save(invtb);
total = total.add(invtb.getTb007());
}
invta.setTa011(total);
invta.setTa012(BigDecimal.ZERO);
invtaDao.save(invta);
}
private String getNewTa002(String ta001) {
String prefix = DateUtil.currentDateString();
return invtaDao.findFirstByTa001AndTa002StartingWithOrderByTa002Desc(ta001, prefix)
.map(i -> {
int currentOrdianl = Integer.parseInt(i.getTa002().replace(prefix, ""));
return prefix + String.format("%03d", currentOrdianl + 1);
})
.orElse(prefix + "001");
}
}
......@@ -6,7 +6,7 @@ topsunit:
share-url: smb://127.0.0.1/share
mes-url: http://localhost:8088
default-password: 123456
db-name: XIMAI
db-name: TPYS
print:
urls:
- code: 1
......@@ -48,10 +48,10 @@ spring:
- classpath:/static/
- classpath:/public/
datasource:
name: Leader
name: TPYS
username: sa
password: 123qweQWE
url: jdbc:sqlserver://192.168.1.21:1433;DatabaseName=Leader
url: jdbc:sqlserver://192.168.1.21:1433;DatabaseName=TPYS
type: com.alibaba.druid.pool.DruidDataSource
druid:
filters: stat
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment