Commit 4257d3a7 authored by chicheng's avatar chicheng

批次相关调整

parent 82ea225e
package com.topsunit.scanservice.ximai.controller; package com.topsunit.scanservice.ximai.controller;
import com.topsunit.scanservice.ximai.common.Constants;
import com.topsunit.scanservice.ximai.dao.WarehouseArriveDao; import com.topsunit.scanservice.ximai.dao.WarehouseArriveDao;
import com.topsunit.scanservice.ximai.dto.*; import com.topsunit.scanservice.ximai.dto.*;
import com.topsunit.scanservice.ximai.entity.Invmb; import com.topsunit.scanservice.ximai.entity.Invmb;
...@@ -78,6 +79,11 @@ public class StockController { ...@@ -78,6 +79,11 @@ public class StockController {
Invmb invmb = purccService.validate(params); Invmb invmb = purccService.validate(params);
StockArrivalValidateDto rst = new StockArrivalValidateDto(); StockArrivalValidateDto rst = new StockArrivalValidateDto();
rst.setInvmb(invmb); rst.setInvmb(invmb);
if("Y".equals(invmb.getMb022())){
rst.setDefBatchNo(purccService.buildBatch(params.getMaterialNo()));
}else {
rst.setDefBatchNo(Constants.BATCH_DEF);
}
return rst; return rst;
} }
......
...@@ -16,4 +16,5 @@ import org.springframework.data.jpa.repository.JpaSpecificationExecutor; ...@@ -16,4 +16,5 @@ import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
* @date 2024/10/23 * @date 2024/10/23
*/ */
public interface MoctgDao extends JpaRepository<Moctg, MoctgId>, JpaSpecificationExecutor<Moctg> { public interface MoctgDao extends JpaRepository<Moctg, MoctgId>, JpaSpecificationExecutor<Moctg> {
Moctg findFirstByTg017StartingWithOrderByTg017Desc(String prefix);
} }
...@@ -17,4 +17,5 @@ import java.util.List; ...@@ -17,4 +17,5 @@ import java.util.List;
*/ */
public interface PurcdDao extends JpaRepository<Purcd, PurcdId>, JpaSpecificationExecutor<Purcd> { public interface PurcdDao extends JpaRepository<Purcd, PurcdId>, JpaSpecificationExecutor<Purcd> {
List<Purcd> findByCd001AndCd002(String cd001, String cd002); List<Purcd> findByCd001AndCd002(String cd001, String cd002);
Purcd findFirstByCd017StartingWithOrderByCd017Desc(String prefix);
} }
...@@ -208,6 +208,9 @@ public class MoctaDto { ...@@ -208,6 +208,9 @@ public class MoctaDto {
@ApiModelProperty("修改时间") @ApiModelProperty("修改时间")
private String modiDate; private String modiDate;
@ApiModelProperty("批次号")
private String batchNo;
/** /**
* 工单材料明细 * 工单材料明细
......
...@@ -25,7 +25,7 @@ public class PurccDto { ...@@ -25,7 +25,7 @@ public class PurccDto {
private String cc004; private String cc004;
@ApiModelProperty("供货商号") @ApiModelProperty("供货商号")
private String cc005; private String cc005;
@ApiModelProperty("") @ApiModelProperty("发票号")
private String cc006; private String cc006;
@ApiModelProperty("打印方式") @ApiModelProperty("打印方式")
private String cc008; private String cc008;
......
...@@ -34,5 +34,11 @@ public class StockArrivalParams { ...@@ -34,5 +34,11 @@ public class StockArrivalParams {
String materialNo; String materialNo;
@ApiModelProperty("到货数量") @ApiModelProperty("到货数量")
BigDecimal arrivalQuantity; BigDecimal arrivalQuantity;
@ApiModelProperty("生产日期")
String productionDate;
@ApiModelProperty("有效日期")
String effectiveDate;
@ApiModelProperty("批号")
String batchNo;
} }
} }
...@@ -11,6 +11,6 @@ public class StockArrivalValidateDto { ...@@ -11,6 +11,6 @@ public class StockArrivalValidateDto {
@ApiModelProperty("物料信息") @ApiModelProperty("物料信息")
Invmb invmb; Invmb invmb;
@ApiModelProperty("默认批次") @ApiModelProperty("默认批次")
String defBatchNo= Constants.BATCH_DEF; String defBatchNo;
} }
...@@ -19,4 +19,6 @@ public class StockArrivalValidateParams { ...@@ -19,4 +19,6 @@ public class StockArrivalValidateParams {
String purchaseSerial; String purchaseSerial;
@ApiModelProperty("品号") @ApiModelProperty("品号")
String materialNo; String materialNo;
@ApiModelProperty("供应商代码")
String supplierNo;
} }
...@@ -45,6 +45,8 @@ public class Invmb extends EntityBase { ...@@ -45,6 +45,8 @@ public class Invmb extends EntityBase {
@ApiModelProperty("检验方式") @ApiModelProperty("检验方式")
private String mb043; private String mb043;
@ApiModelProperty("采购单位")
private String mb148;
@ApiModelProperty("计价单位") @ApiModelProperty("计价单位")
private String mb149; private String mb149;
@ApiModelProperty("客户品号") @ApiModelProperty("客户品号")
......
...@@ -34,7 +34,7 @@ public class Purcc extends EntityBase { ...@@ -34,7 +34,7 @@ public class Purcc extends EntityBase {
@ApiModelProperty("供货商号") @ApiModelProperty("供货商号")
private String cc005; private String cc005;
@Column @Column
@ApiModelProperty("") @ApiModelProperty("发票号")
private String cc006; private String cc006;
@Column @Column
@ApiModelProperty("打印方式") @ApiModelProperty("打印方式")
......
...@@ -28,18 +28,23 @@ public class Purcd extends EntityBase { ...@@ -28,18 +28,23 @@ public class Purcd extends EntityBase {
@Id @Id
private String cd003; private String cd003;
@Column @Column
@ApiModelProperty("物料号")
private String cd004; private String cd004;
@Column @Column
@ApiModelProperty("物料名")
private String cd005; private String cd005;
@Column @Column
@ApiModelProperty("规格")
private String cd006; private String cd006;
@Column @Column
@ApiModelProperty("单位")
private String cd007; private String cd007;
@Column @Column
private BigDecimal cd008; private BigDecimal cd008;
@Column @Column
private String cd010; private String cd010;
@Column @Column
@ApiModelProperty("采购单号")
private String cd011; private String cd011;
@Column @Column
private String cd012; private String cd012;
...@@ -65,6 +70,7 @@ public class Purcd extends EntityBase { ...@@ -65,6 +70,7 @@ public class Purcd extends EntityBase {
private BigDecimal cd028; private BigDecimal cd028;
@Column @Column
private BigDecimal cd029; private BigDecimal cd029;
@ApiModelProperty("采购单位")
private String cd021=""; private String cd021="";
private String cd022=""; private String cd022="";
@Column @Column
...@@ -76,4 +82,10 @@ public class Purcd extends EntityBase { ...@@ -76,4 +82,10 @@ public class Purcd extends EntityBase {
private String udf01; private String udf01;
@Column @Column
private String udf02; private String udf02;
@Column
@ApiModelProperty("生产日期")
private String udf05;
@Column
@ApiModelProperty("有效日期")
private String udf06;
} }
...@@ -30,6 +30,7 @@ public class Purth extends EntityBase { ...@@ -30,6 +30,7 @@ public class Purth extends EntityBase {
private String th005 = ""; private String th005 = "";
private String th006 = ""; private String th006 = "";
private BigDecimal th007 = BigDecimal.ZERO; private BigDecimal th007 = BigDecimal.ZERO;
@ApiModelProperty("单位")
private String th008 = ""; private String th008 = "";
private String th009 = ""; private String th009 = "";
@ApiModelProperty("批号") @ApiModelProperty("批号")
...@@ -57,8 +58,10 @@ public class Purth extends EntityBase { ...@@ -57,8 +58,10 @@ public class Purth extends EntityBase {
private String th031 = ""; private String th031 = "";
private String th032 = ""; private String th032 = "";
private String th033 = ""; private String th033 = "";
@ApiModelProperty("库存数量")
private BigDecimal th034 = BigDecimal.ZERO; private BigDecimal th034 = BigDecimal.ZERO;
private String th035 = ""; private String th035 = "";
@ApiModelProperty("有效日期")
private String th036 = ""; private String th036 = "";
private String th037 = ""; private String th037 = "";
private String th038 = ""; private String th038 = "";
...@@ -80,6 +83,7 @@ public class Purth extends EntityBase { ...@@ -80,6 +83,7 @@ public class Purth extends EntityBase {
private BigDecimal th054 = BigDecimal.ZERO; private BigDecimal th054 = BigDecimal.ZERO;
private BigDecimal th055 = BigDecimal.ZERO; private BigDecimal th055 = BigDecimal.ZERO;
private String th056 = ""; private String th056 = "";
@ApiModelProperty("生产日期")
private String th057 = ""; private String th057 = "";
private BigDecimal th058 = BigDecimal.ZERO; private BigDecimal th058 = BigDecimal.ZERO;
private BigDecimal th059 = BigDecimal.ZERO; private BigDecimal th059 = BigDecimal.ZERO;
...@@ -88,6 +92,7 @@ public class Purth extends EntityBase { ...@@ -88,6 +92,7 @@ public class Purth extends EntityBase {
private BigDecimal th062 = BigDecimal.ZERO; private BigDecimal th062 = BigDecimal.ZERO;
private String th063 = ""; private String th063 = "";
private String th064 = ""; private String th064 = "";
@ApiModelProperty("库存单位")
private String th065 = ""; private String th065 = "";
private String th066 = ""; private String th066 = "";
private String th067 = ""; private String th067 = "";
......
...@@ -9,6 +9,8 @@ import com.topsunit.scanservice.ximai.dto.mapper.InvmbMapper; ...@@ -9,6 +9,8 @@ import com.topsunit.scanservice.ximai.dto.mapper.InvmbMapper;
import com.topsunit.scanservice.ximai.entity.*; import com.topsunit.scanservice.ximai.entity.*;
import jdk.nashorn.internal.parser.DateParser; import jdk.nashorn.internal.parser.DateParser;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.jpa.domain.Specification; import org.springframework.data.jpa.domain.Specification;
...@@ -21,6 +23,7 @@ import javax.persistence.criteria.CriteriaQuery; ...@@ -21,6 +23,7 @@ import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate; import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root; import javax.persistence.criteria.Root;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.DateFormat; import java.text.DateFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
...@@ -38,6 +41,7 @@ import java.util.stream.Collectors; ...@@ -38,6 +41,7 @@ import java.util.stream.Collectors;
*/ */
@Service @Service
public class InvmbService { public class InvmbService {
private static final Logger log = LoggerFactory.getLogger(InvmbService.class);
@Autowired @Autowired
private InvmaDao invmaDao; private InvmaDao invmaDao;
...@@ -46,6 +50,8 @@ public class InvmbService { ...@@ -46,6 +50,8 @@ public class InvmbService {
private final InvmbDao invmbDao; private final InvmbDao invmbDao;
private final InvmlDao invmlDao; private final InvmlDao invmlDao;
private final InvmbMapper invmbMapper; private final InvmbMapper invmbMapper;
@Autowired
private com.topsunit.scanservice.ximai.dao.InvmdDao invmdDao;
public InvmbService(InvmbDao invmbDao, InvmlDao invmlDao, InvmbMapper invmbMapper) { public InvmbService(InvmbDao invmbDao, InvmlDao invmlDao, InvmbMapper invmbMapper) {
this.invmbDao = invmbDao; this.invmbDao = invmbDao;
...@@ -161,4 +167,34 @@ public class InvmbService { ...@@ -161,4 +167,34 @@ public class InvmbService {
invmbDao.save(s); invmbDao.save(s);
}); });
} }
/**
* 单位数量转换
* @param materialNo 物料号
* @param unit 单位
* @param unitAmount 单位数量
* @return 转换库存数量
*/
public BigDecimal unitConvert(String materialNo, String unit, BigDecimal unitAmount){
if (unitAmount == null) {
return BigDecimal.ZERO;
}
Optional<com.topsunit.scanservice.ximai.entity.Invmd> invmdOp = invmdDao.findById(new com.topsunit.scanservice.ximai.entity.InvmdId(materialNo, unit));
if (!invmdOp.isPresent()) {
return unitAmount;
}
com.topsunit.scanservice.ximai.entity.Invmd invmd = invmdOp.get();
try {
BigDecimal numerator = new BigDecimal(Optional.ofNullable(invmd.getMd003()).orElse("1"));
BigDecimal denominator = new BigDecimal(Optional.ofNullable(invmd.getMd004()).orElse("1"));
if (denominator.compareTo(BigDecimal.ZERO) == 0) {
return unitAmount;
}
// 换算:库存数量 = 其他单位数量 × 分子 / 分母
return unitAmount.multiply(numerator).divide(denominator, 6, RoundingMode.HALF_UP);
} catch (Exception ex) {
log.error(String.format("库存单位转换失败,%s,%s,", materialNo, unit) + ex.getMessage());
return unitAmount;
}
}
} }
...@@ -5,6 +5,7 @@ import com.topsunit.scanservice.ximai.common.FileView; ...@@ -5,6 +5,7 @@ import com.topsunit.scanservice.ximai.common.FileView;
import com.topsunit.scanservice.ximai.common.SmbFileSystem; import com.topsunit.scanservice.ximai.common.SmbFileSystem;
import com.topsunit.scanservice.ximai.dao.InvmbDao; import com.topsunit.scanservice.ximai.dao.InvmbDao;
import com.topsunit.scanservice.ximai.dao.MoctaDao; import com.topsunit.scanservice.ximai.dao.MoctaDao;
import com.topsunit.scanservice.ximai.dao.MoctgDao;
import com.topsunit.scanservice.ximai.dao.MoctbDao; import com.topsunit.scanservice.ximai.dao.MoctbDao;
import com.topsunit.scanservice.ximai.dto.*; import com.topsunit.scanservice.ximai.dto.*;
import com.topsunit.scanservice.ximai.dto.mapper.MoctaMapper; import com.topsunit.scanservice.ximai.dto.mapper.MoctaMapper;
...@@ -45,6 +46,8 @@ public class MoctaService { ...@@ -45,6 +46,8 @@ public class MoctaService {
private MoctbDao moctbDao; private MoctbDao moctbDao;
@Autowired @Autowired
private AppConfig appConfig; private AppConfig appConfig;
@Autowired
private MoctgDao moctgDao;
private final MoctaDao moctaDao; private final MoctaDao moctaDao;
...@@ -68,7 +71,12 @@ public class MoctaService { ...@@ -68,7 +71,12 @@ public class MoctaService {
public Optional<MoctaDto> get(MoctaIdCriteria criteria) { public Optional<MoctaDto> get(MoctaIdCriteria criteria) {
return moctaDao.findById(moctaMapper.toMoctaId(criteria)) return moctaDao.findById(moctaMapper.toMoctaId(criteria))
.map(moctaMapper::toMoctaDto); .map(i->{
MoctaDto dto = moctaMapper.toMoctaDto(i);
String batchNo = this.buildFinishedProductBatch(dto.getTa006());
dto.setBatchNo(batchNo);
return dto;
});
} }
public MoctaDocDto getForDoc2(MoctaIdCriteria criteria) { public MoctaDocDto getForDoc2(MoctaIdCriteria criteria) {
...@@ -186,4 +194,23 @@ public class MoctaService { ...@@ -186,4 +194,23 @@ public class MoctaService {
}); });
} }
public String buildFinishedProductBatch(String materialNo) {
String dateStr = cn.hutool.core.date.DateUtil.format(java.time.LocalDateTime.now(), "yyyyMMdd");
String prefix = (materialNo == null ? "" : materialNo.trim()) + dateStr;
com.topsunit.scanservice.ximai.entity.Moctg last = moctgDao.findFirstByTg017StartingWithOrderByTg017Desc(prefix);
int nextSeq = 1;
if (last != null && last.getTg017() != null) {
String lastBatch = last.getTg017().trim();
if (lastBatch.length() >= 3) {
String tail = lastBatch.substring(lastBatch.length() - 3);
try {
nextSeq = Integer.parseInt(tail) + 1;
} catch (NumberFormatException ignore) {
nextSeq = 1;
}
}
}
String seqStr = String.format("%03d", nextSeq);
return prefix + seqStr;
}
} }
...@@ -19,6 +19,7 @@ import org.springframework.stereotype.Service; ...@@ -19,6 +19,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -167,7 +168,7 @@ public class PurccService { ...@@ -167,7 +168,7 @@ public class PurccService {
objectMap.add(PrintField.of("P_No", j.getCd004().trim())); objectMap.add(PrintField.of("P_No", j.getCd004().trim()));
objectMap.add(PrintField.of("P_Name", j.getCd005().trim())); objectMap.add(PrintField.of("P_Name", j.getCd005().trim()));
objectMap.add(PrintField.of("P_Spec", j.getCd006().trim())); objectMap.add(PrintField.of("P_Spec", j.getCd006().trim()));
objectMap.add(PrintField.of("DH_QTY", j.getCd008().toString().trim())); objectMap.add(PrintField.of("DH_QTY", j.getCd008().setScale(2, RoundingMode.HALF_UP).toPlainString()));
// 获取默认库位 // 获取默认库位
Optional<Invmc> invmcOptional = getDefaultInvmc(j.getCd004()); Optional<Invmc> invmcOptional = getDefaultInvmc(j.getCd004());
...@@ -181,7 +182,7 @@ public class PurccService { ...@@ -181,7 +182,7 @@ public class PurccService {
// String qrCode = String.format("%s-%s-%s-%s-%s", j.getCd004().trim(), "", j.getCd001().trim(), j.getCd002().trim(), j.getCd003().trim()); // String qrCode = String.format("%s-%s-%s-%s-%s", j.getCd004().trim(), "", j.getCd001().trim(), j.getCd002().trim(), j.getCd003().trim());
String qrCode = j.getCd004(); String qrCode = j.getCd004();
objectMap.add(PrintField.of("QRCode", qrCode)); objectMap.add(PrintField.of("QRCode", qrCode));
objectMap.add(PrintField.of("EFFECTIVE_DATE", j.getUdf06().trim()));
objectMap.add(PrintField.of("CD006", j.getCd006().trim())); objectMap.add(PrintField.of("CD006", j.getCd006().trim()));
objectMap.add(PrintField.of("UDF01", j.getUdf01().trim())); objectMap.add(PrintField.of("UDF01", j.getUdf01().trim()));
objectMap.add(PrintField.of("UDF02", j.getUdf02().trim())); objectMap.add(PrintField.of("UDF02", j.getUdf02().trim()));
...@@ -275,13 +276,10 @@ public class PurccService { ...@@ -275,13 +276,10 @@ public class PurccService {
purcd.setCd013(detail.getArrivalQuantity()); purcd.setCd013(detail.getArrivalQuantity());
purcd.setCd015(purtd.getTd009()); purcd.setCd015(purtd.getTd009());
purcd.setCd016(purtd.getTd007()); purcd.setCd016(purtd.getTd007());
//按批管理 purcd.setCd017(detail.getBatchNo());
if("Y".equalsIgnoreCase(invmb.getMb022())){ purcd.setCd021(invmb.getMb148());
purcd.setCd017(buildBatch(detail));//生成到货批次号 purcd.setUdf05(detail.getProductionDate());
}else{ purcd.setUdf06(detail.getEffectiveDate());
purcd.setCd017(Constants.BATCH_DEF);//生成到货批次号
}
purcd.setCd021(invmb.getMb004());
purcdDao.save(purcd); purcdDao.save(purcd);
sumQuantity = sumQuantity.add(detail.getArrivalQuantity()); sumQuantity = sumQuantity.add(detail.getArrivalQuantity());
i++; i++;
...@@ -306,6 +304,27 @@ public class PurccService { ...@@ -306,6 +304,27 @@ public class PurccService {
} }
//生成批次号:产品+日期yyyyMMdd+3位流水
public String buildBatch(String materialNo){
String dateStr = cn.hutool.core.date.DateUtil.format(LocalDateTime.now(), "yyyyMMdd");
String prefix = materialNo + dateStr;
Purcd last = purcdDao.findFirstByCd017StartingWithOrderByCd017Desc(prefix);
int nextSeq = 1;
if (last != null && last.getCd017() != null) {
String lastBatch = last.getCd017().trim();
if (lastBatch.length() >= 3) {
String tail = lastBatch.substring(lastBatch.length() - 3);
try {
nextSeq = Integer.parseInt(tail) + 1;
} catch (NumberFormatException e) {
nextSeq = 1;
}
}
}
String seqStr = String.format("%03d", nextSeq);
return prefix + seqStr;
}
private String getNewCc002(String tg001) { private String getNewCc002(String tg001) {
String prefix = DateUtil.currentDateString(); String prefix = DateUtil.currentDateString();
return purccDao.findFirstByCc001AndCc002StartingWithOrderByCc002Desc(tg001, prefix) return purccDao.findFirstByCc001AndCc002StartingWithOrderByCc002Desc(tg001, prefix)
...@@ -315,11 +334,4 @@ public class PurccService { ...@@ -315,11 +334,4 @@ public class PurccService {
}) })
.orElse(prefix + "001"); .orElse(prefix + "001");
} }
//生成批次号:产品+客户+日期yyyyMMdd
private String buildBatch(StockArrivalParams.StockArrivalDetail detail){
String rst = detail.getMaterialNo()+detail.getSupplierNo();
rst+= cn.hutool.core.date.DateUtil.format(LocalDateTime.now(), "yyyyMMdd");
return rst;
}
} }
...@@ -48,6 +48,8 @@ public class PurtgService { ...@@ -48,6 +48,8 @@ public class PurtgService {
private final PurtgMapper purtgMapper; private final PurtgMapper purtgMapper;
@Autowired @Autowired
ApplicationContext applicationContext; ApplicationContext applicationContext;
@Autowired
private InvmbService invmbService;
public PurtgService(CurrentActor currentActor, CmsmgDao cmsmgDao, InvmbDao invmbDao, InvmcDao invmcDao, InvmeDao invmeDao, PurccDao purccDao, PurcdDao purcdDao, PurtcDao purtcDao, PurtdDao purtdDao, PurtgDao purtgDao, PurthDao purthDao, PurmaDao purmaDao, CmsniDao cmsniDao, PurtgMapper purtgMapper) { public PurtgService(CurrentActor currentActor, CmsmgDao cmsmgDao, InvmbDao invmbDao, InvmcDao invmcDao, InvmeDao invmeDao, PurccDao purccDao, PurcdDao purcdDao, PurtcDao purtcDao, PurtdDao purtdDao, PurtgDao purtgDao, PurthDao purthDao, PurmaDao purmaDao, CmsniDao cmsniDao, PurtgMapper purtgMapper) {
this.currentActor = currentActor; this.currentActor = currentActor;
...@@ -109,19 +111,17 @@ public class PurtgService { ...@@ -109,19 +111,17 @@ public class PurtgService {
Optional<Purma> purma = purmaDao.findById(purcc.getCc005()); // 供应商 Optional<Purma> purma = purmaDao.findById(purcc.getCc005()); // 供应商
Optional<Cmsmg> cmsmg = purma.flatMap(i -> cmsmgDao.findFirstByMg001OrderByMg002Desc(i.getMa021())); // 币种汇率档 Optional<Cmsmg> cmsmg = purma.flatMap(i -> cmsmgDao.findFirstByMg001OrderByMg002Desc(i.getMa021())); // 币种汇率档
purcds.stream().collect(Collectors.groupingBy(i -> new PurtcId(i.getCd010(), i.getCd011()))).forEach((purtcId, localPurcds) -> { Optional<Purtc> purtc = purtcDao.findById(new PurtcId(purcds.get(0).getCd010(), purcds.get(0).getCd011())); //采购单单头
Optional<Purtc> purtc = purtcDao.findById(purtcId); //采购单单头 Purtg purtg = initPurtg(purtgCreateParams, currentDate, purcc, purma, cmsmg, purtc);
Purtg purtg = initPurtg(purtgCreateParams, currentDate, purcc, purma, cmsmg, purtc); List<Purth> purths = new ArrayList<>();
List<Purth> purths = new ArrayList<>(); OrdinalHelper ordinalHelper = new OrdinalHelper();
OrdinalHelper ordinalHelper = new OrdinalHelper(); for (int index = 0; index < purcds.size(); index++) {
for (int index = 0; index < localPurcds.size(); index++) { Purcd localPurcd = purcds.get(index); // 进货单身
Purcd localPurcd = localPurcds.get(index); // 进货单身 purths.addAll(initPurth(purtgCreateParams, purtg, ordinalHelper, localPurcd, purcc));
purths.addAll(initPurth(purtgCreateParams, purtg, ordinalHelper, localPurcd, purcc)); }
} countPurthForPurtg(purtg, purths);
countPurthForPurtg(purtg, purths); purtgDao.save(purtg);
purtgDao.save(purtg); purths.forEach(i -> purthDao.save(i));
purths.forEach(i -> purthDao.save(i));
});
} }
private Purtg initPurtg(PurtgCreateParams purtgCreateParams,String currentDate,Purcc purcc,Optional<Purma> purma,Optional<Cmsmg> cmsmg,Optional<Purtc> purtc){ private Purtg initPurtg(PurtgCreateParams purtgCreateParams,String currentDate,Purcc purcc,Optional<Purma> purma,Optional<Cmsmg> cmsmg,Optional<Purtc> purtc){
...@@ -212,7 +212,7 @@ public class PurtgService { ...@@ -212,7 +212,7 @@ public class PurtgService {
purth.setTh005(localPurcd.getCd005()); // 品名 purth.setTh005(localPurcd.getCd005()); // 品名
purth.setTh006(localPurcd.getCd006()); // 规格 purth.setTh006(localPurcd.getCd006()); // 规格
purth.setTh007(localPurcd.getCd018()); // 进货数量 purth.setTh007(localPurcd.getCd018()); // 进货数量
purth.setTh008(localPurcd.getCd007()); // 单位 purth.setTh008(localPurcd.getCd021()); // 单位
purth.setTh009(purthCreateParams.getTh009()); // 仓库 purth.setTh009(purthCreateParams.getTh009()); // 仓库
if(StringUtil.isNullOrEmpty(localPurcd.getCd017())){ if(StringUtil.isNullOrEmpty(localPurcd.getCd017())){
purth.setTh010(Constants.BATCH_DEF); // 批号 purth.setTh010(Constants.BATCH_DEF); // 批号
...@@ -241,10 +241,9 @@ public class PurtgService { ...@@ -241,10 +241,9 @@ public class PurtgService {
purth.setTh030("N"); // 审核码 purth.setTh030("N"); // 审核码
purth.setTh031("N"); // 开票码 purth.setTh031("N"); // 开票码
purth.setTh032("N"); // 更新码 purth.setTh032("N"); // 更新码
// th033
purth.setTh034(purthCreateParams.getTh015()); // 验收库存数量
// th035 // th035
// th036 // th036
purth.setTh036(localPurcd.getUdf06());
// th037 // th037
// th038 // th038
// th039 // th039
...@@ -275,6 +274,7 @@ public class PurtgService { ...@@ -275,6 +274,7 @@ public class PurtgService {
// th055 // th055
// th056 // th056
// th057 // th057
purth.setTh057(localPurcd.getUdf05());
// th058 // th058
// th059 // th059
// th060 // th060
...@@ -304,6 +304,10 @@ public class PurtgService { ...@@ -304,6 +304,10 @@ public class PurtgService {
purth.setThc04(localPurcd.getCd002()); // 到货单号 purth.setThc04(localPurcd.getCd002()); // 到货单号
purth.setThc05(localPurcd.getCd003()); // 到货序号 purth.setThc05(localPurcd.getCd003()); // 到货序号
purth.setThc06("0001"); // 检验批次 purth.setThc06("0001"); // 检验批次
if(purth.getTh008().equals(purth.getTh065())){
BigDecimal convertAmount = invmbService.unitConvert(localPurcd.getCd004(), purth.getTh008(),purthCreateParams.getTh015());
purth.setTh034(convertAmount); // 验收库存数量,如果采购单位不一致需转换
}
BigDecimal cd020 = localPurcd.getCd020().add(purth.getTh015()); BigDecimal cd020 = localPurcd.getCd020().add(purth.getTh015());
if (cd020.compareTo(localPurcd.getCd018()) > 0) { if (cd020.compareTo(localPurcd.getCd018()) > 0) {
......
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