add:增加合格证字段及服务器层

This commit is contained in:
zhangzq
2024-11-27 13:12:58 +08:00
parent cd1798c22f
commit 09f1d20a85
3 changed files with 281 additions and 3 deletions

View File

@@ -11,8 +11,10 @@ import org.nl.common.utils.MapOf;
import org.nl.common.utils.RedissonUtils;
import org.nl.wms.config_manage.form_struc.service.IBmFormStrucService;
import org.nl.wms.config_manage.form_struc.service.dao.BmFormStruc;
import org.nl.wms.pda_manage.iostorage.server.dto.PdaFormInMst;
import org.nl.wms.pda_manage.iostorage.server.dto.PdaFormOutMst;
import org.nl.wms.pda_manage.iostorage.sevice.PdaIOService;
import org.nl.wms.pda_manage.iostorage.sevice.PdaInIOService;
import org.nl.wms.pm_manage.form_data.service.IPmFormDataService;
import org.nl.wms.pm_manage.form_data.service.dto.FormDataQuery;
import org.nl.wms.pm_manage.form_data.service.dto.PmFormDataDto;
@@ -38,15 +40,18 @@ import java.util.Map;
@SaIgnore
public class PdaInController {
@Autowired
private PdaInIOService pdaInIOService;
@Autowired
private PdaIOService pdaIOService;
@PostMapping("/confirm")
@Log("单据入库组盘确认")
public ResponseEntity<TableDataInfo> confirm(@RequestBody PdaFormOutMst pdaFormOutMst) {
public ResponseEntity<TableDataInfo> confirm(@RequestBody PdaFormInMst pdaFormInMst) {
RedissonUtils.lock(() -> {
//pdaIOService.PpdaOrderInStorage(pdaFormOutMst);
}, pdaFormOutMst.getCode(), null);
}, pdaFormInMst.getBillNo(), null);
return new ResponseEntity<>(TableDataInfo.build(), HttpStatus.OK);
}

View File

@@ -0,0 +1,101 @@
package org.nl.wms.pda_manage.iostorage.server.dto;
import com.alibaba.fastjson.JSONObject;
import lombok.Data;
import org.springframework.util.CollectionUtils;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;
/**
* <p>
* 表单信息表
* </p>
*
* @author generator
* @since 2024-03-25
*/
@Data
public class PdaFormInMst implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 载具编码
*/
private String vehicle_code;
/**
* 单据编码
*/
private String billNo;
/**
* 条码
*/
private String bar_code;
/**
* 订单号
*/
private String MONumber;
/**
* 订单号
*/
private String MOSeq;
/**
* 物料id
*/
private String material_id;
/**
* 物料code
*/
private String material_code;
/**
* 物料name
*/
private String material_name;
/**
* 物料规格
*/
private String material_spec;
/**
* 单位id
*/
private String unit_id;
/**
* 单位name
*/
private String unit_name;
/**
* 入库数量
*/
private String qty;
/**
* 组织
*/
private String StockOrgId;
/**
* 货主
*/
private String OwnerId_Id;
/**
* ERP仓库
*/
private String stockId;
/**
* 单重
*/
private String single_weight;
/**
* 批次
*/
private String pcsn;
}

View File

@@ -0,0 +1,172 @@
package org.nl.wms.pda_manage.iostorage.sevice;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.kingdee.bos.webapi.entity.IdentifyInfo;
import com.kingdee.bos.webapi.sdk.K3CloudApi;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
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;
import org.nl.wms.external_system.erp.dto.ErpQuery;
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.pm_manage.form_data.service.dao.PmFormData;
import org.nl.wms.stor_manage.io.service.iostor.IStIvtIostorinvService;
import org.nl.wms.stor_manage.io.service.iostor.dao.StIvtIostorinv;
import org.nl.wms.stor_manage.io.service.iostor_dtl.IStIvtIostorinvdtlService;
import org.nl.wms.stor_manage.io.service.iostor_dtl.dao.StIvtIostorinvdtl;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@Service
public class PdaInIOService {
@Autowired
ErpSec erpSec;
@Autowired
IBmFormStrucService iBmFormStrucService;
@Autowired
IStIvtIostorinvService iStIvtIostorinvService;
@Autowired
IStIvtIostorinvdtlService iStIvtIostorinvdtlService;
public void pdaInIostorUseCode(PdaFormOutMst pdaFormOutMst) {
PdaInIOService ioService = SpringContextHolder.getBean(PdaInIOService.class);
//创建单据分配货位
StIvtIostorinv ivtIostorinv = ioService.createPadIvtAndoutDispense(pdaFormOutMst);
StIvtIostorinv byId = iStIvtIostorinvService.getById(ivtIostorinv.getId());
//生成流程
this.pdaTaskOpen(byId);
}
@Transactional
public StIvtIostorinv createPadIvtAndoutDispense(PdaFormOutMst pdaFormOutMst) {
// || StringUtils.isEmpty(pdaFormOutMst.getStor_code())
if (pdaFormOutMst == null || !pdaFormOutMst.getHasChildren()) {
throw new BadRequestException("出库申请失败:请求参数异常");
}
List<PdaFormOutDtl> dtls = pdaFormOutMst.getChildren();
if (CollectionUtils.isEmpty(dtls)) {
throw new BadRequestException("出库申请失败:出库明细不能为空");
}
BmFormStruc formType = iBmFormStrucService.getFormType(pdaFormOutMst.getForm_type());
String billType = StatusEnum.IOBILL_TYPE_OUT.code(formType.getForm_desc());
StIvtIostorinv mst = new StIvtIostorinv();
mst.setId(IdUtil.getStringId());
mst.setCreate_name(SecurityUtils.getCurrentNickName());
mst.setCreate_time(DateUtil.now());
mst.setCode(CodeUtil.getNewCode("IO_CODE"));
mst.setStatus(StatusEnum.FORM_STATUS.code("生成"));
mst.setSource_form_id(pdaFormOutMst.getId());
mst.setSource_form_type(pdaFormOutMst.getForm_type());
mst.setProduct_area(mst.getForm_data().getString("product_area"));
mst.setBill_type(billType);
mst.setIn_storage(false);
mst.setForm_data(new JSONObject(MapOf.of("shipper",null,"product_area",null)));
List<StIvtIostorinvdtl> list = new ArrayList<>();
for (PdaFormOutDtl dtl : dtls) {
BigDecimal now_assign_qty = dtl.getNow_assign_qty();
if (now_assign_qty==null || now_assign_qty.intValue()==0){
throw new BadRequestException("出库申请失败:当前"+dtl.getMaterial_name()+"明细申请数量为0");
}
StIvtIostorinvdtl ivtDtl = new StIvtIostorinvdtl();
ivtDtl.setSource_form_id(dtl.getId());
ivtDtl.setSource_form_type(dtl.getForm_type());
ivtDtl.setMaterial_id(dtl.getMaterial_id());
String productArea = dtl.getProduct_area();
if (StringUtils.isEmpty(productArea) || !"A1A2A3".contains(productArea)){
throw new BadRequestException("出库申请失败:明细数据车间字段未指定或不正确");
}
String storCode = dtl.getStor_code();
if (StringUtils.isEmpty(storCode)){
throw new BadRequestException("出库申请失败:明细数据仓库字段未指定");
}
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.setStor_code(storCode);//pdaFormOutMst.getStor_code()
ivtDtl.setId(IdUtil.getStringId());
ivtDtl.setInv_id(mst.getId());
ivtDtl.setStatus(StatusEnum.FORM_STATUS.code("生成"));
list.add(ivtDtl);
}
if (CollectionUtils.isEmpty(list)){
throw new BadRequestException("出库申请失败:出库入明细不能为空");
}
iStIvtIostorinvdtlService.saveBatch(list);
iStIvtIostorinvService.save(mst);
for (StIvtIostorinvdtl stIvtIostorinvdtl : list) {
iStIvtIostorinvService.outDispense((JSONObject) JSON.toJSON(stIvtIostorinvdtl));
}
return mst;
}
private void pdaTaskOpen(StIvtIostorinv mst) {
iStIvtIostorinvService.taskOpen((JSONObject) JSONObject.toJSON(mst));
}
public PmFormData getCertificateInfo(String id) {
PmFormData result = new PmFormData();
try {
if (id.contains("OP")||id.contains("op")) {
getOpBills(id, result);
} else {
}
} catch (Exception e) {
throw new BadRequestException("未查询到对应合格证信息!");
}
return result;
}
/**
*
*/
private void getOpBills(String id, PmFormData result) throws Exception {
IdentifyInfo identifyInfo = new IdentifyInfo();
BeanUtils.copyProperties(erpSec, identifyInfo);
K3CloudApi cloudApi = new K3CloudApi(identifyInfo);
String filterString = "FBillNo = '" + id + "'";
ErpQuery query = new ErpQuery();
query.setFilterString(filterString);
query.setFormId("SFC_OperationPlanning");
query.setFieldKeys("FBillNo,FProOrgId,FProductId,FProductName,FProSpecification,FMOQty,FMOUnitId,FOwnerId,FLot,FProDepartmentId,FStockInOrgId");
query.setLimit(1);
String jsonString = JSON.toJSONString(query);
List<List<Object>> lists = cloudApi.executeBillQuery(jsonString);
if (ObjectUtils.isNotEmpty(lists)) {
List<Object> dataList = lists.get(0);
if (dataList != null && !dataList.isEmpty()) {
result.setCode(dataList.get(0).toString());
result.setPrdOrgId(dataList.get(1).toString());
result.setMaterial_id(dataList.get(2).toString());
result.setMaterial_name(dataList.get(3).toString());
result.setMaterial_spec(dataList.get(4).toString());
result.setQty(new BigDecimal(dataList.get(5).toString()));
result.setUnit_id(dataList.get(6).toString());
result.setOwnerId(dataList.get(7).toString());
result.setPcsn(dataList.get(8).toString());
result.setProduct_area(dataList.get(9).toString());
//result.setStockId(dataList.get(10).toString());
}
}
}
}