rev: 需求变更

This commit is contained in:
2026-06-29 09:13:33 +08:00
parent 47f967b11f
commit 52b26551e6
25 changed files with 864 additions and 236 deletions

View File

@@ -79,7 +79,8 @@
LEFT JOIN st_ivt_structattr ss ON mg.bucket_code = ss.storagevehicle_code
LEFT JOIN md_me_materialbase m ON m.material_id = mg.material_id
LEFT JOIN md_pb_classstandard class ON class.class_id = m.material_type_id
WHERE IFNULL( ss.storagevehicle_code, '' ) <![CDATA[ <> ]]> ''
INNER JOIN md_pb_storagevehicleext ext ON ext.material_id = mg.material_id AND ext.pcsn = mg.pcsn AND mg.bucket_code = ext.storagevehicle_code
WHERE IFNULL( ss.storagevehicle_code, '' ) <![CDATA[ <> ]]> '' AND ext.canuse_qty != 0
<if test="material_id != null and material_id != ''">
AND mg.material_id = #{material_id}
</if>

View File

@@ -86,6 +86,7 @@ public class StructattrServiceImpl extends ServiceImpl<StructattrMapper, Structa
String is_have = (String) whereJson.get("is_have");
String not_point = (String) whereJson.get("not_point");
String storagevehicle_type = (String) whereJson.get("storagevehicle_type");
String block_num = (String) whereJson.get("block_num");
return structattrMapper.selectPage(new Page<>(page.getPage() + 1 ,page.getSize()), new LambdaQueryWrapper<Structattr>()
.eq(StrUtil.isNotEmpty(stor_id),Structattr::getStor_id, stor_id)
@@ -95,6 +96,7 @@ public class StructattrServiceImpl extends ServiceImpl<StructattrMapper, Structa
.ne(StrUtil.isNotEmpty(not_point),Structattr::getStruct_id, not_point)
.eq(StrUtil.isNotEmpty(storagevehicle_type),Structattr::getStoragevehicle_type, storagevehicle_type)
.eq(StrUtil.isNotEmpty(is_used),Structattr::getIs_used, is_used)
.eq(StrUtil.isNotEmpty(block_num),Structattr::getBlock_num, block_num)
.eq(Structattr::getIs_delete, BaseDataEnum.IS_YES_NOT.code(""))
.like(StrUtil.isNotEmpty(search),Structattr::getStruct_code, search)
.isNull("1".equals(is_have),Structattr::getStoragevehicle_code)

View File

@@ -2,6 +2,7 @@ package org.nl.wms.decision_manage.service.decisioner.impl.base;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson2.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import lombok.extern.slf4j.Slf4j;
import org.nl.common.exception.BadRequestException;
@@ -14,6 +15,9 @@ import org.nl.wms.basedata_manage.service.dao.mapper.StructattrMapper;
import org.nl.wms.basedata_manage.service.dto.StrategyMater;
import org.nl.wms.basedata_manage.service.dto.StrategyStructParam;
import org.nl.wms.decision_manage.service.decisioner.Decisioner;
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;
import org.nl.wms.warehouse_management.enums.IOSConstant;
import org.nl.wms.warehouse_management.enums.IOSEnum;
import org.springframework.stereotype.Service;
@@ -21,6 +25,7 @@ import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@@ -45,6 +50,9 @@ public class MiddleRuleHandler extends Decisioner<Structattr, StrategyStructPara
@Resource
private StructattrMapper structattrMapper;
@Resource
private ISchBaseTaskService taskService;
@Override
public List<Structattr> handler(List<Structattr> list, StrategyStructParam param) {
log.info("---------执行middle入库分配规则---------");
@@ -69,8 +77,18 @@ public class MiddleRuleHandler extends Decisioner<Structattr, StrategyStructPara
.map(Structattr::getStoragevehicle_code)
.distinct()
.collect(Collectors.toList());
StrategyMater strategyMater = param.getStrategyMaters().get(0);
JSONObject json = new JSONObject();
json.put("material_id", strategyMater.getMaterial_id());
json.put("pcsn", strategyMater.getPcsn());
if (ObjectUtil.isEmpty(vehicleList)) {
// 判断是否有任务
Structattr attr = this.taskLikeMaterial(json);
if (ObjectUtil.isNotEmpty(attr)) {
resuList.add(attr);
return resuList;
}
// 为空:查询空的一组可用货位
return this.queryAttrGroup(structattr,param.getExt_id());
}
@@ -81,13 +99,18 @@ public class MiddleRuleHandler extends Decisioner<Structattr, StrategyStructPara
);
// 不为空:判断是否有相同物料批次的库存
StrategyMater strategyMater = param.getStrategyMaters().get(0);
List<MdPbStoragevehicleext> extDaoLikeList = extList.stream()
.filter(row -> row.getMaterial_id().equals(strategyMater.getMaterial_id())
&& row.getPcsn().equals(strategyMater.getPcsn())
).collect(Collectors.toList());
if (ObjectUtil.isEmpty(extDaoLikeList)) {
// 判断是否有任务
Structattr attr = this.taskLikeMaterial(json);
if (ObjectUtil.isNotEmpty(attr)) {
resuList.add(attr);
return resuList;
}
// 为空:查询空的一组可用货位
return this.queryAttrGroup(structattr,param.getExt_id());
}
@@ -121,6 +144,12 @@ public class MiddleRuleHandler extends Decisioner<Structattr, StrategyStructPara
}
if (ObjectUtil.isEmpty(resuList)) {
// 判断是否有任务
Structattr attr = this.taskLikeMaterial(json);
if (ObjectUtil.isNotEmpty(attr)) {
resuList.add(attr);
return resuList;
}
return this.queryAttrGroup(structattr, param.getExt_id());
}
return resuList;
@@ -172,8 +201,8 @@ public class MiddleRuleHandler extends Decisioner<Structattr, StrategyStructPara
.collect(Collectors.toList());
if (ObjectUtil.isEmpty(vehicleList)) {
// 为空:
return null;
// 为空:查询正在执行任务是否有
return this.taskLikeMaterial(json);
}
List<MdPbStoragevehicleext> extList = iMdPbStoragevehicleextService.list(
@@ -188,8 +217,8 @@ public class MiddleRuleHandler extends Decisioner<Structattr, StrategyStructPara
).findFirst().orElse(null);
if (ObjectUtil.isEmpty(extDaoLike)) {
// 为空:
return null;
// 为空:查询正在执行任务是否有
return this.taskLikeMaterial(json);
}
// 不为空查询此组空位
@@ -212,10 +241,49 @@ public class MiddleRuleHandler extends Decisioner<Structattr, StrategyStructPara
);
if (ObjectUtil.isEmpty(attrListRest)) {
return null;
return this.taskLikeMaterial(json);
}
return attrListRest.get(0);
}
private Structattr taskLikeMaterial(JSONObject json) {
Structattr structattr = null;
List<SchBaseTask> taskList = taskService.list(
new QueryWrapper<SchBaseTask>().lambda()
.lt(SchBaseTask::getTask_status, TaskStatus.FINISHED.getCode())
.eq(SchBaseTask::getIs_delete, IOSConstant.ZERO)
.in(SchBaseTask::getPoint_code1, "CZJT01", "CZJT02")
);
// 校验是否有正在执行的任务
for (SchBaseTask task : taskList) {
JSONObject request = JSONObject.parseObject(task.getRequest_param());
String material_id = request.getString("material_id");
String pcsn = request.getString("pcsn");
if (json.getString("material_id").equals(material_id) && json.getString("pcsn").equals(pcsn)) {
// 找对应组的仓位
Structattr attrLike = iStructattrService.getOne(
new QueryWrapper<Structattr>().lambda()
.eq(Structattr::getStruct_code, task.getPoint_code2())
);
List<Structattr> attrListRest = iStructattrService.list(
new QueryWrapper<Structattr>().lambda()
.eq(Structattr::getSect_id, IOSEnum.SECT_ID.code("中间站库区"))
.eq(Structattr::getBlock_num, attrLike.getBlock_num())
.eq(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
.eq(Structattr::getIs_delete, IOSConstant.ZERO)
.eq(Structattr::getIs_used, IOSConstant.ONE)
.and(row -> row.isNull(Structattr::getStoragevehicle_code)
.or().eq(Structattr::getStoragevehicle_code, "")
)
.orderByAsc(Structattr::getStruct_code)
);
structattr = attrListRest.stream().findFirst().orElse(null);
break;
}
}
return structattr;
}
}

View File

@@ -49,4 +49,18 @@ public class AcsToWmsController {
return new ResponseEntity<>(acsToWmsService.applyTask(whereJson), HttpStatus.OK);
}
@PostMapping("/getConfirm")
@Log(value = "ACS向WMS反馈取货完成")
@SaIgnore
public ResponseEntity<Object> getConfirm(@RequestBody JSONObject whereJson) {
return new ResponseEntity<>(acsToWmsService.getConfirm(whereJson), HttpStatus.OK);
}
@PostMapping("/checkTask")
@Log(value = "ACS向WMS反馈取货完成")
@SaIgnore
public ResponseEntity<Object> checkTask(@RequestBody JSONObject whereJson) {
return new ResponseEntity<>(acsToWmsService.checkTask(whereJson), HttpStatus.OK);
}
}

View File

@@ -44,4 +44,23 @@ public interface AcsToWmsService {
* @return BaseResponse
*/
BaseResponse applyTask(JSONObject whereJson);
/**
* ACS向WMS反馈取货完成
* @param whereJson {
* task_code: 任务编码
* }
* @return BaseResponse
*/
BaseResponse getConfirm(JSONObject whereJson);
/**
* ACS向WMS申请是否可以创建指令
* @param whereJson {
* device_code: 设备编码
* }
* @return BaseResponse
*/
BaseResponse checkTask(JSONObject whereJson);
}

View File

@@ -2,6 +2,7 @@ package org.nl.wms.ext.service.impl;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.nl.common.exception.BadRequestException;
@@ -14,6 +15,7 @@ import org.nl.wms.sch_manage.service.ISchBasePointService;
import org.nl.wms.sch_manage.service.ISchBaseTaskService;
import org.nl.wms.sch_manage.service.SecondaryPackagingService;
import org.nl.wms.sch_manage.service.dao.SchBaseTask;
import org.nl.wms.sch_manage.service.dao.mapper.SchBaseTaskMapper;
import org.nl.wms.sch_manage.service.util.AbstractTask;
import org.nl.wms.sch_manage.service.util.TaskFactory;
import org.nl.wms.warehouse_management.enums.IOSConstant;
@@ -23,6 +25,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.concurrent.TimeUnit;
/**
@@ -73,6 +76,12 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
@Autowired
private SecondaryPackagingService secondaryPackagingService;
/**
* 任务mapper
*/
@Autowired
private SchBaseTaskMapper schBaseTaskMapper;
@Override
@Transactional(rollbackFor = Exception.class)
@SneakyThrows
@@ -199,4 +208,69 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
log.info("ACS向WMS申请任务返回参数--------------------------------------" + BaseResponse.responseOk().toString());
return BaseResponse.responseOk();
}
@Override
@SneakyThrows
public BaseResponse getConfirm(JSONObject whereJson) {
log.info("ACS向WMS反馈取货完成请求参数--------------------------------------" + whereJson.toString());
String task_code = whereJson.getString("task_code");
SchBaseTask schBaseTask = schBaseTaskMapper.selectOne(
new LambdaQueryWrapper<SchBaseTask>()
.eq(SchBaseTask::getTask_code, task_code)
);
RLock lock = redissonClient.getLock(task_code);
boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS);
try {
if (tryLock) {
if (ObjectUtil.isEmpty(schBaseTask)) {
throw new BadRequestException("任务编码为【" + task_code + "】的任务不存在!");
}
schBaseTask.setHandle_status(IOSConstant.ONE);
schBaseTaskMapper.updateById(schBaseTask);
} else {
throw new BadRequestException("任务编码:" + schBaseTask.getTask_code() + "正在操作中!");
}
} catch (Exception e) {
log.info("ACS向WMS反馈取货完成返回参数--------------------------------------" + BaseResponse.requestError(e.getMessage()).toString());
return BaseResponse.requestError(e.getMessage());
} finally {
if (tryLock) {
lock.unlock();
}
}
log.info("ACS向WMS反馈取货完成返回参数--------------------------------------" + BaseResponse.responseOk().toString());
return BaseResponse.responseOk();
}
@Override
@SneakyThrows
public BaseResponse checkTask(JSONObject whereJson) {
log.info("ACS向WMS申请是否可以创建指令请求参数--------------------------------------" + whereJson.toString());
String device_code = whereJson.getString("device_code");
JSONObject result = new JSONObject().fluentPut("is_create",IOSConstant.ZERO);
// 查询包衣/内包任务
List<SchBaseTask> coatingUpTaskList = schBaseTaskMapper.selectList(
new LambdaQueryWrapper<SchBaseTask>()
.lt(SchBaseTask::getTask_status, TaskStatus.FINISHED.getCode())
.eq(SchBaseTask::getConfig_code, "CoatingUpTask")
.eq(SchBaseTask::getIs_delete, IOSConstant.ZERO)
.eq(SchBaseTask::getPoint_code1, device_code)
);
// 是空返回1
if (ObjectUtil.isEmpty(coatingUpTaskList)) {
result.put("is_create", IOSConstant.ONE);
return BaseResponse.responseOk(result);
}
// 不是空:判断是否全部是否取货完成
boolean is_allGet = coatingUpTaskList.stream()
.allMatch(row -> IOSConstant.ONE.equals(row.getHandle_status()));
if (is_allGet) {
result.put("is_create", IOSConstant.ONE);
}
log.info("ACS向WMS申请是否可以创建指令返回参数--------------------------------------" + BaseResponse.responseOk().toString());
return BaseResponse.responseOk(result);
}
}

View File

@@ -511,11 +511,11 @@ public class PdaNotCarServiceImpl implements PdaNotCarService {
public PdaResponse cleanTask(JSONObject whereJson) {
Param sysParamService = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("NO_CAR_TASK");
sysParamService.setValue(IOSConstant.ZERO);
iSysParamService.updateById(sysParamService);
iSysParamService.update(sysParamService);
Param sysParamService1 = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("IS_ARRIVE");
sysParamService1.setValue(IOSConstant.ZERO);
iSysParamService.updateById(sysParamService1);
iSysParamService.update(sysParamService1);
return PdaResponse.requestOk();
}
}

View File

@@ -97,7 +97,7 @@ public class PdaPrintServiceImpl implements PdaPrintService {
// 质量代码
String quality_code = row.getString("quality_code");
if (ObjectUtil.isNotEmpty(quality_code)) {
pcsn = pcsn + "-" + quality_code;
pcsn = pcsn + "" + quality_code;
}
// 创建人
String create_name = SecurityUtils.getCurrentNickName();
@@ -195,11 +195,11 @@ public class PdaPrintServiceImpl implements PdaPrintService {
"^FO13,11^GB771,1171,4^FS\n" +
"^FO310,1137^GFA,469,624,24,:Z64:eJxN0rFOwzAQBuD/4qgJyFLNZiREI/UFssFGUVcewiMjD4AUF3XMQ/Aol8LAwMAj9BE6lqXm7CQNlqWTP53s89kZAE9AJrGCAbEEGQXIs4oRcLjFLAYZcy66o4pxJdDADq7xSl7BaHgBYjc6efJLazUlcHzOJ/KNeL9xPXoJRX5tb7ROcO1Hd82mXduZ7g+8mPyNxJWuVQinodzodR4d7QsJzEPw7Ez0qzL5Uyowl2sPfmni/lJXKlKqCuEQPb/btOEInavwzpjy8+dNq1CEkwLzQwj7wcuOxDOtFXZsz/mL3x21UqC2hO//+5it5OfQNeHwOTlqLV6KSzO/5JjRX2xyKb7gn2zKN+LNEVhB8172ob5+VI7apWQw7jmd61N/om9VvZDGOObYn75vcpPOKyPPJtfyuVkN/bSSL+8Lmeg86v3gcJN/xNXoVZX+lUw8ysqg/1d/cuF7Hg==:7A63\n" +
"^FO132,1098^GFA,833,1792,64,:Z64:eJyV1DFu2zAUAFAKGrRJFyDEK3RkUcK8EoUM4WBEMjJ4S27QXIVBhow9Qr7hIVv7gw5lEVXsJyXYUaImLgXQFslHEZ+fZOzfRXdLrVn/DpmVAEutRTiRZ8u+OtkDLvqiO83nziw11/mpfnkcn73JPRZdgw0ULneNl2Xe7a9v6csFy28yZyr26PbUzRkwIxjIknsaY4vsPgzRn3sBjacaK/zSR7972I0+0Dza/YBz6k6+deTFUOab4eDbXmP02guvh+TD09G3ELDtJx9g8pfh4NfcWiPXSiqlVmXy2Ix+R+tA9HbN1yp5wOirMt9ut5ljdfSWozRUG265Gj1M3pEHg9RpefTUTL4uyOfRq+gNB26oZqUhnbybfNfQP0nd9KTvMxnjl1/lV9k9eZu8ZJNnpeSj373yctnH9JBnfvTtwMrPY/y/vfJnfvRN8DMPKf5w9BrH+G/mvoVFTzOQv2CjN7R+zZL3lDciHP0Fm7ybrT9P3rzwcvQ0s2lfeENehDc+naMYfxm9pCBT/OtiE+OPIaT9w7h/Mf7R02aCrWn/Ctq/3FUp/61CG71SVqla6Wqzg6cdYsof+qX8sWry9NavRFVVlD9bVyevfYvNQANiBvfiV7iGAOEJYv46yl3KXz3Fn5K5fRjEUITLQJ189Kgh+goFCi8en78CucaNPp4f1Dh57dqb7+SfN0P+x8nkK1d10ReOHihu919Bs1XyN2xFR/bRVW7ygoniivvsZ+fZb2eTZ8f6RYl+KjDdGjAfkTl8z8OH/hbe8QY/9HfuIM1bHw639NHPrtPsLvQH/+mNb//Lv+Ys5v9J/i8PNczK:F344\n" +
"^FO426,1051^GFA,389,640,20,:Z64:eJxt0r1OwzAQB/CzLOEF7LVDaF8BtiBF6SuBmJjiqAMjK0gVvELZC3KnbnTtmL5AFMSCRBVz54+0IWTI3/7F0dmXAIyALg7HVxJMDk0HY2Zg1dDYP8ar86E1l2SjaCcYYrHr2SkZW60MXHRGA8HL+wrSzlIMJdgDQB6tvsaQ6mwOMInWVmTy6htXPwYrqKBMbvCR2HqbvWiy1O0lmN2QJXdrHc/BbaNck26fNC7MON74j1YF2ddriQuzggryhcKCOPmcoU2se3nZUuTtDqdT62u81xRTs65B2e1xryTbPINo4jmUcVkuD71qXKm+7V0PsIHzzsRb7ZPhVtjej/WHT07bi+a/rySTWbDxwaBvYzo9/F1HlgeLf5uBX08YYl8=:471F\n" +
"^FO47,941^GFA,2989,8280,92,:Z64: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:D49A\n" +
"^FO511,910^GFA,529,792,33,:Z64:eJx10sFK60AUBuB/OHCyGabbAUP7ClOEEEHsq6Sbu450cVdXJwj6EoKvMqWgG19BbRGuS3UjhSude8akipLOKuF8Sf5zToD+o92OQncO8wrK76qOPFwemJYqLuXWZEvHyNZELyN/YuQ5CxR35wMaL8I0CDB1KeCSsvIg3LAAl8BVtqCVnwlAXiZgyOT1qrnowMMajwPlf4chYO0hg5m0rqbN2RYAs1L5Py046gAqddYIIEwisC8Jj4MWkBcCMtIGNeYtKB6G2PMJSAar9wUQacY4zucepxsU9xtMbA9oggBoARrP5RbY8blkyCTDtPFbYOkm/wLXLZAufBRg5StOXTCq43YO7lrmMDC5Wy2kC4rxBexAwOlrAqZ2f2WSozTJJ+5WxCeDGJeVepdr2cUv8Hr2sYsOWH7jCqhSHjmuAHebTECmNIm3aMGwB8igyuw7GP4ElqWT9wSwG6Q3UBvZmU9A3bI2LoH4rwP8CVT8AMrXiFG2G/r+SelChboNUPWBb4X/iF6Lsg==:5CBC\n" +
"^FO13,894^GB771,0,4^FS\n" +
"^FO659,854^GFA,405,420,15,:Z64:eJxVkb9qAkEQxr9DuDRyaU/YeK9wIc1CDn2VfYKwIqig4ELaPEDeJUVWDrQ5tE0hYVOlkeTAZgOH5tuoRQaGmR/7Z76ZAU6m8M8u6OgpUTBaokbfMwjE4chr9EQcMAloNaQQAbP4gpooM2GhVtpOhINLlZSl0euB8TeW6KReGbkews8NXMdKtUZRjXD8ZqEfky89ks0DioQ4xW1VA+UOoKKPVwyeWWjRABI4vmP4QpF2AlBnLdR4tDAo55bYdVk9npWIl3OA93c97P0ByWeNaAt8eRw6BxSNQmtDGSnyuy36TxqtR9a9B/IGXXZzFfP51EC/cTAFrtusy1RVlCDR58+O6Cgjr5GFWaUnHDgk+m90kSXubRAJVyBahJTOxlz7PPPTCs5b+AWqXYCR:9F5F\n" +
"^FO227,1058^GFA,737,1408,44,:Z64:eJx11E9r2zAUAPBnBNWlk66DufZXSNnFgxB/lcK+QMYuGStYoYced92gbF+hu3dFZYfc1uuODoP1Fjx6WGAhnt4f/8u8QKzo6Wfn6UkWwP8+T+mqDsOGm8UgGIs1bSTy4ZIATEJz3gu11pk2qnAgVXAWmhlHVTliy2C1Q/sVcDwHOMZ49a+N0Fr8lSj639zZpMt7YFV54oEGY7bPfX6L3emIrU49x8We+u0OeKrQ1syZo9Do67WHjK3CtCc/1tsRi3PQ0d2dX/Qs/HxJt9IcJq3FH1otL8t5387PyGq8ZK3FmNXRO67PocXOrLEbfJyxT67Eal72rOps2tg9lt6YF1tag2BrtvuMx/Ff34stsEQmflWKzR9o4FnVWf2d7cUn7Jks1IxtQdOBE9dZEFvfYy9+s3JNDmxj6NmYaUUVjF9/cH5gj+Ft2dopbkH1x9kCxePnpRva88J1tqD7ru2WOr8uGstzs+WuyyGl2qibPTaz/brmfJOUbUGvB9ucy6huN9jkfrXhtUhyzoEewWtha6kD70kT3X8UK/keicVv1ayb9dQub2A+YqlKzZ6saIpkF32rR+yO9k7YwFf8XohVl2z7e11/2XAbOV6dRJNSKzoB+P5oJ/P8xm0oDj0jVzWWST3w0UA2bSyfDyZYyi0lCvB7SWWhOZip2KS1tK91KcWiWyI+S4Y2CenJgSSW0pXQ4XN9c9D1PxKaiW1OVQ9/AVFhtio=:8CA3\n" +
"^FO47,920^GFA,2989,8280,92,:Z64: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:D49A\n" +
"^FO511,889^GFA,529,792,33,:Z64:eJx10sFK60AUBuB/OHCyGabbAUP7ClOEEEHsq6Sbu450cVdXJwj6EoKvMqWgG19BbRGuS3UjhSude8akipLOKuF8Sf5zToD+o92OQncO8wrK76qOPFwemJYqLuXWZEvHyNZELyN/YuQ5CxR35wMaL8I0CDB1KeCSsvIg3LAAl8BVtqCVnwlAXiZgyOT1qrnowMMajwPlf4chYO0hg5m0rqbN2RYAs1L5Py046gAqddYIIEwisC8Jj4MWkBcCMtIGNeYtKB6G2PMJSAar9wUQacY4zucepxsU9xtMbA9oggBoARrP5RbY8blkyCTDtPFbYOkm/wLXLZAufBRg5StOXTCq43YO7lrmMDC5Wy2kC4rxBexAwOlrAqZ2f2WSozTJJ+5WxCeDGJeVepdr2cUv8Hr2sYsOWH7jCqhSHjmuAHebTECmNIm3aMGwB8igyuw7GP4ElqWT9wSwG6Q3UBvZmU9A3bI2LoH4rwP8CVT8AMrXiFG2G/r+SelChboNUPWBb4X/iF6Lsg==:5CBC\n" +
"^FO13,881^GB771,0,4^FS\n" +
"^FO659,845^GFA,405,420,15,:Z64:eJxVkb9qAkEQxr9DuDRyaU/YeK9wIc1CDn2VfYKwIqig4ELaPEDeJUVWDrQ5tE0hYVOlkeTAZgOH5tuoRQaGmR/7Z76ZAU6m8M8u6OgpUTBaokbfMwjE4chr9EQcMAloNaQQAbP4gpooM2GhVtpOhINLlZSl0euB8TeW6KReGbkews8NXMdKtUZRjXD8ZqEfky89ks0DioQ4xW1VA+UOoKKPVwyeWWjRABI4vmP4QpF2AlBnLdR4tDAo55bYdVk9npWIl3OA93c97P0ByWeNaAt8eRw6BxSNQmtDGSnyuy36TxqtR9a9B/IGXXZzFfP51EC/cTAFrtusy1RVlCDR58+O6Cgjr5GFWaUnHDgk+m90kSXubRAJVyBahJTOxlz7PPPTCs5b+AWqXYCR:9F5F\n" +
"^FO13,810^GB769,0,4^FS\n" +
"^FO571,772^GFA,629,784,28,:Z64:eJxt0k1r2zAYB/C/MUQX174mIOqvkJCLR7v6q+gTDJdAX2hGVHrfrjuUfZEdphJwL8XnHspQ72E47OJCiPd/7KR7oQJbkn9I1vPoAf403XdmPw//suP/TFkEDq4bn8jLweiuAxKah0tkXPDhxGsM4DmOOa3hVb23Wix+tYajOhv35sTSgVjE6S13v/Ceh1DNyNKyVMs/osAGn2ip4wKo23e0ocmypWVMi+VELLm2YtHlZ5rPintaWiujaCoUC6OXr/Ajl5mqy8XCiSU3PL4PD9Y82Isdl01nUxfaEgf3QOsQTRjfFSYPEpOOpza0FTQ3ubQ0h+fvOP0iMbzfzhDYJ+gPzC1tatH+wOybxJCWrQ2qR2RMtEpsNLF5rc352R3PifIMaBocMcGqdXptD31an8+XkvcyZg5r5EMsWuDjeoPVCX41W7EqgvIF1BA5r2SVO/xssB2JBZVG4g0GWXdpq1xyhvH0aWeR8YhpvMRI8nkEjDc7g3GdzZ2kHpsri+KxM+5yyo/8UdFby+/mQeyamZtZ6DnvnVvTPM1L7KHcE43LYHY23BuDOqRJjT0ziWFXE4FzfX0guejrsS36ejlGcOfwbyv6zkfywpvtta5/A17XxNM=:F8A4\n" +
"^FO428,744^GFA,597,817,43,:Z64:eJyN07Fq3EAQBuBZFmYbRW43WJxeYY7Aoav8KjIB1xvcpAhnCYHUhNR+jHuD7CKQu3uF6DDErUKaK0SSGemSU6pkQYWGD/HPzCpLi58w6hPoEfF6AHejCgKi3QpH8wO4RDZtys9oMFv77+XBRKAPiKkFd196oS/adDECl8iuffhWG4Q8P7ZNhKAbxMQCHIPQdVsZtEwTpnkeQn0l1LfaatAa0UYAPvRCywq1UBtNtOhe1QAzLSZqhQ4SQFWIJJS/Cnko69dMyT/rQjGtZ3rcT7RdUBLawcPg3yqhiqljevsoFFpMJurIPgyhQdtB7i409QtqBsmaes7qwojUzW2B8lNWkKwfz1khka8CZdIW0t2SxnNbn5i+4wng1ZxVaFkzdT3PVWiDK5vJXGumQ1thrHhbNqP3rg9Vnd9lW9kWcNaD2UTc1n3ZEGz3L1onvCCMHJ223j9hvsnS4guMQj/or6YHuFEVQUq7NJx4h2j6N49pM+zQb6QRfpjC+ahyz8MGfpcJzDUP6FczlW39J000XGgx/EXdRExxpnKz/kXjmcp9vVB3pvEiwB+qTktKQvnIX/C7aiD+BeFJuEw=:D211\n" +
@@ -240,10 +240,10 @@ public class PdaPrintServiceImpl implements PdaPrintService {
"^FH\\^FD>:"+bag_code+"^FS\n" +
"^FT763,424^A1I,23,25^FH\\^CI28^FD"+data+"^FS^CI27\n" +
"^FT426,749^A1I,23,25^FH\\^CI28^FD"+pcsn+"^FS^CI27\n" +
"^FT774,831^A1I,23,25^FH\\^CI28^FD"+material_name+"^FS^CI27\n" +
"^FT503,918^A1I,23,25^FH\\^CI28^FD"+record_no+"^FS^CI27\n" +
"^FO466,859^GFA,357,456,24,:Z64:eJyF0LFqwzAQBuATBnVR7TWDyTNcCAQNgTxL6NpBY0cJg7OEZO3Qh/AjSBg6leyd6kfQ6CG4/aW6hEKhNxzig/vvEFERF8wfzjKl7q/b+5E1E0kNH4OHj8GGk6yO2ZWCD9mHYPtCloqfePntfj/A/T65kvwIp+whJg/WwxW/scKC7N3sooVfkF9N8N49w3tn+89WaX5Ne0v4JJJPAvltNazan3u8OKYc4dJeWjWzGx9OOT+7yl7WC2NCwCiH0PQHqep1Ab/T9Xt8cAc4erhIqdeiI/xPdeadwCj6i7/umrgRHe7PJVxHnF+SaENx+Z/bCC9s9i1F+tvNzc0t55fz7ChN5gtaBnFJ:AF35\n" +
"^FO191,1057^GFA,501,729,27,:Z64:eJxt0jFuwzAMBVASGrhZF2DsawiIkVzJY4YAsdFr5CAZFXTomAt0YKaO9ahBsEpJNpCiFQx4eIP4v+gCsLuAiQCNu6B3ZrbTeyAQ3i/AuzTapLRLk3c2Wv8dCWc+JuAuef2g6dLduy5ZSUshGrmb5ECiND296y1KtJkOxnMHcsJMoORolEBkbtyj5xZkhhmaNtNgRpkLORRmEIETNJwJjBeppFMyPgWcEmZCJUvUV6K7L6T/SgcirqSTQ6+Uh78kL1/LRp3mBc65sFIKZNtKcaW4kVDTVIKV9B436F0BMvVl+Eq8kQC1tkTWXCvlNjSy5mLKRfWMK2muUy5KcylpvefO+HqXufvQWpDQUk/XY3qLNo2FbJo+QrfYeInkzHW/0CflXNoGJXzcKNp4DJlcoCtGKB1ixEdegGiFTubTQTlzbh7Wo0PRgBsN+b3+p/LKrzRjXKnsxisJbFQ2CrSov1T2cCP/izC+kB7ycP4B7TbWrQ==:AEC6\n" +
"^FT774,826^A1I,23,25^FH\\^CI28^FD"+material_name+"^FS^CI27\n" +
"^FT503,896^A1I,23,25^FH\\^CI28^FD"+record_no+"^FS^CI27\n" +
"^FO466,851^GFA,357,456,24,:Z64:eJyF0LFqwzAQBuATBnVR7TWDyTNcCAQNgTxL6NpBY0cJg7OEZO3Qh/AjSBg6leyd6kfQ6CG4/aW6hEKhNxzig/vvEFERF8wfzjKl7q/b+5E1E0kNH4OHj8GGk6yO2ZWCD9mHYPtCloqfePntfj/A/T65kvwIp+whJg/WwxW/scKC7N3sooVfkF9N8N49w3tn+89WaX5Ne0v4JJJPAvltNazan3u8OKYc4dJeWjWzGx9OOT+7yl7WC2NCwCiH0PQHqep1Ab/T9Xt8cAc4erhIqdeiI/xPdeadwCj6i7/umrgRHe7PJVxHnF+SaENx+Z/bCC9s9i1F+tvNzc0t55fz7ChN5gtaBnFJ:AF35\n" +
"^FO234,1020^GFA,761,1290,43,:Z64:eJyN1L1q3EAQB/DZrPGkCNqULsZSHsHlgsXZj+JHuPIKw+lIkZfwg7hckyKlX+AgI1KkzEIaQZbbzH7IUkwgEQdaod+h0X92BDDA/x56Wf7rT+fw7ZMnPSDAnVzaCcjuQQeAxu6Vs9qbw+cJgQkuYPw6FXol9PoEdBkHE4VexoOzJhj3I6DyJPfHGAp9K/QmAnXRyQ+aLj4520XD8ZTpHYxTW+hZojhQd+ANstDD6GxvFAeTqYPRN4W+EbrRjjrgnUoUhFoceELUjySvPXKlSmivHLXAHjw0baJbPbDPVAl1M5W0rGIiYIYdNJQoaMdcKMh1rTUFayUVUiPLopGzUCXUIPakE72v1FWKTy5TORe6QaRMn2tYcFupJAW90BTWPjr+fkpU3nqM/k/aSf5AKVdVaJzQtIW6VzRUGmbK2DSZenhFoVKp026l1glm6la0z2EVSjNlwNYU2qypS7lWmrolLZBcCUtYLeFMpbE9qUol111qrORaqe/JzFS2y32nXalVP7mpNcBTiz0+SLckC9rPLbiJH4OJQ6YmHr5M3cmEfUCrH6TvvPf0a27s9QmPmHKVbmFUz48YTLiZEpXb3Dn6+bIHJnlSgLwHVFDPaWCCYdzpozyU84zVTWjLxPm0s+bxE4BbdZQpeKF6odu0X1/TDws9X2iegjX1UtX7hZ4tNM/WmjIEeFdaY2IcLhaaJ1aqd2t6vtCrhebvwExdpWqhtwtVYUVTeQ7u11+qZfXX4zdFLy0P:FB4D\n" +
"^FO535,619^GFA,249,342,18,:Z64:eJx1zzEOgjAUBuC/IaHLE9a64BVe4oITV6k3wK2bNCR4BhMvwy0YewRHBgdfbSAS4z90+JL35y+g/Ox2Tz3xPhx81wRA9Q8qDTk2fBm7YEVuBRVkahF79p2toIaciGoTRfVYhVchEb1IqwbEniFbpPqRzH8kW3pqxvhHtOyhuMexTVLKZonjmTnJyc9XIj0d769DbCZI4mMABvK4eSP6W1qRrI89G5G/Y3uFkARJYprwBtY/PCQ=:9C8C\n" +
"^FO502,567^GFA,321,418,22,:Z64:eJyNzT1KBEEQBeBqCqqTcjvdYFivUMvC0oLgWcTUYMBkM7cYmE32Bush9gQyjWAkXsERLzBg0pHaP6CJiJW84gveAzAakeLGDS+q94gnUbwAmK5Bu+dmjEHfEN2+ak9oiX07Bg0dzlg2sihKxCLDpWqHTHKddVsUZAhFWZ6Ek2JR/63PuXf3WXT+oEW9PJY1W/XDZHXjsk+KPdnaW5Rh2f2o1DXLXNTuZi7pvA1ZHTcrTOq6u9OkzXiV1w7kV+YIcKbxhujWDRfuVfUdp7U5MtTLabblXcO0+K+ewwS/afu35nM1PLRfRXhUIA==:8EC1\n" +
"^FO564,247^GFA,33,64,4,:Z64:eJyz/9/AYMBIHrYH6gUArdcNKw==:8BD1\n" +
@@ -255,11 +255,9 @@ public class PdaPrintServiceImpl implements PdaPrintService {
"^FT499,572^A1I,23,25^FH\\^CI28^FD"+produce_name+"^FS^CI27\n" +
"^FT629,665^A1I,23,25^FH\\^CI28^FD"+validity_period+"^FS^CI27\n" +
"^FT639,213^A1I,23,25^FH\\^CI28^FD"+storage_conditions+"^FS^CI27\n" +
"^FT464,865^A1I,23,25^FH\\^CI28^FD"+material_code+"^FS^CI27\n" +
"^FT461,854^A1I,23,25^FH\\^CI28^FD"+material_code+"^FS^CI27\n" +
"^FT370,437^A1I,20,20^FH\\^CI28^FD"+create_name+"^FS^CI27\n" +
"^FT389,413^A1I,20,20^FH\\^CI28^FD"+data+"^FS^CI27\n" +
"^FT170,437^A1I,20,20^FH\\^CI28^FD"+user_name+"^FS^CI27\n" +
"^FT188,413^A1I,20,20^FH\\^CI28^FD"+data+"^FS^CI27\n" +
"^PQ1,0,1,Y\n" +
"^XZ\n";
} else {
@@ -291,68 +289,67 @@ public class PdaPrintServiceImpl implements PdaPrintService {
"^FO12,32^GB771,1150,4^FS\n" +
"^FO301,1136^GFA,469,624,24,:Z64:eJxN0rFOwzAQBuD/4qgJyFLNZiREI/UFssFGUVcewiMjD4AUF3XMQ/Aol8LAwMAj9BE6lqXm7CQNlqWTP53s89kZAE9AJrGCAbEEGQXIs4oRcLjFLAYZcy66o4pxJdDADq7xSl7BaHgBYjc6efJLazUlcHzOJ/KNeL9xPXoJRX5tb7ROcO1Hd82mXduZ7g+8mPyNxJWuVQinodzodR4d7QsJzEPw7Ez0qzL5Uyowl2sPfmni/lJXKlKqCuEQPb/btOEInavwzpjy8+dNq1CEkwLzQwj7wcuOxDOtFXZsz/mL3x21UqC2hO//+5it5OfQNeHwOTlqLV6KSzO/5JjRX2xyKb7gn2zKN+LNEVhB8172ob5+VI7apWQw7jmd61N/om9VvZDGOObYn75vcpPOKyPPJtfyuVkN/bSSL+8Lmeg86v3gcJN/xNXoVZX+lUw8ysqg/1d/cuF7Hg==:7A63\n" +
"^FO154,1096^GFA,737,1456,56,:Z64:eJyN1DFvGjEUAGAjKt9i5VZXtXp/4aEsHhD+K4463FhnY0A6s2TNys/oT3AUqV0qsWbDKGsHjzegXN/zUQLoCD1LD/uJzzqen2HswjNOA8kiXvr64Sl3A8mqveqUGkhqfdVJPpAEcdXBkLP/4YaS9jCbPIYFn35ORSyXj08+2AlGywS7jSCKUIdfce3DmIkyWJB1sLL0YdK9wSZ2fPZlV7ZV3GzRAUZypgVRpe84NpFcldA1yUoTs2vvnx/4V6Gm2rX35DCSm0oQWs/dQidLTs/RzcFK5wIwAXGyfOCKgwCcksNITgtMSYcjAjkrLS3pA52EcMt+ciz6jZUhu9A7uAHhlFWYzo4pdLSMGp0+OH7u8BUsjX9OkKMlJhhAsHvHZLjL7u7UwZCzsI7ZmTcm17me6+2Jq1Pvmt2xC9D5g+uW5DBaszu4Jgy4UQDscHLYVrId5XMYedu9uwXt3bH8xu/O0169w0x2GO/CUT1P3L6eY4b1xPOTXAqHlVyG6LCeW5/PT/UH1r8nIqdxqXFnVzCI22dySmmH0210MT69Ur8oPcV+0dQeuV+wn+a4nDtnE2fQYH+aFaf+xGlTJ4yvuT+rP9SfZl/PKpnNS5PMi4lNwp9h/ILcOJYep7P6h/Gzb/k+FL/pPlT7ehahKld1KFelr0D21+z8ipI7vnDoTu+mvuD8FQfDjs7hQ2ez4+eOzv3MnfyxQLfL7tO5M1fdX9XmPaw=:78B1\n" +
"^FO468,1052^GFA,597,768,24,:Z64:eJxN0jFr20AUB/D/cZBb2tOaQZW+grspxFhfxR/BpUNVStEJDxmztmDSr5BuGTpcJm/1mqEUmQ5ZipHJEIcaX//vZDs50CF+Ot699/SAUwADHNaYj4lvafR27524g+69iK48XTkkDicvvBWvxFtkz66iD7klA8GD6/YNfUTPBJ69e0v/wDgZBhVinvSxuV7Sxzr65OjeqNtbj1a87CYY9L50RjcXvFpfuOy0aFH0/sclRl1Ce/3NZwV9FN3ewyavZ0gW0w1sRc+jJytYe7aBCcbTz1okX8TNFjZ9x2TnpYN9evIwd+I8agvJ84T52FoqFC+3G6Qf5w6w+oonpCOstwzsb/r+q2NvHnawsbND7csbPHbpw/fG6XD5i/5ZvG5xjuCG9Xrqwt98BhsCPQ/A+YKF7JYBRapv6I2X2PRVi9LPV7xNXDc+CXf7Plu1uKKr6+im6/uzBXTzA6j9hL72fZ9Ls+s92SjmWf87+M97joeawRQ5I5bTvX/63Yqz3iKja7piZFSvxLW4/HfxPLrMjz26oduhuDp4Fc9LvUfPtMwbtzysX7oVL7gZGV6MYvw46XTIR67/39q/uw==:0FE9\n" +
"^FO46,941^GFA,2989,8280,92,:Z64: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:D49A\n" +
"^FO510,905^GFA,529,792,33,:Z64:eJx10sFK60AUBuB/OHCyGabbAUP7ClOEEEHsq6Sbu450cVdXJwj6EoKvMqWgG19BbRGuS3UjhSude8akipLOKuF8Sf5zToD+o92OQncO8wrK76qOPFwemJYqLuXWZEvHyNZELyN/YuQ5CxR35wMaL8I0CDB1KeCSsvIg3LAAl8BVtqCVnwlAXiZgyOT1qrnowMMajwPlf4chYO0hg5m0rqbN2RYAs1L5Py046gAqddYIIEwisC8Jj4MWkBcCMtIGNeYtKB6G2PMJSAar9wUQacY4zucepxsU9xtMbA9oggBoARrP5RbY8blkyCTDtPFbYOkm/wLXLZAufBRg5StOXTCq43YO7lrmMDC5Wy2kC4rxBexAwOlrAqZ2f2WSozTJJ+5WxCeDGJeVepdr2cUv8Hr2sYsOWH7jCqhSHjmuAHebTECmNIm3aMGwB8igyuw7GP4ElqWT9wSwG6Q3UBvZmU9A3bI2LoH4rwP8CVT8AMrXiFG2G/r+SelChboNUPWBb4X/iF6Lsg==:5CBC\n" +
"^FO12,894^GB771,0,4^FS\n" +
"^FO658,848^GFA,405,420,15,:Z64:eJxVkb9qAkEQxr9DuDRyaU/YeK9wIc1CDn2VfYKwIqig4ELaPEDeJUVWDrQ5tE0hYVOlkeTAZgOH5tuoRQaGmR/7Z76ZAU6m8M8u6OgpUTBaokbfMwjE4chr9EQcMAloNaQQAbP4gpooM2GhVtpOhINLlZSl0euB8TeW6KReGbkews8NXMdKtUZRjXD8ZqEfky89ks0DioQ4xW1VA+UOoKKPVwyeWWjRABI4vmP4QpF2AlBnLdR4tDAo55bYdVk9npWIl3OA93c97P0ByWeNaAt8eRw6BxSNQmtDGSnyuy36TxqtR9a9B/IGXXZzFfP51EC/cTAFrtusy1RVlCDR58+O6Cgjr5GFWaUnHDgk+m90kSXubRAJVyBahJTOxlz7PPPTCs5b+AWqXYCR:9F5F\n" +
"^FO12,790^GB769,0,4^FS\n" +
"^FO628,748^GFA,433,486,18,:Z64:eJxN0c1Kw0AUBeAzBJzNNNlWGOwrWLpp8SevkieQSEFaqPQW9/oCxWe5INRd1i5cjPsu0l0EMZ5JKDaQm+FjJsk9F/i/fFeTE7nuqhUYhXbr21g0owQ+opW8TUhZagRbH6WO0iCgnl72oo5ly/csQkAB25yLM2KeKSNV7rTbmfj12zhKtpEobvkyqm1hKTaJkrjvV4+1Rsme+OGQDA6Nx0QT2WHwDrQKNw4+nUgiFXwFLIWiN79zGPmEv2OPlImMdq2Y6gNTtmkzcWPB7gFoGlwxCtuqP1BS9lIjH2LdAo+HH1QONpSwQ+SMYZ+rqTyyUOBsGrPBPpcorghIKQzJzTpBoZ2sKGy84vF7LnNF2cumAeYCv2KGPGzYAadC4RYUvfAnLihxDl+BnShHg2zRz6stY84nA+ySB/4AV8h6Zg==:5C78\n" +
"^FO378,753^GFA,421,570,30,:Z64:eJx10U9Kw0AUBvBvePBmE+J2wNBcYbqRdNWrVLxApFupCYFmI649Ro8wJeCyV7BFsNuAmy5C9b00UhU6MIvhB/O9P1lafKGjA6hjvm6RT03h4f1ixJ09ZuPwWW5sBNowpw75vAyqe7KvMWM22zV1xKCaOXHAbq06birLTjU05AhEzC4CwnqrWlZMojhp0atTbfVnUzF7UR/eqTCiy5PuVr02vT624c6oGtFc9PZFFQ0norP8rGn4pbb9qQom9LnQ3KchF8kfjU9VPYveS818xci30q9qzSOXab9L0bapODbHbKKzguRu7E0kVc3L2mOy2hMllrO0eEOn+kAfdgtMTeWR+kW6PsgEJUmuKIZjypUMAfJ2g+qsLmtCOGvR/lPd0WXV/Z41HzQe1Bx+q1eVY4/fuLp8mA==:AE96\n" +
"^FO12,732^GB771,0,4^FS\n" +
"^FO712,209^GFA,197,182,7,:Z64:eJwdzi0OAkEMhuF30oSaDWtH7V4BOYKEq+CwSMQGisJwoJWD4hoQPCFBMgG6Y/ok/clXAKEWsVz5Zdq3Scz9VybaUU26TFJkcGZ4c0LjldSgfeFwDp/XVkpD4SZjpBcjgZ4giYVnhSGyOvrtQopH7tfqiWymAncnEi4GS3/C2HWEBww+U+iceV10/hsHJ1w=:E077\n" +
"^FO12,674^GB769,0,4^FS\n" +
"^FO657,572^GFA,381,448,16,:Z64:eJxF0cFKw0AQBuB/Wchclu014pK8giJIwYDPIoLniAcPYhsQ9CKeAwp5lYW+hAXFFA+9FNqbeyiNM0lIBsLybSZ/MlmoAlIGXRndrZavE95MotG5A1KjCmmxvJ/PAOd0a0MItz/sYwIVXpzdlewLC3pqbe9j9tkH6NCaZuLTLxC83kfQ+9gjzqkWbzg/HNXsOUhxP/vhvUC6/RzcVEB8VfY2lzs3OoumyGNxAKWcn+T4m/L7Vnz/kfvPa/oOPM+qf/7G2yXnO+kXr71Zcr7r8yaLwjVhsGoWSGv5/utKTL8v/BPE69DOo5+BjJ1uS0yqGmShNmxonn8HUAL12lvzEVgH/da6Ow9roA/Z6ARQ3mEo26//o6BZ7A==:8F8D\n" +
"^FO16,615^GB767,0,4^FS\n" +
"^FO16,554^GB767,0,4^FS\n" +
"^FO12,368^GB771,0,4^FS\n" +
"^FO12,431^GB570,0,4^FS\n" +
"^FO12,309^GB771,0,4^FS\n" +
"^FO13,248^GB767,0,4^FS\n" +
"^FO582,369^GB0,127,4^FS\n" +
"^FO657,514^GFA,385,448,16,:Z64:eJxN0LFqwzAQBuBfGOrFrVcPJn6FhEJrqIlfxY/gkLUkCoFOpXOHPkjHM4Y+QzJFQUPGempUKKh3diC+wdan0w8nAVwR+jLDD1UyttLdFJlGrbpKvCZXRSERqY4PZL6DMamyG62IHZ85t8txvoci4uMhcNzVWM1H/jAoJlBN7xrHN4OUfZCNzKHVZe99y30PtFuH+dMUzcuQ9yvCQ23QvA5uI8LjjHB4v3q20dh/igu0MWFhNZqOb7P9w4n7y6VWDc+rvINnl7z8FpsaNib1owx+ZT6+pI0o/Co1vwR7QWLcOiAQ88emDryFIB58KgkpL2N/mfeZnWMtRMDB1CApUN7I63rTO58Ad2JuSzjH4L7YydiXkvw/XNJzww==:0B55\n" +
"^FO12,496^GB768,0,4^FS\n" +
"^FO516,451^GFA,217,182,7,:Z64:eJwljjEKwkAQRV9IsY1sWouwuULKEQO5ykrAtAGbCCEuCF5JO2PjOdLZiZVaiDjE3zz4wzw+DTCDRsg+0ClsjBdSa/+QvDr5wjZSy9DZMa0XoSsHt16yewVTH3EGVk+w4L+QKgoQLc+jIq7KQI/ZvOGO63Oi25BdhegSEqv3vQ5wmIO+pmRqmLckukUeGLVsx0kmHlqm5PwACpcohQ==:4E76\n" +
"^FO609,458^GFA,337,540,20,:Z64:eJxlkTGOwjAQRQdZwg3atBQJuYJXNKngKjmC0wUJbXwMCg4zB6EI4gBAFwoI/uM4EctIHnle/O2ZH6IQc/qOhV/K+WQmtvRLs08FtkoYPuvWp70xtAzMgmHzZ0rd9biFysisKZPTRVg7MtvO08A49mMt/6Tnb5ad+T9bZVeUs4lVvMk6+mQN56/yk/0+OQmjJSNb392AemEYyVQuTBBm0VseGCbYHXxK8244twWbgeW9GPR0VMARdcSlOr4hTC8oegBtMTo3sRoOq8aNXnn2wGP5DaWCpK6YGvydlWill9o3WVC0iqQX6U1CtJBSGlEoY7wBu+1QPA==:6B73\n" +
"^FO13,191^GB771,0,4^FS\n" +
"^BY3,3,58^FT565,97^BCI,,Y,N\n" +
"^FO231,1049^GFA,917,1312,41,:Z64:eJxd1LFu2zAQBuCfIBAtrrWqiGq/goouCiJErxKgLyAgi4GkFo0M3TJ3CJpX6AOkAYsO2pq5QAYaAurNZtChCqpIvRMlO66BMJL4STySdwT+/wkFyO3dATeZuzb0N3sBNcNxf+fD9UZCC0PPL/g+3EE17h/4CIAKOJVa2OgAJ/z8ZB+OGXqKYANhPCXqaIwUGLlhdnDCUGpqftNDn3AUIlX+hN7egyfiga5MCA5OTaiD4Dud3tHbezCVPHQWEJSeShx8q6ua3xyWR40PcD4OeXniDvI/HcWIymW1D0fIwjCkGZEoW4+WqIP49Z4aS072MEAWB3OaTzwTy8srWnQHs9PY7YBcOBjDZoFFgqNalATtS8j7I5cdXGcw9qdGXaUKqx5mERDbHorHDjYGprxRyC1t2uryM2200DnFFjcEY57MUwdzjWUxAZIz2r/NzTXD7w3FdmgH+IHhJX2svOLN55BWjw8MC0vwjRrgK4btvRLFNYdijgxKFXZDZxknygBpZ2RraWuLo08joE0pWuzgCOfGQakT+Vf5ubg/DgKk1bOG8R528CJXPSwayC9+JYs2iP3m25PGpq07OCfom3oYurWQt4Q366mVC32ssKm6oZc86xyRgxQfNXdryHo0588QNHHIC17yrJu+NtA+qz7NTPjE8BADNBzjttpylxQ+ZWV8qOHVHsE05KTYQbtNM5sbB1s1NVi1t5xmHfT2YU1Jgey1xtmCgiqrhNKog/Ijk23iel/XHEnAWbfmGBNw6cwIFlQwrmammov0B8OYo2VBcELxpBXkShoHRdtBPgDMFs4SqmXRUiLhz8L25Vp2cNJDr4NpzZ1z7mY0hdvrHgqT8BXNom1DKnB3GHl6OFLk7osJD53wtrlyH37ukOJXPdUdfCNuEtf5DyM3NUY=:8875\n" +
"^FO46,897^GFA,2989,8280,92,:Z64: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:D49A\n" +
"^FO510,862^GFA,529,792,33,:Z64:eJx10sFK60AUBuB/OHCyGabbAUP7ClOEEEHsq6Sbu450cVdXJwj6EoKvMqWgG19BbRGuS3UjhSude8akipLOKuF8Sf5zToD+o92OQncO8wrK76qOPFwemJYqLuXWZEvHyNZELyN/YuQ5CxR35wMaL8I0CDB1KeCSsvIg3LAAl8BVtqCVnwlAXiZgyOT1qrnowMMajwPlf4chYO0hg5m0rqbN2RYAs1L5Py046gAqddYIIEwisC8Jj4MWkBcCMtIGNeYtKB6G2PMJSAar9wUQacY4zucepxsU9xtMbA9oggBoARrP5RbY8blkyCTDtPFbYOkm/wLXLZAufBRg5StOXTCq43YO7lrmMDC5Wy2kC4rxBexAwOlrAqZ2f2WSozTJJ+5WxCeDGJeVepdr2cUv8Hr2sYsOWH7jCqhSHjmuAHebTECmNIm3aMGwB8igyuw7GP4ElqWT9wSwG6Q3UBvZmU9A3bI2LoH4rwP8CVT8AMrXiFG2G/r+SelChboNUPWBb4X/iF6Lsg==:5CBC\n" +
"^FO12,851^GB771,0,4^FS\n" +
"^FO658,804^GFA,405,420,15,:Z64:eJxVkb9qAkEQxr9DuDRyaU/YeK9wIc1CDn2VfYKwIqig4ELaPEDeJUVWDrQ5tE0hYVOlkeTAZgOH5tuoRQaGmR/7Z76ZAU6m8M8u6OgpUTBaokbfMwjE4chr9EQcMAloNaQQAbP4gpooM2GhVtpOhINLlZSl0euB8TeW6KReGbkews8NXMdKtUZRjXD8ZqEfky89ks0DioQ4xW1VA+UOoKKPVwyeWWjRABI4vmP4QpF2AlBnLdR4tDAo55bYdVk9npWIl3OA93c97P0ByWeNaAt8eRw6BxSNQmtDGSnyuy36TxqtR9a9B/IGXXZzFfP51EC/cTAFrtusy1RVlCDR58+O6Cgjr5GFWaUnHDgk+m90kSXubRAJVyBahJTOxlz7PPPTCs5b+AWqXYCR:9F5F\n" +
"^FO12,747^GB769,0,4^FS\n" +
"^FO628,704^GFA,433,486,18,:Z64:eJxN0c1Kw0AUBeAzBJzNNNlWGOwrWLpp8SevkieQSEFaqPQW9/oCxWe5INRd1i5cjPsu0l0EMZ5JKDaQm+FjJsk9F/i/fFeTE7nuqhUYhXbr21g0owQ+opW8TUhZagRbH6WO0iCgnl72oo5ly/csQkAB25yLM2KeKSNV7rTbmfj12zhKtpEobvkyqm1hKTaJkrjvV4+1Rsme+OGQDA6Nx0QT2WHwDrQKNw4+nUgiFXwFLIWiN79zGPmEv2OPlImMdq2Y6gNTtmkzcWPB7gFoGlwxCtuqP1BS9lIjH2LdAo+HH1QONpSwQ+SMYZ+rqTyyUOBsGrPBPpcorghIKQzJzTpBoZ2sKGy84vF7LnNF2cumAeYCv2KGPGzYAadC4RYUvfAnLihxDl+BnShHg2zRz6stY84nA+ySB/4AV8h6Zg==:5C78\n" +
"^FO378,709^GFA,421,570,30,:Z64:eJx10U9Kw0AUBvBvePBmE+J2wNBcYbqRdNWrVLxApFupCYFmI649Ro8wJeCyV7BFsNuAmy5C9b00UhU6MIvhB/O9P1lafKGjA6hjvm6RT03h4f1ixJ09ZuPwWW5sBNowpw75vAyqe7KvMWM22zV1xKCaOXHAbq06birLTjU05AhEzC4CwnqrWlZMojhp0atTbfVnUzF7UR/eqTCiy5PuVr02vT624c6oGtFc9PZFFQ0norP8rGn4pbb9qQom9LnQ3KchF8kfjU9VPYveS818xci30q9qzSOXab9L0bapODbHbKKzguRu7E0kVc3L2mOy2hMllrO0eEOn+kAfdgtMTeWR+kW6PsgEJUmuKIZjypUMAfJ2g+qsLmtCOGvR/lPd0WXV/Z41HzQe1Bx+q1eVY4/fuLp8mA==:AE96\n" +
"^FO12,688^GB771,0,4^FS\n" +
"^FO712,165^GFA,197,182,7,:Z64:eJwdzi0OAkEMhuF30oSaDWtH7V4BOYKEq+CwSMQGisJwoJWD4hoQPCFBMgG6Y/ok/clXAKEWsVz5Zdq3Scz9VybaUU26TFJkcGZ4c0LjldSgfeFwDp/XVkpD4SZjpBcjgZ4giYVnhSGyOvrtQopH7tfqiWymAncnEi4GS3/C2HWEBww+U+iceV10/hsHJ1w=:E077\n" +
"^FO12,630^GB769,0,4^FS\n" +
"^FO657,529^GFA,381,448,16,:Z64:eJxF0cFKw0AQBuB/Wchclu014pK8giJIwYDPIoLniAcPYhsQ9CKeAwp5lYW+hAXFFA+9FNqbeyiNM0lIBsLybSZ/MlmoAlIGXRndrZavE95MotG5A1KjCmmxvJ/PAOd0a0MItz/sYwIVXpzdlewLC3pqbe9j9tkH6NCaZuLTLxC83kfQ+9gjzqkWbzg/HNXsOUhxP/vhvUC6/RzcVEB8VfY2lzs3OoumyGNxAKWcn+T4m/L7Vnz/kfvPa/oOPM+qf/7G2yXnO+kXr71Zcr7r8yaLwjVhsGoWSGv5/utKTL8v/BPE69DOo5+BjJ1uS0yqGmShNmxonn8HUAL12lvzEVgH/da6Ow9roA/Z6ARQ3mEo26//o6BZ7A==:8F8D\n" +
"^FO16,572^GB767,0,4^FS\n" +
"^FO16,511^GB767,0,4^FS\n" +
"^FO12,325^GB771,0,4^FS\n" +
"^FO12,387^GB570,0,4^FS\n" +
"^FO12,265^GB771,0,4^FS\n" +
"^FO13,204^GB767,0,4^FS\n" +
"^FO582,325^GB0,127,4^FS\n" +
"^FO657,470^GFA,385,448,16,:Z64:eJxN0LFqwzAQBuBfGOrFrVcPJn6FhEJrqIlfxY/gkLUkCoFOpXOHPkjHM4Y+QzJFQUPGempUKKh3diC+wdan0w8nAVwR+jLDD1UyttLdFJlGrbpKvCZXRSERqY4PZL6DMamyG62IHZ85t8txvoci4uMhcNzVWM1H/jAoJlBN7xrHN4OUfZCNzKHVZe99y30PtFuH+dMUzcuQ9yvCQ23QvA5uI8LjjHB4v3q20dh/igu0MWFhNZqOb7P9w4n7y6VWDc+rvINnl7z8FpsaNib1owx+ZT6+pI0o/Co1vwR7QWLcOiAQ88emDryFIB58KgkpL2N/mfeZnWMtRMDB1CApUN7I63rTO58Ad2JuSzjH4L7YydiXkvw/XNJzww==:0B55\n" +
"^FO12,452^GB768,0,4^FS\n" +
"^FO516,408^GFA,217,182,7,:Z64:eJwljjEKwkAQRV9IsY1sWouwuULKEQO5ykrAtAGbCCEuCF5JO2PjOdLZiZVaiDjE3zz4wzw+DTCDRsg+0ClsjBdSa/+QvDr5wjZSy9DZMa0XoSsHt16yewVTH3EGVk+w4L+QKgoQLc+jIq7KQI/ZvOGO63Oi25BdhegSEqv3vQ5wmIO+pmRqmLckukUeGLVsx0kmHlqm5PwACpcohQ==:4E76\n" +
"^FO609,414^GFA,337,540,20,:Z64:eJxlkTGOwjAQRQdZwg3atBQJuYJXNKngKjmC0wUJbXwMCg4zB6EI4gBAFwoI/uM4EctIHnle/O2ZH6IQc/qOhV/K+WQmtvRLs08FtkoYPuvWp70xtAzMgmHzZ0rd9biFysisKZPTRVg7MtvO08A49mMt/6Tnb5ad+T9bZVeUs4lVvMk6+mQN56/yk/0+OQmjJSNb392AemEYyVQuTBBm0VseGCbYHXxK8244twWbgeW9GPR0VMARdcSlOr4hTC8oegBtMTo3sRoOq8aNXnn2wGP5DaWCpK6YGvydlWill9o3WVC0iqQX6U1CtJBSGlEoY7wBu+1QPA==:6B73\n" +
"^FO13,148^GB771,0,4^FS\n" +
"^BY3,3,58^FT565,75^BCI,,Y,N\n" +
"^FH\\^FD>:"+bag_code+"^FS\n" +
"^FT378,755^A1I,23,25^FH\\^CI28^FD"+pcsn+"^FS^CI27\n" +
"^FT773,820^A1I,23,25^FH\\^CI28^FD"+material_name+"^FS^CI27\n" +
"^FT505,914^A1I,23,25^FH\\^CI28^FD"+record_no1+"^FS^CI27\n" +
"^FO111,1057^GFA,645,1100,44,:Z64:eJyN1LGK3DAQBuARKtQEqU0hojxCSoU19isJUqwDm1hwxXX7TDJbuLxHOJkt0irVqTBWZmzvLmzujptqMB9j8Y9lm+D8GNkMoN0kWehYHLPkPoJgE2gw3gkYhwgOYDfB+JxF8aB3RbK+9Gk/SxHQioK2i2SfEtlmhrFkVQLoBu2pjLnbrCq+hpLIPmeytYExV4ZHtOLITn2yv9VmRahZymTzgWyFXdQ1JNAVP7IBnG2FlBGtZmHPgiUbq9V6tNQuNkB7tcDinodqsZqs5X4M2oIFbRdrcdBmAa3XZMPNHtxi1WaN/JRWe364t0/5G9nvmMNQsv0xS+3QmvKKLQk3gTnMq+2mix370382rDZvNr1jcSzZGtDieQ8graXM4M5SZmG1drPuas/+jJmpm2XULZYf+ck7yoyswo3jHNsqttlGcdoK2UocBe24VdLpCEaJAf6mfGj4xc4mlrxYU2TTl3HGPMgWUR7BldQUs9ndVEfKrEI7y1+h9HMzkWUvvAhwXTQv9SWHVMUmfqZdiEn+DA2bVZZRRvYHJgnWeDVUFwtUFVlYC5+Qhbu6Wg3th+0X+n5vVgXxtlUP8cNW0H3Dd79tOwxrtZzu8Wa/ovXvWKD/w2bpSJ6/Zv8BlO8+jQ==:5596\n" +
"^FO715,691^GFA,217,216,8,:Z64:eJw9zjEKwkAQheE/BNxGrK3MFbTbQvQqOcKWgmBi5ZUEmxXBKgdIIbKwhW3sBIt1ZgNO8zEDM/OYMdYCajxUMKgWvvOQjX9lvlSvLU69MXrPpr6TZUeyD2gC0faw9sQ0QOFJF7E8+WjlXplC3AW2qeXln1Ry+lB80BTGSGMC5ihuaiaF5qmZZh12pTkc+7foBtkTm3P+oTnVHziUP3g=:1C17\n" +
"^FO581,694^GFA,229,304,16,:Z64:eJyFzzEOwjAMBVBH7JzFY7dcJagDa6ReIFWlsiBmjtEj/KgS18C5QUYmipMWGBjw9iT72268NYGJLTm+hwWN73qo2+D4EQGiFIsBxzKTGlE2o12d1VR8q05Tsfv4cFUv4ngev4b6uVvnzzVPPHah+vJ2lLp/VKcoOcKioa4/qbsh5TaI2pqh3L8/sn6i/WT6SfeXqvm/DvmP/WaD1byZFrwAXqNleg==:1BD3\n" +
"^FO475,853^GFA,345,456,24,:Z64:eJyFzjFqwzAUBmA9DPLyrKwOiPoK0uYsPYt1gipjIRAJgbPkADlGjmARyNor2EvmjB089EnGNEuphh/08fjfaxsXfT8jOKDk5TR+RB8da/UQ/ekuyE935GjVwSRnXUfOs3Pkda2sCav3xSb1FNk7HQw5S843npzmGbnps6vk1eqYfE9+fJJLjOQSeTMrE3ud+i3tfSan5LVURzjrdS9DQ/MMRdoL5+3igZr3uT+7yW7HW+gFanKBb7JV3XQhb3fD4ytI3DmgfBdW6XipyBt3+PTfuHVA+SinufHXKt2fH1YOlo9icC3/9zK5XHz8y4tfL156Xh1WZwwG8h8KqnO3:CFC1\n" +
"^FT576,697^A1I,23,25^FH\\^CI28^FD"+bag_code+"^FS^CI27\n" +
"^FO317,690^GFA,205,189,7,:Z64:eJwljjEKwkAURN/ywW1E2y3EvULKgIFcZSEXSGmnx/A4AcFTpIgEUglumWrXv7H4vGLmzwxAo0c2ybxsnvB2L0+wo0PArDUyQaxoB+grLmq+9kXjE5AIS+BWwxzoHLynApMC31HfA/MJXDBz2pApoANRiB0OPmIT57VqVfMPjhq906DSoLGlXdHeNzT/va5M5gfuwyjr:BA73\n" +
"^FO153,690^GFA,317,460,20,:Z64:eJyN0LFKA0EQBuAfArPNcNtucImv8NvoFcF7FSEvcGBjYaEIqfJQK4I2eYCUFwLW9wBCnN27mJA0TrcfuzOzP2Dle1xUrC+N+g+bi1DZIBGu07uOZiISay5eUwtt9Z6juZ7pvXtCCFqbzbIh/BnD0ZANZnZPs016YvGwAbRY6VeR+x03uP5RHuaq9dtxjRC1eTmxj2whEoNV2b5uVsXGfjOz7ed0ZVnM2RZztzbjcTldomqfQ5nRvH37jo2Yue3ap7IfJMcnVzKGlP+BclB/bpaJdwfD0SZnZm+rE8NgUQbz+/QLNlA+rg==:F877\n" +
"^FT150,697^A1I,23,25^FH\\^CI28^FD"+qty_1+"^FS^CI27\n" +
"^FO715,634^GFA,193,182,7,:Z64:eJwdjTEOwjAMRV/kIRtdO+QWLJGolMP0EmyYhRGuFNQVcQKGSD0AHTugBqdenqVv/weV7oevhVSRCQ7+hoB3d6Tg9E3KFF6cYImhZefYIwtDgEvEbhh7kB1Sle8Hd83MocHNG2KoNDBa9SMjPstq69a+zQxHOqtm1GZg0maXZyYpXmHYBZjH5g++sSu6:E28C\n" +
"^FO545,631^GFA,309,460,20,:Z64:eJyN0L9KA0EQBvAPAnPNcNte8MgzfDZ6RfBeZSEvEEhjGRFS+VAbAtr4ACk3HFhfaRdnXEM0aZxtlh/MX8AijLiKtrs26j9sLkJlj0To/ZDsA4hI23HxlJbQB8bVulg1Mm3zI7RjPKQ0c0PzY2xiOhuK0U3dJiOxiPtiudSryeNAtxxTLKZWb+A7tF//sZ0b4fXcare325dTD7eZ2eF16rb0+cyqO+ux2kw30CaXPfrnj5DZi1vYfdq+Nh/Ezyc3AjtPBHwPexYaLs1uEqqT4WyTC7Pc+pehWCvfZnMcvwC491j6:81B6\n" +
"^FO317,632^GFA,217,196,7,:Z64:eJwtjjEKwkAURN/ywW3Cpk0R9AopAwq5SiAXSGllPIAH8BgeYUHwFCILaQVTbiGJP4sDw3z+wMyAoiKhVy4QsUuAN3LXh17yF2XIaDx4x54kq/faIhMSS4Ya52u6gs1YreKWG58nQ2gZS/MNrRlnsuCN9pQn6GCneWK9e7TYGXPpG/Xkesw12mqmSh5Tu+jO5px2HrR2giKt/gHlVS7b:0BB4\n" +
"^FO158,631^GFA,305,414,18,:Z64:eJyF0DFqw0AQBdAPglEzrNo1EfIVxhiEChFdxWBILUijzoSAKh9KJuA0PoBLBYFrHSDgzKxAsd14un2wn5kP6CQjHiYtHkX4iZREwlKhEzRxLwQQUVrI9qOrwVwXk8SjdIe+AXtfUGYCP0s5C4LAvxKbRKNguzmrcD7lOJHrICrL3/UkrDmDnDQnvZGvIH7VmjiT79U+yNEkU/k5LlR0VZM41+T3dtGCXS0XoPq8JL1UpLLTu950H5DVQy+k+0DyzMQq4ORe9O4kDpLhX6I70V9uEmePIClFoWD6A2YhOXE=:F331\n" +
"^FO452,571^GFA,365,575,25,:Z64:eJyl0bFKBDEQBuAJgaQJ2XaKsM8wnVuIvko6G4t7AslyxTWHr2RCimvEZ9hHWBuxWE4nibt4cp3TBPLB/MwMwJVS1z7/A3Kebya9gDFdfBhfIC7iQ3wWHvCOnGFwk0/vIT3LXhsGY3AgKjDsfEohS2WNgr4AoS9A5FOIWVrlJAMw0AZjiNIolIGbKYZYYaggjgpFAOjOSFMD9OkA+euoqICxeB82WCDLFTgD4hYuMmeQiA1qhqvh4wbWIe0K3JY59vt8ULaCHhBLuH3kyeNJpzfZ1ww5n7vIoF95V/OTK7tiKEtBKOG1Ynt4jr7B9AfkCr7B9AO8K2hAl2DUCu6ylTbrMfmCv4sv+A1cb2P6:0B48\n" +
"^FO495,513^GFA,285,437,19,:Z64:eJxl0DEOwjAMBdCPKrWLRVcPFWcwE53KVYK4QG9Aj8HAYVIhwRUYe4SMHVCFHdoIVEtJlCfFdgykaHV5/IVf0aZbUYZEWQiHoXgriWse+WUE8pobqSjS+U5ggIhrEULRieuNdkbCLtLJ91cjKMlMnX+BSZMpeQJ5o2C5yollSORi+i0fu0TtXFGgxK5dHhrJQlYR2FYsbaTg+v5WavdFzWzpZR+W7rMwld7ooH985rEvc09pIta90bAmF2nA9xY3WVP183A+dapzXMYPUidNWg==:31AF\n" +
"^FO709,423^GFA,125,152,8,:Z64:eJyTfyDfUMfwj0GuwPDgccbDDTIWCYmNzYwNEhIJiQ1sDAckJBggtAyD4QEQzVP/oQJMJxTwgeUTEpiRaBmLgofNQFquwPLAYSAtDTIfJM8ABCTQACH3JVQ=:21A8\n" +
"^FO612,423^GFA,49,68,4,:Z64:eJyTkDBgkCCELYC4woBB5oYBA/8MAwYEKABjAPyYB3w=:5A62\n" +
"^FO679,384^GFA,165,209,11,:Z64:eJz7IN9wn/Ef4w9mBmYJywMfG58zzwExCx48OHi4nQ/ETEg4cLCxjQ3EZEBiFgCZx9jBTIMDBxuOMaMzIWrZESawM/6XMHhwAGQuPzvItgMHgbbJ8zD/k284cHAf449iHqA2BgbGBiBBChPoChiT8T8AYz024A==:519A\n" +
"^FO418,452^GFA,185,209,11,:Z64:eJxjYGD+IGFgcL+xwYCBgc0CyPxx8ACQycMDZD4AMuUgzAOJD4BMBjDz4AcDHqBiMHMDUC3/PyDzcOMMkDY+IPMf4wyYCQcYe6DMggMH+4BMPhmJgoKDB9uATHYLmZsfkhvbgUzmD/z9BvaMzSBzwYCxcYMcFmbDBwZszAIE0wAASfMvDA==:9E6C\n" +
"^FO516,390^GFA,225,182,7,:Z64:eJwlyDEOgjAYhuGv+RO61LB2KHINEhPOQuIB1LiwKJgObt7AcAVuIC6OnoDhd2LFiQ5qbPVdnuQFFELRn1zRB6BJ0UCROBqykSJrNtZoz8MuMtmcr3bbyue7pmUrDk1NPFayQtwV6anCrCtknyNxK+Hmnj1K0yUXRply0jJ2HwSG0uPETSOdWNw1zMj08mQsehOA9jhGZhDXP4B1mL4ve+g46g==:5B21\n" +
"^FO388,387^GFA,233,345,15,:Z64:eJx10DEOgkAQBdBvSJZmA60FwStMZbDaq2xiQWtiQyeJF/IIw02GxnpvoDNICBid7mV3J/8voFMmrKdqNiT/l8515IkC2j5M9FVDdO4jjzwxT0TMceilNmI/My6EUXcqM72MqPysKojoJQu9vf0iC4uxMF6MnbE2pnEQLpX5UVedHte78E5TZc9bKQcKRZsg2sX5uS5DUynxk5oZ61Pe0vrCLR8T8AaibEI5:8365\n" +
"^FO686,327^GFA,317,336,12,:Z64:eJw90L9KA0EQx/HvspDt9toUwXsGSXPgn7xKHmEljY3cwoE2khdQ8FGccEW61IIWKyksFWwODOps7pKtPuzO/mYYABM5HiMwGi6yvT1Y8IVwCcHEVPqzxCwiardcQKFSm80WrFjNTHy2+i856ijUzRi+PDfq0p7D9URrhGIRoBrvXX4nmFTq1d1v7usDLq51Bh1gFDRjw8mH2ibM7Rs/z3kw9f2LeZ2G/cDmsTMP09S7C/bpL9cLs25udzlHc3dB3wfPg+AatdN+78LFwVvhtOlrTBu5aof9rCL1ut+JxlId99O//wMU2lFH:312E\n" +
"^FO552,328^GFA,249,345,15,:Z64:eJyNz0EKwjAQBdApBbsZ7HbAYK6Q7iIIXiXFC2TpQjBFqJfwMHMADxHpBVx26cQWbXb+3Vv8ZD7ALw6y/MGiG0+bF9asnQ7C6x01IcUmehbe1qgIjXGR3RaKfoWEwtiymUkIhttgUVh9SEKSbl8ieTyMfISZmtHYiWXqgjJGqGbSl5X8S3ZvvRsSa7kK/VnFZkjdXTdequdDbpanMK3AaVERaJvRZmQDCwK7jGnvIjq8AS2gNjU=:966F\n" +
"^FO686,268^GFA,301,324,12,:Z64:eJxF0LFqwzAQxvG/MFhLKq8ZRP0KGV0amlfRI3gMpC3K0uc68Bo6d1TIkKWDuhla6p6ioQdCPz5OoDsoFbrc3oBsgpm31SkFthmeYPyaAr0EdhE5vCXsUejExN6rp0gjDW44x/YKJln8eMHpQ7LDpyv+Wb33PMg7/Yd6WHOIJ73VfuBx0XCtdiP2e6ab1e2I22RcyZvEfcisik3Ci559sXAnv/RztVk096VfaH4E/xLV0SwIu6nkkaxeWbWNZeLbgMVW3X3WHhuFV1/3YI+p/rNuRefgvzT/A0TbSR0=:0A13\n" +
"^FO547,272^GFA,241,304,16,:Z64:eJx1zrENwjAQBdA7WbprTGhTIGYwJdsQsUAmiHyyZFcwAcPEoqCCmg1YIUUkY5sGkPK7V/yvD4AyMcNMCoYGLQC6DTOeie2Nqj0xK0UsEtBui1cnV+2qbbZVpEd0YnW2ykavR4hS+iHpu0texxRj3eP2eVW+7WQsVp6KKdv+O2VzaEx/DGR2V1f21u5i+u5Bxrzqv71Mpj/M2UO2hq9Q+bfg5mNYcomSX2OybxJKQig=:5CD7\n" +
"^FO582,213^GFA,237,285,15,:Z64:eJx9zjEOgkAQBdAxmyzNZG2/CZErUG7lWXZvwAkMhsJDeBiHUNh5hqWxho6CwkG0sGG6l5+ZP0RmEIl3Y22WEoicTxLHxlqugpI5SGyVQIUjMZUS625h+eNFU4IHk6PDlwzdNVJIvOrlYs6VVDmJsxI5LwRLXy/ESkivuw7YT9qLsu2bxrnce00tQpce5nZyn6/MkJ7hvBtfWQraqyO0TtCvtkgb9P8spjeReTug:A02F\n" +
"^FO145,453^GFA,565,726,33,:Z64:eJx10jFLAzEUAOAXAi9L2qwRT/0LAZcWxPsrEaGTQ0cne+DaH1An/8KBIA4OJ8K5BOduRg6cHOoiFcrFl7ur2oK5G0Luy3svlwfQDAug25mBrSHpIYBwDAiIaFgoAOj1zYe4ESOQYKTKEgI8ezo/qY74ZQcM8Ag0AUKiNsPsOa0+FSKBNAQYTy4zAqYBliIMM7dbleI65o51+YQVP6AgsDebq9OS3cy6FGuABB4yxEPU896bg+quA0USS7ZWhGkDPiEp+iMHrznImIER8BGgUfLxTYXbeNqRY68e/4KJjyke3/fFEYKOYOFFWG5G0LI8S3v3tI6jFcs3I4BNw1KWA/G1xGJOEbjZBvtmLEsN/hyrmSAwWGwBNAvpDHzc4YXmBIazFrTHTAOVlMuXBbvKsU9ghTvTtsj2R2kq8sRLZ/lujRgj4E7WRbAJi3dh4VTLwnKV08YfoMJqfVkWyqRXeFUbdE2Egwjw97otr6VMa5SG1vmFU6HuUnQN49m0WZCGUohy1Reg2iLblqOTJs0kGdOv7oOjKa7btGvaf8Y3AFWrhg==:9532\n" +
"^FO259,388^GFA,269,330,15,:Z64:eJyTb2AAgToGCCh4ACIZD0NEGRISwNxGKPcAmCvNCJM9ACIlm6F67cHCEv+gXMbD/Tb2DQbsfDYf/vAf+Md4mE0iEcjlkUg4w3OwjZ+ZTeIAQ4INj0Rim0Qy0BAwNw3KNTgM5h7mkUhutyiGcg8gcx/AuQ0/Ds+3KWZsfsxX87ndovAMf+P3H/aMDXbs9x+3WxT8ATmFmRlMArk8OLmMbRIJEC4bmHtO5gGYWw/mMgDdDDaKASzIUMEODQMeBhgAAMOSRSk=:5649\n" +
"^FT544,640^A1I,23,25^FH\\^CI28^FD"+total_qyt+"^FS^CI27\n" +
"^FT152,640^A1I,23,25^FH\\^CI28^FD"+qty+"^FS^CI27\n" +
"^FT469,856^A1I,23,25^FH\\^CI28^FD"+material_code+"^FS^CI27\n" +
"^FT548,335^A1I,23,25^FH\\^CI28^FD"+create_name+data+"^FS^CI27\n" +
"^FT544,275^A1I,23,25^FH\\^CI28^FD"+user_name+data+"^FS^CI27\n" +
"^FT454,580^A1I,23,25^FH\\^CI28^FD"+data+"^FS^CI27\n" +
"^FT378,712^A1I,23,25^FH\\^CI28^FD"+pcsn+"^FS^CI27\n" +
"^FT773,777^A1I,23,25^FH\\^CI28^FD"+material_name+"^FS^CI27\n" +
"^FT505,870^A1I,23,25^FH\\^CI28^FD"+record_no1+"^FS^CI27\n" +
"^FO170,1006^GFA,857,1539,57,:Z64:eJyd1DFOIzEUBuBnjDAFsikpvPEVKI02ylyFI4SOIto4opguJ0B7ji09oki3XCCFRxS0QzfFaN4+e8ZDYEFo10USOf4mjt/vB6cwjiP4t3Ep7Q8BQQBzAGIGetlB4YFvzcZbFea6YH6pAULhuOONhKBtBzRxLb9hGSF4gmunvyNgA7xc194W7UJi5dsIMXCnugiveoLMSTPCa4LodYEMW4JIcN0VaoQ1NsKbPkJ6tAYO0tztErwk+BB0Ie7CimB48fZ2IVRVDzC0wi9MhIVyGk5AztgALwi6oOe89DOC7sbbIIWCutoTfHJWBisinAuCx6/wLMImQidHCGqCAeYy3IpthJzgGUg9wmOCsNSWl/ROLxEK+okMtQxLHqGN8JSgGODJCNU2QfYyQF5XPweolwfwguB4qkcDvMKTBAs6VUQh19XDNv5H7N5Dg+IQFj0AlbqkMkSocJOhtQfwnGD3FrYjZAPs2acQ3sAFDNATDEIox3YilUO/h/oAUjnsCGGAEia41FQOdgDZjk0wzGl6gDf+diljOSJkdFR04kKxtCIdzozveIZ1WFEuEnQvvo2RY/Vvfg+cIhdmC6PKsMpQYWkyxIfOYNrqHda7tuiKHVYRmoBNkKYX+NTlACgUixyAdbk3fdwywerxl2kJbiJchHUIUnW8f97bMXK8F/McuZm4Fx2PAXC4ebQiFBWyPdvDPNDFFrxh7fN9ghTy1AhyVtNnFyHk+QTfjXSt8oLTDOmmfw35K7yYYLyPB7CF7m9IrSMvuMyQNauvIXgZvxWIqecM07HnOErOp9BgR10uQz/BdTPB47iBD+F5hgwmaPwE085h9QH8307+B/mXaEc=:3563\n" +
"^FO715,648^GFA,217,216,8,:Z64:eJw9zjEKwkAQheE/BNxGrK3MFbTbQvQqOcKWgmBi5ZUEmxXBKgdIIbKwhW3sBIt1ZgNO8zEDM/OYMdYCajxUMKgWvvOQjX9lvlSvLU69MXrPpr6TZUeyD2gC0faw9sQ0QOFJF7E8+WjlXplC3AW2qeXln1Ry+lB80BTGSGMC5ihuaiaF5qmZZh12pTkc+7foBtkTm3P+oTnVHziUP3g=:1C17\n" +
"^FO581,651^GFA,229,304,16,:Z64:eJyFzzEOwjAMBVBH7JzFY7dcJagDa6ReIFWlsiBmjtEj/KgS18C5QUYmipMWGBjw9iT72268NYGJLTm+hwWN73qo2+D4EQGiFIsBxzKTGlE2o12d1VR8q05Tsfv4cFUv4ngev4b6uVvnzzVPPHah+vJ2lLp/VKcoOcKioa4/qbsh5TaI2pqh3L8/sn6i/WT6SfeXqvm/DvmP/WaD1byZFrwAXqNleg==:1BD3\n" +
"^FO475,809^GFA,345,456,24,:Z64:eJyFzjFqwzAUBmA9DPLyrKwOiPoK0uYsPYt1gipjIRAJgbPkADlGjmARyNor2EvmjB089EnGNEuphh/08fjfaxsXfT8jOKDk5TR+RB8da/UQ/ekuyE935GjVwSRnXUfOs3Pkda2sCav3xSb1FNk7HQw5S843npzmGbnps6vk1eqYfE9+fJJLjOQSeTMrE3ud+i3tfSan5LVURzjrdS9DQ/MMRdoL5+3igZr3uT+7yW7HW+gFanKBb7JV3XQhb3fD4ytI3DmgfBdW6XipyBt3+PTfuHVA+SinufHXKt2fH1YOlo9icC3/9zK5XHz8y4tfL156Xh1WZwwG8h8KqnO3:CFC1\n" +
"^FT576,654^A1I,23,25^FH\\^CI28^FD"+bag_code+"^FS^CI27\n" +
"^FO317,647^GFA,205,189,7,:Z64:eJwljjEKwkAURN/ywW1E2y3EvULKgIFcZSEXSGmnx/A4AcFTpIgEUglumWrXv7H4vGLmzwxAo0c2ybxsnvB2L0+wo0PArDUyQaxoB+grLmq+9kXjE5AIS+BWwxzoHLynApMC31HfA/MJXDBz2pApoANRiB0OPmIT57VqVfMPjhq906DSoLGlXdHeNzT/va5M5gfuwyjr:BA73\n" +
"^FO153,647^GFA,317,460,20,:Z64:eJyN0LFKA0EQBuAfArPNcNtucImv8NvoFcF7FSEvcGBjYaEIqfJQK4I2eYCUFwLW9wBCnN27mJA0TrcfuzOzP2Dle1xUrC+N+g+bi1DZIBGu07uOZiISay5eUwtt9Z6juZ7pvXtCCFqbzbIh/BnD0ZANZnZPs016YvGwAbRY6VeR+x03uP5RHuaq9dtxjRC1eTmxj2whEoNV2b5uVsXGfjOz7ed0ZVnM2RZztzbjcTldomqfQ5nRvH37jo2Yue3ap7IfJMcnVzKGlP+BclB/bpaJdwfD0SZnZm+rE8NgUQbz+/QLNlA+rg==:F877\n" +
"^FT150,654^A1I,23,25^FH\\^CI28^FD"+qty_1+"^FS^CI27\n" +
"^FO715,591^GFA,193,182,7,:Z64:eJwdjTEOwjAMRV/kIRtdO+QWLJGolMP0EmyYhRGuFNQVcQKGSD0AHTugBqdenqVv/weV7oevhVSRCQ7+hoB3d6Tg9E3KFF6cYImhZefYIwtDgEvEbhh7kB1Sle8Hd83MocHNG2KoNDBa9SMjPstq69a+zQxHOqtm1GZg0maXZyYpXmHYBZjH5g++sSu6:E28C\n" +
"^FO545,588^GFA,309,460,20,:Z64:eJyN0L9KA0EQBvAPAnPNcNte8MgzfDZ6RfBeZSEvEEhjGRFS+VAbAtr4ACk3HFhfaRdnXEM0aZxtlh/MX8AijLiKtrs26j9sLkJlj0To/ZDsA4hI23HxlJbQB8bVulg1Mm3zI7RjPKQ0c0PzY2xiOhuK0U3dJiOxiPtiudSryeNAtxxTLKZWb+A7tF//sZ0b4fXcare325dTD7eZ2eF16rb0+cyqO+ux2kw30CaXPfrnj5DZi1vYfdq+Nh/Ezyc3AjtPBHwPexYaLs1uEqqT4WyTC7Pc+pehWCvfZnMcvwC491j6:81B6\n" +
"^FO317,589^GFA,217,196,7,:Z64:eJwtjjEKwkAURN/ywW3Cpk0R9AopAwq5SiAXSGllPIAH8BgeYUHwFCILaQVTbiGJP4sDw3z+wMyAoiKhVy4QsUuAN3LXh17yF2XIaDx4x54kq/faIhMSS4Ya52u6gs1YreKWG58nQ2gZS/MNrRlnsuCN9pQn6GCneWK9e7TYGXPpG/Xkesw12mqmSh5Tu+jO5px2HrR2giKt/gHlVS7b:0BB4\n" +
"^FO158,588^GFA,305,414,18,:Z64:eJyF0DFqw0AQBdAPglEzrNo1EfIVxhiEChFdxWBILUijzoSAKh9KJuA0PoBLBYFrHSDgzKxAsd14un2wn5kP6CQjHiYtHkX4iZREwlKhEzRxLwQQUVrI9qOrwVwXk8SjdIe+AXtfUGYCP0s5C4LAvxKbRKNguzmrcD7lOJHrICrL3/UkrDmDnDQnvZGvIH7VmjiT79U+yNEkU/k5LlR0VZM41+T3dtGCXS0XoPq8JL1UpLLTu950H5DVQy+k+0DyzMQq4ORe9O4kDpLhX6I70V9uEmePIClFoWD6A2YhOXE=:F331\n" +
"^FO452,528^GFA,365,575,25,:Z64:eJyl0bFKBDEQBuAJgaQJ2XaKsM8wnVuIvko6G4t7AslyxTWHr2RCimvEZ9hHWBuxWE4nibt4cp3TBPLB/MwMwJVS1z7/A3Kebya9gDFdfBhfIC7iQ3wWHvCOnGFwk0/vIT3LXhsGY3AgKjDsfEohS2WNgr4AoS9A5FOIWVrlJAMw0AZjiNIolIGbKYZYYaggjgpFAOjOSFMD9OkA+euoqICxeB82WCDLFTgD4hYuMmeQiA1qhqvh4wbWIe0K3JY59vt8ULaCHhBLuH3kyeNJpzfZ1ww5n7vIoF95V/OTK7tiKEtBKOG1Ynt4jr7B9AfkCr7B9AO8K2hAl2DUCu6ylTbrMfmCv4sv+A1cb2P6:0B48\n" +
"^FO495,469^GFA,285,437,19,:Z64:eJxl0DEOwjAMBdCPKrWLRVcPFWcwE53KVYK4QG9Aj8HAYVIhwRUYe4SMHVCFHdoIVEtJlCfFdgykaHV5/IVf0aZbUYZEWQiHoXgriWse+WUE8pobqSjS+U5ggIhrEULRieuNdkbCLtLJ91cjKMlMnX+BSZMpeQJ5o2C5yollSORi+i0fu0TtXFGgxK5dHhrJQlYR2FYsbaTg+v5WavdFzWzpZR+W7rMwld7ooH985rEvc09pIta90bAmF2nA9xY3WVP183A+dapzXMYPUidNWg==:31AF\n" +
"^FO709,379^GFA,125,152,8,:Z64:eJyTfyDfUMfwj0GuwPDgccbDDTIWCYmNzYwNEhIJiQ1sDAckJBggtAyD4QEQzVP/oQJMJxTwgeUTEpiRaBmLgofNQFquwPLAYSAtDTIfJM8ABCTQACH3JVQ=:21A8\n" +
"^FO612,380^GFA,49,68,4,:Z64:eJyTkDBgkCCELYC4woBB5oYBA/8MAwYEKABjAPyYB3w=:5A62\n" +
"^FO679,341^GFA,165,209,11,:Z64:eJz7IN9wn/Ef4w9mBmYJywMfG58zzwExCx48OHi4nQ/ETEg4cLCxjQ3EZEBiFgCZx9jBTIMDBxuOMaMzIWrZESawM/6XMHhwAGQuPzvItgMHgbbJ8zD/k284cHAf449iHqA2BgbGBiBBChPoChiT8T8AYz024A==:519A\n" +
"^FO418,409^GFA,185,209,11,:Z64:eJxjYGD+IGFgcL+xwYCBgc0CyPxx8ACQycMDZD4AMuUgzAOJD4BMBjDz4AcDHqBiMHMDUC3/PyDzcOMMkDY+IPMf4wyYCQcYe6DMggMH+4BMPhmJgoKDB9uATHYLmZsfkhvbgUzmD/z9BvaMzSBzwYCxcYMcFmbDBwZszAIE0wAASfMvDA==:9E6C\n" +
"^FO516,346^GFA,225,182,7,:Z64:eJwlyDEOgjAYhuGv+RO61LB2KHINEhPOQuIB1LiwKJgObt7AcAVuIC6OnoDhd2LFiQ5qbPVdnuQFFELRn1zRB6BJ0UCROBqykSJrNtZoz8MuMtmcr3bbyue7pmUrDk1NPFayQtwV6anCrCtknyNxK+Hmnj1K0yUXRply0jJ2HwSG0uPETSOdWNw1zMj08mQsehOA9jhGZhDXP4B1mL4ve+g46g==:5B21\n" +
"^FO388,343^GFA,233,345,15,:Z64:eJx10DEOgkAQBdBvSJZmA60FwStMZbDaq2xiQWtiQyeJF/IIw02GxnpvoDNICBid7mV3J/8voFMmrKdqNiT/l8515IkC2j5M9FVDdO4jjzwxT0TMceilNmI/My6EUXcqM72MqPysKojoJQu9vf0iC4uxMF6MnbE2pnEQLpX5UVedHte78E5TZc9bKQcKRZsg2sX5uS5DUynxk5oZ61Pe0vrCLR8T8AaibEI5:8365\n" +
"^FO686,284^GFA,317,336,12,:Z64:eJw90L9KA0EQx/HvspDt9toUwXsGSXPgn7xKHmEljY3cwoE2khdQ8FGccEW61IIWKyksFWwODOps7pKtPuzO/mYYABM5HiMwGi6yvT1Y8IVwCcHEVPqzxCwiardcQKFSm80WrFjNTHy2+i856ijUzRi+PDfq0p7D9URrhGIRoBrvXX4nmFTq1d1v7usDLq51Bh1gFDRjw8mH2ibM7Rs/z3kw9f2LeZ2G/cDmsTMP09S7C/bpL9cLs25udzlHc3dB3wfPg+AatdN+78LFwVvhtOlrTBu5aof9rCL1ut+JxlId99O//wMU2lFH:312E\n" +
"^FO552,285^GFA,249,345,15,:Z64:eJyNz0EKwjAQBdApBbsZ7HbAYK6Q7iIIXiXFC2TpQjBFqJfwMHMADxHpBVx26cQWbXb+3Vv8ZD7ALw6y/MGiG0+bF9asnQ7C6x01IcUmehbe1qgIjXGR3RaKfoWEwtiymUkIhttgUVh9SEKSbl8ieTyMfISZmtHYiWXqgjJGqGbSl5X8S3ZvvRsSa7kK/VnFZkjdXTdequdDbpanMK3AaVERaJvRZmQDCwK7jGnvIjq8AS2gNjU=:966F\n" +
"^FO686,225^GFA,301,324,12,:Z64:eJxF0LFqwzAQxvG/MFhLKq8ZRP0KGV0amlfRI3gMpC3K0uc68Bo6d1TIkKWDuhla6p6ioQdCPz5OoDsoFbrc3oBsgpm31SkFthmeYPyaAr0EdhE5vCXsUejExN6rp0gjDW44x/YKJln8eMHpQ7LDpyv+Wb33PMg7/Yd6WHOIJ73VfuBx0XCtdiP2e6ab1e2I22RcyZvEfcisik3Ci559sXAnv/RztVk096VfaH4E/xLV0SwIu6nkkaxeWbWNZeLbgMVW3X3WHhuFV1/3YI+p/rNuRefgvzT/A0TbSR0=:0A13\n" +
"^FO547,229^GFA,241,304,16,:Z64:eJx1zrENwjAQBdA7WbprTGhTIGYwJdsQsUAmiHyyZFcwAcPEoqCCmg1YIUUkY5sGkPK7V/yvD4AyMcNMCoYGLQC6DTOeie2Nqj0xK0UsEtBui1cnV+2qbbZVpEd0YnW2ykavR4hS+iHpu0texxRj3eP2eVW+7WQsVp6KKdv+O2VzaEx/DGR2V1f21u5i+u5Bxrzqv71Mpj/M2UO2hq9Q+bfg5mNYcomSX2OybxJKQig=:5CD7\n" +
"^FO582,169^GFA,237,285,15,:Z64:eJx9zjEOgkAQBdAxmyzNZG2/CZErUG7lWXZvwAkMhsJDeBiHUNh5hqWxho6CwkG0sGG6l5+ZP0RmEIl3Y22WEoicTxLHxlqugpI5SGyVQIUjMZUS625h+eNFU4IHk6PDlwzdNVJIvOrlYs6VVDmJsxI5LwRLXy/ESkivuw7YT9qLsu2bxrnce00tQpce5nZyn6/MkJ7hvBtfWQraqyO0TtCvtkgb9P8spjeReTug:A02F\n" +
"^FO145,410^GFA,565,726,33,:Z64:eJx10jFLAzEUAOAXAi9L2qwRT/0LAZcWxPsrEaGTQ0cne+DaH1An/8KBIA4OJ8K5BOduRg6cHOoiFcrFl7ur2oK5G0Luy3svlwfQDAug25mBrSHpIYBwDAiIaFgoAOj1zYe4ESOQYKTKEgI8ezo/qY74ZQcM8Ag0AUKiNsPsOa0+FSKBNAQYTy4zAqYBliIMM7dbleI65o51+YQVP6AgsDebq9OS3cy6FGuABB4yxEPU896bg+quA0USS7ZWhGkDPiEp+iMHrznImIER8BGgUfLxTYXbeNqRY68e/4KJjyke3/fFEYKOYOFFWG5G0LI8S3v3tI6jFcs3I4BNw1KWA/G1xGJOEbjZBvtmLEsN/hyrmSAwWGwBNAvpDHzc4YXmBIazFrTHTAOVlMuXBbvKsU9ghTvTtsj2R2kq8sRLZ/lujRgj4E7WRbAJi3dh4VTLwnKV08YfoMJqfVkWyqRXeFUbdE2Egwjw97otr6VMa5SG1vmFU6HuUnQN49m0WZCGUohy1Reg2iLblqOTJs0kGdOv7oOjKa7btGvaf8Y3AFWrhg==:9532\n" +
"^FO259,344^GFA,269,330,15,:Z64:eJyTb2AAgToGCCh4ACIZD0NEGRISwNxGKPcAmCvNCJM9ACIlm6F67cHCEv+gXMbD/Tb2DQbsfDYf/vAf+Md4mE0iEcjlkUg4w3OwjZ+ZTeIAQ4INj0Rim0Qy0BAwNw3KNTgM5h7mkUhutyiGcg8gcx/AuQ0/Ds+3KWZsfsxX87ndovAMf+P3H/aMDXbs9x+3WxT8ATmFmRlMArk8OLmMbRIJEC4bmHtO5gGYWw/mMgDdDDaKASzIUMEODQMeBhgAAMOSRSk=:5649\n" +
"^FT544,597^A1I,23,25^FH\\^CI28^FD"+total_qyt+"^FS^CI27\n" +
"^FT152,597^A1I,23,25^FH\\^CI28^FD"+qty+"^FS^CI27\n" +
"^FT469,812^A1I,23,25^FH\\^CI28^FD"+material_code+"^FS^CI27\n" +
"^FT548,292^A1I,23,25^FH\\^CI28^FD"+create_name+data+"^FS^CI27\n" +
"^FT454,537^A1I,23,25^FH\\^CI28^FD"+data+"^FS^CI27\n" +
"^PQ1,0,1,Y\n" +
"^XZ\n";
}
@@ -401,7 +398,7 @@ public class PdaPrintServiceImpl implements PdaPrintService {
// 质量代码
String quality_code = row.getString("quality_code");
if (ObjectUtil.isNotEmpty(quality_code)) {
pcsn = pcsn + "-" + quality_code;
pcsn = pcsn + "" + quality_code;
}
// 创建人
String create_name = SecurityUtils.getCurrentNickName() + DateUtil.today();
@@ -464,66 +461,65 @@ public class PdaPrintServiceImpl implements PdaPrintService {
"^FO12,32^GB771,1150,4^FS\n" +
"^FO301,1136^GFA,469,624,24,:Z64:eJxN0rFOwzAQBuD/4qgJyFLNZiREI/UFssFGUVcewiMjD4AUF3XMQ/Aol8LAwMAj9BE6lqXm7CQNlqWTP53s89kZAE9AJrGCAbEEGQXIs4oRcLjFLAYZcy66o4pxJdDADq7xSl7BaHgBYjc6efJLazUlcHzOJ/KNeL9xPXoJRX5tb7ROcO1Hd82mXduZ7g+8mPyNxJWuVQinodzodR4d7QsJzEPw7Ez0qzL5Uyowl2sPfmni/lJXKlKqCuEQPb/btOEInavwzpjy8+dNq1CEkwLzQwj7wcuOxDOtFXZsz/mL3x21UqC2hO//+5it5OfQNeHwOTlqLV6KSzO/5JjRX2xyKb7gn2zKN+LNEVhB8172ob5+VI7apWQw7jmd61N/om9VvZDGOObYn75vcpPOKyPPJtfyuVkN/bSSL+8Lmeg86v3gcJN/xNXoVZX+lUw8ysqg/1d/cuF7Hg==:7A63\n" +
"^FO154,1096^GFA,737,1456,56,:Z64:eJyN1DFvGjEUAGAjKt9i5VZXtXp/4aEsHhD+K4463FhnY0A6s2TNys/oT3AUqV0qsWbDKGsHjzegXN/zUQLoCD1LD/uJzzqen2HswjNOA8kiXvr64Sl3A8mqveqUGkhqfdVJPpAEcdXBkLP/4YaS9jCbPIYFn35ORSyXj08+2AlGywS7jSCKUIdfce3DmIkyWJB1sLL0YdK9wSZ2fPZlV7ZV3GzRAUZypgVRpe84NpFcldA1yUoTs2vvnx/4V6Gm2rX35DCSm0oQWs/dQidLTs/RzcFK5wIwAXGyfOCKgwCcksNITgtMSYcjAjkrLS3pA52EcMt+ciz6jZUhu9A7uAHhlFWYzo4pdLSMGp0+OH7u8BUsjX9OkKMlJhhAsHvHZLjL7u7UwZCzsI7ZmTcm17me6+2Jq1Pvmt2xC9D5g+uW5DBaszu4Jgy4UQDscHLYVrId5XMYedu9uwXt3bH8xu/O0169w0x2GO/CUT1P3L6eY4b1xPOTXAqHlVyG6LCeW5/PT/UH1r8nIqdxqXFnVzCI22dySmmH0210MT69Ur8oPcV+0dQeuV+wn+a4nDtnE2fQYH+aFaf+xGlTJ4yvuT+rP9SfZl/PKpnNS5PMi4lNwp9h/ILcOJYep7P6h/Gzb/k+FL/pPlT7ehahKld1KFelr0D21+z8ipI7vnDoTu+mvuD8FQfDjs7hQ2ez4+eOzv3MnfyxQLfL7tO5M1fdX9XmPaw=:78B1\n" +
"^FO468,1052^GFA,597,768,24,:Z64:eJxN0jFr20AUB/D/cZBb2tOaQZW+grspxFhfxR/BpUNVStEJDxmztmDSr5BuGTpcJm/1mqEUmQ5ZipHJEIcaX//vZDs50CF+Ot699/SAUwADHNaYj4lvafR27524g+69iK48XTkkDicvvBWvxFtkz66iD7klA8GD6/YNfUTPBJ69e0v/wDgZBhVinvSxuV7Sxzr65OjeqNtbj1a87CYY9L50RjcXvFpfuOy0aFH0/sclRl1Ce/3NZwV9FN3ewyavZ0gW0w1sRc+jJytYe7aBCcbTz1okX8TNFjZ9x2TnpYN9evIwd+I8agvJ84T52FoqFC+3G6Qf5w6w+oonpCOstwzsb/r+q2NvHnawsbND7csbPHbpw/fG6XD5i/5ZvG5xjuCG9Xrqwt98BhsCPQ/A+YKF7JYBRapv6I2X2PRVi9LPV7xNXDc+CXf7Plu1uKKr6+im6/uzBXTzA6j9hL72fZ9Ls+s92SjmWf87+M97joeawRQ5I5bTvX/63Yqz3iKja7piZFSvxLW4/HfxPLrMjz26oduhuDp4Fc9LvUfPtMwbtzysX7oVL7gZGV6MYvw46XTIR67/39q/uw==:0FE9\n" +
"^FO46,941^GFA,2989,8280,92,:Z64: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:D49A\n" +
"^FO510,905^GFA,529,792,33,:Z64:eJx10sFK60AUBuB/OHCyGabbAUP7ClOEEEHsq6Sbu450cVdXJwj6EoKvMqWgG19BbRGuS3UjhSude8akipLOKuF8Sf5zToD+o92OQncO8wrK76qOPFwemJYqLuXWZEvHyNZELyN/YuQ5CxR35wMaL8I0CDB1KeCSsvIg3LAAl8BVtqCVnwlAXiZgyOT1qrnowMMajwPlf4chYO0hg5m0rqbN2RYAs1L5Py046gAqddYIIEwisC8Jj4MWkBcCMtIGNeYtKB6G2PMJSAar9wUQacY4zucepxsU9xtMbA9oggBoARrP5RbY8blkyCTDtPFbYOkm/wLXLZAufBRg5StOXTCq43YO7lrmMDC5Wy2kC4rxBexAwOlrAqZ2f2WSozTJJ+5WxCeDGJeVepdr2cUv8Hr2sYsOWH7jCqhSHjmuAHebTECmNIm3aMGwB8igyuw7GP4ElqWT9wSwG6Q3UBvZmU9A3bI2LoH4rwP8CVT8AMrXiFG2G/r+SelChboNUPWBb4X/iF6Lsg==:5CBC\n" +
"^FO12,894^GB771,0,4^FS\n" +
"^FO658,848^GFA,405,420,15,:Z64:eJxVkb9qAkEQxr9DuDRyaU/YeK9wIc1CDn2VfYKwIqig4ELaPEDeJUVWDrQ5tE0hYVOlkeTAZgOH5tuoRQaGmR/7Z76ZAU6m8M8u6OgpUTBaokbfMwjE4chr9EQcMAloNaQQAbP4gpooM2GhVtpOhINLlZSl0euB8TeW6KReGbkews8NXMdKtUZRjXD8ZqEfky89ks0DioQ4xW1VA+UOoKKPVwyeWWjRABI4vmP4QpF2AlBnLdR4tDAo55bYdVk9npWIl3OA93c97P0ByWeNaAt8eRw6BxSNQmtDGSnyuy36TxqtR9a9B/IGXXZzFfP51EC/cTAFrtusy1RVlCDR58+O6Cgjr5GFWaUnHDgk+m90kSXubRAJVyBahJTOxlz7PPPTCs5b+AWqXYCR:9F5F\n" +
"^FO12,790^GB769,0,4^FS\n" +
"^FO628,748^GFA,433,486,18,:Z64:eJxN0c1Kw0AUBeAzBJzNNNlWGOwrWLpp8SevkieQSEFaqPQW9/oCxWe5INRd1i5cjPsu0l0EMZ5JKDaQm+FjJsk9F/i/fFeTE7nuqhUYhXbr21g0owQ+opW8TUhZagRbH6WO0iCgnl72oo5ly/csQkAB25yLM2KeKSNV7rTbmfj12zhKtpEobvkyqm1hKTaJkrjvV4+1Rsme+OGQDA6Nx0QT2WHwDrQKNw4+nUgiFXwFLIWiN79zGPmEv2OPlImMdq2Y6gNTtmkzcWPB7gFoGlwxCtuqP1BS9lIjH2LdAo+HH1QONpSwQ+SMYZ+rqTyyUOBsGrPBPpcorghIKQzJzTpBoZ2sKGy84vF7LnNF2cumAeYCv2KGPGzYAadC4RYUvfAnLihxDl+BnShHg2zRz6stY84nA+ySB/4AV8h6Zg==:5C78\n" +
"^FO378,753^GFA,421,570,30,:Z64:eJx10U9Kw0AUBvBvePBmE+J2wNBcYbqRdNWrVLxApFupCYFmI649Ro8wJeCyV7BFsNuAmy5C9b00UhU6MIvhB/O9P1lafKGjA6hjvm6RT03h4f1ixJ09ZuPwWW5sBNowpw75vAyqe7KvMWM22zV1xKCaOXHAbq06birLTjU05AhEzC4CwnqrWlZMojhp0atTbfVnUzF7UR/eqTCiy5PuVr02vT624c6oGtFc9PZFFQ0norP8rGn4pbb9qQom9LnQ3KchF8kfjU9VPYveS818xci30q9qzSOXab9L0bapODbHbKKzguRu7E0kVc3L2mOy2hMllrO0eEOn+kAfdgtMTeWR+kW6PsgEJUmuKIZjypUMAfJ2g+qsLmtCOGvR/lPd0WXV/Z41HzQe1Bx+q1eVY4/fuLp8mA==:AE96\n" +
"^FO12,732^GB771,0,4^FS\n" +
"^FO712,209^GFA,197,182,7,:Z64:eJwdzi0OAkEMhuF30oSaDWtH7V4BOYKEq+CwSMQGisJwoJWD4hoQPCFBMgG6Y/ok/clXAKEWsVz5Zdq3Scz9VybaUU26TFJkcGZ4c0LjldSgfeFwDp/XVkpD4SZjpBcjgZ4giYVnhSGyOvrtQopH7tfqiWymAncnEi4GS3/C2HWEBww+U+iceV10/hsHJ1w=:E077\n" +
"^FO12,674^GB769,0,4^FS\n" +
"^FO657,572^GFA,381,448,16,:Z64:eJxF0cFKw0AQBuB/Wchclu014pK8giJIwYDPIoLniAcPYhsQ9CKeAwp5lYW+hAXFFA+9FNqbeyiNM0lIBsLybSZ/MlmoAlIGXRndrZavE95MotG5A1KjCmmxvJ/PAOd0a0MItz/sYwIVXpzdlewLC3pqbe9j9tkH6NCaZuLTLxC83kfQ+9gjzqkWbzg/HNXsOUhxP/vhvUC6/RzcVEB8VfY2lzs3OoumyGNxAKWcn+T4m/L7Vnz/kfvPa/oOPM+qf/7G2yXnO+kXr71Zcr7r8yaLwjVhsGoWSGv5/utKTL8v/BPE69DOo5+BjJ1uS0yqGmShNmxonn8HUAL12lvzEVgH/da6Ow9roA/Z6ARQ3mEo26//o6BZ7A==:8F8D\n" +
"^FO16,615^GB767,0,4^FS\n" +
"^FO16,554^GB767,0,4^FS\n" +
"^FO12,368^GB771,0,4^FS\n" +
"^FO12,431^GB570,0,4^FS\n" +
"^FO12,309^GB771,0,4^FS\n" +
"^FO13,248^GB767,0,4^FS\n" +
"^FO582,369^GB0,127,4^FS\n" +
"^FO657,514^GFA,385,448,16,:Z64:eJxN0LFqwzAQBuBfGOrFrVcPJn6FhEJrqIlfxY/gkLUkCoFOpXOHPkjHM4Y+QzJFQUPGempUKKh3diC+wdan0w8nAVwR+jLDD1UyttLdFJlGrbpKvCZXRSERqY4PZL6DMamyG62IHZ85t8txvoci4uMhcNzVWM1H/jAoJlBN7xrHN4OUfZCNzKHVZe99y30PtFuH+dMUzcuQ9yvCQ23QvA5uI8LjjHB4v3q20dh/igu0MWFhNZqOb7P9w4n7y6VWDc+rvINnl7z8FpsaNib1owx+ZT6+pI0o/Co1vwR7QWLcOiAQ88emDryFIB58KgkpL2N/mfeZnWMtRMDB1CApUN7I63rTO58Ad2JuSzjH4L7YydiXkvw/XNJzww==:0B55\n" +
"^FO12,496^GB768,0,4^FS\n" +
"^FO516,451^GFA,217,182,7,:Z64:eJwljjEKwkAQRV9IsY1sWouwuULKEQO5ykrAtAGbCCEuCF5JO2PjOdLZiZVaiDjE3zz4wzw+DTCDRsg+0ClsjBdSa/+QvDr5wjZSy9DZMa0XoSsHt16yewVTH3EGVk+w4L+QKgoQLc+jIq7KQI/ZvOGO63Oi25BdhegSEqv3vQ5wmIO+pmRqmLckukUeGLVsx0kmHlqm5PwACpcohQ==:4E76\n" +
"^FO609,458^GFA,337,540,20,:Z64:eJxlkTGOwjAQRQdZwg3atBQJuYJXNKngKjmC0wUJbXwMCg4zB6EI4gBAFwoI/uM4EctIHnle/O2ZH6IQc/qOhV/K+WQmtvRLs08FtkoYPuvWp70xtAzMgmHzZ0rd9biFysisKZPTRVg7MtvO08A49mMt/6Tnb5ad+T9bZVeUs4lVvMk6+mQN56/yk/0+OQmjJSNb392AemEYyVQuTBBm0VseGCbYHXxK8244twWbgeW9GPR0VMARdcSlOr4hTC8oegBtMTo3sRoOq8aNXnn2wGP5DaWCpK6YGvydlWill9o3WVC0iqQX6U1CtJBSGlEoY7wBu+1QPA==:6B73\n" +
"^FO13,191^GB771,0,4^FS\n" +
"^BY3,3,58^FT565,97^BCI,,Y,N\n" +
"^FO224,1054^GFA,917,1312,41,:Z64:eJxd1LFu2zAQBuCfIBAtrrWqiGq/goouCiJErxKgLyAgi4GkFo0M3TJ3CJpX6AOkAYsO2pq5QAYaAurNZtChCqpIvRMlO66BMJL4STySdwT+/wkFyO3dATeZuzb0N3sBNcNxf+fD9UZCC0PPL/g+3EE17h/4CIAKOJVa2OgAJ/z8ZB+OGXqKYANhPCXqaIwUGLlhdnDCUGpqftNDn3AUIlX+hN7egyfiga5MCA5OTaiD4Dud3tHbezCVPHQWEJSeShx8q6ua3xyWR40PcD4OeXniDvI/HcWIymW1D0fIwjCkGZEoW4+WqIP49Z4aS072MEAWB3OaTzwTy8srWnQHs9PY7YBcOBjDZoFFgqNalATtS8j7I5cdXGcw9qdGXaUKqx5mERDbHorHDjYGprxRyC1t2uryM2200DnFFjcEY57MUwdzjWUxAZIz2r/NzTXD7w3FdmgH+IHhJX2svOLN55BWjw8MC0vwjRrgK4btvRLFNYdijgxKFXZDZxknygBpZ2RraWuLo08joE0pWuzgCOfGQakT+Vf5ubg/DgKk1bOG8R528CJXPSwayC9+JYs2iP3m25PGpq07OCfom3oYurWQt4Q366mVC32ssKm6oZc86xyRgxQfNXdryHo0588QNHHIC17yrJu+NtA+qz7NTPjE8BADNBzjttpylxQ+ZWV8qOHVHsE05KTYQbtNM5sbB1s1NVi1t5xmHfT2YU1Jgey1xtmCgiqrhNKog/Ijk23iel/XHEnAWbfmGBNw6cwIFlQwrmammov0B8OYo2VBcELxpBXkShoHRdtBPgDMFs4SqmXRUiLhz8L25Vp2cNJDr4NpzZ1z7mY0hdvrHgqT8BXNom1DKnB3GHl6OFLk7osJD53wtrlyH37ukOJXPdUdfCNuEtf5DyM3NUY=:8875\n" +
"^FO46,897^GFA,2989,8280,92,:Z64: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:D49A\n" +
"^FO510,862^GFA,529,792,33,:Z64:eJx10sFK60AUBuB/OHCyGabbAUP7ClOEEEHsq6Sbu450cVdXJwj6EoKvMqWgG19BbRGuS3UjhSude8akipLOKuF8Sf5zToD+o92OQncO8wrK76qOPFwemJYqLuXWZEvHyNZELyN/YuQ5CxR35wMaL8I0CDB1KeCSsvIg3LAAl8BVtqCVnwlAXiZgyOT1qrnowMMajwPlf4chYO0hg5m0rqbN2RYAs1L5Py046gAqddYIIEwisC8Jj4MWkBcCMtIGNeYtKB6G2PMJSAar9wUQacY4zucepxsU9xtMbA9oggBoARrP5RbY8blkyCTDtPFbYOkm/wLXLZAufBRg5StOXTCq43YO7lrmMDC5Wy2kC4rxBexAwOlrAqZ2f2WSozTJJ+5WxCeDGJeVepdr2cUv8Hr2sYsOWH7jCqhSHjmuAHebTECmNIm3aMGwB8igyuw7GP4ElqWT9wSwG6Q3UBvZmU9A3bI2LoH4rwP8CVT8AMrXiFG2G/r+SelChboNUPWBb4X/iF6Lsg==:5CBC\n" +
"^FO12,851^GB771,0,4^FS\n" +
"^FO658,804^GFA,405,420,15,:Z64:eJxVkb9qAkEQxr9DuDRyaU/YeK9wIc1CDn2VfYKwIqig4ELaPEDeJUVWDrQ5tE0hYVOlkeTAZgOH5tuoRQaGmR/7Z76ZAU6m8M8u6OgpUTBaokbfMwjE4chr9EQcMAloNaQQAbP4gpooM2GhVtpOhINLlZSl0euB8TeW6KReGbkews8NXMdKtUZRjXD8ZqEfky89ks0DioQ4xW1VA+UOoKKPVwyeWWjRABI4vmP4QpF2AlBnLdR4tDAo55bYdVk9npWIl3OA93c97P0ByWeNaAt8eRw6BxSNQmtDGSnyuy36TxqtR9a9B/IGXXZzFfP51EC/cTAFrtusy1RVlCDR58+O6Cgjr5GFWaUnHDgk+m90kSXubRAJVyBahJTOxlz7PPPTCs5b+AWqXYCR:9F5F\n" +
"^FO12,747^GB769,0,4^FS\n" +
"^FO628,704^GFA,433,486,18,:Z64:eJxN0c1Kw0AUBeAzBJzNNNlWGOwrWLpp8SevkieQSEFaqPQW9/oCxWe5INRd1i5cjPsu0l0EMZ5JKDaQm+FjJsk9F/i/fFeTE7nuqhUYhXbr21g0owQ+opW8TUhZagRbH6WO0iCgnl72oo5ly/csQkAB25yLM2KeKSNV7rTbmfj12zhKtpEobvkyqm1hKTaJkrjvV4+1Rsme+OGQDA6Nx0QT2WHwDrQKNw4+nUgiFXwFLIWiN79zGPmEv2OPlImMdq2Y6gNTtmkzcWPB7gFoGlwxCtuqP1BS9lIjH2LdAo+HH1QONpSwQ+SMYZ+rqTyyUOBsGrPBPpcorghIKQzJzTpBoZ2sKGy84vF7LnNF2cumAeYCv2KGPGzYAadC4RYUvfAnLihxDl+BnShHg2zRz6stY84nA+ySB/4AV8h6Zg==:5C78\n" +
"^FO378,709^GFA,421,570,30,:Z64:eJx10U9Kw0AUBvBvePBmE+J2wNBcYbqRdNWrVLxApFupCYFmI649Ro8wJeCyV7BFsNuAmy5C9b00UhU6MIvhB/O9P1lafKGjA6hjvm6RT03h4f1ixJ09ZuPwWW5sBNowpw75vAyqe7KvMWM22zV1xKCaOXHAbq06birLTjU05AhEzC4CwnqrWlZMojhp0atTbfVnUzF7UR/eqTCiy5PuVr02vT624c6oGtFc9PZFFQ0norP8rGn4pbb9qQom9LnQ3KchF8kfjU9VPYveS818xci30q9qzSOXab9L0bapODbHbKKzguRu7E0kVc3L2mOy2hMllrO0eEOn+kAfdgtMTeWR+kW6PsgEJUmuKIZjypUMAfJ2g+qsLmtCOGvR/lPd0WXV/Z41HzQe1Bx+q1eVY4/fuLp8mA==:AE96\n" +
"^FO12,688^GB771,0,4^FS\n" +
"^FO712,165^GFA,197,182,7,:Z64:eJwdzi0OAkEMhuF30oSaDWtH7V4BOYKEq+CwSMQGisJwoJWD4hoQPCFBMgG6Y/ok/clXAKEWsVz5Zdq3Scz9VybaUU26TFJkcGZ4c0LjldSgfeFwDp/XVkpD4SZjpBcjgZ4giYVnhSGyOvrtQopH7tfqiWymAncnEi4GS3/C2HWEBww+U+iceV10/hsHJ1w=:E077\n" +
"^FO12,630^GB769,0,4^FS\n" +
"^FO657,529^GFA,381,448,16,:Z64:eJxF0cFKw0AQBuB/Wchclu014pK8giJIwYDPIoLniAcPYhsQ9CKeAwp5lYW+hAXFFA+9FNqbeyiNM0lIBsLybSZ/MlmoAlIGXRndrZavE95MotG5A1KjCmmxvJ/PAOd0a0MItz/sYwIVXpzdlewLC3pqbe9j9tkH6NCaZuLTLxC83kfQ+9gjzqkWbzg/HNXsOUhxP/vhvUC6/RzcVEB8VfY2lzs3OoumyGNxAKWcn+T4m/L7Vnz/kfvPa/oOPM+qf/7G2yXnO+kXr71Zcr7r8yaLwjVhsGoWSGv5/utKTL8v/BPE69DOo5+BjJ1uS0yqGmShNmxonn8HUAL12lvzEVgH/da6Ow9roA/Z6ARQ3mEo26//o6BZ7A==:8F8D\n" +
"^FO16,572^GB767,0,4^FS\n" +
"^FO16,511^GB767,0,4^FS\n" +
"^FO12,325^GB771,0,4^FS\n" +
"^FO12,387^GB570,0,4^FS\n" +
"^FO12,265^GB771,0,4^FS\n" +
"^FO13,204^GB767,0,4^FS\n" +
"^FO582,325^GB0,127,4^FS\n" +
"^FO657,470^GFA,385,448,16,:Z64:eJxN0LFqwzAQBuBfGOrFrVcPJn6FhEJrqIlfxY/gkLUkCoFOpXOHPkjHM4Y+QzJFQUPGempUKKh3diC+wdan0w8nAVwR+jLDD1UyttLdFJlGrbpKvCZXRSERqY4PZL6DMamyG62IHZ85t8txvoci4uMhcNzVWM1H/jAoJlBN7xrHN4OUfZCNzKHVZe99y30PtFuH+dMUzcuQ9yvCQ23QvA5uI8LjjHB4v3q20dh/igu0MWFhNZqOb7P9w4n7y6VWDc+rvINnl7z8FpsaNib1owx+ZT6+pI0o/Co1vwR7QWLcOiAQ88emDryFIB58KgkpL2N/mfeZnWMtRMDB1CApUN7I63rTO58Ad2JuSzjH4L7YydiXkvw/XNJzww==:0B55\n" +
"^FO12,452^GB768,0,4^FS\n" +
"^FO516,408^GFA,217,182,7,:Z64:eJwljjEKwkAQRV9IsY1sWouwuULKEQO5ykrAtAGbCCEuCF5JO2PjOdLZiZVaiDjE3zz4wzw+DTCDRsg+0ClsjBdSa/+QvDr5wjZSy9DZMa0XoSsHt16yewVTH3EGVk+w4L+QKgoQLc+jIq7KQI/ZvOGO63Oi25BdhegSEqv3vQ5wmIO+pmRqmLckukUeGLVsx0kmHlqm5PwACpcohQ==:4E76\n" +
"^FO609,414^GFA,337,540,20,:Z64:eJxlkTGOwjAQRQdZwg3atBQJuYJXNKngKjmC0wUJbXwMCg4zB6EI4gBAFwoI/uM4EctIHnle/O2ZH6IQc/qOhV/K+WQmtvRLs08FtkoYPuvWp70xtAzMgmHzZ0rd9biFysisKZPTRVg7MtvO08A49mMt/6Tnb5ad+T9bZVeUs4lVvMk6+mQN56/yk/0+OQmjJSNb392AemEYyVQuTBBm0VseGCbYHXxK8244twWbgeW9GPR0VMARdcSlOr4hTC8oegBtMTo3sRoOq8aNXnn2wGP5DaWCpK6YGvydlWill9o3WVC0iqQX6U1CtJBSGlEoY7wBu+1QPA==:6B73\n" +
"^FO13,148^GB771,0,4^FS\n" +
"^BY3,3,58^FT565,75^BCI,,Y,N\n" +
"^FH\\^FD>:"+bucket_code+"^FS\n" +
"^FT378,755^A1I,23,25^FH\\^CI28^FD"+pcsn+"^FS^CI27\n" +
"^FT773,820^A1I,23,25^FH\\^CI28^FD"+material_name+"^FS^CI27\n" +
"^FT505,914^A1I,23,25^FH\\^CI28^FD"+record_no+"^FS^CI27\n" +
"^FO111,1057^GFA,645,1100,44,:Z64:eJyN1LGK3DAQBuARKtQEqU0hojxCSoU19isJUqwDm1hwxXX7TDJbuLxHOJkt0irVqTBWZmzvLmzujptqMB9j8Y9lm+D8GNkMoN0kWehYHLPkPoJgE2gw3gkYhwgOYDfB+JxF8aB3RbK+9Gk/SxHQioK2i2SfEtlmhrFkVQLoBu2pjLnbrCq+hpLIPmeytYExV4ZHtOLITn2yv9VmRahZymTzgWyFXdQ1JNAVP7IBnG2FlBGtZmHPgiUbq9V6tNQuNkB7tcDinodqsZqs5X4M2oIFbRdrcdBmAa3XZMPNHtxi1WaN/JRWe364t0/5G9nvmMNQsv0xS+3QmvKKLQk3gTnMq+2mix370382rDZvNr1jcSzZGtDieQ8graXM4M5SZmG1drPuas/+jJmpm2XULZYf+ck7yoyswo3jHNsqttlGcdoK2UocBe24VdLpCEaJAf6mfGj4xc4mlrxYU2TTl3HGPMgWUR7BldQUs9ndVEfKrEI7y1+h9HMzkWUvvAhwXTQv9SWHVMUmfqZdiEn+DA2bVZZRRvYHJgnWeDVUFwtUFVlYC5+Qhbu6Wg3th+0X+n5vVgXxtlUP8cNW0H3Dd79tOwxrtZzu8Wa/ovXvWKD/w2bpSJ6/Zv8BlO8+jQ==:5596\n" +
"^FO715,691^GFA,217,216,8,:Z64:eJw9zjEKwkAQheE/BNxGrK3MFbTbQvQqOcKWgmBi5ZUEmxXBKgdIIbKwhW3sBIt1ZgNO8zEDM/OYMdYCajxUMKgWvvOQjX9lvlSvLU69MXrPpr6TZUeyD2gC0faw9sQ0QOFJF7E8+WjlXplC3AW2qeXln1Ry+lB80BTGSGMC5ihuaiaF5qmZZh12pTkc+7foBtkTm3P+oTnVHziUP3g=:1C17\n" +
"^FO581,694^GFA,229,304,16,:Z64:eJyFzzEOwjAMBVBH7JzFY7dcJagDa6ReIFWlsiBmjtEj/KgS18C5QUYmipMWGBjw9iT72268NYGJLTm+hwWN73qo2+D4EQGiFIsBxzKTGlE2o12d1VR8q05Tsfv4cFUv4ngev4b6uVvnzzVPPHah+vJ2lLp/VKcoOcKioa4/qbsh5TaI2pqh3L8/sn6i/WT6SfeXqvm/DvmP/WaD1byZFrwAXqNleg==:1BD3\n" +
"^FO475,853^GFA,345,456,24,:Z64:eJyFzjFqwzAUBmA9DPLyrKwOiPoK0uYsPYt1gipjIRAJgbPkADlGjmARyNor2EvmjB089EnGNEuphh/08fjfaxsXfT8jOKDk5TR+RB8da/UQ/ekuyE935GjVwSRnXUfOs3Pkda2sCav3xSb1FNk7HQw5S843npzmGbnps6vk1eqYfE9+fJJLjOQSeTMrE3ud+i3tfSan5LVURzjrdS9DQ/MMRdoL5+3igZr3uT+7yW7HW+gFanKBb7JV3XQhb3fD4ytI3DmgfBdW6XipyBt3+PTfuHVA+SinufHXKt2fH1YOlo9icC3/9zK5XHz8y4tfL156Xh1WZwwG8h8KqnO3:CFC1\n" +
"^FT576,697^A1I,23,25^FH\\^CI28^FD"+bucket_code+"^FS^CI27\n" +
"^FO317,690^GFA,205,189,7,:Z64:eJwljjEKwkAURN/ywW1E2y3EvULKgIFcZSEXSGmnx/A4AcFTpIgEUglumWrXv7H4vGLmzwxAo0c2ybxsnvB2L0+wo0PArDUyQaxoB+grLmq+9kXjE5AIS+BWwxzoHLynApMC31HfA/MJXDBz2pApoANRiB0OPmIT57VqVfMPjhq906DSoLGlXdHeNzT/va5M5gfuwyjr:BA73\n" +
"^FO153,690^GFA,317,460,20,:Z64:eJyN0LFKA0EQBuAfArPNcNtucImv8NvoFcF7FSEvcGBjYaEIqfJQK4I2eYCUFwLW9wBCnN27mJA0TrcfuzOzP2Dle1xUrC+N+g+bi1DZIBGu07uOZiISay5eUwtt9Z6juZ7pvXtCCFqbzbIh/BnD0ZANZnZPs016YvGwAbRY6VeR+x03uP5RHuaq9dtxjRC1eTmxj2whEoNV2b5uVsXGfjOz7ed0ZVnM2RZztzbjcTldomqfQ5nRvH37jo2Yue3ap7IfJMcnVzKGlP+BclB/bpaJdwfD0SZnZm+rE8NgUQbz+/QLNlA+rg==:F877\n" +
"^FT150,697^A1I,23,25^FH\\^CI28^FD"+qty+"^FS^CI27\n" +
"^FO715,634^GFA,193,182,7,:Z64:eJwdjTEOwjAMRV/kIRtdO+QWLJGolMP0EmyYhRGuFNQVcQKGSD0AHTugBqdenqVv/weV7oevhVSRCQ7+hoB3d6Tg9E3KFF6cYImhZefYIwtDgEvEbhh7kB1Sle8Hd83MocHNG2KoNDBa9SMjPstq69a+zQxHOqtm1GZg0maXZyYpXmHYBZjH5g++sSu6:E28C\n" +
"^FO545,631^GFA,309,460,20,:Z64:eJyN0L9KA0EQBvAPAnPNcNte8MgzfDZ6RfBeZSEvEEhjGRFS+VAbAtr4ACk3HFhfaRdnXEM0aZxtlh/MX8AijLiKtrs26j9sLkJlj0To/ZDsA4hI23HxlJbQB8bVulg1Mm3zI7RjPKQ0c0PzY2xiOhuK0U3dJiOxiPtiudSryeNAtxxTLKZWb+A7tF//sZ0b4fXcare325dTD7eZ2eF16rb0+cyqO+ux2kw30CaXPfrnj5DZi1vYfdq+Nh/Ezyc3AjtPBHwPexYaLs1uEqqT4WyTC7Pc+pehWCvfZnMcvwC491j6:81B6\n" +
"^FO317,632^GFA,217,196,7,:Z64:eJwtjjEKwkAURN/ywW3Cpk0R9AopAwq5SiAXSGllPIAH8BgeYUHwFCILaQVTbiGJP4sDw3z+wMyAoiKhVy4QsUuAN3LXh17yF2XIaDx4x54kq/faIhMSS4Ya52u6gs1YreKWG58nQ2gZS/MNrRlnsuCN9pQn6GCneWK9e7TYGXPpG/Xkesw12mqmSh5Tu+jO5px2HrR2giKt/gHlVS7b:0BB4\n" +
"^FO158,631^GFA,305,414,18,:Z64:eJyF0DFqw0AQBdAPglEzrNo1EfIVxhiEChFdxWBILUijzoSAKh9KJuA0PoBLBYFrHSDgzKxAsd14un2wn5kP6CQjHiYtHkX4iZREwlKhEzRxLwQQUVrI9qOrwVwXk8SjdIe+AXtfUGYCP0s5C4LAvxKbRKNguzmrcD7lOJHrICrL3/UkrDmDnDQnvZGvIH7VmjiT79U+yNEkU/k5LlR0VZM41+T3dtGCXS0XoPq8JL1UpLLTu950H5DVQy+k+0DyzMQq4ORe9O4kDpLhX6I70V9uEmePIClFoWD6A2YhOXE=:F331\n" +
"^FO452,571^GFA,365,575,25,:Z64:eJyl0bFKBDEQBuAJgaQJ2XaKsM8wnVuIvko6G4t7AslyxTWHr2RCimvEZ9hHWBuxWE4nibt4cp3TBPLB/MwMwJVS1z7/A3Kebya9gDFdfBhfIC7iQ3wWHvCOnGFwk0/vIT3LXhsGY3AgKjDsfEohS2WNgr4AoS9A5FOIWVrlJAMw0AZjiNIolIGbKYZYYaggjgpFAOjOSFMD9OkA+euoqICxeB82WCDLFTgD4hYuMmeQiA1qhqvh4wbWIe0K3JY59vt8ULaCHhBLuH3kyeNJpzfZ1ww5n7vIoF95V/OTK7tiKEtBKOG1Ynt4jr7B9AfkCr7B9AO8K2hAl2DUCu6ylTbrMfmCv4sv+A1cb2P6:0B48\n" +
"^FO495,513^GFA,285,437,19,:Z64:eJxl0DEOwjAMBdCPKrWLRVcPFWcwE53KVYK4QG9Aj8HAYVIhwRUYe4SMHVCFHdoIVEtJlCfFdgykaHV5/IVf0aZbUYZEWQiHoXgriWse+WUE8pobqSjS+U5ggIhrEULRieuNdkbCLtLJ91cjKMlMnX+BSZMpeQJ5o2C5yollSORi+i0fu0TtXFGgxK5dHhrJQlYR2FYsbaTg+v5WavdFzWzpZR+W7rMwld7ooH985rEvc09pIta90bAmF2nA9xY3WVP183A+dapzXMYPUidNWg==:31AF\n" +
"^FO709,423^GFA,125,152,8,:Z64:eJyTfyDfUMfwj0GuwPDgccbDDTIWCYmNzYwNEhIJiQ1sDAckJBggtAyD4QEQzVP/oQJMJxTwgeUTEpiRaBmLgofNQFquwPLAYSAtDTIfJM8ABCTQACH3JVQ=:21A8\n" +
"^FO612,423^GFA,49,68,4,:Z64:eJyTkDBgkCCELYC4woBB5oYBA/8MAwYEKABjAPyYB3w=:5A62\n" +
"^FO679,384^GFA,165,209,11,:Z64:eJz7IN9wn/Ef4w9mBmYJywMfG58zzwExCx48OHi4nQ/ETEg4cLCxjQ3EZEBiFgCZx9jBTIMDBxuOMaMzIWrZESawM/6XMHhwAGQuPzvItgMHgbbJ8zD/k284cHAf449iHqA2BgbGBiBBChPoChiT8T8AYz024A==:519A\n" +
"^FO418,452^GFA,185,209,11,:Z64:eJxjYGD+IGFgcL+xwYCBgc0CyPxx8ACQycMDZD4AMuUgzAOJD4BMBjDz4AcDHqBiMHMDUC3/PyDzcOMMkDY+IPMf4wyYCQcYe6DMggMH+4BMPhmJgoKDB9uATHYLmZsfkhvbgUzmD/z9BvaMzSBzwYCxcYMcFmbDBwZszAIE0wAASfMvDA==:9E6C\n" +
"^FO516,390^GFA,225,182,7,:Z64:eJwlyDEOgjAYhuGv+RO61LB2KHINEhPOQuIB1LiwKJgObt7AcAVuIC6OnoDhd2LFiQ5qbPVdnuQFFELRn1zRB6BJ0UCROBqykSJrNtZoz8MuMtmcr3bbyue7pmUrDk1NPFayQtwV6anCrCtknyNxK+Hmnj1K0yUXRply0jJ2HwSG0uPETSOdWNw1zMj08mQsehOA9jhGZhDXP4B1mL4ve+g46g==:5B21\n" +
"^FO388,387^GFA,233,345,15,:Z64:eJx10DEOgkAQBdBvSJZmA60FwStMZbDaq2xiQWtiQyeJF/IIw02GxnpvoDNICBid7mV3J/8voFMmrKdqNiT/l8515IkC2j5M9FVDdO4jjzwxT0TMceilNmI/My6EUXcqM72MqPysKojoJQu9vf0iC4uxMF6MnbE2pnEQLpX5UVedHte78E5TZc9bKQcKRZsg2sX5uS5DUynxk5oZ61Pe0vrCLR8T8AaibEI5:8365\n" +
"^FO686,327^GFA,317,336,12,:Z64:eJw90L9KA0EQx/HvspDt9toUwXsGSXPgn7xKHmEljY3cwoE2khdQ8FGccEW61IIWKyksFWwODOps7pKtPuzO/mYYABM5HiMwGi6yvT1Y8IVwCcHEVPqzxCwiardcQKFSm80WrFjNTHy2+i856ijUzRi+PDfq0p7D9URrhGIRoBrvXX4nmFTq1d1v7usDLq51Bh1gFDRjw8mH2ibM7Rs/z3kw9f2LeZ2G/cDmsTMP09S7C/bpL9cLs25udzlHc3dB3wfPg+AatdN+78LFwVvhtOlrTBu5aof9rCL1ut+JxlId99O//wMU2lFH:312E\n" +
"^FO552,328^GFA,249,345,15,:Z64:eJyNz0EKwjAQBdApBbsZ7HbAYK6Q7iIIXiXFC2TpQjBFqJfwMHMADxHpBVx26cQWbXb+3Vv8ZD7ALw6y/MGiG0+bF9asnQ7C6x01IcUmehbe1qgIjXGR3RaKfoWEwtiymUkIhttgUVh9SEKSbl8ieTyMfISZmtHYiWXqgjJGqGbSl5X8S3ZvvRsSa7kK/VnFZkjdXTdequdDbpanMK3AaVERaJvRZmQDCwK7jGnvIjq8AS2gNjU=:966F\n" +
"^FO686,268^GFA,301,324,12,:Z64:eJxF0LFqwzAQxvG/MFhLKq8ZRP0KGV0amlfRI3gMpC3K0uc68Bo6d1TIkKWDuhla6p6ioQdCPz5OoDsoFbrc3oBsgpm31SkFthmeYPyaAr0EdhE5vCXsUejExN6rp0gjDW44x/YKJln8eMHpQ7LDpyv+Wb33PMg7/Yd6WHOIJ73VfuBx0XCtdiP2e6ab1e2I22RcyZvEfcisik3Ci559sXAnv/RztVk096VfaH4E/xLV0SwIu6nkkaxeWbWNZeLbgMVW3X3WHhuFV1/3YI+p/rNuRefgvzT/A0TbSR0=:0A13\n" +
"^FO547,272^GFA,241,304,16,:Z64:eJx1zrENwjAQBdA7WbprTGhTIGYwJdsQsUAmiHyyZFcwAcPEoqCCmg1YIUUkY5sGkPK7V/yvD4AyMcNMCoYGLQC6DTOeie2Nqj0xK0UsEtBui1cnV+2qbbZVpEd0YnW2ykavR4hS+iHpu0texxRj3eP2eVW+7WQsVp6KKdv+O2VzaEx/DGR2V1f21u5i+u5Bxrzqv71Mpj/M2UO2hq9Q+bfg5mNYcomSX2OybxJKQig=:5CD7\n" +
"^FO582,213^GFA,237,285,15,:Z64:eJx9zjEOgkAQBdAxmyzNZG2/CZErUG7lWXZvwAkMhsJDeBiHUNh5hqWxho6CwkG0sGG6l5+ZP0RmEIl3Y22WEoicTxLHxlqugpI5SGyVQIUjMZUS625h+eNFU4IHk6PDlwzdNVJIvOrlYs6VVDmJsxI5LwRLXy/ESkivuw7YT9qLsu2bxrnce00tQpce5nZyn6/MkJ7hvBtfWQraqyO0TtCvtkgb9P8spjeReTug:A02F\n" +
"^FO145,453^GFA,565,726,33,:Z64:eJx10jFLAzEUAOAXAi9L2qwRT/0LAZcWxPsrEaGTQ0cne+DaH1An/8KBIA4OJ8K5BOduRg6cHOoiFcrFl7ur2oK5G0Luy3svlwfQDAug25mBrSHpIYBwDAiIaFgoAOj1zYe4ESOQYKTKEgI8ezo/qY74ZQcM8Ag0AUKiNsPsOa0+FSKBNAQYTy4zAqYBliIMM7dbleI65o51+YQVP6AgsDebq9OS3cy6FGuABB4yxEPU896bg+quA0USS7ZWhGkDPiEp+iMHrznImIER8BGgUfLxTYXbeNqRY68e/4KJjyke3/fFEYKOYOFFWG5G0LI8S3v3tI6jFcs3I4BNw1KWA/G1xGJOEbjZBvtmLEsN/hyrmSAwWGwBNAvpDHzc4YXmBIazFrTHTAOVlMuXBbvKsU9ghTvTtsj2R2kq8sRLZ/lujRgj4E7WRbAJi3dh4VTLwnKV08YfoMJqfVkWyqRXeFUbdE2Egwjw97otr6VMa5SG1vmFU6HuUnQN49m0WZCGUohy1Reg2iLblqOTJs0kGdOv7oOjKa7btGvaf8Y3AFWrhg==:9532\n" +
"^FO259,388^GFA,269,330,15,:Z64:eJyTb2AAgToGCCh4ACIZD0NEGRISwNxGKPcAmCvNCJM9ACIlm6F67cHCEv+gXMbD/Tb2DQbsfDYf/vAf+Md4mE0iEcjlkUg4w3OwjZ+ZTeIAQ4INj0Rim0Qy0BAwNw3KNTgM5h7mkUhutyiGcg8gcx/AuQ0/Ds+3KWZsfsxX87ndovAMf+P3H/aMDXbs9x+3WxT8ATmFmRlMArk8OLmMbRIJEC4bmHtO5gGYWw/mMgDdDDaKASzIUMEODQMeBhgAAMOSRSk=:5649\n" +
"^FT465,856^A1I,23,25^FH\\^CI28^FD"+material_code+"^FS^CI27\n" +
"^FT544,335^A1I,23,25^FH\\^CI28^FD"+create_name+"^FS^CI27\n" +
"^FT544,275^A1I,23,25^FH\\^CI28^FD"+user_name+"^FS^CI27\n" +
"^FT450,580^A1I,23,25^FH\\^CI28^FD"+DateUtil.today()+"^FS^CI27\n" +
"^FT378,712^A1I,23,25^FH\\^CI28^FD"+pcsn+"^FS^CI27\n" +
"^FT773,777^A1I,23,25^FH\\^CI28^FD"+material_name+"^FS^CI27\n" +
"^FT505,870^A1I,23,25^FH\\^CI28^FD"+record_no+"^FS^CI27\n" +
"^FO154,1009^GFA,857,1539,57,:Z64:eJyd1DFOIzEUBuBnjDAFsikpvPEVKI02ylyFI4SOIto4opguJ0B7ji09oki3XCCFRxS0QzfFaN4+e8ZDYEFo10USOf4mjt/vB6cwjiP4t3Ep7Q8BQQBzAGIGetlB4YFvzcZbFea6YH6pAULhuOONhKBtBzRxLb9hGSF4gmunvyNgA7xc194W7UJi5dsIMXCnugiveoLMSTPCa4LodYEMW4JIcN0VaoQ1NsKbPkJ6tAYO0tztErwk+BB0Ie7CimB48fZ2IVRVDzC0wi9MhIVyGk5AztgALwi6oOe89DOC7sbbIIWCutoTfHJWBisinAuCx6/wLMImQidHCGqCAeYy3IpthJzgGUg9wmOCsNSWl/ROLxEK+okMtQxLHqGN8JSgGODJCNU2QfYyQF5XPweolwfwguB4qkcDvMKTBAs6VUQh19XDNv5H7N5Dg+IQFj0AlbqkMkSocJOhtQfwnGD3FrYjZAPs2acQ3sAFDNATDEIox3YilUO/h/oAUjnsCGGAEia41FQOdgDZjk0wzGl6gDf+diljOSJkdFR04kKxtCIdzozveIZ1WFEuEnQvvo2RY/Vvfg+cIhdmC6PKsMpQYWkyxIfOYNrqHda7tuiKHVYRmoBNkKYX+NTlACgUixyAdbk3fdwywerxl2kJbiJchHUIUnW8f97bMXK8F/McuZm4Fx2PAXC4ebQiFBWyPdvDPNDFFrxh7fN9ghTy1AhyVtNnFyHk+QTfjXSt8oLTDOmmfw35K7yYYLyPB7CF7m9IrSMvuMyQNauvIXgZvxWIqecM07HnOErOp9BgR10uQz/BdTPB47iBD+F5hgwmaPwE085h9QH8307+B/mXaEc=:3563\n" +
"^FO715,648^GFA,217,216,8,:Z64:eJw9zjEKwkAQheE/BNxGrK3MFbTbQvQqOcKWgmBi5ZUEmxXBKgdIIbKwhW3sBIt1ZgNO8zEDM/OYMdYCajxUMKgWvvOQjX9lvlSvLU69MXrPpr6TZUeyD2gC0faw9sQ0QOFJF7E8+WjlXplC3AW2qeXln1Ry+lB80BTGSGMC5ihuaiaF5qmZZh12pTkc+7foBtkTm3P+oTnVHziUP3g=:1C17\n" +
"^FO581,651^GFA,229,304,16,:Z64:eJyFzzEOwjAMBVBH7JzFY7dcJagDa6ReIFWlsiBmjtEj/KgS18C5QUYmipMWGBjw9iT72268NYGJLTm+hwWN73qo2+D4EQGiFIsBxzKTGlE2o12d1VR8q05Tsfv4cFUv4ngev4b6uVvnzzVPPHah+vJ2lLp/VKcoOcKioa4/qbsh5TaI2pqh3L8/sn6i/WT6SfeXqvm/DvmP/WaD1byZFrwAXqNleg==:1BD3\n" +
"^FO475,809^GFA,345,456,24,:Z64:eJyFzjFqwzAUBmA9DPLyrKwOiPoK0uYsPYt1gipjIRAJgbPkADlGjmARyNor2EvmjB089EnGNEuphh/08fjfaxsXfT8jOKDk5TR+RB8da/UQ/ekuyE935GjVwSRnXUfOs3Pkda2sCav3xSb1FNk7HQw5S843npzmGbnps6vk1eqYfE9+fJJLjOQSeTMrE3ud+i3tfSan5LVURzjrdS9DQ/MMRdoL5+3igZr3uT+7yW7HW+gFanKBb7JV3XQhb3fD4ytI3DmgfBdW6XipyBt3+PTfuHVA+SinufHXKt2fH1YOlo9icC3/9zK5XHz8y4tfL156Xh1WZwwG8h8KqnO3:CFC1\n" +
"^FT576,654^A1I,23,25^FH\\^CI28^FD"+bucket_code+"^FS^CI27\n" +
"^FO317,647^GFA,205,189,7,:Z64:eJwljjEKwkAURN/ywW1E2y3EvULKgIFcZSEXSGmnx/A4AcFTpIgEUglumWrXv7H4vGLmzwxAo0c2ybxsnvB2L0+wo0PArDUyQaxoB+grLmq+9kXjE5AIS+BWwxzoHLynApMC31HfA/MJXDBz2pApoANRiB0OPmIT57VqVfMPjhq906DSoLGlXdHeNzT/va5M5gfuwyjr:BA73\n" +
"^FO153,647^GFA,317,460,20,:Z64:eJyN0LFKA0EQBuAfArPNcNtucImv8NvoFcF7FSEvcGBjYaEIqfJQK4I2eYCUFwLW9wBCnN27mJA0TrcfuzOzP2Dle1xUrC+N+g+bi1DZIBGu07uOZiISay5eUwtt9Z6juZ7pvXtCCFqbzbIh/BnD0ZANZnZPs016YvGwAbRY6VeR+x03uP5RHuaq9dtxjRC1eTmxj2whEoNV2b5uVsXGfjOz7ed0ZVnM2RZztzbjcTldomqfQ5nRvH37jo2Yue3ap7IfJMcnVzKGlP+BclB/bpaJdwfD0SZnZm+rE8NgUQbz+/QLNlA+rg==:F877\n" +
"^FT150,654^A1I,23,25^FH\\^CI28^FD"+qty+"^FS^CI27\n" +
"^FO715,591^GFA,193,182,7,:Z64:eJwdjTEOwjAMRV/kIRtdO+QWLJGolMP0EmyYhRGuFNQVcQKGSD0AHTugBqdenqVv/weV7oevhVSRCQ7+hoB3d6Tg9E3KFF6cYImhZefYIwtDgEvEbhh7kB1Sle8Hd83MocHNG2KoNDBa9SMjPstq69a+zQxHOqtm1GZg0maXZyYpXmHYBZjH5g++sSu6:E28C\n" +
"^FO545,588^GFA,309,460,20,:Z64:eJyN0L9KA0EQBvAPAnPNcNte8MgzfDZ6RfBeZSEvEEhjGRFS+VAbAtr4ACk3HFhfaRdnXEM0aZxtlh/MX8AijLiKtrs26j9sLkJlj0To/ZDsA4hI23HxlJbQB8bVulg1Mm3zI7RjPKQ0c0PzY2xiOhuK0U3dJiOxiPtiudSryeNAtxxTLKZWb+A7tF//sZ0b4fXcare325dTD7eZ2eF16rb0+cyqO+ux2kw30CaXPfrnj5DZi1vYfdq+Nh/Ezyc3AjtPBHwPexYaLs1uEqqT4WyTC7Pc+pehWCvfZnMcvwC491j6:81B6\n" +
"^FO317,589^GFA,217,196,7,:Z64:eJwtjjEKwkAURN/ywW3Cpk0R9AopAwq5SiAXSGllPIAH8BgeYUHwFCILaQVTbiGJP4sDw3z+wMyAoiKhVy4QsUuAN3LXh17yF2XIaDx4x54kq/faIhMSS4Ya52u6gs1YreKWG58nQ2gZS/MNrRlnsuCN9pQn6GCneWK9e7TYGXPpG/Xkesw12mqmSh5Tu+jO5px2HrR2giKt/gHlVS7b:0BB4\n" +
"^FO158,588^GFA,305,414,18,:Z64:eJyF0DFqw0AQBdAPglEzrNo1EfIVxhiEChFdxWBILUijzoSAKh9KJuA0PoBLBYFrHSDgzKxAsd14un2wn5kP6CQjHiYtHkX4iZREwlKhEzRxLwQQUVrI9qOrwVwXk8SjdIe+AXtfUGYCP0s5C4LAvxKbRKNguzmrcD7lOJHrICrL3/UkrDmDnDQnvZGvIH7VmjiT79U+yNEkU/k5LlR0VZM41+T3dtGCXS0XoPq8JL1UpLLTu950H5DVQy+k+0DyzMQq4ORe9O4kDpLhX6I70V9uEmePIClFoWD6A2YhOXE=:F331\n" +
"^FO452,528^GFA,365,575,25,:Z64:eJyl0bFKBDEQBuAJgaQJ2XaKsM8wnVuIvko6G4t7AslyxTWHr2RCimvEZ9hHWBuxWE4nibt4cp3TBPLB/MwMwJVS1z7/A3Kebya9gDFdfBhfIC7iQ3wWHvCOnGFwk0/vIT3LXhsGY3AgKjDsfEohS2WNgr4AoS9A5FOIWVrlJAMw0AZjiNIolIGbKYZYYaggjgpFAOjOSFMD9OkA+euoqICxeB82WCDLFTgD4hYuMmeQiA1qhqvh4wbWIe0K3JY59vt8ULaCHhBLuH3kyeNJpzfZ1ww5n7vIoF95V/OTK7tiKEtBKOG1Ynt4jr7B9AfkCr7B9AO8K2hAl2DUCu6ylTbrMfmCv4sv+A1cb2P6:0B48\n" +
"^FO495,469^GFA,285,437,19,:Z64:eJxl0DEOwjAMBdCPKrWLRVcPFWcwE53KVYK4QG9Aj8HAYVIhwRUYe4SMHVCFHdoIVEtJlCfFdgykaHV5/IVf0aZbUYZEWQiHoXgriWse+WUE8pobqSjS+U5ggIhrEULRieuNdkbCLtLJ91cjKMlMnX+BSZMpeQJ5o2C5yollSORi+i0fu0TtXFGgxK5dHhrJQlYR2FYsbaTg+v5WavdFzWzpZR+W7rMwld7ooH985rEvc09pIta90bAmF2nA9xY3WVP183A+dapzXMYPUidNWg==:31AF\n" +
"^FO709,379^GFA,125,152,8,:Z64:eJyTfyDfUMfwj0GuwPDgccbDDTIWCYmNzYwNEhIJiQ1sDAckJBggtAyD4QEQzVP/oQJMJxTwgeUTEpiRaBmLgofNQFquwPLAYSAtDTIfJM8ABCTQACH3JVQ=:21A8\n" +
"^FO612,380^GFA,49,68,4,:Z64:eJyTkDBgkCCELYC4woBB5oYBA/8MAwYEKABjAPyYB3w=:5A62\n" +
"^FO679,341^GFA,165,209,11,:Z64:eJz7IN9wn/Ef4w9mBmYJywMfG58zzwExCx48OHi4nQ/ETEg4cLCxjQ3EZEBiFgCZx9jBTIMDBxuOMaMzIWrZESawM/6XMHhwAGQuPzvItgMHgbbJ8zD/k284cHAf449iHqA2BgbGBiBBChPoChiT8T8AYz024A==:519A\n" +
"^FO418,409^GFA,185,209,11,:Z64:eJxjYGD+IGFgcL+xwYCBgc0CyPxx8ACQycMDZD4AMuUgzAOJD4BMBjDz4AcDHqBiMHMDUC3/PyDzcOMMkDY+IPMf4wyYCQcYe6DMggMH+4BMPhmJgoKDB9uATHYLmZsfkhvbgUzmD/z9BvaMzSBzwYCxcYMcFmbDBwZszAIE0wAASfMvDA==:9E6C\n" +
"^FO516,346^GFA,225,182,7,:Z64:eJwlyDEOgjAYhuGv+RO61LB2KHINEhPOQuIB1LiwKJgObt7AcAVuIC6OnoDhd2LFiQ5qbPVdnuQFFELRn1zRB6BJ0UCROBqykSJrNtZoz8MuMtmcr3bbyue7pmUrDk1NPFayQtwV6anCrCtknyNxK+Hmnj1K0yUXRply0jJ2HwSG0uPETSOdWNw1zMj08mQsehOA9jhGZhDXP4B1mL4ve+g46g==:5B21\n" +
"^FO388,343^GFA,233,345,15,:Z64:eJx10DEOgkAQBdBvSJZmA60FwStMZbDaq2xiQWtiQyeJF/IIw02GxnpvoDNICBid7mV3J/8voFMmrKdqNiT/l8515IkC2j5M9FVDdO4jjzwxT0TMceilNmI/My6EUXcqM72MqPysKojoJQu9vf0iC4uxMF6MnbE2pnEQLpX5UVedHte78E5TZc9bKQcKRZsg2sX5uS5DUynxk5oZ61Pe0vrCLR8T8AaibEI5:8365\n" +
"^FO686,284^GFA,317,336,12,:Z64:eJw90L9KA0EQx/HvspDt9toUwXsGSXPgn7xKHmEljY3cwoE2khdQ8FGccEW61IIWKyksFWwODOps7pKtPuzO/mYYABM5HiMwGi6yvT1Y8IVwCcHEVPqzxCwiardcQKFSm80WrFjNTHy2+i856ijUzRi+PDfq0p7D9URrhGIRoBrvXX4nmFTq1d1v7usDLq51Bh1gFDRjw8mH2ibM7Rs/z3kw9f2LeZ2G/cDmsTMP09S7C/bpL9cLs25udzlHc3dB3wfPg+AatdN+78LFwVvhtOlrTBu5aof9rCL1ut+JxlId99O//wMU2lFH:312E\n" +
"^FO552,285^GFA,249,345,15,:Z64:eJyNz0EKwjAQBdApBbsZ7HbAYK6Q7iIIXiXFC2TpQjBFqJfwMHMADxHpBVx26cQWbXb+3Vv8ZD7ALw6y/MGiG0+bF9asnQ7C6x01IcUmehbe1qgIjXGR3RaKfoWEwtiymUkIhttgUVh9SEKSbl8ieTyMfISZmtHYiWXqgjJGqGbSl5X8S3ZvvRsSa7kK/VnFZkjdXTdequdDbpanMK3AaVERaJvRZmQDCwK7jGnvIjq8AS2gNjU=:966F\n" +
"^FO686,225^GFA,301,324,12,:Z64:eJxF0LFqwzAQxvG/MFhLKq8ZRP0KGV0amlfRI3gMpC3K0uc68Bo6d1TIkKWDuhla6p6ioQdCPz5OoDsoFbrc3oBsgpm31SkFthmeYPyaAr0EdhE5vCXsUejExN6rp0gjDW44x/YKJln8eMHpQ7LDpyv+Wb33PMg7/Yd6WHOIJ73VfuBx0XCtdiP2e6ab1e2I22RcyZvEfcisik3Ci559sXAnv/RztVk096VfaH4E/xLV0SwIu6nkkaxeWbWNZeLbgMVW3X3WHhuFV1/3YI+p/rNuRefgvzT/A0TbSR0=:0A13\n" +
"^FO547,229^GFA,241,304,16,:Z64:eJx1zrENwjAQBdA7WbprTGhTIGYwJdsQsUAmiHyyZFcwAcPEoqCCmg1YIUUkY5sGkPK7V/yvD4AyMcNMCoYGLQC6DTOeie2Nqj0xK0UsEtBui1cnV+2qbbZVpEd0YnW2ykavR4hS+iHpu0texxRj3eP2eVW+7WQsVp6KKdv+O2VzaEx/DGR2V1f21u5i+u5Bxrzqv71Mpj/M2UO2hq9Q+bfg5mNYcomSX2OybxJKQig=:5CD7\n" +
"^FO582,169^GFA,237,285,15,:Z64:eJx9zjEOgkAQBdAxmyzNZG2/CZErUG7lWXZvwAkMhsJDeBiHUNh5hqWxho6CwkG0sGG6l5+ZP0RmEIl3Y22WEoicTxLHxlqugpI5SGyVQIUjMZUS625h+eNFU4IHk6PDlwzdNVJIvOrlYs6VVDmJsxI5LwRLXy/ESkivuw7YT9qLsu2bxrnce00tQpce5nZyn6/MkJ7hvBtfWQraqyO0TtCvtkgb9P8spjeReTug:A02F\n" +
"^FO145,410^GFA,565,726,33,:Z64:eJx10jFLAzEUAOAXAi9L2qwRT/0LAZcWxPsrEaGTQ0cne+DaH1An/8KBIA4OJ8K5BOduRg6cHOoiFcrFl7ur2oK5G0Luy3svlwfQDAug25mBrSHpIYBwDAiIaFgoAOj1zYe4ESOQYKTKEgI8ezo/qY74ZQcM8Ag0AUKiNsPsOa0+FSKBNAQYTy4zAqYBliIMM7dbleI65o51+YQVP6AgsDebq9OS3cy6FGuABB4yxEPU896bg+quA0USS7ZWhGkDPiEp+iMHrznImIER8BGgUfLxTYXbeNqRY68e/4KJjyke3/fFEYKOYOFFWG5G0LI8S3v3tI6jFcs3I4BNw1KWA/G1xGJOEbjZBvtmLEsN/hyrmSAwWGwBNAvpDHzc4YXmBIazFrTHTAOVlMuXBbvKsU9ghTvTtsj2R2kq8sRLZ/lujRgj4E7WRbAJi3dh4VTLwnKV08YfoMJqfVkWyqRXeFUbdE2Egwjw97otr6VMa5SG1vmFU6HuUnQN49m0WZCGUohy1Reg2iLblqOTJs0kGdOv7oOjKa7btGvaf8Y3AFWrhg==:9532\n" +
"^FO259,344^GFA,269,330,15,:Z64:eJyTb2AAgToGCCh4ACIZD0NEGRISwNxGKPcAmCvNCJM9ACIlm6F67cHCEv+gXMbD/Tb2DQbsfDYf/vAf+Md4mE0iEcjlkUg4w3OwjZ+ZTeIAQ4INj0Rim0Qy0BAwNw3KNTgM5h7mkUhutyiGcg8gcx/AuQ0/Ds+3KWZsfsxX87ndovAMf+P3H/aMDXbs9x+3WxT8ATmFmRlMArk8OLmMbRIJEC4bmHtO5gGYWw/mMgDdDDaKASzIUMEODQMeBhgAAMOSRSk=:5649\n" +
"^FT465,812^A1I,23,25^FH\\^CI28^FD"+material_code+"^FS^CI27\n" +
"^FT544,292^A1I,23,25^FH\\^CI28^FD"+create_name+"^FS^CI27\n" +
"^FT450,537^A1I,23,25^FH\\^CI28^FD"+DateUtil.today()+"^FS^CI27\n" +
"^PQ1,0,1,Y\n" +
"^XZ\n";
byte[] zplBytes = zplContent.getBytes(StandardCharsets.UTF_8);

View File

@@ -702,31 +702,35 @@ public class PdaProductionServiceImpl implements PdaProductionService {
throw new BadRequestException("该点位已创建过任务!");
}
List<JSONObject> rows = param.getJSONArray("rows").toJavaObject(new TypeReference<List<JSONObject>>() {});;
param.put("bill_type", IOSEnum.OUT_BILL_TYPE.code("料桶出库"));
param.put("rows", rows);
// 1 创建出库单、明细、分配明细
// todo: 认为明细都是一个库区的(不同库区需要不同出库单?)
Structattr structattr = structattrService.getByCode(rows.get(0).getString("struct_code"));
JSONObject invObj = defaultPdaBuildParam.doBuildOutInvObj(param, structattr.getStor_id(), true);
String invId = outBillService.insertDtl(invObj);
// 2 根据插入的dtl 去寻找袋的组盘信息调用手动分配
List<IOStorInvDtlDto> billDtl = outBillService.getOutBillDtl(MapUtil.of("iostorinv_id", invId));
for (IOStorInvDtlDto ioStorInvDtlDto : billDtl) {
JSONObject divObj = defaultPdaBuildParam.buildManuaOutBuckDivData(param, ioStorInvDtlDto);
outBillService.manualDiv(divObj);
}
for (JSONObject json : rows) {
param.put("bill_type", IOSEnum.OUT_BILL_TYPE.code("料桶出库"));
List<JSONObject> paramList = new ArrayList<>();
paramList.add(json);
param.put("rows", paramList);
// 1 创建出库单、明细、分配明细
// todo: 认为明细都是一个库区的(不同库区需要不同出库单?)
Structattr structattr = structattrService.getByCode(rows.get(0).getString("struct_code"));
JSONObject invObj = defaultPdaBuildParam.doBuildOutInvObj(param, structattr.getStor_id(), true);
String invId = outBillService.insertDtl(invObj);
// 2 根据插入的dtl 去寻找袋的组盘信息调用手动分配
List<IOStorInvDtlDto> billDtl = outBillService.getOutBillDtl(MapUtil.of("iostorinv_id", invId));
for (IOStorInvDtlDto ioStorInvDtlDto : billDtl) {
JSONObject divObj = defaultPdaBuildParam.buildManuaOutBuckDivData(param, ioStorInvDtlDto);
outBillService.manualDiv(divObj);
}
// 根据仓位定位到出到哪个称重位
String end_code = structattr.getExt_id();
List<SchBasePoint> czws = schBasePointMapper.getCanUsePointByCode(end_code);
// 根据仓位定位到出到哪个称重位
String end_code = structattr.getExt_id();
List<SchBasePoint> czws = schBasePointMapper.getCanUsePointByCode(end_code);
// List<SchBasePoint> czws = pointService.getCanUsePointByRegion("ZJZ01");
if (czws.isEmpty()) {
throw new BadRequestException("当前称重位【"+end_code+"】有任务在执行");
if (czws.isEmpty()) {
throw new BadRequestException("当前称重位【"+end_code+"】有任务在执行");
}
// 3 创建任务
JSONObject jsonMst = defaultPdaBuildParam.buildOutAllSetData(czws.get(0), invId);
jsonMst.put("target", endPoint.getPoint_code());
outBillService.allSetPoint(jsonMst);
}
// 3 创建任务
JSONObject jsonMst = defaultPdaBuildParam.buildOutAllSetData(czws.get(0), invId);
jsonMst.put("target", endPoint.getPoint_code());
outBillService.allSetPoint(jsonMst);
} else {
throw new BadRequestException("速度太快啦,稍后再试...");
}

View File

@@ -4,6 +4,7 @@ import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import lombok.Data;
import org.nl.wms.basedata_manage.service.IMdCsSupplierbaseService;
import org.nl.wms.basedata_manage.service.IMdPbClassstandardService;
import org.nl.wms.basedata_manage.service.dao.MdCsSupplierbase;
@@ -107,4 +108,4 @@ public class PdaUpdatePointServiceImpl implements PdaPublicInterfaceService {
});
return PdaResponse.requestParamOk(resultList);
}
}
}

View File

@@ -120,22 +120,62 @@
FROM sch_base_task t
WHERE t.is_delete = '0'
AND t.task_status <![CDATA[ < ]]> '5'
AND ( t.point_code1 = p.point_code
OR t.point_code2 = p.point_code ))
AND (t.point_code2 = p.point_code ))
</select>
<!-- <select id="getCanUsePointByCode" resultType="org.nl.wms.sch_manage.service.dao.SchBasePoint">-->
<!-- SELECT *-->
<!-- FROM `sch_base_point` p-->
<!-- WHERE p.point_code = #{point_code}-->
<!-- AND p.is_used = TRUE-->
<!-- AND p.point_status = '1'-->
<!-- AND 0 = (SELECT COUNT(*)-->
<!-- FROM sch_base_task t-->
<!-- WHERE t.is_delete = '0'-->
<!-- AND t.task_status <![CDATA[ < ]]> '5'-->
<!-- AND ( t.point_code1 = p.point_code))-->
<!-- UNION-->
<!-- SELECT *-->
<!-- FROM `sch_base_point` p-->
<!-- WHERE p.point_code = #{point_code}-->
<!-- AND p.is_used = TRUE-->
<!-- AND p.point_status = '1'-->
<!-- AND 0 &lt; (SELECT COUNT(*)-->
<!-- FROM sch_base_task t-->
<!-- WHERE t.is_delete = '0'-->
<!-- AND t.task_status <![CDATA[ < ]]> '5'-->
<!-- AND t.handle_status = '1'-->
<!-- AND ( t.point_code1 = p.point_code))-->
<!-- </select>-->
<select id="getCanUsePointByCode" resultType="org.nl.wms.sch_manage.service.dao.SchBasePoint">
SELECT *
SELECT p.*
FROM `sch_base_point` p
LEFT JOIN (
SELECT
point_code1,
COUNT(*) AS all_task,
SUM(CASE WHEN handle_status = '1' THEN 1 ELSE 0 END) AS status1_cnt,
SUM(CASE WHEN handle_status IS NULL THEN 1 ELSE 0 END) AS null_cnt
FROM sch_base_task t
WHERE t.is_delete = '0'
AND t.task_status <![CDATA[ < ]]> '5'
GROUP BY point_code1
) t ON p.point_code = t.point_code1
WHERE p.point_code = #{point_code}
AND p.is_used = TRUE
AND p.point_status = '1'
AND 0 = (SELECT COUNT(*)
FROM sch_base_task t
WHERE t.is_delete = '0'
AND t.task_status <![CDATA[ < ]]> '5'
AND ( t.point_code1 = p.point_code
OR t.point_code2 = p.point_code ))
AND p.is_used = TRUE
AND p.point_status = '1'
AND IFNULL(t.null_cnt, 0) = 0
AND (IFNULL(t.all_task, 0) = 0 OR IFNULL(t.status1_cnt, 0) = 1);
</select>
<select id="isHandleStatus" resultType="org.nl.wms.sch_manage.service.dao.SchBaseTask">
SELECT *
FROM sch_base_task
WHERE point_code1 = #{point_code}
AND task_status <![CDATA[ < ]]> '5'
AND is_delete = '0'
AND IFNULL(handle_status, '') = ''
</select>
<select id="queryNotCarPoint" resultType="com.alibaba.fastjson.JSONObject">

View File

@@ -215,6 +215,7 @@ public class SchBaseTaskServiceImpl extends ServiceImpl<SchBaseTaskMapper, SchBa
mp.put("终点", schBaseTask.getPoint_code2());
mp.put("创建人", schBaseTask.getCreate_name());
mp.put("创建时间", schBaseTask.getCreate_time());
mp.put("完成时间", schBaseTask.getUpdate_time());
list.add(mp);
}
FileUtil.downloadExcel(list, response);

View File

@@ -0,0 +1,132 @@
package org.nl.wms.sch_manage.service.util;
import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
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;
import org.nl.wms.warehouse_management.enums.IOSConstant;
import org.nl.wms.warehouse_management.enums.IOSEnum;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
/**
* 包衣、压片入库任务下发
*/
@Slf4j
@Component
@RequiredArgsConstructor
public class AutoZJTask {
/**
* 任务服务
*/
@Autowired
private ISchBaseTaskService taskService;
/**
* 任务工厂服务
*/
@Autowired
private TaskFactory taskFactory;
private final RedissonClient redissonClient;
@SneakyThrows
public void run() {
RLock lock = redissonClient.getLock(this.getClass().getName());
boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS);
try {
if (tryLock) {
sendTask();
}
} catch (Exception e) {
if (tryLock) {
lock.unlock();
}
} finally {
if (tryLock) {
lock.unlock();
}
}
}
/**
* 下发任务
* 查询原压片/包衣入库任务
*/
private void sendTask() {
List<SchBaseTask> taskList = taskService.list(new LambdaQueryWrapper<SchBaseTask>()
.eq(SchBaseTask::getIs_delete, IOSConstant.IS_DELETE_NO)
.eq(SchBaseTask::getTask_status, TaskStatus.CREATE.getCode())
.eq(SchBaseTask::getConfig_code, "TabletingInTask")
.orderByDesc(SchBaseTask::getPriority)
);
if (ObjectUtil.isEmpty(taskList)) {
return;
}
// 查询所有中间站出库任务
List<SchBaseTask> zjOutTaskList = taskService.list(
new LambdaQueryWrapper<SchBaseTask>()
.eq(SchBaseTask::getConfig_code, "IntermediateOutTask")
.eq(SchBaseTask::getIs_delete, IOSConstant.ZERO)
.lt(SchBaseTask::getTask_status, TaskStatus.FINISHED.getCode())
);
// 查询所有称中间站入库任务
List<SchBaseTask> zjInTaskList = taskService.list(
new LambdaQueryWrapper<SchBaseTask>()
.eq(SchBaseTask::getConfig_code, "CenterInTask")
.eq(SchBaseTask::getIs_delete, IOSConstant.ZERO)
.lt(SchBaseTask::getTask_status, TaskStatus.FINISHED.getCode())
);
// 整理下发acs参数
for (SchBaseTask taskDao : taskList) {
// 查询当前称重位是否有正在出库的任务
boolean is_zjOut = zjOutTaskList.stream()
.anyMatch(row -> row.getPoint_code2().equals(taskDao.getPoint_code2()));
if (is_zjOut) {
continue;
}
// 查询当前称重位是否有正在入库的任务(包衣/压片 --> 称重台)
List<SchBaseTask> byOrYpInTaskList = taskService.list(
new LambdaQueryWrapper<SchBaseTask>()
.eq(SchBaseTask::getConfig_code, "TabletingInTask")
.eq(SchBaseTask::getIs_delete, IOSConstant.ZERO)
.in(SchBaseTask::getTask_status, TaskStatus.EXECUTING.getCode(),TaskStatus.ISSUED.getCode())
);
boolean is_byOrYpIn = byOrYpInTaskList.stream()
.anyMatch(row -> row.getPoint_code2().equals(taskDao.getPoint_code2()));
if (is_byOrYpIn) {
continue;
}
List<SchBaseTask> filterZjInTaskList = zjInTaskList.stream()
.filter(row -> row.getPoint_code1().equals(taskDao.getPoint_code2()))
.collect(Collectors.toList());
if (ObjectUtil.isNotEmpty(filterZjInTaskList)) {
// 判断是否全部取货完成
boolean is_allGet = filterZjInTaskList.stream()
.allMatch(row -> IOSConstant.ONE.equals(row.getHandle_status()));
if (!is_allGet) {
continue;
}
}
AbstractTask task = taskFactory.getTask(taskDao.getConfig_code());
task.sendTaskOne(taskDao.getTask_id());
}
}
}

View File

@@ -3,6 +3,8 @@ package org.nl.wms.sch_manage.service.util.tasks;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
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 com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import org.nl.common.exception.BadRequestException;
@@ -10,6 +12,8 @@ import org.nl.common.utils.CodeUtil;
import org.nl.common.utils.SecurityUtils;
import org.nl.config.IdUtil;
import org.nl.wms.basedata_manage.enums.BaseDataEnum;
import org.nl.wms.basedata_manage.service.IStructattrService;
import org.nl.wms.basedata_manage.service.dao.Structattr;
import org.nl.wms.sch_manage.enums.TaskEnum;
import org.nl.wms.sch_manage.enums.TaskStatus;
import org.nl.wms.sch_manage.service.ISchBasePointService;
@@ -23,12 +27,15 @@ import org.nl.wms.sch_manage.service.util.TaskType;
import org.nl.wms.warehouse_management.enums.IOSConstant;
import org.nl.wms.warehouse_management.enums.IOSEnum;
import org.nl.wms.warehouse_management.service.IRawAssistIStorService;
import org.nl.wms.warehouse_management.service.dao.IOStorInv;
import org.nl.wms.warehouse_management.service.dao.IOStorInvDis;
import org.nl.wms.warehouse_management.service.dao.mapper.IOStorInvDisMapper;
import org.nl.wms.warehouse_management.service.dao.mapper.IOStorInvMapper;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.Optional;
/**
* 中间站入库
@@ -45,8 +52,16 @@ public class CenterInTask extends AbstractTask {
@Resource
private IOStorInvDisMapper ioStorInvDisMapper;
@Resource
private IOStorInvMapper ioStorInvMapper;
@Resource
private IStructattrService iStructattrService;
@Resource
private ISchBasePointService pointService;
@Override
public String create(JSONObject json) {
SchBaseTask task = new SchBaseTask();
@@ -132,13 +147,23 @@ public class CenterInTask extends AbstractTask {
.set(SchBaseTask::getRemark, "已取消")
.eq(SchBaseTask::getTask_id, taskObj.getTask_id())
);
//分配表清除任务
ioStorInvDisMapper.update(new IOStorInvDis(), new LambdaUpdateWrapper<>(IOStorInvDis.class)
.set(IOStorInvDis::getTask_id, null)
.set(IOStorInvDis::getPoint_code, null)
.set(IOStorInvDis::getIs_issued, 0)
.set(IOStorInvDis::getWork_status, IOSEnum.INBILL_DIS_STATUS.code("未生成"))
.eq(IOStorInvDis::getTask_id, taskObj.getTask_id())
//分配表清除任务删除单据
IOStorInvDis ioStorInvDis = Optional.ofNullable(
ioStorInvDisMapper.selectOne(
new LambdaQueryWrapper<IOStorInvDis>()
.eq(IOStorInvDis::getTask_id, taskObj.getTask_id())
)
).orElseThrow(() -> new BadRequestException("明细不存在!"));
ioStorInvMapper.update(new IOStorInv(), new LambdaUpdateWrapper<>(IOStorInv.class)
.set(IOStorInv::getIs_delete, IOSConstant.ONE)
.eq(IOStorInv::getIostorinv_id, ioStorInvDis.getIostorinv_id())
);
// 更新仓位锁定状态
iStructattrService.update(
new LambdaUpdateWrapper<Structattr>()
.set(Structattr::getLock_type, IOSConstant.ZERO)
.eq(Structattr::getStruct_code, taskObj.getPoint_code2())
);
// 更新任务状态

View File

@@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.ObjectUtil;
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 org.nl.common.exception.BadRequestException;
@@ -29,6 +30,7 @@ import org.nl.wms.sch_manage.service.util.TaskFactory;
import org.nl.wms.warehouse_management.enums.IOSConstant;
import org.nl.wms.warehouse_management.enums.IOSEnum;
import org.nl.wms.warehouse_management.service.IOutBillService;
import org.nl.wms.warehouse_management.service.dao.IOStorInv;
import org.nl.wms.warehouse_management.service.dao.IOStorInvDis;
import org.nl.wms.warehouse_management.service.dao.mapper.GroupPlateMapper;
import org.nl.wms.warehouse_management.service.dao.mapper.IOStorInvDisMapper;
@@ -38,9 +40,10 @@ import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.Optional;
/**
* 中间出库
* 中间出库
*
* @author: lyd
* @date: 2026/1/9
@@ -270,19 +273,22 @@ public class IntermediateOutTask extends AbstractTask {
.eq(SchBaseTask::getTask_id, taskObj.getTask_id())
);
//分配表清除任务
ioStorInvDisMapper.update(new IOStorInvDis(), new LambdaUpdateWrapper<>(IOStorInvDis.class)
.set(IOStorInvDis::getTask_id, null)
.set(IOStorInvDis::getPoint_code, null)
.set(IOStorInvDis::getIs_issued, 0)
.set(IOStorInvDis::getWork_status, IOSEnum.INBILL_DIS_STATUS.code("未生成"))
.eq(IOStorInvDis::getTask_id, taskObj.getTask_id())
);
//分配表清除任务删除单据
IOStorInvDis ioStorInvDis = Optional.ofNullable(
ioStorInvDisMapper.selectOne(
new LambdaQueryWrapper<IOStorInvDis>()
.eq(IOStorInvDis::getTask_id, taskObj.getTask_id())
)
).orElseThrow(() -> new BadRequestException("明细不存在!"));
// 更新任务状态
taskObj.setTask_status(TaskStatus.CANCELED.getCode());
taskObj.setRemark("已取消");
taskService.updateById(taskObj);
JSONObject param = new JSONObject()
.fluentPut("iostorinv_id",ioStorInvDis.getIostorinv_id());
outBillService.taskCancel(param);
outBillService.update(
new LambdaUpdateWrapper<IOStorInv>()
.set(IOStorInv::getIs_delete, IOSConstant.ONE)
.eq(IOStorInv::getIostorinv_id, ioStorInvDis.getIostorinv_id())
);
}
@Override

View File

@@ -3,6 +3,7 @@ package org.nl.wms.sch_manage.service.util.tasks;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import org.nl.common.exception.BadRequestException;
@@ -10,6 +11,8 @@ import org.nl.common.utils.CodeUtil;
import org.nl.common.utils.SecurityUtils;
import org.nl.config.IdUtil;
import org.nl.wms.basedata_manage.enums.BaseDataEnum;
import org.nl.wms.basedata_manage.service.IStructattrService;
import org.nl.wms.basedata_manage.service.dao.Structattr;
import org.nl.wms.sch_manage.enums.TaskEnum;
import org.nl.wms.sch_manage.enums.TaskStatus;
import org.nl.wms.sch_manage.service.ISchBasePointService;
@@ -25,12 +28,15 @@ import org.nl.wms.warehouse_management.enums.IOSEnum;
import org.nl.wms.warehouse_management.service.IMdPbGroupplateService;
import org.nl.wms.warehouse_management.service.IRawAssistIStorService;
import org.nl.wms.warehouse_management.service.dao.GroupPlate;
import org.nl.wms.warehouse_management.service.dao.IOStorInv;
import org.nl.wms.warehouse_management.service.dao.IOStorInvDis;
import org.nl.wms.warehouse_management.service.dao.mapper.IOStorInvDisMapper;
import org.nl.wms.warehouse_management.service.dao.mapper.IOStorInvMapper;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.Optional;
/**
* 原辅料入库
@@ -50,6 +56,12 @@ public class MaterialBackTask extends AbstractTask {
private IOStorInvDisMapper ioStorInvDisMapper;
@Resource
private ISchBasePointService pointService;
@Resource
private IOStorInvMapper ioStorInvMapper;
@Resource
private IStructattrService iStructattrService;
@Override
public String create(JSONObject json) {
SchBaseTask task = new SchBaseTask();
@@ -134,13 +146,23 @@ public class MaterialBackTask extends AbstractTask {
.set(SchBaseTask::getRemark, "已取消")
.eq(SchBaseTask::getTask_id, taskObj.getTask_id())
);
//分配表清除任务
ioStorInvDisMapper.update(new IOStorInvDis(), new LambdaUpdateWrapper<>(IOStorInvDis.class)
.set(IOStorInvDis::getTask_id, null)
.set(IOStorInvDis::getPoint_code, null)
.set(IOStorInvDis::getIs_issued, 0)
.set(IOStorInvDis::getWork_status, IOSEnum.INBILL_DIS_STATUS.code("未生成"))
.eq(IOStorInvDis::getTask_id, taskObj.getTask_id())
//分配表清除任务删除单据
IOStorInvDis ioStorInvDis = Optional.ofNullable(
ioStorInvDisMapper.selectOne(
new LambdaQueryWrapper<IOStorInvDis>()
.eq(IOStorInvDis::getTask_id, taskObj.getTask_id())
)
).orElseThrow(() -> new BadRequestException("明细不存在!"));
ioStorInvMapper.update(new IOStorInv(), new LambdaUpdateWrapper<>(IOStorInv.class)
.set(IOStorInv::getIs_delete, IOSConstant.ONE)
.eq(IOStorInv::getIostorinv_id, ioStorInvDis.getIostorinv_id())
);
// 更新仓位锁定状态
iStructattrService.update(
new LambdaUpdateWrapper<Structattr>()
.set(Structattr::getLock_type, IOSConstant.ZERO)
.eq(Structattr::getStruct_code, taskObj.getPoint_code2())
);
// 更新任务状态

View File

@@ -3,6 +3,7 @@ package org.nl.wms.sch_manage.service.util.tasks;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
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 com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
@@ -28,6 +29,7 @@ import org.nl.wms.warehouse_management.enums.IOSEnum;
import org.nl.wms.warehouse_management.service.IMdPbGroupplateService;
import org.nl.wms.warehouse_management.service.IOutBillService;
import org.nl.wms.warehouse_management.service.dao.GroupPlate;
import org.nl.wms.warehouse_management.service.dao.IOStorInv;
import org.nl.wms.warehouse_management.service.dao.IOStorInvDis;
import org.nl.wms.warehouse_management.service.dao.mapper.GroupPlateMapper;
import org.nl.wms.warehouse_management.service.dao.mapper.IOStorInvDisMapper;
@@ -36,6 +38,7 @@ import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.Optional;
/**
* 托盘出库任务
@@ -210,7 +213,6 @@ public class PalletOutTask extends AbstractTask {
@Transactional(rollbackFor = Exception.class)
public void cancelTask(SchBaseTask taskObj) {
// 取消任务
taskService.update(new LambdaUpdateWrapper<SchBaseTask>()
.set(SchBaseTask::getIs_delete, BaseDataEnum.IS_YES_NOT.code(""))
@@ -218,16 +220,22 @@ public class PalletOutTask extends AbstractTask {
.set(SchBaseTask::getRemark, "已取消")
.eq(SchBaseTask::getTask_id, taskObj.getTask_id())
);
//分配表清除任务删除单据
IOStorInvDis ioStorInvDis = Optional.ofNullable(
ioStorInvDisMapper.selectOne(
new LambdaQueryWrapper<IOStorInvDis>()
.eq(IOStorInvDis::getTask_id, taskObj.getTask_id())
)
).orElseThrow(() -> new BadRequestException("明细不存在!"));
// 点位上锁
structattrService.update(new LambdaUpdateWrapper<Structattr>()
.set(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
.eq(Structattr::getStruct_code, taskObj.getPoint_code1()));
// 更新任务状态
taskObj.setTask_status(TaskStatus.CANCELED.getCode());
taskObj.setRemark("已取消");
taskService.updateById(taskObj);
JSONObject param = new JSONObject()
.fluentPut("iostorinv_id",ioStorInvDis.getIostorinv_id());
outBillService.taskCancel(param);
outBillService.update(
new LambdaUpdateWrapper<IOStorInv>()
.set(IOStorInv::getIs_delete, IOSConstant.ONE)
.eq(IOStorInv::getIostorinv_id, ioStorInvDis.getIostorinv_id())
);
}
@Override

View File

@@ -3,6 +3,7 @@ package org.nl.wms.sch_manage.service.util.tasks;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
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 com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
@@ -28,12 +29,15 @@ import org.nl.wms.warehouse_management.enums.IOSEnum;
import org.nl.wms.warehouse_management.service.IMdPbGroupplateService;
import org.nl.wms.warehouse_management.service.IRawAssistIStorService;
import org.nl.wms.warehouse_management.service.dao.GroupPlate;
import org.nl.wms.warehouse_management.service.dao.IOStorInv;
import org.nl.wms.warehouse_management.service.dao.IOStorInvDis;
import org.nl.wms.warehouse_management.service.dao.mapper.IOStorInvDisMapper;
import org.nl.wms.warehouse_management.service.dao.mapper.IOStorInvMapper;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.Optional;
/**
* 原辅料入库
@@ -55,6 +59,8 @@ public class RawInTask extends AbstractTask {
private ISchBasePointService pointService;
@Resource
private IStructattrService iStructattrService;
@Resource
private IOStorInvMapper ioStorInvMapper;
@Override
public String create(JSONObject json) {
SchBaseTask task = new SchBaseTask();
@@ -143,18 +149,24 @@ public class RawInTask extends AbstractTask {
.set(SchBaseTask::getRemark, "已取消")
.eq(SchBaseTask::getTask_id, taskObj.getTask_id())
);
//分配表清除任务
ioStorInvDisMapper.update(new IOStorInvDis(), new LambdaUpdateWrapper<>(IOStorInvDis.class)
.set(IOStorInvDis::getTask_id, null)
.set(IOStorInvDis::getPoint_code, null)
.set(IOStorInvDis::getIs_issued, 0)
.set(IOStorInvDis::getWork_status, IOSEnum.INBILL_DIS_STATUS.code("未生成"))
.eq(IOStorInvDis::getTask_id, taskObj.getTask_id())
);
//分配表清除任务删除单据
IOStorInvDis ioStorInvDis = Optional.ofNullable(
ioStorInvDisMapper.selectOne(
new LambdaQueryWrapper<IOStorInvDis>()
.eq(IOStorInvDis::getTask_id, taskObj.getTask_id())
)
).orElseThrow(() -> new BadRequestException("明细不存在!"));
Structattr byCode = iStructattrService.getByCode(taskObj.getPoint_code2());
byCode.setLock_type(IOSEnum.LOCK_TYPE.code("未锁定"));
iStructattrService.updateById(byCode);
ioStorInvMapper.update(new IOStorInv(), new LambdaUpdateWrapper<>(IOStorInv.class)
.set(IOStorInv::getIs_delete, IOSConstant.ONE)
.eq(IOStorInv::getIostorinv_id, ioStorInvDis.getIostorinv_id())
);
// 更新仓位锁定状态
iStructattrService.update(
new LambdaUpdateWrapper<Structattr>()
.set(Structattr::getLock_type, IOSConstant.ZERO)
.eq(Structattr::getStruct_code, taskObj.getPoint_code2())
);
// 更新任务状态
taskObj.setTask_status(TaskStatus.CANCELED.getCode());

View File

@@ -4,11 +4,14 @@ import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.ObjectUtil;
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.UpdateWrapper;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.Put;
import org.nl.common.exception.BadRequestException;
import org.nl.common.utils.CodeUtil;
import org.nl.common.utils.MapOf;
import org.nl.common.utils.SecurityUtils;
import org.nl.config.IdUtil;
import org.nl.config.SpringContextHolder;
@@ -17,6 +20,7 @@ import org.nl.wms.basedata_manage.service.ISectattrService;
import org.nl.wms.basedata_manage.service.IStructattrService;
import org.nl.wms.basedata_manage.service.dao.Sectattr;
import org.nl.wms.basedata_manage.service.dao.Structattr;
import org.nl.wms.basedata_manage.service.dao.mapper.StructattrMapper;
import org.nl.wms.decision_manage.service.decisioner.impl.base.MiddleRuleHandler;
import org.nl.wms.ext.service.WmsToAcsService;
import org.nl.wms.ext.service.util.AcsResponse;
@@ -35,6 +39,7 @@ import org.nl.wms.sch_manage.service.util.TaskType;
import org.nl.wms.warehouse_management.enums.IOSConstant;
import org.nl.wms.warehouse_management.enums.IOSEnum;
import org.nl.wms.warehouse_management.service.IRawAssistIStorService;
import org.nl.wms.warehouse_management.service.dao.IOStorInvDis;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
@@ -42,6 +47,8 @@ import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.stream.Collectors;
/**
* 压片/包衣入库
@@ -73,6 +80,13 @@ public class TabletingInTask extends AbstractTask {
private SchBasePointMapper schBasePointMapper;
@Resource
private IStructattrService iStructattrService;
@Resource
private StructattrMapper structattrMapper;
private final String CZJT01 = "CZJT01";
private final String CZJT02 = "CZJT02";
private final String byPoint = "BYJ01,BYJ02";
private final String priority = "1";
/**
* 桶记录服务
@@ -88,6 +102,15 @@ public class TabletingInTask extends AbstractTask {
if (bucket.size() == 0) {
throw new BadRequestException("该载具未存在组桶信息,请先组桶!");
}
// 查询是否有称重机台
List<SchBasePoint> pointList = Optional.ofNullable(schBasePointMapper.selectList(
new LambdaQueryWrapper<SchBasePoint>()
.eq(SchBasePoint::getRegion_code, IOSEnum.REGION_CODE.code("中间站"))
.eq(SchBasePoint::getIs_used, IOSConstant.ONE)
))
.filter(list -> !CollectionUtils.isEmpty(list))
.orElseThrow(() -> new BadRequestException("称重机台未启用!"));
// 查询中间站是否有空位
List<Structattr> attrList = iStructattrService.list(
new QueryWrapper<Structattr>().lambda()
@@ -102,8 +125,85 @@ public class TabletingInTask extends AbstractTask {
if (ObjectUtil.isEmpty(attrList)) {
throw new BadRequestException("中间站仓位不足!");
}
// --------------------------------- 修改项 -------------------------------------------------
JSONObject jsonObject = bucket.get(0);
json.put("pcsn", jsonObject.getString("pcsn"));
json.put("material_id", jsonObject.getString("material_id"));
String czws = "";
// 查询中间站是否有相同物料、批次仓位
JSONObject jsonObject1 = new JSONObject();
jsonObject1.put("material_id", jsonObject.getString("material_id"));
jsonObject1.put("pcsn", jsonObject.getString("pcsn"));
// 调用分配规则查找是否有相同批次物料的空位
MiddleRuleHandler bean = SpringContextHolder.getBean(MiddleRuleHandler.class);
Structattr attr = bean.isLikeMaterial(jsonObject1);
if (ObjectUtil.isEmpty(attr)) {
// 查找一组空的组
List<Structattr> groupBlockList = structattrMapper.queryAttrGroup(MapOf.of("sect_id", attrList.get(0).getSect_id()));
if (ObjectUtil.isEmpty(groupBlockList)) {
throw new BadRequestException("当前没有空的组进行分配!");
}
// 查询所有有空位组的仓位
List<Structattr> attrEmpList = iStructattrService.list(
new QueryWrapper<Structattr>().lambda()
.eq(Structattr::getSect_id, attrList.get(0).getSect_id())
.in(Structattr::getBlock_num, groupBlockList.stream().map(Structattr::getBlock_num).collect(Collectors.toList()))
.eq(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
.eq(Structattr::getIs_used, IOSConstant.ONE)
.eq(Structattr::getIs_delete, IOSConstant.ZERO)
.and(row -> row.isNull(Structattr::getStoragevehicle_code)
.or().eq(Structattr::getStoragevehicle_code, "")
)
.orderByAsc(Structattr::getStruct_code)
);
// 校验是否有两个称重位
boolean czjt01 = attrEmpList.stream()
.anyMatch(row -> row.getExt_id().equals(CZJT01));
boolean czjt02 = attrEmpList.stream()
.anyMatch(row -> row.getExt_id().equals(CZJT02));
if (czjt01 && czjt02) {
// 判断是包衣\压片
String point_code1 = json.getString("point_code");
if (byPoint.contains(point_code1)) {
// 包衣对应CZJT01判断是否启用
SchBasePoint czjt1Point = pointList.stream()
.filter(row -> row.getPoint_code().equals(CZJT01))
.findFirst().orElse(null);
if (ObjectUtil.isEmpty(czjt1Point)) {
czws = CZJT02;
} else {
czws = czjt1Point.getPoint_code();
}
} else {
// 压片对应CZJT01判断是否启用
SchBasePoint czjt2Point = pointList.stream()
.filter(row -> row.getPoint_code().equals(CZJT02))
.findFirst().orElse(null);
if (ObjectUtil.isEmpty(czjt2Point)) {
czws = CZJT01;
} else {
czws = czjt2Point.getPoint_code();
}
}
} else if (czjt01) {
czws = CZJT01;
} else if (czjt02) {
czws = CZJT02;
}
} else {
// 判断对应的称重位是否启用
pointList.stream()
.filter(row -> row.getPoint_code().equals(attr.getExt_id()))
.findFirst().orElseThrow(()-> new BadRequestException("需从称重位【"+attr.getExt_id()+"】进行入库,但有任务正在执行,请等待任务取货完成后下发!"));
czws = attr.getExt_id();
}
if (ObjectUtil.isEmpty(czws)) {
throw new BadRequestException("称重位不存在或未启用!");
}
/*JSONObject jsonObject = bucket.get(0);
json.put("pcsn", jsonObject.getString("pcsn"));
json.put("material_id", jsonObject.getString("material_id"));
List<SchBasePoint> czws = new ArrayList<>();
// 查询中间站是否有相同物料、批次仓位
JSONObject jsonObject1 = new JSONObject();
@@ -121,6 +221,18 @@ public class TabletingInTask extends AbstractTask {
if (czjt01 && czjt02) {
// 找一个没任务的称重位
czws = pointService.getCanUsePointByRegion("ZJZ01");
// 判断称重位到中间站的任务是否已经取货完成
if (ObjectUtil.isNotEmpty(czws)) {
for (SchBasePoint point : czws) {
List<SchBasePoint> list = schBasePointMapper.getCanUsePointByCode(point.getPoint_code());
if (ObjectUtil.isNotEmpty(list)) {
czws = list;
break;
} else {
czws = new ArrayList<>();
}
}
}
} else if (czjt01) {
czws = schBasePointMapper.getCanUsePointByCode("CZJT01");
} else if (czjt02) {
@@ -129,28 +241,29 @@ public class TabletingInTask extends AbstractTask {
} else {
czws = schBasePointMapper.getCanUsePointByCode(attr.getExt_id());
if (czws.size() == 0) {
throw new BadRequestException("称重位【"+attr.getExt_id()+"】有任务正在执行!");
throw new BadRequestException("需从称重位【"+attr.getExt_id()+"】进行入库,但有任务正在执行,请等待任务取货完成后下发!");
}
}
if (czws.size() == 0) {
throw new BadRequestException("找不到中间站的称重位或正在进行任务!");
}
SchBasePoint point = czws.get(0);
}*/
// SchBasePoint point = czws.get(0);
SchBaseTask task = new SchBaseTask();
task.setTask_id(IdUtil.getStringId());
task.setTask_code(CodeUtil.getNewCode("TASK_CODE"));
task.setTask_status(TaskStatus.CREATE.getCode());
task.setConfig_code(TabletingInTask.class.getSimpleName());
task.setPoint_code1(json.getString("point_code"));
task.setPoint_code2(point.getPoint_code());
task.setPoint_code2(czws);
task.setVehicle_code(json.getString("vehicle_code"));
task.setMaterial_id(jsonObject.getString("material_id"));
task.setMaterial_qty(jsonObject.getBigDecimal("qty"));
task.setGroup_id(jsonObject.getString("group_id"));
task.setRequest_param(json.toString());
task.setTask_type(TaskEnum.TASK_TYPE.code("料箱"));
task.setPriority("1");
// 判断是否是包衣
task.setPriority(byPoint.contains(json.getString("point_code")) ? "9" : "1");
task.setIs_wait("0");
task.setCreate_id(SecurityUtils.getCurrentUserId());
task.setCreate_name(SecurityUtils.getCurrentNickName());
@@ -159,8 +272,8 @@ public class TabletingInTask extends AbstractTask {
if (task.getPoint_code1().equals(task.getPoint_code2())) {
throw new BadRequestException("起点终点不能一致,请检查!");
}
// 下发任务
this.sendTaskOne(task.getTask_id());
// 下发任务 由定时器下发
// this.sendTaskOne(task.getTask_id());
return task.getTask_id();
}

View File

@@ -152,4 +152,4 @@ public class IOSConstant {
*/
public final static String WRC_POINT02 = "WRC02";
}
}

View File

@@ -139,7 +139,7 @@ public enum IOSEnum {
// 区域编码
REGION_CODE(MapOf.of("出入库区域", "INOUR01", "AGV对接区", "AGVDJ01", "临时储存区", "LSCC01"
, "外包材区域", "WBCZC01", "空托盘堆叠区域", "EMPDD01", "无人车对接区(拆包)", "WRCDJ01"
, "无人车对接区(成品)", "WRCDJ02", "无人车卸货缓存区", "WRCXHHC01"
, "无人车对接区(成品)", "WRCDJ02", "无人车卸货缓存区", "WRCXHHC01", "中间站", "ZJZ01"
)),
// 打印记录状态

View File

@@ -101,6 +101,13 @@ public interface IOutBillService extends IService<IOStorInv> {
*/
void allCancel(JSONObject whereJson);
/**
* 任务去掉调用取消分配
*
* @param whereJson /
*/
void taskCancel(JSONObject whereJson);
/**
* 自动分配 单条出库单明细
*

View File

@@ -613,6 +613,77 @@ public class OutBillServiceImpl extends ServiceImpl<IOStorInvMapper, IOStorInv>
}
@Override
@Transactional(rollbackFor = Exception.class)
public void taskCancel(JSONObject whereJson) {
String currentUserId = SecurityUtils.getCurrentUserId();
String nickName = SecurityUtils.getCurrentNickName();
String now = DateUtil.now();
String iostorinv_id = whereJson.getString("iostorinv_id");
List<IOStorInvDis> ioStorInvDisList = ioStorInvDisMapper.selectList(new LambdaQueryWrapper<>(IOStorInvDis.class)
.eq(IOStorInvDis::getIostorinv_id, iostorinv_id)
);
if (ObjectUtil.isEmpty(ioStorInvDisList)) {
throw new BadRequestException("不存在可取消的出库分配明细");
}
//需要更新的出入库单明细
Set<String> dtlSet = new HashSet<>();
for (IOStorInvDis ioStorInvDis : ioStorInvDisList) {
//添加需要更新的明细标识
dtlSet.add(ioStorInvDis.getIostorinvdtl_id());
//更新库存 减冻结加可用
List<JSONObject> updateIvtList = new ArrayList<>();
JSONObject jsonIvt = new JSONObject();
jsonIvt.put("type", IOSConstant.UPDATE_IVT_TYPE_SUB_FROZEN_ADD_CANUSE);
jsonIvt.put("storagevehicle_code", ioStorInvDis.getStoragevehicle_code());
jsonIvt.put("material_id", ioStorInvDis.getMaterial_id());
jsonIvt.put("pcsn", ioStorInvDis.getPcsn());
jsonIvt.put("qty_unit_id", ioStorInvDis.getQty_unit_id());
jsonIvt.put("qty_unit_name", ioStorInvDis.getQty_unit_name());
jsonIvt.put("change_qty", ioStorInvDis.getPlan_qty());
updateIvtList.add(jsonIvt);
iMdPbStoragevehicleextService.updateIvt(updateIvtList);
//解锁库位
JSONObject unlock_map = new JSONObject();
unlock_map.put("struct_code", ioStorInvDis.getStruct_code());
unlock_map.put("inv_type", null);
unlock_map.put("inv_id", null);
unlock_map.put("inv_code", null);
iStructattrService.updateStatusByCode("2", unlock_map);
//删除出入库单分配表
ioStorInvDisMapper.deleteById(ioStorInvDis.getIostorinvdis_id());
}
//更新出库明细单状态
for (String dtlId : dtlSet) {
IOStorInvDtl ioStorInvDtl = ioStorInvDtlMapper.selectById(dtlId);
ioStorInvDtl.setAssign_qty(BigDecimal.ZERO);
ioStorInvDtl.setUnassign_qty(ioStorInvDtl.getPlan_qty());
ioStorInvDtl.setBill_status(IOSEnum.BILL_STATUS.code("生成"));
ioStorInvDtl.setIs_check(IOSConstant.IS_DELETE_NO);
ioStorInvDtlMapper.updateById(ioStorInvDtl);
}
//更新主表单据状态
IOStorInv ios = new IOStorInv();
ios.setIostorinv_id(iostorinv_id);
ios.setUpdate_optid(currentUserId);
ios.setUpdate_optname(nickName);
ios.setUpdate_time(now);
ios.setBill_status(IOSEnum.BILL_STATUS.code("生成"));
ioStorInvMapper.updateById(ios);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void autoDiv(JSONObject whereJson) {

View File

@@ -606,6 +606,7 @@ public class RawAssistIStorServiceImpl extends ServiceImpl<IOStorInvMapper, IOSt
JSONObject task_form = new JSONObject();
task_form.put("point_code1", point_code);
task_form.put("point_code2", ioStorInvDis.getStruct_code());
task_form.put("pcsn", ioStorInvDis.getPcsn());
task_form.put("vehicle_code", map.get("storagevehicle_code"));
task_form.put("material_id", ioStorInvDis.getMaterial_id());
task_form.put("material_qty", ioStorInvDis.getPlan_qty());