add:增加合格证字段及服务器层
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
}
|
||||
@@ -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());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user