Compare commits

...

2 Commits

Author SHA1 Message Date
f585da58d1 Merge branch 'master' of http://47.111.78.178:8012/liuxy/HuaDongYiYaoWMS
# Conflicts:
#	wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/IMdPdGroupbucketService.java
#	wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/MdPdGroupbucketMapper.java
#	wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/MdPdGroupbucketMapper.xml
#	wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/MdPdGroupbucketServiceImpl.java
#	wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/IMdPbGroupplateService.java
#	wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/MdPbGroupplateServiceImpl.java
2026-01-13 20:10:39 +08:00
bf1f191be9 add:PC桶记录 2026-01-13 20:06:12 +08:00
19 changed files with 782 additions and 54 deletions

View File

@@ -0,0 +1,64 @@
package org.nl.wms.basedata_manage.controller;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.nl.common.base.TableDataInfo;
import org.nl.common.domain.query.PageQuery;
import org.nl.common.logging.annotation.Log;
import org.nl.wms.basedata_manage.service.IMdPdGroupbucketService;
import org.nl.wms.basedata_manage.service.dao.MdPdGroupbucket;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.Map;
import java.util.Set;
/**
* <p>
* 组桶记录 控制层
* </p>
*
* @author Liuxy
* @since 2026-01-13
*/
@RestController
@RequiredArgsConstructor
@RequestMapping("/api/bucked")
@Slf4j
public class BuckController {
@Resource
private IMdPdGroupbucketService iMdPdGroupbucketService;
@GetMapping
@Log("分页查询")
public ResponseEntity<Object> query(@RequestParam Map whereJson, PageQuery page) {
return new ResponseEntity<>(TableDataInfo.build(iMdPdGroupbucketService.queryAll(whereJson, page)), HttpStatus.OK);
}
@PostMapping
@Log("新增组盘记录")
public ResponseEntity<Object> create(@Validated @RequestBody MdPdGroupbucket dto) {
iMdPdGroupbucketService.create(dto);
return new ResponseEntity<>(HttpStatus.CREATED);
}
@PutMapping
@Log("修改组盘记录")
public ResponseEntity<Object> update(@Validated @RequestBody MdPdGroupbucket dto) {
iMdPdGroupbucketService.update(dto);
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
}
@DeleteMapping
@Log("删除组盘")
public ResponseEntity<Object> delete(@RequestBody Set<String> ids) {
iMdPdGroupbucketService.delete(ids);
return new ResponseEntity<>(HttpStatus.OK);
}
}

View File

@@ -93,4 +93,10 @@ public class GroupController {
public ResponseEntity<Object> queryMaterList() {
return new ResponseEntity<>(iMdPbGroupplateService.queryMaterList(), HttpStatus.OK);
}
@PostMapping("/queryRecordNo")
@Log("查询系统参数:证书编号")
public ResponseEntity<Object> queryRecordNo(@RequestBody JSONObject whereJson) {
return new ResponseEntity<>(iMdPbGroupplateService.queryRecordNo(whereJson), HttpStatus.OK);
}
}

View File

@@ -1,10 +1,14 @@
package org.nl.wms.basedata_manage.service;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import org.nl.common.domain.query.PageQuery;
import org.nl.wms.basedata_manage.service.dao.MdPdGroupbucket;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* <p>
@@ -18,6 +22,7 @@ public interface IMdPdGroupbucketService extends IService<MdPdGroupbucket> {
/**
* 根据桶号获取信息
*
* @param vehicleCode
* @return
*/
@@ -25,10 +30,39 @@ public interface IMdPdGroupbucketService extends IService<MdPdGroupbucket> {
void upDateWeight(String weight, String vehicleCode);
/**
* 分页查询
*
* @param whereJson : {查询参数}
* @param page : 分页对象
* @return 返回结果
*/
IPage<JSONObject> queryAll(Map whereJson, PageQuery page);
/**
* 新增组桶记录
*
* @param dto 组盘记录实体类
*/
void create(MdPdGroupbucket dto);
/**
* 修改组桶记录
*
* @param dto 组盘记录实体类
*/
void update(MdPdGroupbucket dto);
/**
* 删除组桶记录
*
* @param ids 标识集合
*/
void delete(Set<String> ids);
/**
* 获取料桶信息
* @param parammaterial_id, pcsn
* @return
* @return JSONObject
*/
List<JSONObject> getBucketGroupInfo(JSONObject param);
}

View File

@@ -2,9 +2,13 @@ package org.nl.wms.basedata_manage.service.dao.mapper;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
import org.nl.wms.basedata_manage.service.dao.MdPdGroupbucket;
import java.util.List;
import java.util.Map;
/**
* <p>
@@ -20,5 +24,14 @@ public interface MdPdGroupbucketMapper extends BaseMapper<MdPdGroupbucket> {
void upDateWeight(String weight, String vehicleCode);
/**
* 分页查询
*
* @param page 分页条件
* @param whereJson 查询条件
* @return IPage<StIvtMoveinv>
*/
IPage<JSONObject> queryAllByPage(Page<JSONObject> page, @Param("param") Map whereJson);
List<JSONObject> getBucketGroupInfo(JSONObject param);
}

View File

@@ -22,6 +22,38 @@
WHERE
g.bucket_code = #{vehicleCode}
</select>
<select id="queryAllByPage" resultType="com.alibaba.fastjson.JSONObject">
SELECT
late.*,
mater.material_code,
mater.material_name,
mater.material_spec,
mater.material_model
FROM
md_pd_groupbucket late
INNER JOIN md_me_materialbase mater ON mater.material_id = late.material_id
where
1 = 1
<if test="param.material_code != null and param.material_code != ''">
AND
(mater.material_code LIKE #{param.material_code} or
mater.material_name LIKE #{param.material_code} )
</if>
<if test="param.pcsn != null and param.pcsn != ''">
AND
late.pcsn LIKE #{param.pcsn}
</if>
<if test="param.bucket_code != null and param.bucket_code != ''">
AND
late.bucket_code LIKE #{param.bucket_code}
</if>
ORDER BY late.create_time Desc
</select>
<select id="getBucketGroupInfo" resultType="com.alibaba.fastjson.JSONObject">
SELECT
ss.struct_id,

View File

@@ -1,14 +1,27 @@
package org.nl.wms.basedata_manage.service.impl;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.nl.common.domain.query.PageQuery;
import org.nl.common.utils.CodeUtil;
import org.nl.common.utils.IdUtil;
import org.nl.common.utils.SecurityUtils;
import org.nl.wms.basedata_manage.service.IMdPbMeasureunitService;
import org.nl.wms.basedata_manage.service.IMdPdGroupbucketService;
import org.nl.wms.basedata_manage.service.dao.MdPbMeasureunit;
import org.nl.wms.basedata_manage.service.dao.MdPdGroupbucket;
import org.nl.wms.basedata_manage.service.dao.mapper.MdPdGroupbucketMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* <p>
@@ -21,6 +34,12 @@ import java.util.List;
@Service
public class MdPdGroupbucketServiceImpl extends ServiceImpl<MdPdGroupbucketMapper, MdPdGroupbucket> implements IMdPdGroupbucketService {
/**
* 计量单位服务
*/
@Autowired
private IMdPbMeasureunitService iMdPbMeasureunitService;
@Override
public List<JSONObject> getBucketInfoByBucket(String vehicleCode) {
return this.baseMapper.getBucketInfoByBucket(vehicleCode);
@@ -32,6 +51,39 @@ public class MdPdGroupbucketServiceImpl extends ServiceImpl<MdPdGroupbucketMappe
}
@Override
public IPage<JSONObject> queryAll(Map whereJson, PageQuery page) {
return this.baseMapper.queryAllByPage(new Page<>(page.getPage() + 1, page.getSize()),
whereJson);
}
@Override
@Transactional
public void create(MdPdGroupbucket dto) {
dto.setBucket_code(CodeUtil.getNewCode("BUCKED_CODE"));
dto.setId(IdUtil.getStringId());
dto.setCreate_id(SecurityUtils.getCurrentUserId());
dto.setCreate_name(SecurityUtils.getCurrentNickName());
dto.setCreate_time(DateUtil.now());
MdPbMeasureunit unitDao = iMdPbMeasureunitService.getByCode("KG");
dto.setQty_unit_id(unitDao.getMeasure_unit_id());
dto.setQty_unit_name(unitDao.getUnit_name());
this.save(dto);
}
@Override
@Transactional
public void update(MdPdGroupbucket dto) {
this.updateById(dto);
}
@Override
@Transactional
public void delete(Set<String> ids) {
this.baseMapper.deleteBatchIds(ids);
}
@Override
@Transactional
public List<JSONObject> getBucketGroupInfo(JSONObject param) {
return this.baseMapper.getBucketGroupInfo(param);
}

View File

@@ -62,6 +62,18 @@ public class PdaCommonController {
public ResponseEntity<Object> callStackPlates(@RequestBody JSONObject whereJson) {
return new ResponseEntity<>(pdaCommonService.callStackPlates(whereJson), HttpStatus.OK);
}
@PostMapping("/queryRecordNo")
@Log("物料组袋-查询证书编号")
@SaIgnore
public ResponseEntity<Object> queryRecordNo(@RequestBody JSONObject whereJson) {
return new ResponseEntity<>(pdaCommonService.queryRecordNo(whereJson), HttpStatus.OK);
}
@PostMapping("/byBagCodeInfo")
@Log("物料组袋-获取袋号")
@SaIgnore
public ResponseEntity<Object> byBagCodeInfo(@RequestBody JSONObject whereJson) {
return new ResponseEntity<>(pdaCommonService.byBagCodeInfo(whereJson), HttpStatus.OK);
}
@PostMapping("/confirmBagAssembly")
@Log("物料组袋-确认组袋")
@SaIgnore
@@ -80,6 +92,12 @@ public class PdaCommonController {
public ResponseEntity<Object> confirmPalletAssembly(@RequestBody @Valid AssemblyPalletParam param) {
return new ResponseEntity<>(pdaCommonService.confirmPalletAssembly(param), HttpStatus.OK);
}
@PostMapping("/byBuckCode")
@Log("物料组桶-获取桶号")
@SaIgnore
public ResponseEntity<Object> byBuckCode(@RequestBody JSONObject whereJson) {
return new ResponseEntity<>(pdaCommonService.byBuckCode(whereJson), HttpStatus.OK);
}
@PostMapping("/confirmBucketAssembly")
@Log("物料组桶-组桶")
@SaIgnore

View File

@@ -60,4 +60,11 @@ public class PdaPointAndPointController {
return new ResponseEntity<>(pdaPointAndPointBoxService.clearMaterial(whereJson), HttpStatus.OK);
}
@PostMapping("/clearVehicle")
@Log("点位更新 - 清载具")
@SaIgnore
public ResponseEntity<Object> clearVehicle(@RequestBody JSONObject whereJson) {
return new ResponseEntity<>(pdaPointAndPointBoxService.clearVehicle(whereJson), HttpStatus.OK);
}
}

View File

@@ -60,4 +60,31 @@ public interface PdaCommonService {
* @return PdaResponse
*/
PdaResponse callStackPlates(JSONObject whereJson);
/**
* 物料组袋-查询证书编号
* @param whereJson {
*
* }
* @return PdaResponse
*/
PdaResponse queryRecordNo(JSONObject whereJson);
/**
* 物料组袋-获取袋号
* @param whereJson {
* material_id: 物料标识
* }
* @return PdaResponse
*/
PdaResponse byBagCodeInfo(JSONObject whereJson);
/**
* 物料组桶-获取桶号
* @param whereJson {
* bag_code: 袋码
* }
* @return PdaResponse
*/
PdaResponse byBuckCode(JSONObject whereJson);
}

View File

@@ -11,6 +11,7 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.nl.common.exception.BadRequestException;
import org.nl.common.utils.CodeUtil;
import org.nl.common.utils.IdUtil;
import org.nl.common.utils.SecurityUtils;
import org.nl.system.service.dict.ISysDictService;
@@ -158,7 +159,7 @@ public class PdaCommonServiceImpl implements PdaCommonService {
.eq(GroupPlate::getBag_code, param.getBagNo())
.le(GroupPlate::getStatus, "2"));
if (list.size() > 0) {
throw new BadRequestException("袋[" + param.getBagNo() + "]已经组袋过,请检查!");
throw new BadRequestException("袋[" + param.getBagNo() + "]已经组袋过,请检查!");
}
GroupPlate groupPlate = AssemblyBagParam.buildGroupObj(param);
groupplateService.save(groupPlate);
@@ -279,4 +280,28 @@ public class PdaCommonServiceImpl implements PdaCommonService {
empStackPlatesTask.create(jsonTask);
return PdaResponse.requestOk();
}
@Override
public PdaResponse queryRecordNo(JSONObject whereJson) {
return PdaResponse.requestParamOk(groupplateService.queryRecordNo(null));
}
@Override
public PdaResponse byBagCodeInfo(JSONObject whereJson) {
if (ObjectUtil.isEmpty(whereJson.getString("material_id"))) {
throw new BadRequestException("物料标识不能为空!");
}
String bag_code = groupplateService.createBagCode(whereJson.getString("material_id"));
JSONObject result = new JSONObject();
result.put("bag_code", bag_code);
return PdaResponse.requestParamOk(result);
}
@Override
public PdaResponse byBuckCode(JSONObject whereJson) {
String bucket_code = CodeUtil.getNewCode("BUCKED_CODE");
JSONObject result = new JSONObject();
result.put("bucket_code", bucket_code);
return PdaResponse.requestParamOk(result);
}
}

View File

@@ -45,8 +45,9 @@ public class PdaTaskServiceImpl implements PdaTaskService {
@Override
public PdaResponse againSendTask(JSONObject whereJson) {
JSONObject obj = whereJson.getJSONObject("obj");
// 查询任务
SchBaseTask taskDao = schBaseTaskMapper.selectById(whereJson.getString("task_id"));
SchBaseTask taskDao = schBaseTaskMapper.selectById(obj.getString("task_id"));
// 下发
AbstractTask task = taskFactory.getTask(taskDao.getConfig_code());
task.sendTaskOne(taskDao.getTask_id());
@@ -56,8 +57,9 @@ public class PdaTaskServiceImpl implements PdaTaskService {
@Override
public PdaResponse forceConfirmTask(JSONObject whereJson) {
JSONObject obj = whereJson.getJSONObject("obj");
// 查询任务
SchBaseTask taskDao = schBaseTaskMapper.selectById(whereJson.getString("task_id"));
SchBaseTask taskDao = schBaseTaskMapper.selectById(obj.getString("task_id"));
// 完成
AbstractTask task = taskFactory.getTask(taskDao.getConfig_code());
task.forceFinish(taskDao.getTask_code());

View File

@@ -82,4 +82,29 @@ public class IOSConstant {
*/
public final static String UPDATE_IVT_TYPE_SUB_CANUSE_IVT = "6";
/**
* 分类编码:原料
*/
public final static String YL001 = "YL001";
/**
* 分类编码:辅料
*/
public final static String FL001 = "FL001";
/**
* 分类编码:粉碎料
*/
public final static String FS001 = "FS001";
/**
* 分类编码:批料
*/
public final static String PL001 = "PL001";
/**
* 分类编码:内包材
*/
public final static String NBC001 = "NBC001";
}

View File

@@ -115,5 +115,20 @@ public interface IMdPbGroupplateService extends IService<GroupPlate> {
*/
List<MdMeMaterialbase> queryMaterList();
/**
* 查询系统参数:证书编号
* @param whereJson {
*
* }
* @return JSONObject
*/
JSONObject queryRecordNo(JSONObject whereJson);
/**
* 获取袋码
* @param material_id 物料标识
* @return String 袋码
*/
String createBagCode(String material_id);
JSONArray getDtLMaterialInfo(String vehicleCode, String materialId, String pcsn);
}

View File

@@ -11,16 +11,15 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.nl.common.domain.query.PageQuery;
import org.nl.common.exception.BadRequestException;
import org.nl.common.utils.CodeUtil;
import org.nl.common.utils.SecurityUtils;
import org.nl.config.IdUtil;
import org.nl.wms.basedata_manage.service.IMdCsSupplierbaseService;
import org.nl.wms.basedata_manage.service.IMdMeMaterialbaseService;
import org.nl.wms.basedata_manage.service.IMdPbMeasureunitService;
import org.nl.wms.basedata_manage.service.IMdPbStoragevehicleinfoService;
import org.nl.wms.basedata_manage.service.dao.MdCsSupplierbase;
import org.nl.wms.basedata_manage.service.dao.MdMeMaterialbase;
import org.nl.wms.basedata_manage.service.dao.MdPbMeasureunit;
import org.nl.wms.basedata_manage.service.dao.MdPbStoragevehicleinfo;
import org.nl.config.SpringContextHolder;
import org.nl.config.language.LangProcess;
import org.nl.system.service.param.dao.Param;
import org.nl.system.service.param.impl.SysParamServiceImpl;
import org.nl.wms.basedata_manage.service.*;
import org.nl.wms.basedata_manage.service.dao.*;
import org.nl.wms.warehouse_management.enums.IOSConstant;
import org.nl.wms.warehouse_management.enums.IOSEnum;
import org.nl.wms.warehouse_management.service.IMdPbGroupplateService;
@@ -71,6 +70,12 @@ public class MdPbGroupplateServiceImpl extends ServiceImpl<MdPbGroupplateMapper,
@Autowired
private IMdPbMeasureunitService iMdPbMeasureunitService;
/**
* 分类服务
*/
@Autowired
private IMdPbClassstandardService iMdPbClassstandardService;
@Override
public IPage<JSONObject> queryAll(Map whereJson, PageQuery page) {
return this.baseMapper.queryAllByPage(new Page<>(page.getPage() + 1, page.getSize()),
@@ -83,8 +88,11 @@ public class MdPbGroupplateServiceImpl extends ServiceImpl<MdPbGroupplateMapper,
// 校验是组盘还是组袋
List<GroupPlate> tableData = dto.getTableData();
if (ObjectUtil.isEmpty(tableData)) {
// 根据物料类型生成代码
String bag_code = createBagCode(dto.getMaterial_id());
// 组袋
dto.setGroup_id(IdUtil.getStringId());
dto.setBag_code(bag_code);
// 计量单位默认重量KG
MdPbMeasureunit unitDao = iMdPbMeasureunitService.getByCode("KG");
dto.setQty_unit_id(unitDao.getMeasure_unit_id());
@@ -142,7 +150,7 @@ public class MdPbGroupplateServiceImpl extends ServiceImpl<MdPbGroupplateMapper,
}
@Override
public List<JSONObject> checkVehicle(JSONObject whereJson) {
public List<JSONObject> checkVehicle(JSONObject whereJson) {
MdPbStoragevehicleinfo vehicleDao = iMdPbStoragevehicleinfoService.getByCode(whereJson.getString("vehicle_code"));
if (ObjectUtil.isEmpty(vehicleDao)) {
throw new BadRequestException("此载具不存在【" + whereJson.getString("vehicle_code") + "");
@@ -214,6 +222,48 @@ public class MdPbGroupplateServiceImpl extends ServiceImpl<MdPbGroupplateMapper,
);
}
@Override
public JSONObject queryRecordNo(JSONObject whereJson) {
Param param = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("RECORD_NO");
JSONObject result = new JSONObject();
result.put("recordNo", param.getValue());
return result;
}
@Override
public String createBagCode(String material_id) {
String bag_code;
// 查询物料
MdMeMaterialbase materDao = iMdMeMaterialbaseService.getById(material_id);
// 查询分类
MdPbClassstandard classDao = iMdPbClassstandardService.getById(materDao.getMaterial_type_id());
String class_code = classDao.getClass_code();
switch (class_code) {
case IOSConstant.YL001:
// 原料
bag_code = CodeUtil.getNewCode("CLASS_CODE_YL");
break;
case IOSConstant.FL001:
// 辅料
bag_code = CodeUtil.getNewCode("CLASS_CODE_FL");
break;
case IOSConstant.FS001:
// 粉碎料
bag_code = CodeUtil.getNewCode("CLASS_CODE_FS");
break;
case IOSConstant.PL001:
// 批料
bag_code = CodeUtil.getNewCode("CLASS_CODE_PL");
break;
case IOSConstant.NBC001:
// 内包材
bag_code = CodeUtil.getNewCode("CLASS_CODE_NB");
break;
default:
throw new BadRequestException("请确定当前物料分类是否正确!");
}
return bag_code;
}
@Override
public JSONArray getDtLMaterialInfo(String vehicleCode, String materialId, String pcsn) {
return this.baseMapper.getDtLMaterialInfo(vehicleCode, materialId, pcsn);

View File

@@ -0,0 +1,27 @@
import request from '@/utils/request'
export function add(data) {
return request({
url: 'api/bucked',
method: 'post',
data
})
}
export function del(ids) {
return request({
url: 'api/bucked/',
method: 'delete',
data: ids
})
}
export function edit(data) {
return request({
url: 'api/bucked',
method: 'put',
data
})
}
export default { add, edit, del }

View File

@@ -0,0 +1,287 @@
<template>
<div class="app-container">
<!--工具栏-->
<div class="head-container">
<div v-if="crud.props.searchToggle">
<el-form
:inline="true"
class="demo-form-inline"
label-position="right"
label-width="80px"
label-suffix=":"
>
<el-form-item label="物料查询">
<el-input
v-model="query.material_code"
clearable
size="mini"
placeholder="物料编码、名称"
@keyup.enter.native="crud.toQuery"
/>
</el-form-item>
<el-form-item label="批次号">
<el-input
v-model="query.pcsn"
clearable
size="mini"
placeholder="批次"
@keyup.enter.native="crud.toQuery"
/>
</el-form-item>
<el-form-item label="桶码">
<el-input
v-model="query.bucket_code"
clearable
size="mini"
placeholder="载具编码"
@keyup.enter.native="crud.toQuery"
/>
</el-form-item>
<rrOperation />
</el-form>
</div>
<rrOperation />
<!--如果想在工具栏加入更多按钮可以使用插槽方式 slot = 'left' or 'right'-->
<crudOperation :permission="permission">
<el-button
slot="right"
class="filter-item"
type="success"
icon="el-icon-printer"
size="mini"
:disabled="crud.selections.length !== 1"
@click="printTable"
>
桶标签
</el-button>
</crudOperation>
<el-dialog
:close-on-click-modal="false"
:before-close="crud.cancelCU"
:visible.sync="crud.status.cu > 0"
:title="crud.status.title"
width="1200px"
>
<el-form ref="form" :model="form" :rules="rules" size="mini" label-width="110px">
<el-row>
<el-col :span="8">
<el-form-item label="物料编码" prop="material_code">
<el-select
v-model="form.material_code"
size="mini"
placeholder="全部"
style="width: 200px"
class="filter-item"
filterable
:disabled="crud.status.edit > 0"
@change="queryMater"
>
<el-option
v-for="item in materList"
:key="item.material_code"
:label="item.material_name"
:value="item.material_code"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="物料名称" prop="material_name">
<el-input v-model="form.material_name" disabled style="width: 200px;" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="物料规格" prop="material_spec">
<el-input v-model="form.material_spec" disabled style="width: 200px;" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="桶码" prop="bucket_code">
<el-input v-model="form.bag_code" disabled placeholder="系统生成" style="width: 200px;" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="物料批号" prop="pcsn">
<el-input v-model="form.pcsn" style="width: 200px;" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="物料重量" prop="qty">
<el-input-number v-model="form.qty" :precision="2" :controls="false" :min="1" style="width: 200px" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="桶自重" prop="qty">
<el-input-number v-model="form.bucket_weight" :precision="2" :controls="false" :min="1" style="width: 200px" />
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="text" @click="crud.cancelCU">取消</el-button>
<el-button :loading="crud.cu === 2" type="primary" @click="crud.submitCU">确认</el-button>
</div>
</el-dialog>
<!--表格渲染-->
<el-table
ref="table"
v-loading="crud.loading"
:data="crud.data"
size="mini"
style="width: 100%;"
@selection-change="crud.selectionChangeHandler"
>
<el-table-column type="selection" width="55" />
<el-table-column prop="bucket_code" label="桶码" :min-width="flexWidth('bucket_code',crud.data,'桶码')" />
<el-table-column prop="material_code" label="物料编码" :min-width="flexWidth('material_code',crud.data,'物料编码')" />
<el-table-column prop="material_name" label="物料名称" :min-width="flexWidth('material_name',crud.data,'物料名称')" />
<el-table-column prop="material_spec" label="物料规格" :min-width="flexWidth('material_spec',crud.data,'物料规格')" />
<el-table-column prop="pcsn" label="批次" :min-width="flexWidth('pcsn',crud.data,'批次')" />
<el-table-column prop="qty" label="重量" :formatter="crud.formatNum3" :min-width="100" />
<el-table-column prop="bucket_weight" label="桶自重" :formatter="crud.formatNum3" :min-width="100" />
<el-table-column prop="create_name" label="组桶人" :min-width="flexWidth('create_name',crud.data,'组桶人')" />
<el-table-column prop="create_time" label="组桶时间" :min-width="flexWidth('create_time',crud.data,'组桶时间')" />
<el-table-column
v-permission="['admin','Supplierbase:edit','Supplierbase:del']"
label="操作"
width="150px"
lign="center"
fixed="right"
>
<template slot-scope="scope">
<udOperation
:is-visiable-del="false"
:data="scope.row"
:permission="permission"
/>
</template>
</el-table-column>
</el-table>
<!--分页组件-->
<pagination />
</div>
</div>
</template>
<script>
import crudBucked from '@/views/wms/basedata/bucked/bucked'
import crudGroup from '@/views/wms/basedata/group/group'
import CRUD, {crud, form, header, presenter} from '@crud/crud'
import crudOperation from '@crud/CRUD.operation'
import udOperation from '@crud/UD.operation'
import pagination from '@crud/Pagination'
import rrOperation from '@crud/RR.operation'
import {getLodop} from '@/assets/js/lodop/LodopFuncs'
const defaultForm = {
id: null,
bucket_code: null,
bucket_weight: null,
material_id: null,
pcsn: null,
qty: null,
qty_unit_id: null,
qty_unit_name: null,
create_id: null,
create_name: null,
create_time: null,
material_spec: null,
material_name: null
}
export default {
name: 'Bucked',
components: { pagination, crudOperation, rrOperation, udOperation },
mixins: [presenter(), header(), form(defaultForm), crud()],
// 数据字典
dicts: [],
cruds() {
return CRUD({
title: '组桶记录',
url: 'api/bucked',
optShow: {
add: true,
edit: false,
del: false,
download: false,
reset: true
},
idField: 'id',
sort: 'id,desc',
crudMethod: { ...crudBucked }
})
},
data() {
return {
permission: {},
materList: [],
rules: {
material_code: [
{ required: true, message: '物料不能为空', trigger: 'blur' }
],
vehicle_code: [
{ required: true, message: '载具不能为空', trigger: 'blur' }
],
pcsn: [
{ required: true, message: '批次不能为空', trigger: 'blur' }
],
supp_code: [
{ required: true, message: '供应商不能为空', trigger: 'blur' }
]
}
}
},
created() {
crudGroup.queryMaterList({}).then(res => {
this.materList = res
})
},
methods: {
// 钩子在获取表格数据之前执行false 则代表不获取数据
[CRUD.HOOK.beforeRefresh]() {
return true
},
queryMater(value) {
crudGroup.queryMater({ 'material_code': value }).then(row => {
this.form.material_spec = row.material_spec
this.form.material_name = row.material_name
this.form.material_id = row.material_id
}).catch(() => {
this.form.material_spec = ''
this.form.material_name = ''
this.form.material_code = ''
this.form.material_id = ''
})
},
printTable() {
const row = this.$refs.table.selection[0]
const LODOP = getLodop()
LODOP.SET_SHOW_MODE('HIDE_DISBUTTIN_SETUP', 1)// 隐藏那些无效按钮
// 打印纸张大小设置https://www.it610.com/article/2094844.html
LODOP.PRINT_INIT('')
LODOP.SET_PRINT_PAGESIZE(1, '94mm', '119mm', '')
LODOP.ADD_PRINT_RECT('1mm', '3mm', '92mm', '117mm', 0, 1)
LODOP.ADD_PRINT_BARCODE('42.57mm', '15.05mm', '69.8mm', '23.97mm', '128A', row.bucket_code + '')
LODOP.PRINT()// 打印
// LODOP.PREVIEW()// 预览
// LODOP.PRINT_DESIGN()
this.crud.notify('打印成功', CRUD.NOTIFICATION_TYPE.SUCCESS)
this.crud.toQuery()
}
}
}
</script>
<style scoped>
</style>

View File

@@ -72,4 +72,13 @@ export function queryMaterList(data) {
})
}
export default { add, edit, del, queryMater, checkVehicle, querySupp, copySave, printDelete, queryMaterList }
export function queryRecordNo(data) {
return request({
url: 'api/group/queryRecordNo',
method: 'post',
data
})
}
export default { add, edit, del, queryMater, checkVehicle, querySupp, copySave,
printDelete, queryMaterList, queryRecordNo }

View File

@@ -59,7 +59,7 @@
<rrOperation />
<!--如果想在工具栏加入更多按钮可以使用插槽方式 slot = 'left' or 'right'-->
<crudOperation :permission="permission">
<el-button
<!-- <el-button
slot="right"
class="filter-item"
type="success"
@@ -69,7 +69,7 @@
@click="printTable"
>
物料标签
</el-button>
</el-button>-->
</crudOperation>
<!--表格渲染-->
<el-table

View File

@@ -59,7 +59,7 @@
<rrOperation />
<!--如果想在工具栏加入更多按钮可以使用插槽方式 slot = 'left' or 'right'-->
<crudOperation :permission="permission">
<!-- <el-button
<!-- <el-button
slot="right"
class="filter-item"
type="primary"
@@ -129,7 +129,7 @@
<el-row>
<el-col :span="8">
<el-form-item label="袋码" prop="bag_code">
<el-input v-model="form.bag_code" :disabled="crud.status.edit > 0" style="width: 200px;" />
<el-input v-model="form.bag_code" disabled placeholder="系统生成" style="width: 200px;" />
</el-form-item>
</el-col>
@@ -277,6 +277,7 @@ export default {
permission: {},
openParam: {},
materList: [],
recordNo: null,
openAddDtlDialog: false,
suppList: [],
rules: {
@@ -286,9 +287,6 @@ export default {
vehicle_code: [
{ required: true, message: '载具不能为空', trigger: 'blur' }
],
bag_code: [
{ required: true, message: '袋码不能为空', trigger: 'blur' }
],
pcsn: [
{ required: true, message: '批次不能为空', trigger: 'blur' }
],
@@ -305,6 +303,9 @@ export default {
crudGroup.queryMaterList({}).then(res => {
this.materList = res
})
crudGroup.queryRecordNo({}).then(res => {
this.recordNo = res.recordNo
})
},
methods: {
// 钩子在获取表格数据之前执行false 则代表不获取数据
@@ -327,45 +328,79 @@ export default {
return this.dict.label.GROUP_STATUS[row.status]
},
printTable() {
let row = this.$refs.table.selection[0]
var bake_num = row.bake_num
if (row.out_type === '1004') {
bake_num += 1
}
const row = this.$refs.table.selection[0]
const LODOP = getLodop()
LODOP.SET_SHOW_MODE('HIDE_DISBUTTIN_SETUP', 1)// 隐藏那些无效按钮
// 打印纸张大小设置https://www.it610.com/article/2094844.html
LODOP.PRINT_INIT('')
LODOP.SET_PRINT_PAGESIZE(1, '100mm', '80mm', '')
LODOP.ADD_PRINT_RECT('1mm', '3mm', '94mm', '74mm', 0, 1)
LODOP.SET_PRINT_STYLE('FontSize', 11)
LODOP.SET_PRINT_STYLE('Bold', 1)
LODOP.ADD_PRINT_BARCODE('5mm', '5mm', '40mm', '40mm', 'QRCode', row.material_code + '##' + row.material_name + '##' +
row.material_spec + '##' + row.material_model + '##' + row.quality_time_day + '##' + row.produce_time + '##' +
row.supp_name + '##' + row.bake_num + '##' + row.supp_code + '##' + row.pcsn + '##' + row.execution_stand
)
LODOP.ADD_PRINT_TEXT('7mm', '48mm', '80mm', '15mm', '物料编码:' + row.material_code + '')
LODOP.ADD_PRINT_TEXT('16mm', '48mm', '80mm', '15mm', '物料名称:' + row.material_name + '')
LODOP.ADD_PRINT_TEXT('25mm', '48mm', '80mm', '15mm', '规格:' + row.material_spec + '')
LODOP.ADD_PRINT_TEXT('34mm', '48mm', '80mm', '15mm', '型号:' + row.material_model + '')
LODOP.ADD_PRINT_TEXT('43mm', '48mm', '80mm', '15mm', '有效期(天)' + row.quality_time_day + '')
LODOP.ADD_PRINT_TEXT('52mm', '48mm', '80mm', '15mm', '生产日期:' + row.produce_time + '')
LODOP.ADD_PRINT_TEXT('61mm', '48mm', '80mm', '15mm', '供应商名称:' + row.supp_name + '')
LODOP.SET_PRINT_PAGESIZE(1, '94mm', '119mm', '')
LODOP.ADD_PRINT_RECT('1mm', '3mm', '92mm', '117mm', 0, 1)
LODOP.ADD_PRINT_RECT('1.01mm', '2.99mm', '92mm', '117mm', 0, 1)
LODOP.ADD_PRINT_RECT('1.01mm', '2.99mm', '92mm', '117mm', 0, 1)
LODOP.ADD_PRINT_RECT('1.01mm', '2.99mm', '92mm', '117mm', 0, 1)
LODOP.ADD_PRINT_RECT('1.01mm', '2.99mm', '92mm', '117mm', 0, 1)
LODOP.ADD_PRINT_TEXT('2.88mm', '35.4mm', '32.65mm', '5.95mm', '中 美 华 东 制 药')
LODOP.ADD_PRINT_TEXT('6.56mm', '22.33mm', '62.02mm', '5.69mm', 'Zhongmei Huadong Pharmaceutical')
LODOP.ADD_PRINT_TEXT('10.45mm', '26.83mm', '56.73mm', '7.01mm', '物 料 卡 Material Card')
LODOP.SET_PRINT_STYLEA(0, 'FontSize', 11)
LODOP.ADD_PRINT_TEXT('15.48mm', '5.13mm', '93.24mm', '5.69mm', '依据《状态标识牌的有关规定》QA-SMP-B005制定此记录')
LODOP.SET_PRINT_STYLEA(0, 'FontSize', 8)
LODOP.ADD_PRINT_TEXT('19.45mm', '5.13mm', '128.69mm', '7.01mm', 'Establish this record according to “SMP for status signboard”')
LODOP.SET_PRINT_STYLEA(0, 'FontSize', 8)
LODOP.ADD_PRINT_TEXT('22.89mm', '5.13mm', '27.62mm', '4.37mm', '(QA-SMP-B005)')
LODOP.SET_PRINT_STYLEA(0, 'FontSize', 8)
LODOP.ADD_PRINT_TEXT('26.86mm', '5.13mm', '66.78mm', '4.37mm', '记录编号 Record No.: ' + this.recordNo + '')
LODOP.SET_PRINT_STYLEA(0, 'FontSize', 8)
LODOP.ADD_PRINT_TEXT('31.64mm', '4.87mm', '87.95mm', '5.69mm', '物 料 名 称 Material Name: ' + row.material_name + '')
LODOP.ADD_PRINT_TEXT('37.17mm', '4.74mm', '42.44mm', '5.69mm', '物 料 批 号 及 代 码')
LODOP.ADD_PRINT_TEXT('40.9mm', '4.74mm', '86.1mm', '5.69mm', 'Material Batch No. and Code: ' + row.pcsn + '')
LODOP.ADD_PRINT_TEXT('46.78mm', '4.47mm', '27.09mm', '5.69mm', '有 效 期 至 口')
LODOP.ADD_PRINT_TEXT('46.78mm', '47.33mm', '27.62mm', '5.69mm', '复 验 期 至 口')
LODOP.ADD_PRINT_TEXT('51.01mm', '47.33mm', '21.54mm', '5.69mm', 'Expory Date')
LODOP.ADD_PRINT_TEXT('51.01mm', '4.47mm', '27.09mm', '5.69mm', 'Retest Date')
LODOP.ADD_PRINT_TEXT('56.83mm', '4.47mm', '86.62mm', '7.01mm', '经 销 商 Distributor:')
LODOP.ADD_PRINT_TEXT('62.92mm', '4.47mm', '85.3mm', '7.01mm', '生 产 商 Manufacturer:')
LODOP.ADD_PRINT_TEXT('69.74mm', '9.5mm', '11.22mm', '5.69mm', '日 期')
LODOP.SET_PRINT_STYLEA(0, 'FontSize', 10)
LODOP.ADD_PRINT_TEXT('73.42mm', '10.82mm', '9.63mm', '5.69mm', 'Date')
LODOP.ADD_PRINT_TEXT('69.61mm', '28.55mm', '20.48mm', '5.69mm', '重量(数量)')
LODOP.SET_PRINT_STYLEA(0, 'FontSize', 10)
LODOP.ADD_PRINT_TEXT('73.53mm', '31.46mm', '13.6mm', '4.37mm', 'Weight')
LODOP.ADD_PRINT_TEXT('69.69mm', '54.48mm', '14.92mm', '5.69mm', '经手人')
LODOP.SET_PRINT_STYLEA(0, 'FontSize', 10)
LODOP.ADD_PRINT_TEXT('73.03mm', '53.95mm', '15.72mm', '4.37mm', 'Operator')
LODOP.ADD_PRINT_TEXT('69.72mm', '75.38mm', '14.13mm', '5.69mm', '复核人')
LODOP.SET_PRINT_STYLEA(0, 'FontSize', 10)
LODOP.ADD_PRINT_TEXT('72.79mm', '74.59mm', '16.25mm', '4.37mm', 'Reviewer')
LODOP.ADD_PRINT_TEXT('79.27mm', '5mm', '19.16mm', '5.69mm', row.create_time.slice(0, 10) + '')
LODOP.SET_PRINT_STYLEA(0, 'Alignment', 2)
LODOP.ADD_PRINT_TEXT('79.27mm', '31.46mm', '15mm', '5.69mm', row.qty + '')
LODOP.SET_PRINT_STYLEA(0, 'Alignment', 2)
LODOP.ADD_PRINT_TEXT('86.47mm', '5.27mm', '35.03mm', '5.69mm', '合 格 Qualified 口')
LODOP.ADD_PRINT_TEXT('86.47mm', '45.22mm', '40.06mm', '5.69mm', '不 合 格 Unqualified 口')
LODOP.ADD_PRINT_TEXT('91.49mm', '5.27mm', '27.09mm', '5.69mm', '储 存 条 件:')
LODOP.ADD_PRINT_TEXT('95.73mm', '5.27mm', '36.35mm', '5.69mm', 'Stroage conditions')
LODOP.ADD_PRINT_TEXT('101.28mm', '5.27mm', '27.09mm', '5.69mm', '备 注 Remarks:')
LODOP.ADD_PRINT_LINE(114, 11, 114, 360, 0, 0)
LODOP.ADD_PRINT_LINE(136, 11, 136, 360, 0, 0)
LODOP.ADD_PRINT_LINE(171, 11, 171, 360, 0, 0)
LODOP.ADD_PRINT_LINE(209, 11, 209, 360, 0, 0)
LODOP.ADD_PRINT_LINE(231, 11, 231, 360, 0, 0)
LODOP.ADD_PRINT_LINE(254, 11, 254, 360, 0, 0)
LODOP.ADD_PRINT_LINE(291, 11, 291, 360, 0, 0)
LODOP.ADD_PRINT_LINE(320, 11, 320, 360, 0, 0)
LODOP.ADD_PRINT_LINE(378, 11, 378, 360, 0, 0)
LODOP.ADD_PRINT_LINE(401, 11, 401, 360, 0, 0)
LODOP.ADD_PRINT_LINE(320, 96, 254, 96, 0, 1)
LODOP.ADD_PRINT_LINE(320, 182, 254, 182, 0, 1)
LODOP.ADD_PRINT_LINE(320, 265, 254, 265, 0, 1)
LODOP.ADD_PRINT_BARCODE('107.13mm', '22.99mm', '57.1mm', '10.74mm', '128A', row.bag_code + '')
LODOP.ADD_PRINT_TEXT('43mm', '5mm', '80mm', '15mm', '烘干次数:' + bake_num + '')
LODOP.ADD_PRINT_TEXT('52mm', '5mm', '80mm', '15mm', '供应商编码:' + row.supp_code + '')
LODOP.ADD_PRINT_TEXT('61mm', '5mm', '80mm', '15mm', '批号:' + row.pcsn + '')
LODOP.ADD_PRINT_TEXT('69mm', '5mm', '80mm', '15mm', '执行标准:' + row.execution_stand + '')
LODOP.PRINT()// 打印
// LODOP.PREVIEW()// 预览
// LODOP.PRINT_DESIGN()
// LODOP.PRINT()// 打印
LODOP.PREVIEW()// 预览
// 调用删除
if (row.out_type === '1004' && row.is_need_delete === '1') {
crudGroup.printDelete(row).then(res => {
})
}
this.crud.notify('操作成功!', CRUD.NOTIFICATION_TYPE.SUCCESS)
this.crud.notify('打印成功', CRUD.NOTIFICATION_TYPE.SUCCESS)
this.crud.toQuery()
}
}