rev:出库逻辑别更

This commit is contained in:
zhangzq
2024-12-03 18:07:31 +08:00
parent 3481d6c5c2
commit afffc316f3
13 changed files with 130 additions and 25 deletions

View File

@@ -269,6 +269,18 @@
<artifactId>commons-configuration</artifactId>
<version>${configuration.version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/jcifs/jcifs -->
<dependency>
<groupId>jcifs</groupId>
<artifactId>jcifs</artifactId>
<version>1.3.17</version>
</dependency>
<dependency>
<groupId>com.jcraft</groupId>
<artifactId>jsch</artifactId>
<version>0.1.55</version>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>

View File

@@ -97,9 +97,8 @@ public class HeartClientServer extends AbstraceServer {
System.out.println("pingpong被调用次数"+i++);
executor.submit(()->{
while (channel!=null && channel.isActive()){
System.out.println(channel.id().toString()+"----ppp-----");
try {
Thread.sleep(2000);
Thread.sleep(3000);
ByteBuf log = Unpooled.copiedBuffer("ping--222-", CharsetUtil.UTF_8);
if (channel==null){
return;

View File

@@ -77,11 +77,14 @@ public class MdGruopDickServiceImpl extends ServiceImpl<MdGruopDickMapper, MdGru
public void groupDick(JSONObject forms) {
List<Map> tableData = (List)forms.remove("item");
if (CollectionUtils.isEmpty(forms)){
throw new BadRequestException("入库失败:入库明细数据不能为空");
throw new BadRequestException("组盘失败:入库明细数据不能为空");
}
JSONObject item0 = new JSONObject(tableData.get(0));
String vehicle0 = item0.getString("vehicle_code");
BmVehicleInfo vehicleInfo = iBmVehicleInfoService.vehileInfo(vehicle0);
if(vehicleInfo==null){
throw new BadRequestException("组盘失败:载具"+vehicle0+"信息不存在请在载具信息中维护");
}
Integer h = vehicleInfo.getH();
RedissonUtils.lock(()->{
QueryWrapper<StIvtStructattr> query = new QueryWrapper<StIvtStructattr>()

View File

@@ -3,10 +3,13 @@ package org.nl.wms.pda_manage.iostorage;
import cn.dev33.satoken.annotation.SaIgnore;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.apache.commons.lang3.StringUtils;
import org.nl.common.TableDataInfo;
import org.nl.common.anno.Log;
import org.nl.common.domain.entity.PageQuery;
import org.nl.common.domain.exception.BadRequestException;
import org.nl.common.enums.StatusEnum;
import org.nl.common.utils.ListOf;
import org.nl.common.utils.MapOf;
import org.nl.common.utils.RedissonUtils;
import org.nl.wms.config_manage.form_struc.service.IBmFormStrucService;
@@ -72,6 +75,17 @@ public class PdaOutController {
return new ResponseEntity<>(TableDataInfo.build(iPmFormDataService.queryTree(query,page)), HttpStatus.OK);
}
@GetMapping("orderConfirm")
@Log("查询单据数据")
@SaIgnore
public ResponseEntity<TableDataInfo<PmFormDataDto>> orderConfirm(String form_code) {
if (StringUtils.isEmpty(form_code)){
throw new BadRequestException("请求参数不能为空");
}
PmFormDataDto pmFormDataDto = iPmFormDataService.queryErpCode(form_code);
return new ResponseEntity<>(TableDataInfo.build(ListOf.of(pmFormDataDto)), HttpStatus.OK);
}
/**
*
*/

View File

@@ -86,15 +86,23 @@ public class PdaFormOutDtl {
private String single_weight;
/**
* 数量
* 申请数量
*/
private BigDecimal qty;
/**
* 申请数量
*/
private BigDecimal sto_qty;
/**
* 计划数量
*/
private BigDecimal plan_qty;
/**
* 已经分配数量
*/
private BigDecimal assign_qty;
/**
* 分配数量
* 出库数量
*/
private BigDecimal now_assign_qty = assign_qty;

View File

@@ -6,8 +6,10 @@ import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SerializeConfig;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.kingdee.bos.webapi.entity.IdentifyInfo;
import com.kingdee.bos.webapi.sdk.K3CloudApi;
import jcifs.smb.SmbFile;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.nl.common.domain.exception.BadRequestException;
@@ -26,6 +28,7 @@ import org.nl.wms.external_system.erp.dto.ErpSec;
import org.nl.wms.pda_manage.iostorage.server.dto.PdaFormOutDtl;
import org.nl.wms.pda_manage.iostorage.server.dto.PdaFormOutMst;
import org.nl.wms.pda_manage.iostorage.server.dto.ReceiveBillData;
import org.nl.wms.pm_manage.form_data.service.IPmFormDataService;
import org.nl.wms.pm_manage.form_data.service.dao.PmFormData;
import org.nl.wms.pm_manage.form_data.service.dao.mapper.PmFormDataMapper;
import org.nl.wms.stor_manage.io.service.iostor.IStIvtIostorinvService;
@@ -38,7 +41,17 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.math.BigDecimal;
import java.net.URI;
import java.net.URL;
import java.net.URLConnection;
import java.nio.file.FileSystem;
import java.nio.file.FileSystems;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -48,28 +61,23 @@ import java.util.Map;
public class PdaIOService {
@Autowired
ErpSec erpSec;
private ErpSec erpSec;
@Autowired
IBmFormStrucService iBmFormStrucService;
private IBmFormStrucService iBmFormStrucService;
@Autowired
IStIvtIostorinvService iStIvtIostorinvService;
private IStIvtIostorinvService iStIvtIostorinvService;
@Autowired
IStIvtIostorinvdtlService iStIvtIostorinvdtlService;
private IStIvtIostorinvdtlService iStIvtIostorinvdtlService;
@Autowired
BmMeasureUnitServiceImpl bmMeasureUnitServiceImpl;
private BmMeasureUnitServiceImpl bmMeasureUnitServiceImpl;
@Autowired
StIvtBsrealstorattrServiceImpl stIvtBsrealstorattrServiceImpl;
private StIvtBsrealstorattrServiceImpl stIvtBsrealstorattrServiceImpl;
@Autowired
MdMeMaterialbaseServiceImpl mdMeMaterialbaseServiceImpl;
@Autowired
PmFormDataMapper pmFormDataMapper;
private MdMeMaterialbaseServiceImpl mdMeMaterialbaseServiceImpl;
@Resource
private PmFormDataMapper pmFormDataMapper;
@Resource
private IPmFormDataService iPmFormDataService;
public void PpdaOrderOutStorage(PdaFormOutMst pdaFormOutMst) {
@@ -77,7 +85,7 @@ public class PdaIOService {
//创建单据分配货位
StIvtIostorinv ivtIostorinv = ioService.createPadIvtAndoutDispense(pdaFormOutMst);
StIvtIostorinv byId = iStIvtIostorinvService.getById(ivtIostorinv.getId());
//生成流程
this.pdaTaskOpen(byId);
}
@@ -133,7 +141,7 @@ public class PdaIOService {
HashMap map = MapOf.of("end_struct_code", "", "start_struct_code", "", "order", "", "product_area", productArea);
ivtDtl.setForm_data(new JSONObject(map));
ivtDtl.setQty(now_assign_qty);
ivtDtl.setPcsn(dtl.getPcsn());
ivtDtl.setPcsn(pdaFormOutMst.getPcsn());
ivtDtl.setStor_code(storCode);//pdaFormOutMst.getStor_code()
ivtDtl.setId(IdUtil.getStringId());
ivtDtl.setInv_id(mst.getId());
@@ -158,6 +166,19 @@ public class PdaIOService {
for (StIvtIostorinvdtl stIvtIostorinvdtl : list) {
iStIvtIostorinvService.outDispense((JSONObject) JSON.toJSON(stIvtIostorinvdtl));
}
//生成流程
String now = DateUtil.now();
String nickName = SecurityUtils.getCurrentNickName();
for (PdaFormOutDtl child : pdaFormOutMst.getChildren()) {
BigDecimal planQty = child.getPlan_qty();
BigDecimal now_assign_qty = child.getNow_assign_qty();
BigDecimal qty = child.getQty();
iPmFormDataService.update(new UpdateWrapper<PmFormData>()
.set("qty",qty.subtract(now_assign_qty))
.set("assign_qty",planQty.subtract(now_assign_qty))
.set("update_time",now)
.set("update_name",nickName));
}
return mst;
}

View File

@@ -37,6 +37,13 @@ public interface IPmFormDataService extends IService<PmFormData> {
Page<PmFormDataDto> queryTree(FormDataQuery query, PageQuery page);
/**
* 查询ERP同步数据及库存
* @param code
* @return
*/
PmFormDataDto queryErpCode(String code);
/**
* 一对多同步改成一对一同步
* @param mappingJson

View File

@@ -116,6 +116,9 @@
<if test="query.form_type != null and query.form_type != ''">
and form_type = #{query.form_type}
</if>
<if test="query.code != null and query.code != ''">
and code = #{query.code}
</if>
<if test="query.status != null and query.status != ''">
and pm_form_data.status IN
<foreach collection="query.status" item="status" separator="," open="(" close=")">

View File

@@ -14,6 +14,7 @@ import java.util.Map;
public class FormDataQuery extends BaseQuery<PmFormData> {
private String form_type;
private String code;
private String parent_id;
private String[] status;
private Map<String,String> form_query;

View File

@@ -103,6 +103,10 @@ public class PmFormDataDto implements Serializable {
* 数量
*/
private BigDecimal qty;
/**
* 库存数量
*/
private BigDecimal sto_qty;
/**
* 数量
*/
@@ -113,9 +117,13 @@ public class PmFormDataDto implements Serializable {
private BigDecimal assign_qty;
/**
* 数量
* 单位
*/
private String unit_id;
/**
* 单位名称
*/
private String unit_name;
/**
* 批次号

View File

@@ -14,6 +14,7 @@ import org.nl.common.TableDataInfo;
import org.nl.common.domain.constant.DictConstantPool;
import org.nl.common.domain.entity.PageQuery;
import org.nl.common.domain.exception.BadRequestException;
import org.nl.common.enums.StatusEnum;
import org.nl.common.utils.*;
import org.nl.wms.config_manage.form_struc.service.IBmFormStrucService;
import org.nl.wms.config_manage.form_struc.service.dao.BmFormStruc;
@@ -197,6 +198,30 @@ public class PmFormDataServiceImpl extends ServiceImpl<PmFormDataMapper, PmFormD
return dtoPage;
}
@Override
public PmFormDataDto queryErpCode(String code) {
FormDataQuery query = new FormDataQuery();
query.setCode(code);
query.setStatus(new String[]{StatusEnum.FORM_STATUS.code("生成"),StatusEnum.FORM_STATUS.code("执行中")});
List<PmFormDataDto> pmFormDataDtos = this.baseMapper.queryTree2(query);
if (CollectionUtils.isEmpty(pmFormDataDtos)){
throw new BadRequestException(code+"单据编码不存在或已经完成入库");
}
List<String> parents = pmFormDataDtos.stream().map(PmFormDataDto::getId).collect(Collectors.toList());
List<PmFormDataDto> childs = this.baseMapper.selectChilds(parents);
if (!CollectionUtils.isEmpty(childs)){
Map<String, List<PmFormDataDto>> childMap = childs.stream().collect(Collectors.groupingBy(PmFormDataDto::getParent_id));
for (PmFormDataDto dataDto : pmFormDataDtos) {
List<PmFormDataDto> children = childMap.get(dataDto.getId());
for (PmFormDataDto child : children) {
String productArea = child.getForm_data().getString("product_area");
child.setProduct_area(productArea);
}
dataDto.setChildren(children);
}
}
return pmFormDataDtos.get(0);
}
@Override
public Object getSonDtlFormData(String id) {

View File

@@ -42,6 +42,10 @@ public class StIvtIostorinvdtlVo {
* 源单单据类型
*/
private String source_form_type;
/**
* 源单数据
*/
private JSONObject source_form_data;
/**
* 单据明细状态
*/

View File

@@ -6,7 +6,7 @@ spring:
freemarker:
check-template-location: false
profiles:
active: dev
active: prod
jackson:
time-zone: GMT+8
data: