fix:采购单回传逻辑
opt:打印服务优化 opt:返空叫料任务优化
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
package org.nl.common.utils;
|
||||
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.config.SpringContextHolder;
|
||||
import org.nl.wms.basedata_manage.service.dto.VehicleLabelDto;
|
||||
import org.nl.wms.system_manage.enums.SysParamConstant;
|
||||
import org.nl.wms.system_manage.service.param.impl.SysParamServiceImpl;
|
||||
|
||||
import java.io.OutputStream;
|
||||
import java.net.Socket;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
|
||||
public class ZplUtil {
|
||||
|
||||
public static void print(String zpl){
|
||||
String ip = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode(SysParamConstant.PRINTER_IP).getValue();
|
||||
String port = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode(SysParamConstant.PRINTER_PORT).getValue();
|
||||
|
||||
try (Socket socket = new Socket(ip, Integer.parseInt(port));
|
||||
OutputStream out = socket.getOutputStream()) {
|
||||
out.write(zpl.getBytes(StandardCharsets.UTF_8));
|
||||
out.flush();
|
||||
} catch (Exception e) {
|
||||
throw new BadRequestException("打印机连接失败: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
public static String generatePurchaseLabel(String orderNo,String skuName, String skuCode, String qty, String batchNo, String itemNo) {
|
||||
StringBuilder zpl = new StringBuilder();
|
||||
zpl.append("^XA\n");
|
||||
zpl.append("^CI28\n");
|
||||
zpl.append("^PW609\n");
|
||||
zpl.append("^LL406\n");
|
||||
zpl.append("^FO30,30^A0N,28,28^FD").append(escape(skuName)).append("^FS\n");
|
||||
zpl.append("^FO30,70^A0N,24,24^FD").append(escape(skuCode)).append("^FS\n");
|
||||
zpl.append("^FO30,115^A0N,32,32^FD").append(escape(qty)).append(escape(batchNo)).append("^FS\n");
|
||||
zpl.append("^FO350,20^BQN,2,5^FDQA,").append("#").append(escape(itemNo)).append("^FS\n");
|
||||
zpl.append("^XZ");
|
||||
return zpl.toString();
|
||||
}
|
||||
public static String generateVehicleLabel(VehicleLabelDto dto){
|
||||
StringBuilder zpl = new StringBuilder();
|
||||
zpl.append("^XA\n");
|
||||
zpl.append("^CI28\n");
|
||||
zpl.append("^PW609\n");
|
||||
zpl.append("^LL406\n");
|
||||
zpl.append("^FO30,30^A0N,28,28^FD").append(escape(dto.getCode())).append("^FS\n");
|
||||
zpl.append("^FO30,70^A0N,24,24^FD").append(escape(dto.getFactory())).append("^FS\n");
|
||||
zpl.append("^FO30,115^A0N,32,32^FD").append(escape(dto.getName())).append("^FS\n");
|
||||
zpl.append("^FO350,20^BQN,2,5^FDQA,").append("#").append(escape(dto.getWorkshop())).append("^FS\n");
|
||||
zpl.append("^XZ");
|
||||
return zpl.toString();
|
||||
}
|
||||
|
||||
private static String escape(String s) {
|
||||
if (s == null) {
|
||||
return "";
|
||||
}
|
||||
return s.replace("^", "~").replace("~", "~~~");
|
||||
}
|
||||
}
|
||||
@@ -11,7 +11,6 @@ import org.nl.common.logging.annotation.Log;
|
||||
import org.nl.common.utils.CodeUtil;
|
||||
import org.nl.common.utils.MapOf;
|
||||
import org.nl.wms.basedata_manage.service.IMdPbStoragevehicleinfoService;
|
||||
import org.nl.wms.basedata_manage.service.dao.MdMeMaterialbase;
|
||||
import org.nl.wms.basedata_manage.service.dao.MdPbStoragevehicleinfo;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.HttpStatus;
|
||||
@@ -72,4 +71,11 @@ public class StorageVehicleInfoController {
|
||||
return new ResponseEntity<>(MapOf.of("value", CodeUtil.codeView(code)), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/printLabel")
|
||||
@Log("打印载具标签")
|
||||
public ResponseEntity printLabel(@RequestBody Set<String> ids){
|
||||
iMdPbStoragevehicleinfoService.printLabel(ids);
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -56,4 +56,6 @@ public interface IMdPbStoragevehicleinfoService extends IService<MdPbStoragevehi
|
||||
|
||||
|
||||
String getVehicleType(String storagevehicleCode);
|
||||
|
||||
void printLabel(Set<String> ids);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
package org.nl.wms.basedata_manage.service.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class VehicleLabelDto {
|
||||
private String code;
|
||||
private String name;
|
||||
private String factory;
|
||||
private String workshop;
|
||||
}
|
||||
@@ -26,6 +26,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
@@ -41,6 +42,8 @@ import java.util.Set;
|
||||
public class MdPbStoragevehicleinfoServiceImpl extends ServiceImpl<MdPbStoragevehicleinfoMapper, MdPbStoragevehicleinfo> implements IMdPbStoragevehicleinfoService {
|
||||
@Autowired
|
||||
private ISysDictService dictService;
|
||||
@Autowired
|
||||
private MdPbStoragevehicleinfoMapper mdPbStoragevehicleinfoMapper;
|
||||
|
||||
@Override
|
||||
public IPage<MdPbStoragevehicleinfo> queryAll(Map whereJson, PageQuery page) {
|
||||
@@ -149,4 +152,13 @@ public class MdPbStoragevehicleinfoServiceImpl extends ServiceImpl<MdPbStorageve
|
||||
);
|
||||
return one.getStoragevehicle_type();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void printLabel(Set<String> ids) {
|
||||
List<MdPbStoragevehicleinfo> mdPbStoragevehicleinfos = mdPbStoragevehicleinfoMapper.selectBatchIds(ids);
|
||||
for (MdPbStoragevehicleinfo info : mdPbStoragevehicleinfos) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ package org.nl.wms.ext_manage.purchase.service.mapper;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.nl.wms.pda_manage.ios_manage.purchase.service.vo.PurchaseMatInfoVo;
|
||||
import org.nl.wms.pm_manage.purchase.service.dao.Purchasemst;
|
||||
|
||||
import java.util.List;
|
||||
@@ -11,4 +12,5 @@ import java.util.List;
|
||||
public interface EasPurchasemstMapper extends BaseMapper<Purchasemst> {
|
||||
|
||||
List<Purchasemst> selectByBillId(@Param("bill_id") String billId);
|
||||
List<PurchaseMatInfoVo> selectByOrderNo(@Param("orderNo") String orderNo);
|
||||
}
|
||||
|
||||
@@ -31,5 +31,21 @@
|
||||
FROM v_uc_cgrk06
|
||||
WHERE billid = #{bill_id}
|
||||
</select>
|
||||
<select id="selectByOrderNo"
|
||||
resultType="org.nl.wms.pda_manage.ios_manage.purchase.service.vo.PurchaseMatInfoVo">
|
||||
SELECT
|
||||
billid,
|
||||
orderNo,
|
||||
itemNo,
|
||||
categoryCode,
|
||||
categoryName,
|
||||
houseCode sect_code,
|
||||
batchNo,
|
||||
skuCode,
|
||||
skuName,
|
||||
qty
|
||||
FROM v_uc_cgrk06
|
||||
WHERE orderNo = #{orderNo}
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
|
||||
@@ -1,25 +1,16 @@
|
||||
package org.nl.wms.ext_manage.util;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.Data;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.axis.client.Call;
|
||||
import org.apache.axis.client.Service;
|
||||
import org.apache.axis.encoding.ser.BeanDeserializerFactory;
|
||||
import org.apache.axis.encoding.ser.BeanSerializerFactory;
|
||||
import org.apache.axis.message.SOAPHeaderElement;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.config.SpringContextHolder;
|
||||
import org.nl.wms.system_manage.enums.SysParamConstant;
|
||||
import org.nl.wms.system_manage.service.param.dao.Param;
|
||||
import org.nl.wms.system_manage.service.param.impl.SysParamServiceImpl;
|
||||
|
||||
import javax.xml.namespace.QName;
|
||||
import javax.xml.rpc.ParameterMode;
|
||||
import javax.xml.rpc.ServiceException;
|
||||
import javax.xml.rpc.encoding.XMLType;
|
||||
|
||||
@Slf4j
|
||||
@Data
|
||||
@@ -73,7 +64,7 @@ public class ErpUtil {
|
||||
result = (WSContext) call.invoke(new Object[]{userName, password, slnName, dcName, "L2", dbType, "BaseDB"});
|
||||
//关键点,获取登录时返回的sessionid
|
||||
sessionId = result.getSessionId();
|
||||
log.info("ERP登录接口返回:{}", result.toString());
|
||||
log.info("ERP登录接口返回:{}", JSON.toJSONString(result));
|
||||
} catch (Exception e) {
|
||||
throw new BadRequestException("erp登录接口请求失败:" + e.getMessage());
|
||||
}
|
||||
|
||||
@@ -33,6 +33,13 @@ public class InboundPdaController {
|
||||
List<PurchaseMatInfoVo> list = inboundPdaService.getInfoByCode(code);
|
||||
return PdaResponse.requestParamOk(list);
|
||||
}
|
||||
@GetMapping("/getInfoByReceive")
|
||||
@Log("PDA根据条码查询采购入库单的物料信息")
|
||||
@SaIgnore
|
||||
public PdaResponse getInfoByReceive(@RequestParam String code) {
|
||||
List<PurchaseMatInfoVo> list = inboundPdaService.getInfoByReceive(code);
|
||||
return PdaResponse.requestParamOk(list);
|
||||
}
|
||||
|
||||
@PostMapping("/groupPlate")
|
||||
@Log("PDA提交组盘")
|
||||
|
||||
@@ -22,4 +22,6 @@ public interface InboundPdaService {
|
||||
void submitGroupPlateInbound(GroupPlateInboundDto dto, Boolean subTask);
|
||||
|
||||
void submitManualInbound(ManualInboundDto dto);
|
||||
|
||||
List<PurchaseMatInfoVo> getInfoByReceive(String code);
|
||||
}
|
||||
|
||||
@@ -35,8 +35,6 @@ import org.nl.wms.warehouse_manage.inAndOut.service.dao.mapper.IOStorInvDisMappe
|
||||
import org.nl.wms.warehouse_manage.inAndOut.service.dao.mapper.IOStorInvDtlMapper;
|
||||
import org.nl.wms.warehouse_manage.inAndOut.service.dto.IOStorInvDisDto;
|
||||
import org.nl.wms.warehouse_manage.inventory.IStInventoryService;
|
||||
import org.nl.wms.warehouse_manage.inventory.core.enums.InventoryChangeType;
|
||||
import org.nl.wms.warehouse_manage.inventory.core.param.impl.AddInvParam;
|
||||
import org.nl.wms.warehouse_manage.service.IMdPbGroupplateService;
|
||||
import org.nl.wms.warehouse_manage.service.dao.GroupPlate;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@@ -247,32 +245,32 @@ public class InboundPdaServiceImpl implements InboundPdaService {
|
||||
boolean flag = false;
|
||||
for (UsualInboundDto.UsualInboundDtlDto item : usualInboundDto.getDetailList()) {
|
||||
//判断当前物料是否在库内
|
||||
List<GroupPlate> inStockGps = iMdPbGroupplateService.list(new LambdaQueryWrapper<GroupPlate>()
|
||||
.eq(GroupPlate::getMaterial_code, item.getSku_code())
|
||||
.eq(GroupPlate::getStatus, GROUP_PLATE_STATUS.code("入库"))
|
||||
.likeRight(GroupPlate::getStoragevehicle_code, "VTP"));
|
||||
if (!inStockGps.isEmpty()){
|
||||
GroupPlate groupPlate = inStockGps.get(0);
|
||||
Structattr structattr = iStructattrService.getOne(new LambdaQueryWrapper<Structattr>()
|
||||
.eq(Structattr::getStoragevehicle_code, groupPlate.getStoragevehicle_code())
|
||||
.eq(Structattr::getSect_code, usualInboundDto.getSect_code())
|
||||
.last("limit 1"));
|
||||
if (Objects.equals(structattr.getSect_code(), usualInboundDto.getSect_code())){
|
||||
//已在库,增加库存
|
||||
flag = true;
|
||||
List<AddInvParam> addInvParams = new ArrayList<>();
|
||||
AddInvParam addParam = new AddInvParam();
|
||||
addParam.setPcsn(groupPlate.getPcsn());
|
||||
addParam.setMaterialCode(groupPlate.getMaterial_code());
|
||||
addParam.setStoragevehicleCode(groupPlate.getStoragevehicle_code());
|
||||
addParam.setUnitName(groupPlate.getQty_unit_name());
|
||||
addParam.setUnitId(groupPlate.getQty_unit_id());
|
||||
addParam.setQty(item.getQty());
|
||||
addInvParams.add(addParam);
|
||||
iStInventoryService.changeInventory(InventoryChangeType.ADD_INV, addInvParams);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
// List<GroupPlate> inStockGps = iMdPbGroupplateService.list(new LambdaQueryWrapper<GroupPlate>()
|
||||
// .eq(GroupPlate::getMaterial_code, item.getSku_code())
|
||||
// .eq(GroupPlate::getStatus, GROUP_PLATE_STATUS.code("入库"))
|
||||
// .likeRight(GroupPlate::getStoragevehicle_code, "VTP"));
|
||||
// if (!inStockGps.isEmpty()){
|
||||
// GroupPlate groupPlate = inStockGps.get(0);
|
||||
// Structattr structattr = iStructattrService.getOne(new LambdaQueryWrapper<Structattr>()
|
||||
// .eq(Structattr::getStoragevehicle_code, groupPlate.getStoragevehicle_code())
|
||||
// .eq(Structattr::getSect_code, usualInboundDto.getSect_code())
|
||||
// .last("limit 1"));
|
||||
// if (Objects.equals(structattr.getSect_code(), usualInboundDto.getSect_code())){
|
||||
// //已在库,增加库存
|
||||
// flag = true;
|
||||
// List<AddInvParam> addInvParams = new ArrayList<>();
|
||||
// AddInvParam addParam = new AddInvParam();
|
||||
// addParam.setPcsn(groupPlate.getPcsn());
|
||||
// addParam.setMaterialCode(groupPlate.getMaterial_code());
|
||||
// addParam.setStoragevehicleCode(groupPlate.getStoragevehicle_code());
|
||||
// addParam.setUnitName(groupPlate.getQty_unit_name());
|
||||
// addParam.setUnitId(groupPlate.getQty_unit_id());
|
||||
// addParam.setQty(item.getQty());
|
||||
// addInvParams.add(addParam);
|
||||
// iStInventoryService.changeInventory(InventoryChangeType.ADD_INV, addInvParams);
|
||||
// continue;
|
||||
// }
|
||||
// }
|
||||
MdMeMaterialbase materDao = iMdMeMaterialbaseService.getByCode(item.getSku_code());
|
||||
MdPbMeasureunit unitDao = iMdPbMeasureunitService.getById(materDao.getQty_unit_id());
|
||||
//组盘
|
||||
@@ -510,6 +508,33 @@ public class InboundPdaServiceImpl implements InboundPdaService {
|
||||
// pushEvent(purchaseListenerParams);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据收货单获取采购单物料信息
|
||||
* @param code 采购单单据编号
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public List<PurchaseMatInfoVo> getInfoByReceive(String code) {
|
||||
if (StrUtil.isEmptyIfStr(code)){
|
||||
throw new BadRequestException("获取单据失败:参数为空");
|
||||
}
|
||||
Map<String, Object> parseMap = parseCode(code);
|
||||
List<PurchaseMatInfoVo> purchaseMatInfoVos = purchaseService.selectPdaInMat(MapOf.of("orderNo", parseMap.get("orderNo"),
|
||||
"itemNo", parseMap.get("itemNo")));
|
||||
if (purchaseMatInfoVos.isEmpty()){
|
||||
throw new BadRequestException("获取单据失败:未找到该物料信息");
|
||||
}
|
||||
if (purchaseMatInfoVos.size() > 1){
|
||||
throw new BadRequestException("同一个采购单有重复物料");
|
||||
}
|
||||
PurchaseMatInfoVo purchaseMatInfoVo = purchaseMatInfoVos.get(0);
|
||||
// if (purchaseMatInfoVo.getQty() != Integer.parseInt(parseMap.get("quantityStr").toString())){
|
||||
// throw new BadRequestException(String.format("(物料%s)条码数量与采购单数量不一致",parseMap.get("materialName")) );
|
||||
// }
|
||||
purchaseMatInfoVo.setQty(new BigDecimal(parseMap.get("quantityStr").toString()));
|
||||
return purchaseMatInfoVos;
|
||||
}
|
||||
|
||||
private Map<String,Object> parseCode(String code){
|
||||
String[] parts = code.split("#", -1);
|
||||
log.info("采购单入库条码解析结果:{}", Arrays.toString(parts));
|
||||
|
||||
@@ -2,6 +2,7 @@ package org.nl.wms.pm_manage.purchase.service.impl;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
@@ -12,9 +13,9 @@ import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.wms.ext_manage.purchase.service.dto.EasAuditRequestDto;
|
||||
import org.nl.wms.ext_manage.service.WmsToErpService;
|
||||
import org.nl.wms.pda_manage.ios_manage.purchase.service.vo.PurchaseMatInfoVo;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import org.nl.wms.pm_manage.purchase.service.PurchaseService;
|
||||
import org.nl.wms.pm_manage.purchase.service.dao.Purchasedtl;
|
||||
import org.nl.wms.pm_manage.purchase.service.dao.Purchasemst;
|
||||
@@ -22,9 +23,7 @@ import org.nl.wms.pm_manage.purchase.service.dao.mapper.PurchasedtlMapper;
|
||||
import org.nl.wms.pm_manage.purchase.service.dao.mapper.PurchasemstMapper;
|
||||
import org.nl.wms.pm_manage.purchase.service.dto.PurchaseDto;
|
||||
import org.nl.wms.pm_manage.purchase.service.vo.PurchasemstListVo;
|
||||
import org.nl.wms.ext_manage.purchase.service.dto.EasAuditRequestDto;
|
||||
import org.nl.wms.pm_manage.purchase.util.ZplUtil;
|
||||
import org.nl.wms.system_manage.enums.SysParamConstant;
|
||||
import org.nl.common.utils.ZplUtil;
|
||||
import org.nl.wms.system_manage.service.param.ISysParamService;
|
||||
import org.nl.wms.warehouse_manage.enums.IOSEnum;
|
||||
import org.nl.wms.warehouse_manage.stockReturn.service.IPmStockReturnService;
|
||||
@@ -34,9 +33,6 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.io.OutputStream;
|
||||
import java.net.Socket;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.*;
|
||||
|
||||
@Slf4j
|
||||
@@ -195,35 +191,24 @@ public class PurchaseServiceImpl extends ServiceImpl<PurchasemstMapper, Purchase
|
||||
|
||||
@Override
|
||||
public void print(Set<String> ids) {
|
||||
String ip = sysParamService.findByCode(SysParamConstant.PRINTER_IP).getValue();
|
||||
String port = sysParamService.findByCode(SysParamConstant.PRINTER_PORT).getValue();
|
||||
List<Purchasemst> mstList = purchasemstMapper.selectBatchIds(ids);
|
||||
if (ObjectUtil.isEmpty(mstList)) {
|
||||
throw new BadRequestException("未找到选中的单据");
|
||||
}
|
||||
StringBuilder allZpl = new StringBuilder();
|
||||
int labelCount = 0;
|
||||
for (Purchasemst mst : mstList) {
|
||||
List<Purchasedtl> dtlList = purchasedtlMapper.selectList(
|
||||
new LambdaQueryWrapper<Purchasedtl>()
|
||||
.eq(Purchasedtl::getBill_id, mst.getBill_id()));
|
||||
for (Purchasedtl dtl : dtlList) {
|
||||
String zpl = ZplUtil.generateLabel(
|
||||
String zpl = ZplUtil.generatePurchaseLabel(mst.getOrder_no(),
|
||||
dtl.getSku_name(), dtl.getSku_code(),
|
||||
dtl.getQty() != null ? dtl.getQty().stripTrailingZeros().toPlainString() : "0",
|
||||
dtl.getUnit(), mst.getBill_id(), dtl.getItem_no());
|
||||
dtl.getBatch_no(), dtl.getItem_no());
|
||||
allZpl.append(zpl);
|
||||
labelCount++;
|
||||
}
|
||||
}
|
||||
try (Socket socket = new Socket(ip, Integer.parseInt(port));
|
||||
OutputStream out = socket.getOutputStream()) {
|
||||
out.write(allZpl.toString().getBytes(StandardCharsets.UTF_8));
|
||||
out.flush();
|
||||
} catch (Exception e) {
|
||||
log.error("打印失败, 打印机: {}:{}, 标签数: {}", ip, port, labelCount, e);
|
||||
throw new BadRequestException("打印机连接失败: " + e.getMessage());
|
||||
}
|
||||
ZplUtil.print(allZpl.toString());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -1,26 +0,0 @@
|
||||
package org.nl.wms.pm_manage.purchase.util;
|
||||
|
||||
public class ZplUtil {
|
||||
|
||||
public static String generateLabel(String skuName, String skuCode, String qty, String unit,
|
||||
String billId, String itemNo) {
|
||||
StringBuilder zpl = new StringBuilder();
|
||||
zpl.append("^XA\n");
|
||||
zpl.append("^CI28\n");
|
||||
zpl.append("^PW609\n");
|
||||
zpl.append("^LL406\n");
|
||||
zpl.append("^FO30,30^A0N,28,28^FD").append(escape(skuName)).append("^FS\n");
|
||||
zpl.append("^FO30,70^A0N,24,24^FD").append(escape(skuCode)).append("^FS\n");
|
||||
zpl.append("^FO30,115^A0N,32,32^FD").append(escape(qty)).append(escape(unit)).append("^FS\n");
|
||||
zpl.append("^FO350,20^BQN,2,5^FDQA,").append(escape(billId)).append("#").append(escape(itemNo)).append("^FS\n");
|
||||
zpl.append("^XZ");
|
||||
return zpl.toString();
|
||||
}
|
||||
|
||||
private static String escape(String s) {
|
||||
if (s == null) {
|
||||
return "";
|
||||
}
|
||||
return s.replace("^", "~").replace("~", "~~~");
|
||||
}
|
||||
}
|
||||
@@ -2,16 +2,12 @@ package org.nl.wms.sch_manage.service.core;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import lombok.SneakyThrows;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.wms.ext_manage.api.AcsApi;
|
||||
import org.nl.wms.ext_manage.service.WmsToAcsService;
|
||||
import org.nl.wms.ext_manage.service.util.AcsResponse;
|
||||
import org.nl.wms.sch_manage.enums.TaskStatus;
|
||||
import org.nl.wms.sch_manage.service.ISchBaseTaskService;
|
||||
import org.nl.wms.sch_manage.service.dao.SchBaseTask;
|
||||
@@ -94,7 +90,11 @@ public abstract class AbstractTask {
|
||||
*/
|
||||
public ResponseEntity sendTaskOne(String task_id) {
|
||||
List<AcsTaskDto> taskDtoList = new ArrayList<>();
|
||||
taskDtoList.add(this.sendAcsParam(task_id));
|
||||
AcsTaskDto acsTaskDto = this.sendAcsParam(task_id);
|
||||
if (acsTaskDto == null) {
|
||||
return null;
|
||||
}
|
||||
taskDtoList.add(acsTaskDto);
|
||||
ResponseEntity response = this.renotifyAcs(taskDtoList);
|
||||
if (response.getStatusCode().equals(HttpStatus.OK)) {
|
||||
taskService.update(new LambdaUpdateWrapper<SchBaseTask>()
|
||||
|
||||
@@ -2,7 +2,9 @@ package org.nl.wms.sch_manage.service.core.tasks;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.common.utils.CodeUtil;
|
||||
@@ -67,7 +69,22 @@ public class LineCallFullTask extends AbstractTask {
|
||||
@Override
|
||||
public AcsTaskDto sendAcsParam(String taskId) {
|
||||
SchBaseTask taskDao = taskService.getById(taskId);
|
||||
|
||||
String pointCode1 = taskDao.getPoint_code1();
|
||||
String pointCode2 = taskDao.getPoint_code2();
|
||||
SchBasePoint point1 = iSchBasePointService.getOne(new LambdaQueryWrapper<SchBasePoint>()
|
||||
.eq(SchBasePoint::getPoint_code, pointCode1));
|
||||
SchBasePoint point2 = iSchBasePointService.getOne(new LambdaQueryWrapper<SchBasePoint>()
|
||||
.eq(SchBasePoint::getPoint_code, pointCode2));
|
||||
if (StrUtil.isEmptyIfStr(point1.getVehicle_code())){
|
||||
taskDao.setRemark("起点没有托盘");
|
||||
taskService.update(taskDao);
|
||||
return null;
|
||||
}
|
||||
if (!StrUtil.isEmptyIfStr(point2.getVehicle_code())){
|
||||
taskDao.setRemark("当前终点有货");
|
||||
taskService.update(taskDao);
|
||||
return null;
|
||||
}
|
||||
// 组织下发给acs的数据
|
||||
AcsTaskDto acsTaskDto = new AcsTaskDto();
|
||||
acsTaskDto.setExt_task_uuid(taskDao.getTask_id());
|
||||
|
||||
@@ -2,14 +2,14 @@ package org.nl.wms.sch_manage.service.core.tasks;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.common.utils.CodeUtil;
|
||||
import org.nl.common.utils.IdUtil;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.wms.basedata_manage.service.IStructattrService;
|
||||
import org.nl.wms.basedata_manage.service.dao.Structattr;
|
||||
import org.nl.wms.sch_manage.enums.TaskStatus;
|
||||
import org.nl.wms.sch_manage.service.ISchBasePointService;
|
||||
import org.nl.wms.sch_manage.service.ISchBaseTaskService;
|
||||
@@ -69,7 +69,22 @@ public class LineReturnEmptyTask extends AbstractTask {
|
||||
@Override
|
||||
public AcsTaskDto sendAcsParam(String taskId) {
|
||||
SchBaseTask taskDao = taskService.getById(taskId);
|
||||
|
||||
String pointCode1 = taskDao.getPoint_code1();
|
||||
String pointCode2 = taskDao.getPoint_code2();
|
||||
SchBasePoint point1 = iSchBasePointService.getOne(new LambdaQueryWrapper<SchBasePoint>()
|
||||
.eq(SchBasePoint::getPoint_code, pointCode1));
|
||||
SchBasePoint point2 = iSchBasePointService.getOne(new LambdaQueryWrapper<SchBasePoint>()
|
||||
.eq(SchBasePoint::getPoint_code, pointCode2));
|
||||
if (StrUtil.isEmptyIfStr(point1.getVehicle_code())){
|
||||
taskDao.setRemark("起点没有托盘");
|
||||
taskService.update(taskDao);
|
||||
return null;
|
||||
}
|
||||
if (!StrUtil.isEmptyIfStr(point2.getVehicle_code())){
|
||||
taskDao.setRemark("当前终点有货");
|
||||
taskService.update(taskDao);
|
||||
return null;
|
||||
}
|
||||
// 组织下发给acs的数据
|
||||
AcsTaskDto acsTaskDto = new AcsTaskDto();
|
||||
acsTaskDto.setExt_task_uuid(taskDao.getTask_id());
|
||||
|
||||
@@ -55,11 +55,7 @@ public class DealPurchaseRecBillCallback implements CallbackStrategy {
|
||||
purchasedtl.setInstock_qty(param.getPlan_qty().add(purchasedtl.getInstock_qty()));
|
||||
purchasedtlService.updateById(purchasedtl);
|
||||
|
||||
EasAuditRequestDto.EasAuditEntryDto easAuditEntryDto = new EasAuditRequestDto.EasAuditEntryDto();
|
||||
easAuditEntryDto.setSeq(Integer.parseInt(purchasedtl.getItem_no()));
|
||||
easAuditEntryDto.setQty(param.getPlan_qty());
|
||||
easAuditEntryDto.setEntryId(purchasedtl.getEntry_id());
|
||||
entryList.add(easAuditEntryDto);
|
||||
|
||||
List<Purchasedtl> list = purchasedtlService.list(new LambdaQueryWrapper<Purchasedtl>()
|
||||
.eq(Purchasedtl::getBill_id, orderCode));
|
||||
boolean flag = list.stream().anyMatch(i -> i.getQty().compareTo(i.getInstock_qty()) != 0);
|
||||
@@ -71,6 +67,14 @@ public class DealPurchaseRecBillCallback implements CallbackStrategy {
|
||||
.eq(Purchasemst::getBill_id, orderCode)
|
||||
.update();
|
||||
// 保存回传单
|
||||
for (Purchasedtl dtl : list) {
|
||||
EasAuditRequestDto.EasAuditEntryDto easAuditEntryDto = new EasAuditRequestDto.EasAuditEntryDto();
|
||||
easAuditEntryDto.setSeq(Integer.parseInt(dtl.getItem_no()));
|
||||
easAuditEntryDto.setQty(dtl.getQty());
|
||||
easAuditEntryDto.setEntryId(dtl.getEntry_id());
|
||||
entryList.add(easAuditEntryDto);
|
||||
}
|
||||
|
||||
EasAuditRequestDto easAuditRequestDto = new EasAuditRequestDto();
|
||||
easAuditRequestDto.setType("WMS");
|
||||
easAuditRequestDto.setMethod("DealBill");
|
||||
@@ -96,6 +100,7 @@ public class DealPurchaseRecBillCallback implements CallbackStrategy {
|
||||
} catch (Exception e) {
|
||||
iPmStockReturnService.lambdaUpdate()
|
||||
.set(PmStockReturn::getStatus,StockReturnStatusEnum.FAIL.getCode())
|
||||
.set(PmStockReturn::getError_msg, e.getMessage())
|
||||
.eq(PmStockReturn::getRequest_Id, orderCode);
|
||||
}
|
||||
}else {
|
||||
|
||||
Reference in New Issue
Block a user