add:成品盘点
This commit is contained in:
@@ -21,6 +21,9 @@
|
||||
<if test="status != null and status != ''">
|
||||
and re.status = #{status}
|
||||
</if>
|
||||
<if test="storagevehicle_code != null and storagevehicle_code != ''">
|
||||
and re.storagevehicle_code = #{storagevehicle_code}
|
||||
</if>
|
||||
<if test="bucketunique != null and bucketunique != ''">
|
||||
and ( re.bucketunique like '{bucketunique}%$' )
|
||||
</if>
|
||||
|
||||
@@ -1,8 +1,18 @@
|
||||
package org.nl.wms.storage_manage.productmanage.controller.check;
|
||||
|
||||
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.nl.common.anno.Log;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
import org.nl.wms.storage_manage.productmanage.service.check.IStIvtCheckmstCpService;
|
||||
import org.nl.wms.storage_manage.productmanage.service.check.dto.CheckQueryMst;
|
||||
import org.nl.wms.storage_manage.rawmanage.service.check.IStIvtCheckmstYlService;
|
||||
import org.nl.wms.storage_manage.rawmanage.service.check.dto.CheckQuery;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
@@ -13,8 +23,95 @@ import org.springframework.web.bind.annotation.RestController;
|
||||
* @since 2023-05-04
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/stIvtCheckmstCp")
|
||||
@RequestMapping("/api/stIvtCheckmstCp")
|
||||
public class StIvtCheckmstCpController {
|
||||
|
||||
@Autowired
|
||||
private IStIvtCheckmstCpService iStIvtCheckmstCpService;
|
||||
|
||||
@GetMapping
|
||||
@Log("查询盘点单主表")
|
||||
@ApiOperation("查询盘点单主表")
|
||||
public ResponseEntity<Object> query(CheckQueryMst query, PageQuery page) {
|
||||
return new ResponseEntity<>(iStIvtCheckmstCpService.pageQuery(query, page), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping
|
||||
@Log("创建盘点单")
|
||||
@ApiOperation("创建盘点单")
|
||||
public ResponseEntity<Object> create(@RequestBody JSONObject whereJson) {
|
||||
iStIvtCheckmstCpService.create(whereJson);
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/getCheckDtl")
|
||||
@Log("查询盘点明细")
|
||||
@ApiOperation("查询盘点明细")
|
||||
public ResponseEntity<Object> getCheckDtl(@RequestBody JSONObject whereJson) {
|
||||
return new ResponseEntity<>(iStIvtCheckmstCpService.getCheckDtl(whereJson), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/update")
|
||||
@Log("修改盘点单")
|
||||
@ApiOperation("修改盘点单")
|
||||
public ResponseEntity<Object> update(@RequestBody JSONObject whereJson) {
|
||||
iStIvtCheckmstCpService.update(whereJson);
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/delete")
|
||||
@Log("删除盘点单")
|
||||
@ApiOperation("删除盘点单")
|
||||
public ResponseEntity<Object> delete(@RequestBody Long[] ids){
|
||||
iStIvtCheckmstCpService.delete(ids);
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/saveCheck")
|
||||
@Log("盘点保存")
|
||||
@ApiOperation("盘点保存")
|
||||
public ResponseEntity<Object> saveCheck(@RequestBody JSONObject whereJson) {
|
||||
iStIvtCheckmstCpService.saveCheck(whereJson);
|
||||
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
|
||||
}
|
||||
|
||||
@PostMapping("/confirm")
|
||||
@Log("盘点强制确认")
|
||||
@ApiOperation("盘点强制确认")
|
||||
public ResponseEntity<Object> confirm(@RequestBody JSONObject whereJson) {
|
||||
iStIvtCheckmstCpService.confirm(whereJson);
|
||||
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
|
||||
}
|
||||
|
||||
@PostMapping("/process1")
|
||||
@Log("实盘为准,生成损溢单修改库存")
|
||||
@ApiOperation("实盘为准,生成损溢单修改库存")
|
||||
public ResponseEntity<Object> process1(@RequestBody JSONObject whereJson) {
|
||||
iStIvtCheckmstCpService.process1(whereJson);
|
||||
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
|
||||
}
|
||||
|
||||
@PostMapping("/process0")
|
||||
@Log("账务为准")
|
||||
@ApiOperation("账务为准")
|
||||
public ResponseEntity<Object> process0(@RequestBody JSONObject whereJson) {
|
||||
iStIvtCheckmstCpService.process0(whereJson);
|
||||
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
|
||||
}
|
||||
|
||||
@PostMapping("/getBucketrecord")
|
||||
@Log("获取箱")
|
||||
@ApiOperation("获取箱")
|
||||
public ResponseEntity<Object> getBucketrecord(@RequestBody JSONObject whereJson) {
|
||||
return new ResponseEntity<>(iStIvtCheckmstCpService.getBucketrecord(whereJson),HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/processBox")
|
||||
@Log("拆箱盘点保存")
|
||||
@ApiOperation("拆箱盘点保存")
|
||||
public ResponseEntity<Object> processBox(@RequestBody JSONObject whereJson) {
|
||||
iStIvtCheckmstCpService.processBox(whereJson);
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,7 +1,14 @@
|
||||
package org.nl.wms.storage_manage.productmanage.service.check;
|
||||
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import org.nl.wms.storage_manage.productmanage.service.check.dao.StIvtCheckdtlCp;
|
||||
import org.nl.wms.storage_manage.productmanage.service.check.dao.StIvtCheckmstCp;
|
||||
import org.nl.wms.storage_manage.rawmanage.service.check.dao.StIvtCheckmstYl;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
@@ -13,4 +20,7 @@ import org.nl.wms.storage_manage.productmanage.service.check.dao.StIvtCheckdtlCp
|
||||
*/
|
||||
public interface IStIvtCheckdtlCpService extends IService<StIvtCheckdtlCp> {
|
||||
|
||||
double create(JSONArray row, StIvtCheckmstCp mst);
|
||||
|
||||
List<Map> getCheckDtl(JSONObject map);
|
||||
}
|
||||
|
||||
@@ -1,7 +1,14 @@
|
||||
package org.nl.wms.storage_manage.productmanage.service.check;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
import org.nl.wms.storage_manage.productmanage.service.check.dao.StIvtCheckmstCp;
|
||||
import org.nl.wms.storage_manage.productmanage.service.check.dto.CheckQueryMst;
|
||||
import org.nl.wms.storage_manage.rawmanage.service.check.dto.CheckQuery;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
@@ -12,5 +19,37 @@ import org.nl.wms.storage_manage.productmanage.service.check.dao.StIvtCheckmstCp
|
||||
* @since 2023-05-04
|
||||
*/
|
||||
public interface IStIvtCheckmstCpService extends IService<StIvtCheckmstCp> {
|
||||
/**
|
||||
* 分页查询
|
||||
* @param query,page /
|
||||
* @return JSONObject
|
||||
*/
|
||||
Object pageQuery(CheckQueryMst query, PageQuery page);
|
||||
|
||||
void create(JSONObject jo);
|
||||
|
||||
List<Map> getCheckDtl(JSONObject map);
|
||||
|
||||
void update(JSONObject map);
|
||||
|
||||
/**
|
||||
* 删除
|
||||
* @param ids
|
||||
* {
|
||||
* 主表id..
|
||||
* }
|
||||
*/
|
||||
void delete(Long[] ids);
|
||||
|
||||
void saveCheck(JSONObject jo);
|
||||
|
||||
void confirm(JSONObject jo);
|
||||
|
||||
void process0(JSONObject jo);
|
||||
|
||||
void process1(JSONObject jo);
|
||||
|
||||
Object getBucketrecord(JSONObject whereJson);
|
||||
|
||||
void processBox(JSONObject whereJson);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package org.nl.wms.storage_manage.productmanage.service.check.dao;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
@@ -25,6 +26,7 @@ public class StIvtCheckdtlCp implements Serializable {
|
||||
/**
|
||||
* 盘点单明细id
|
||||
*/
|
||||
@TableId
|
||||
private String checkdtl_id;
|
||||
|
||||
/**
|
||||
@@ -115,7 +117,7 @@ public class StIvtCheckdtlCp implements Serializable {
|
||||
/**
|
||||
* 盘点结果
|
||||
*/
|
||||
private Boolean check_result;
|
||||
private String check_result;
|
||||
|
||||
/**
|
||||
* 盘点人
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package org.nl.wms.storage_manage.productmanage.service.check.dao;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
@@ -26,6 +27,7 @@ public class StIvtCheckmstCp implements Serializable {
|
||||
/**
|
||||
* 盘点单标识
|
||||
*/
|
||||
@TableId
|
||||
private String check_id;
|
||||
|
||||
/**
|
||||
@@ -76,7 +78,7 @@ public class StIvtCheckmstCp implements Serializable {
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private LocalDateTime create_time;
|
||||
private String create_time;
|
||||
|
||||
/**
|
||||
* 审核人
|
||||
|
||||
@@ -1,8 +1,13 @@
|
||||
package org.nl.wms.storage_manage.productmanage.service.check.dao.mapper;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.nl.wms.storage_manage.productmanage.service.check.dao.StIvtCheckdtlCp;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 盘点单明细表 Mapper 接口
|
||||
@@ -13,4 +18,5 @@ import org.nl.wms.storage_manage.productmanage.service.check.dao.StIvtCheckdtlCp
|
||||
*/
|
||||
public interface StIvtCheckdtlCpMapper extends BaseMapper<StIvtCheckdtlCp> {
|
||||
|
||||
List<Map> getCheckDtl(@Param("map") Map map);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,37 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="org.nl.wms.storage_manage.productmanage.service.check.dao.mapper.StIvtCheckdtlCpMapper">
|
||||
|
||||
<select id="getCheckDtl" resultType="java.util.Map">
|
||||
SELECT
|
||||
CheckDtl.*,
|
||||
struct.struct_code,
|
||||
struct.sect_code,
|
||||
mb.material_code,
|
||||
mb.material_name,
|
||||
user1.person_name AS process_optname
|
||||
FROM
|
||||
st_ivt_checkdtl_cp CheckDtl
|
||||
LEFT JOIN md_me_materialbase mb ON mb.material_id = CheckDtl.material_id
|
||||
LEFT JOIN st_ivt_structattr struct ON struct.struct_id = CheckDtl.struct_id
|
||||
LEFT JOIN sys_user user1 ON user1.user_id = CheckDtl.process_optid
|
||||
<where>
|
||||
1=1
|
||||
<if test="map.check_id != '' and map.check_id != null">
|
||||
and CheckDtl.check_id = #{map.check_id}
|
||||
</if>
|
||||
<if test="map.checkdtl_id != '' and map.checkdtl_id != null">
|
||||
and CheckDtl.checkdtl_id = #{map.checkdtl_id}
|
||||
</if>
|
||||
<if test="map.status != '' and map.status != null">
|
||||
and #{map.status} >= CheckDtl.status
|
||||
</if>
|
||||
<if test="map.check_result != '' and map.check_result != null and map.check_result != '-1'">
|
||||
and #{map.check_result} = CheckDtl.check_result
|
||||
</if>
|
||||
<if test="map.check_result == '-1'">
|
||||
and CheckDtl.check_result IN ('1','2')
|
||||
</if>
|
||||
</where>
|
||||
order by CheckDtl.seq_no
|
||||
</select>
|
||||
</mapper>
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
package org.nl.wms.storage_manage.productmanage.service.check.dto;
|
||||
|
||||
import lombok.Data;
|
||||
import org.nl.common.domain.query.BaseQuery;
|
||||
import org.nl.common.domain.query.QParam;
|
||||
import org.nl.common.enums.QueryTEnum;
|
||||
import org.nl.wms.storage_manage.productmanage.service.check.dao.StIvtCheckmstCp;
|
||||
import org.nl.wms.storage_manage.rawmanage.service.check.dao.StIvtCheckmstYl;
|
||||
|
||||
/*
|
||||
* @author ZZQ
|
||||
* @Date 2023/5/4 19:49
|
||||
*/
|
||||
@Data
|
||||
public class CheckQueryMst extends BaseQuery<StIvtCheckmstCp> {
|
||||
|
||||
|
||||
private String stor_id;
|
||||
|
||||
private String status;
|
||||
|
||||
private String check_type;
|
||||
|
||||
private String check_code;
|
||||
|
||||
private Boolean is_delete = false;
|
||||
|
||||
|
||||
@Override
|
||||
public void paramMapping() {
|
||||
super.doP.put("check_code", QParam.builder().k(new String[]{"check_code"}).type(QueryTEnum.LK).build());
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -1,11 +1,35 @@
|
||||
package org.nl.wms.storage_manage.productmanage.service.check.impl;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.nl.common.utils.IdUtil;
|
||||
import org.nl.modules.common.exception.BadRequestException;
|
||||
import org.nl.wms.masterdata_manage.service.vehicle.IMdPbStoragevehicleextService;
|
||||
import org.nl.wms.masterdata_manage.service.vehicle.IMdPbStoragevehicleinfoService;
|
||||
import org.nl.wms.masterdata_manage.service.vehicle.dao.MdPbStoragevehicleinfo;
|
||||
import org.nl.wms.masterdata_manage.storage.service.storage.IStIvtSectattrService;
|
||||
import org.nl.wms.masterdata_manage.storage.service.storage.IStIvtStructattrService;
|
||||
import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtSectattr;
|
||||
import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtStructattr;
|
||||
import org.nl.wms.storage_manage.CHECKEnum;
|
||||
import org.nl.wms.storage_manage.IOSEnum;
|
||||
import org.nl.wms.storage_manage.productmanage.service.check.IStIvtCheckdtlCpService;
|
||||
import org.nl.wms.storage_manage.productmanage.service.check.dao.StIvtCheckdtlCp;
|
||||
import org.nl.wms.storage_manage.productmanage.service.check.dao.StIvtCheckmstCp;
|
||||
import org.nl.wms.storage_manage.productmanage.service.check.dao.mapper.StIvtCheckdtlCpMapper;
|
||||
import org.nl.wms.storage_manage.rawmanage.service.check.dao.StIvtCheckdtlYl;
|
||||
import org.nl.wms.storage_manage.rawmanage.service.check.dao.StIvtCheckmstYl;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 盘点单明细表 服务实现类
|
||||
@@ -17,4 +41,72 @@ import org.springframework.stereotype.Service;
|
||||
@Service
|
||||
public class StIvtCheckdtlCpServiceImpl extends ServiceImpl<StIvtCheckdtlCpMapper, StIvtCheckdtlCp> implements IStIvtCheckdtlCpService {
|
||||
|
||||
@Autowired
|
||||
private IStIvtSectattrService sectattrService; // 库区服务
|
||||
|
||||
@Autowired
|
||||
private IStIvtStructattrService structattrService; // 仓位服务
|
||||
|
||||
@Autowired
|
||||
private IMdPbStoragevehicleinfoService iMdPbStoragevehicleinfoService; // 载具信息服务
|
||||
|
||||
@Override
|
||||
public double create(JSONArray rows, StIvtCheckmstCp mst) {
|
||||
double total_qty = 0;
|
||||
|
||||
if (rows.size() > 0 && ObjectUtil.isNotEmpty(mst)) {
|
||||
// 先删除在插入
|
||||
this.remove(new QueryWrapper<StIvtCheckdtlCp>().eq("check_id", mst.getCheck_id()));
|
||||
|
||||
for (int i = 0; i < rows.size(); i++) {
|
||||
String checkdtl_id = IdUtil.getStringId();
|
||||
StIvtCheckdtlCp row = rows.getJSONObject(i).toJavaObject(StIvtCheckdtlCp.class);
|
||||
row.setCheckdtl_id(checkdtl_id);
|
||||
row.setCheck_id(mst.getCheck_id());
|
||||
row.setCheck_code(mst.getCheck_code());
|
||||
row.setSeq_no(BigDecimal.valueOf(i + 1));
|
||||
|
||||
// 获取库区信息
|
||||
QueryWrapper<StIvtSectattr> sect_wrapper = new QueryWrapper<>();
|
||||
sect_wrapper.eq("sect_id", row.getSect_id());
|
||||
sect_wrapper.eq("is_used", true);
|
||||
StIvtSectattr sectDao = sectattrService.getOne(sect_wrapper);
|
||||
if (ObjectUtil.isEmpty(sectDao)) throw new BadRequestException("库区不存在或未启用!");
|
||||
row.setSect_name(sectDao.getSect_name());
|
||||
|
||||
// 获取仓位信息
|
||||
QueryWrapper<StIvtStructattr> struct_wrapper = new QueryWrapper<>();
|
||||
struct_wrapper.eq("struct_id", row.getStruct_id());
|
||||
struct_wrapper.eq("is_used", true);
|
||||
StIvtStructattr structDao = structattrService.getOne(struct_wrapper);
|
||||
if (ObjectUtil.isEmpty(structDao)) throw new BadRequestException("仓位不存在或未启用!");
|
||||
row.setStruct_name(structDao.getStruct_name());
|
||||
|
||||
// 获取载具信息
|
||||
MdPbStoragevehicleinfo vehicleDao = iMdPbStoragevehicleinfoService.getOne(
|
||||
new QueryWrapper<MdPbStoragevehicleinfo>().lambda()
|
||||
.eq(MdPbStoragevehicleinfo::getStoragevehicle_code, row.getStoragevehicle_code())
|
||||
);
|
||||
|
||||
row.setStoragevehicle_id(vehicleDao.getStoragevehicle_id());
|
||||
row.setStoragevehicle_code(vehicleDao.getStoragevehicle_code());
|
||||
row.setStatus(CHECKEnum.DTL_STATUS.code("生成"));
|
||||
this.save(row);
|
||||
|
||||
//锁定货位
|
||||
structattrService.update(
|
||||
new UpdateWrapper<StIvtStructattr>().lambda()
|
||||
.set(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code("盘点锁"))
|
||||
.set(StIvtStructattr::getInv_code,mst.getCheck_code())
|
||||
.eq(StIvtStructattr::getStruct_id, row.getStruct_id())
|
||||
);
|
||||
}
|
||||
}
|
||||
return total_qty;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Map> getCheckDtl(JSONObject map) {
|
||||
return this.baseMapper.getCheckDtl(map);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,10 +1,51 @@
|
||||
package org.nl.wms.storage_manage.productmanage.service.check.impl;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.NumberUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import io.jsonwebtoken.lang.Assert;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.nl.common.TableDataInfo;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
import org.nl.common.utils.IdUtil;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.modules.common.exception.BadRequestException;
|
||||
import org.nl.modules.system.util.CodeUtil;
|
||||
import org.nl.wms.masterdata_manage.service.vehicle.IMdPbBucketrecordService;
|
||||
import org.nl.wms.masterdata_manage.service.vehicle.dao.mapper.MdPbBucketrecordMapper;
|
||||
import org.nl.wms.masterdata_manage.storage.service.storage.IStIvtBsrealstorattrService;
|
||||
import org.nl.wms.masterdata_manage.storage.service.storage.IStIvtStructattrService;
|
||||
import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtBsrealstorattr;
|
||||
import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtStructattr;
|
||||
import org.nl.wms.storage_manage.CHECKEnum;
|
||||
import org.nl.wms.storage_manage.productmanage.service.check.IStIvtCheckdtlCpService;
|
||||
import org.nl.wms.storage_manage.productmanage.service.check.IStIvtCheckmstCpService;
|
||||
import org.nl.wms.storage_manage.productmanage.service.check.dao.StIvtCheckdtlCp;
|
||||
import org.nl.wms.storage_manage.productmanage.service.check.dao.StIvtCheckmstCp;
|
||||
import org.nl.wms.storage_manage.productmanage.service.check.dao.mapper.StIvtCheckmstCpMapper;
|
||||
import org.nl.wms.storage_manage.productmanage.service.check.dto.CheckQueryMst;
|
||||
import org.nl.wms.storage_manage.productmanage.service.moreOrLess.IStIvtMoreorlessmstCpService;
|
||||
import org.nl.wms.storage_manage.rawmanage.service.check.IStIvtCheckdtlYlService;
|
||||
import org.nl.wms.storage_manage.rawmanage.service.check.dao.StIvtCheckdtlYl;
|
||||
import org.nl.wms.storage_manage.rawmanage.service.check.dao.StIvtCheckmstYl;
|
||||
import org.nl.wms.storage_manage.rawmanage.service.check.dto.CheckQuery;
|
||||
import org.nl.wms.storage_manage.rawmanage.service.moveOrLess.IStIvtMoreorlessmstYlService;
|
||||
import org.nl.wms.storage_manage.semimanage.MLEnum;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
@@ -17,4 +58,417 @@ import org.springframework.stereotype.Service;
|
||||
@Service
|
||||
public class StIvtCheckmstCpServiceImpl extends ServiceImpl<StIvtCheckmstCpMapper, StIvtCheckmstCp> implements IStIvtCheckmstCpService {
|
||||
|
||||
@Autowired
|
||||
private IStIvtBsrealstorattrService stIvtBsrealstorattrService; // 实物属性服务
|
||||
|
||||
@Autowired
|
||||
private IStIvtCheckdtlCpService iStIvtCheckdtlCpService; // 盘点明细服务
|
||||
|
||||
@Autowired
|
||||
private IStIvtStructattrService structattrService; // 仓位服务
|
||||
|
||||
@Autowired
|
||||
private IStIvtMoreorlessmstCpService iStIvtMoreorlessmstCpService; // 损益主表服务
|
||||
|
||||
@Autowired
|
||||
private IMdPbBucketrecordService iMdPbBucketrecordService; // 箱服务
|
||||
|
||||
@Autowired(required = false)
|
||||
private MdPbBucketrecordMapper mdPbBucketrecordMapper; // 箱mapper服务
|
||||
|
||||
@Override
|
||||
public Object pageQuery(CheckQueryMst query, PageQuery page) {
|
||||
// 查询条件
|
||||
page.setSort("check_code,DESC");
|
||||
// 分页查询
|
||||
Page<StIvtCheckmstCp> pageQuery = this.page(page.build(), query.build());
|
||||
TableDataInfo<StIvtCheckmstCp> build = TableDataInfo.build(pageQuery);
|
||||
return build;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void create(JSONObject form) {
|
||||
JSONArray rows = form.getJSONArray("tableData");
|
||||
if (ObjectUtil.isEmpty(rows)) throw new BadRequestException("请求参数不能为空");
|
||||
|
||||
// 调用主表 插入/更新方法
|
||||
StIvtCheckmstCp checkmstCp = packageMstForm(new StIvtCheckmstCp(), form);
|
||||
this.save(checkmstCp);
|
||||
|
||||
//调用明细表 插入方法
|
||||
iStIvtCheckdtlCpService.create(rows, checkmstCp);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Map> getCheckDtl(JSONObject map) {
|
||||
return iStIvtCheckdtlCpService.getCheckDtl(map);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void update(JSONObject form) {
|
||||
Assert.notNull(new Object[]{form, form.get("check_id")}, "请求参数不能为空");
|
||||
StIvtCheckmstCp mst = form.toJavaObject(StIvtCheckmstCp.class);
|
||||
this.updateById(mst);
|
||||
|
||||
JSONArray rows = form.getJSONArray("tableData");
|
||||
if (ObjectUtil.isEmpty(rows)) throw new BadRequestException("请求参数不能为空");
|
||||
// 调用明细表 插入/更新方法
|
||||
iStIvtCheckdtlCpService.create(rows, mst);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void saveCheck(JSONObject whereJson) {
|
||||
JSONObject form = whereJson.getJSONObject("row");
|
||||
JSONArray rows = whereJson.getJSONArray("rows");
|
||||
|
||||
StIvtCheckmstCp jo_mst = this.getOne(new QueryWrapper<StIvtCheckmstCp>().eq("check_id", form.getString("check_id")).in("status", new String[]{"10", "30"}));
|
||||
if (jo_mst == null) {
|
||||
throw new BadRequestException("盘点单状态异常!");
|
||||
}
|
||||
iStIvtCheckdtlCpService.remove(new QueryWrapper<StIvtCheckdtlCp>().eq("check_id", form.getString("check_id")).in("status", new String[]{"01", "04"}));
|
||||
for (int i = 0; i < rows.size(); i++) {
|
||||
JSONObject jo = rows.getJSONObject(i);
|
||||
String status = jo.getString("status");
|
||||
StIvtCheckdtlCp dtl = jo.toJavaObject(StIvtCheckdtlCp.class);
|
||||
double base_qty = jo.getDoubleValue("base_qty");
|
||||
dtl.setSeq_no(BigDecimal.valueOf(i + 1));
|
||||
//已盘点过的明细不再处理
|
||||
if ("05,06,07,99".contains(status)) {
|
||||
iStIvtCheckdtlCpService.updateById(dtl);
|
||||
continue;
|
||||
}
|
||||
dtl.setStatus(CHECKEnum.DTL_STATUS.code("盘点中"));
|
||||
dtl.setCheck_optid(SecurityUtils.getCurrentUserId());
|
||||
dtl.setCheck_optname(SecurityUtils.getCurrentNickName());
|
||||
dtl.setCheck_time(DateUtil.now());
|
||||
double fac_qty = jo.getDoubleValue("fac_qty");
|
||||
//判断盈亏
|
||||
if (fac_qty > base_qty) {
|
||||
dtl.setCheck_result("2");
|
||||
} else if (fac_qty < base_qty) {
|
||||
dtl.setCheck_result("1");
|
||||
} else {
|
||||
dtl.setCheck_result("0");
|
||||
}
|
||||
if (StrUtil.isEmpty(jo.getString("checkdtl_id"))) {
|
||||
jo.put("checkdtl_id", IdUtil.getStringId());
|
||||
}
|
||||
iStIvtCheckdtlCpService.save(dtl);
|
||||
}
|
||||
jo_mst.setDtl_num(BigDecimal.valueOf(rows.size()));
|
||||
jo_mst.setStatus(CHECKEnum.BILL_STATUS.code("盘点中"));
|
||||
jo_mst.setIs_nok(false);
|
||||
List<StIvtCheckdtlCp> dtl_list = iStIvtCheckdtlCpService.list(new QueryWrapper<StIvtCheckdtlCp>().eq("check_id", form.getString("check_id")).ne("check_result", "0"));
|
||||
if (dtl_list.size() != 0) {
|
||||
jo_mst.setIs_nok(true);
|
||||
}
|
||||
this.updateById(jo_mst);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void confirm(JSONObject whereJson) {
|
||||
|
||||
JSONObject form = whereJson.getJSONObject("row");
|
||||
JSONArray rows = whereJson.getJSONArray("rows");
|
||||
|
||||
StIvtCheckmstCp jo_mst = this.getOne(new QueryWrapper<StIvtCheckmstCp>().eq("check_id", form.getString("check_id")).in("status", new String[]{"10", "30"}));
|
||||
if (jo_mst == null) {
|
||||
throw new BadRequestException("盘点单状态异常!");
|
||||
}
|
||||
iStIvtCheckdtlCpService.remove(new QueryWrapper<StIvtCheckdtlCp>().eq("check_id", form.getString("check_id")).in("status", new String[]{"01", "04"}));
|
||||
//定义需要需要更新的的点位集合
|
||||
HashSet<String> set = new HashSet<>();
|
||||
for (int i = 0; i < rows.size(); i++) {
|
||||
JSONObject jo = rows.getJSONObject(i);
|
||||
String status = jo.getString("status");
|
||||
StIvtCheckdtlCp dtl = jo.toJavaObject(StIvtCheckdtlCp.class);
|
||||
double base_qty = jo.getDoubleValue("base_qty");
|
||||
dtl.setSeq_no(BigDecimal.valueOf(i + 1));
|
||||
//已盘点过的明细不再处理
|
||||
if ("05,06,07,99".contains(status)) {
|
||||
iStIvtCheckdtlCpService.updateById(dtl);
|
||||
continue;
|
||||
}
|
||||
dtl.setStatus(CHECKEnum.DTL_STATUS.code("已盘点"));
|
||||
dtl.setCheck_optid(SecurityUtils.getCurrentUserId());
|
||||
dtl.setCheck_optname(SecurityUtils.getCurrentNickName());
|
||||
dtl.setCheck_time(DateUtil.now());
|
||||
double fac_qty = jo.getDoubleValue("fac_qty");
|
||||
//判断盈亏
|
||||
if (fac_qty > base_qty) {
|
||||
dtl.setCheck_result("2");
|
||||
} else if (fac_qty < base_qty) {
|
||||
dtl.setCheck_result("1");
|
||||
} else {
|
||||
dtl.setCheck_result("0");
|
||||
dtl.setStatus(CHECKEnum.DTL_STATUS.code("确认完成"));
|
||||
}
|
||||
if (StrUtil.isEmpty(jo.getString("checkdtl_id"))) {
|
||||
jo.put("checkdtl_id", IdUtil.getStringId());
|
||||
}
|
||||
iStIvtCheckdtlCpService.save(dtl);
|
||||
set.add(dtl.getStruct_id());
|
||||
}
|
||||
jo_mst.setDtl_num(BigDecimal.valueOf(rows.size()));
|
||||
|
||||
jo_mst.setIs_nok(false);
|
||||
List<StIvtCheckdtlCp> dtl_list = iStIvtCheckdtlCpService.list(new QueryWrapper<StIvtCheckdtlCp>().eq("check_id", form.getString("check_id")).ne("check_result", "0"));
|
||||
if (dtl_list.size() != 0) {
|
||||
jo_mst.setIs_nok(true);
|
||||
}
|
||||
jo_mst.setStatus(CHECKEnum.BILL_STATUS.code("盘点中"));
|
||||
List<StIvtCheckdtlCp> finish_list = iStIvtCheckdtlCpService.list(new QueryWrapper<StIvtCheckdtlCp>().eq("check_id", form.getString("check_id")).in("status", new String[]{"99", "07"}));
|
||||
//说明全部确认
|
||||
if (finish_list.size() == jo_mst.getDtl_num().intValue()) {
|
||||
iStIvtCheckdtlCpService.update(new UpdateWrapper<StIvtCheckdtlCp>().set("status", "99").eq("check_id", form.getString("check_id")));
|
||||
|
||||
jo_mst.setStatus(CHECKEnum.BILL_STATUS.code("完成"));
|
||||
jo_mst.setConfirm_optid(SecurityUtils.getCurrentUserId());
|
||||
jo_mst.setConfirm_optname(SecurityUtils.getCurrentNickName());
|
||||
jo_mst.setConfirm_time(DateUtil.now());
|
||||
//锁定起点点位、仓位
|
||||
set.forEach(struct_id -> structattrService.update(new UpdateWrapper<StIvtStructattr>().set("lock_type", "0").set("inv_code", "").eq("struct_id", struct_id)));
|
||||
}
|
||||
this.updateById(jo_mst);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void process0(JSONObject whereJson) {
|
||||
JSONObject form = whereJson.getJSONObject("form");
|
||||
JSONObject row = whereJson.getJSONObject("row");
|
||||
|
||||
StIvtCheckmstCp jo_mst = this.getOne(new QueryWrapper<StIvtCheckmstCp>().eq("check_id", form.getString("check_id")).ne("status", "99"));
|
||||
if (jo_mst == null) {
|
||||
throw new BadRequestException("盘点单状态异常!");
|
||||
}
|
||||
StIvtCheckdtlCp dtl = row.toJavaObject(StIvtCheckdtlCp.class);
|
||||
dtl.setStatus(CHECKEnum.DTL_STATUS.code("确认完成"));
|
||||
dtl.setProcess_optid(SecurityUtils.getCurrentUserId());
|
||||
dtl.setProcess_time(DateUtil.now());
|
||||
dtl.setProcess_type(CHECKEnum.PROCESS_TYPE.code("账务为准"));
|
||||
dtl.setIs_process(true);
|
||||
iStIvtCheckdtlCpService.updateById(dtl);
|
||||
List<StIvtCheckdtlCp> finish_list = iStIvtCheckdtlCpService.list(new QueryWrapper<StIvtCheckdtlCp>().eq("check_id", form.getString("check_id")).in("status", new String[]{"99", "07"}));
|
||||
//说明全部确认
|
||||
if (finish_list.size() == jo_mst.getDtl_num().intValue()) {
|
||||
iStIvtCheckdtlCpService.update(new UpdateWrapper<StIvtCheckdtlCp>().set("status", "99").eq("check_id", form.getString("check_id")));
|
||||
|
||||
jo_mst.setStatus(CHECKEnum.BILL_STATUS.code("完成"));
|
||||
jo_mst.setConfirm_optid(SecurityUtils.getCurrentUserId());
|
||||
jo_mst.setConfirm_optname(SecurityUtils.getCurrentNickName());
|
||||
jo_mst.setConfirm_time(DateUtil.now());
|
||||
//解锁起点点位、仓位
|
||||
finish_list.stream()
|
||||
.map(finish -> finish.getStruct_id())
|
||||
.distinct()
|
||||
.forEach(struct_id -> structattrService.update(new UpdateWrapper<StIvtStructattr>().set("inv_code", "").set("lock_type", "0").eq("struct_id", struct_id)));
|
||||
}
|
||||
this.updateById(jo_mst);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void process1(JSONObject whereJson) {
|
||||
JSONObject form = whereJson.getJSONObject("form");
|
||||
JSONObject row = whereJson.getJSONObject("row");
|
||||
|
||||
StIvtCheckmstCp jo_mst = this.getOne(new QueryWrapper<StIvtCheckmstCp>().eq("check_id", form.getString("check_id")).ne("status", "99"));
|
||||
StIvtCheckdtlCp dtl = row.toJavaObject(StIvtCheckdtlCp.class);
|
||||
if (jo_mst == null) {
|
||||
throw new BadRequestException("盘点单状态异常!");
|
||||
}
|
||||
|
||||
//创建损溢单
|
||||
JSONObject mol_jo = new JSONObject();
|
||||
mol_jo.put("buss_type", MLEnum.BILL_TYPE.code("盘点损溢"));
|
||||
if (row.getString("check_result").equals("1")) {
|
||||
mol_jo.put("mol_type", MLEnum.MOL_TYPE.code("损"));
|
||||
} else {
|
||||
mol_jo.put("mol_type", MLEnum.MOL_TYPE.code("溢"));
|
||||
}
|
||||
mol_jo.put("stor_id", jo_mst.getStor_id());
|
||||
mol_jo.put("remark", "盘点单:" + jo_mst.getCheck_code() + "生成的损溢单");
|
||||
|
||||
//创建明细
|
||||
JSONObject dtl_jo = new JSONObject();
|
||||
dtl_jo.put("sect_id", dtl.getSect_id());
|
||||
dtl_jo.put("material_id", dtl.getMaterial_id());
|
||||
dtl_jo.put("struct_id", dtl.getStruct_id());
|
||||
dtl_jo.put("qty_unit_id", dtl.getQty_unit_id());
|
||||
dtl_jo.put("qty_unit_name", dtl.getQty_unit_name());
|
||||
dtl_jo.put("mol_qty", row.getString("check_result").equals("1") ? NumberUtil.sub(dtl.getBase_qty(), dtl.getFac_qty()) : NumberUtil.sub(dtl.getFac_qty(), dtl.getBase_qty()));
|
||||
dtl_jo.put("source_billdtl_id", dtl.getCheckdtl_id());
|
||||
dtl_jo.put("source_bill_type", jo_mst.getCheck_type());
|
||||
dtl_jo.put("source_bill_code", jo_mst.getCheck_code());
|
||||
dtl_jo.put("source_bill_table", "ST_IVT_CheckMst_CP");
|
||||
dtl_jo.put("storagevehicle_id", dtl.getStoragevehicle_id());
|
||||
dtl_jo.put("storagevehicle_code", dtl.getStoragevehicle_code());
|
||||
JSONArray mol_rows = new JSONArray();
|
||||
mol_rows.add(dtl_jo);
|
||||
mol_jo.put("tableData", mol_rows);
|
||||
mol_jo.put("auto_confirm", "1");
|
||||
//创建损溢单
|
||||
iStIvtMoreorlessmstCpService.create(mol_jo);
|
||||
|
||||
|
||||
dtl.setStatus(CHECKEnum.DTL_STATUS.code("确认完成"));
|
||||
dtl.setProcess_optid(SecurityUtils.getCurrentUserId());
|
||||
dtl.setProcess_time(DateUtil.now());
|
||||
dtl.setProcess_type(CHECKEnum.PROCESS_TYPE.code("实盘为准"));
|
||||
dtl.setIs_process(true);
|
||||
iStIvtCheckdtlCpService.updateById(dtl);
|
||||
List<StIvtCheckdtlCp> finish_list = iStIvtCheckdtlCpService.list(new QueryWrapper<StIvtCheckdtlCp>().eq("check_id", form.getString("check_id")).in("status", new String[]{"99", "07"}));
|
||||
//说明全部确认
|
||||
if (finish_list.size() == jo_mst.getDtl_num().intValue()) {
|
||||
iStIvtCheckdtlCpService.update(new UpdateWrapper<StIvtCheckdtlCp>().set("status", "99").eq("check_id", form.getString("check_id")));
|
||||
|
||||
jo_mst.setStatus(CHECKEnum.BILL_STATUS.code("完成"));
|
||||
jo_mst.setConfirm_optid(SecurityUtils.getCurrentUserId());
|
||||
jo_mst.setConfirm_optname(SecurityUtils.getCurrentNickName());
|
||||
jo_mst.setConfirm_time(DateUtil.now());
|
||||
//解锁起点点位、仓位
|
||||
finish_list.stream()
|
||||
.map(finish -> finish.getStruct_id())
|
||||
.distinct()
|
||||
.forEach(struct_id -> structattrService.update(new UpdateWrapper<StIvtStructattr>().set("inv_code", "").set("lock_type", "0").eq("struct_id", struct_id)));
|
||||
}
|
||||
this.updateById(jo_mst);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getBucketrecord(JSONObject whereJson) {
|
||||
return mdPbBucketrecordMapper.queryAll(whereJson);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void processBox(JSONObject whereJson) {
|
||||
JSONObject form = whereJson.getJSONObject("form");
|
||||
JSONArray row = whereJson.getJSONArray("row");
|
||||
|
||||
StIvtCheckmstCp jo_mst = this.getOne(new QueryWrapper<StIvtCheckmstCp>().eq("check_id", form.getString("check_id")).ne("status", "99"));
|
||||
|
||||
StIvtCheckdtlCp dtl = iStIvtCheckdtlCpService.getById(form.getString("checkdtl_id"));
|
||||
if (jo_mst == null) {
|
||||
throw new BadRequestException("盘点单状态异常!");
|
||||
}
|
||||
|
||||
//创建损溢单
|
||||
JSONObject mol_jo = new JSONObject();
|
||||
mol_jo.put("buss_type", MLEnum.BILL_TYPE.code("盘点损溢"));
|
||||
if (dtl.getCheck_result().equals("1")) {
|
||||
mol_jo.put("mol_type", MLEnum.MOL_TYPE.code("损"));
|
||||
} else {
|
||||
mol_jo.put("mol_type", MLEnum.MOL_TYPE.code("溢"));
|
||||
}
|
||||
mol_jo.put("stor_id", jo_mst.getStor_id());
|
||||
mol_jo.put("remark", "盘点单:" + jo_mst.getCheck_code() + "生成的损溢单");
|
||||
|
||||
//创建明细
|
||||
JSONArray mol_rows = new JSONArray();
|
||||
for (int i = 0; i < row.size(); i++) {
|
||||
JSONObject json = row.getJSONObject(i);
|
||||
JSONObject dtl_jo = new JSONObject();
|
||||
dtl_jo.put("sect_id", dtl.getSect_id());
|
||||
dtl_jo.put("material_id", dtl.getMaterial_id());
|
||||
dtl_jo.put("struct_id", dtl.getStruct_id());
|
||||
dtl_jo.put("qty_unit_id", dtl.getQty_unit_id());
|
||||
dtl_jo.put("qty_unit_name", dtl.getQty_unit_name());
|
||||
dtl_jo.put("bucketunique", json.getString("bucketunique"));
|
||||
dtl_jo.put("mol_qty", dtl.getCheck_result().equals("1") ? NumberUtil.sub(json.getBigDecimal("storage_qty"), json.getBigDecimal("ivt_qty_ck")) : NumberUtil.sub(json.getBigDecimal("ivt_qty_ck"), json.getBigDecimal("storage_qty")));
|
||||
dtl_jo.put("source_billdtl_id", dtl.getCheckdtl_id());
|
||||
dtl_jo.put("source_bill_type", jo_mst.getCheck_type());
|
||||
dtl_jo.put("source_bill_code", jo_mst.getCheck_code());
|
||||
dtl_jo.put("source_bill_table", "ST_IVT_CheckMst_CP");
|
||||
dtl_jo.put("storagevehicle_id", dtl.getStoragevehicle_id());
|
||||
dtl_jo.put("storagevehicle_code", dtl.getStoragevehicle_code());
|
||||
mol_rows.add(dtl_jo);
|
||||
|
||||
}
|
||||
mol_jo.put("tableData", mol_rows);
|
||||
mol_jo.put("auto_confirm", "1");
|
||||
//创建损溢单
|
||||
iStIvtMoreorlessmstCpService.create(mol_jo);
|
||||
|
||||
dtl.setStatus(CHECKEnum.DTL_STATUS.code("确认完成"));
|
||||
dtl.setProcess_optid(SecurityUtils.getCurrentUserId());
|
||||
dtl.setProcess_time(DateUtil.now());
|
||||
dtl.setProcess_type(CHECKEnum.PROCESS_TYPE.code("实盘为准"));
|
||||
dtl.setIs_process(true);
|
||||
iStIvtCheckdtlCpService.updateById(dtl);
|
||||
List<StIvtCheckdtlCp> finish_list = iStIvtCheckdtlCpService.list(new QueryWrapper<StIvtCheckdtlCp>().eq("check_id", form.getString("check_id")).in("status", new String[]{"99", "07"}));
|
||||
//说明全部确认
|
||||
if (finish_list.size() == jo_mst.getDtl_num().intValue()) {
|
||||
iStIvtCheckdtlCpService.update(new UpdateWrapper<StIvtCheckdtlCp>().set("status", "99").eq("check_id", form.getString("check_id")));
|
||||
|
||||
jo_mst.setStatus(CHECKEnum.BILL_STATUS.code("完成"));
|
||||
jo_mst.setConfirm_optid(SecurityUtils.getCurrentUserId());
|
||||
jo_mst.setConfirm_optname(SecurityUtils.getCurrentNickName());
|
||||
jo_mst.setConfirm_time(DateUtil.now());
|
||||
//解锁起点点位、仓位
|
||||
finish_list.stream()
|
||||
.map(finish -> finish.getStruct_id())
|
||||
.distinct()
|
||||
.forEach(struct_id -> structattrService.update(new UpdateWrapper<StIvtStructattr>().set("inv_code", "").set("lock_type", "0").eq("struct_id", struct_id)));
|
||||
}
|
||||
this.updateById(jo_mst);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void delete(Long[] ids) {
|
||||
for (Long id : ids) {
|
||||
StIvtCheckmstCp dao = this.getOne(new QueryWrapper<StIvtCheckmstCp>().eq("check_id", id));
|
||||
dao.setIs_delete(true);
|
||||
|
||||
//获取所有明细下的仓位解锁
|
||||
List<StIvtCheckdtlCp> dtl_list = iStIvtCheckdtlCpService.list(new QueryWrapper<StIvtCheckdtlCp>().eq("check_id", id));
|
||||
dtl_list.stream()
|
||||
.map(dtl -> dtl.getStruct_id())
|
||||
.distinct()
|
||||
.forEach(struct_id -> structattrService.update(new UpdateWrapper<StIvtStructattr>().set("inv_code", "").set("lock_type", "0").eq("struct_id", struct_id)));
|
||||
this.updateById(dao);
|
||||
}
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private StIvtCheckmstCp packageMstForm(StIvtCheckmstCp checkmstCp, JSONObject whereJson) {
|
||||
JSONArray rows = whereJson.getJSONArray("tableData");
|
||||
// 新增
|
||||
checkmstCp.setCheck_id(IdUtil.getStringId());
|
||||
checkmstCp.setCheck_code(CodeUtil.getNewCode("PD_CODE"));
|
||||
checkmstCp.setBuss_type(whereJson.getString("check_type"));
|
||||
checkmstCp.setCheck_type(checkmstCp.getBuss_type());
|
||||
|
||||
// 获取仓库信息
|
||||
QueryWrapper<StIvtBsrealstorattr> wrapper = new QueryWrapper<>();
|
||||
wrapper.eq("stor_id", whereJson.getString("stor_id"));
|
||||
wrapper.eq("is_used", true);
|
||||
StIvtBsrealstorattr bsrealDao = stIvtBsrealstorattrService.getOne(wrapper);
|
||||
if (ObjectUtil.isEmpty(bsrealDao)) throw new BadRequestException("仓库不存在或未启用!");
|
||||
|
||||
checkmstCp.setStor_id(bsrealDao.getStor_id());
|
||||
checkmstCp.setStor_name(bsrealDao.getStor_name());
|
||||
checkmstCp.setDtl_num(BigDecimal.valueOf(rows.size()));
|
||||
checkmstCp.setCreate_mode(CHECKEnum.CREATE_MODE.code("PC产生"));
|
||||
checkmstCp.setStatus(CHECKEnum.BILL_STATUS.code("生成"));
|
||||
checkmstCp.setCreate_id(SecurityUtils.getCurrentUserId());
|
||||
checkmstCp.setCreate_name(SecurityUtils.getCurrentNickName());
|
||||
checkmstCp.setCreate_time(DateUtil.now());
|
||||
checkmstCp.setIs_delete(false);
|
||||
checkmstCp.setIs_upload(true);
|
||||
// TODO 暂时写死
|
||||
checkmstCp.setSysdeptid("111");
|
||||
checkmstCp.setSyscompanyid("111");
|
||||
|
||||
checkmstCp.setRemark(whereJson.getString("remark"));
|
||||
|
||||
return checkmstCp;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -36,6 +36,13 @@ public class StIvtStructivtYlController {
|
||||
return new ResponseEntity<>(structivtYlService.getRawIvt(query, page), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@GetMapping("/getProductIvt")
|
||||
@Log("查询可用的成品库存")
|
||||
@ApiOperation("查询可用的成品库存")
|
||||
public ResponseEntity<Object> getProductIvt(StructIvtYLQuery query, PageQuery page) {
|
||||
return new ResponseEntity<>(structivtYlService.getProductIvt(query,page), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/getStructIvt")
|
||||
@Log("查询库存")
|
||||
@ApiOperation("查询库存")
|
||||
|
||||
@@ -28,4 +28,12 @@ public interface IStIvtStructivtYlService extends IService<StIvtStructivtYl> {
|
||||
Object getRawIvt(StructIvtYLQuery query, PageQuery page);
|
||||
|
||||
List<Map> getStructIvt(StructIvtYLQuery query);
|
||||
|
||||
/**
|
||||
* 分页查询可用的成品库存
|
||||
*
|
||||
* @param query /
|
||||
* @return JSONObject
|
||||
*/
|
||||
Object getProductIvt(StructIvtYLQuery query, PageQuery page);
|
||||
}
|
||||
|
||||
@@ -22,5 +22,7 @@ public interface StIvtStructivtYlMapper extends BaseMapper<StIvtStructivtYl> {
|
||||
|
||||
List<Map> getRawIvt(@Param("query") StructIvtYLQuery query, @Param("pageQuery") PageQuery pageQuery);
|
||||
|
||||
List<Map> getProductIvt(@Param("query") StructIvtYLQuery query, @Param("pageQuery") PageQuery pageQuery);
|
||||
|
||||
List<Map> getStructIvt(@Param("query") StructIvtYLQuery query);
|
||||
}
|
||||
|
||||
@@ -37,6 +37,42 @@
|
||||
</where>
|
||||
</select>
|
||||
|
||||
<select id="getProductIvt" resultType="java.util.Map">
|
||||
SELECT
|
||||
ivt.*,
|
||||
mu.unit_name AS qty_unit_name,
|
||||
mb.material_code,
|
||||
mb.material_name,
|
||||
sa.sect_id,
|
||||
sa.sect_code,
|
||||
sa.sect_name,
|
||||
sa.struct_id,
|
||||
sa.struct_code,
|
||||
sa.struct_name,
|
||||
sa.storagevehicle_code,
|
||||
class.class_name
|
||||
FROM
|
||||
st_ivt_structivt_cp ivt
|
||||
LEFT JOIN md_me_materialbase mb ON mb.material_id = ivt.material_id
|
||||
LEFT JOIN st_ivt_structattr sa ON sa.struct_id = ivt.struct_id
|
||||
LEFT JOIN md_pb_measureunit mu ON mu.measure_unit_id = ivt.qty_unit_id
|
||||
LEFT JOIN md_pb_classstandard class ON class.class_id = mb.material_type_id
|
||||
<where>
|
||||
ivt.canuse_qty > 0
|
||||
AND
|
||||
sa.lock_type = '0'
|
||||
<if test="query.material_search != null and query.material_search != ''">
|
||||
and (mb.material_code = #{query.material_search} OR mb.material_name = #{query.material_search})
|
||||
</if>
|
||||
<if test="query.sect_id != null and query.sect_id != ''">
|
||||
and sa.sect_id = #{query.sect_id}
|
||||
</if>
|
||||
<if test="query.struct_id != null and query.struct_id != ''">
|
||||
and sa.struct_id = #{query.struct_id}
|
||||
</if>
|
||||
</where>
|
||||
</select>
|
||||
|
||||
<select id="getStructIvt" resultType="java.util.Map">
|
||||
SELECT
|
||||
ivt.*,
|
||||
|
||||
@@ -38,4 +38,13 @@ public class StIvtStructivtYlServiceImpl extends ServiceImpl<StIvtStructivtYlMap
|
||||
public List<Map> getStructIvt(StructIvtYLQuery query) {
|
||||
return this.baseMapper.getStructIvt(query);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getProductIvt(StructIvtYLQuery query, PageQuery pageQuery) {
|
||||
Page<Object> page = PageHelper.startPage(pageQuery.getPage() + 1, pageQuery.getSize());
|
||||
List<Map> mst_detail = this.baseMapper.getProductIvt(query, pageQuery);
|
||||
TableDataInfo<Map> build = TableDataInfo.build(mst_detail);
|
||||
build.setTotalElements(page.getTotal());
|
||||
return build;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,22 +11,24 @@
|
||||
>
|
||||
<el-row v-show="crud.status.cu > 0" :gutter="20">
|
||||
<el-col :span="20" style="border: 1px solid white">
|
||||
<span />
|
||||
<span/>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<span>
|
||||
<el-button icon="el-icon-check" size="mini" :loading="crud.cu === 2" type="primary" @click="crud.submitCU">保存</el-button>
|
||||
<el-button icon="el-icon-check" size="mini" :loading="crud.cu === 2" type="primary"
|
||||
@click="crud.submitCU">保存</el-button>
|
||||
<el-button icon="el-icon-close" size="mini" type="info" @click="crud.cancelCU">关闭</el-button>
|
||||
</span>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-form ref="form" style="border: 1px solid #cfe0df;margin-top: 10px;padding-top: 10px;" :inline="true" :model="form" :rules="rules" size="mini" label-width="85px" label-suffix=":">
|
||||
<el-input v-show="false" v-model="form.stor_code" placeholder="仓库编码" />
|
||||
<el-input v-show="false" v-model="form.stor_name" placeholder="仓库名称" />
|
||||
<el-form ref="form" style="border: 1px solid #cfe0df;margin-top: 10px;padding-top: 10px;" :inline="true"
|
||||
:model="form" :rules="rules" size="mini" label-width="85px" label-suffix=":">
|
||||
<el-input v-show="false" v-model="form.stor_code" placeholder="仓库编码"/>
|
||||
<el-input v-show="false" v-model="form.stor_name" placeholder="仓库名称"/>
|
||||
<el-form-item label="单据号" prop="bill_code">
|
||||
<label slot="label">单 据 号:</label>
|
||||
<el-input v-model.trim="form.bill_code" disabled placeholder="系统生成" clearable style="width: 210px" />
|
||||
<el-input v-model.trim="form.bill_code" disabled placeholder="系统生成" clearable style="width: 210px"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="仓库" prop="stor_id">
|
||||
<label slot="label">仓 库:</label>
|
||||
@@ -57,7 +59,7 @@
|
||||
:disabled="crud.status.view > 0"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in dict.ST_INV_TYPE_CK"
|
||||
v-for="item in dict.ST_INV_CK_TYPE"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
@@ -72,7 +74,7 @@
|
||||
:disabled="true"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in dict.check_bill_status"
|
||||
v-for="item in dict.CHECK_BILL_STATUS"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
@@ -81,11 +83,12 @@
|
||||
</el-form-item>
|
||||
<el-form-item label="明细数" prop="dtl_num">
|
||||
<label slot="label">明 细 数:</label>
|
||||
<el-input v-model.trim="form.dtl_num" size="mini" disabled style="width: 210px" />
|
||||
<el-input v-model.trim="form.dtl_num" size="mini" disabled style="width: 210px"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<label slot="label">备 注:</label>
|
||||
<el-input v-model.trim="form.remark" style="width: 380px;" rows="2" type="textarea" :disabled="crud.status.view > 0" />
|
||||
<el-input v-model.trim="form.remark" style="width: 380px;" rows="2" type="textarea"
|
||||
:disabled="crud.status.view > 0"/>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div class="crud-opts2">
|
||||
@@ -93,7 +96,7 @@
|
||||
<span v-if="crud.status.cu > 0" class="crud-opts-right2">
|
||||
|
||||
<!--左侧插槽-->
|
||||
<slot name="left" />
|
||||
<slot name="left"/>
|
||||
<el-button
|
||||
slot="left"
|
||||
class="filter-item"
|
||||
@@ -114,31 +117,31 @@
|
||||
border
|
||||
:header-cell-style="{background:'#f5f7fa',color:'#606266'}"
|
||||
>
|
||||
<el-table-column type="index" label="序号" width="50" align="center" />
|
||||
<el-table-column prop="status" label="状态" align="center" :formatter="bill_statusFormat" />
|
||||
<el-table-column prop="sect_name" label="盘点库区" align="center" />
|
||||
<el-table-column prop="struct_name" label="盘点货位" align="center" />
|
||||
<el-table-column show-overflow-tooltip prop="storagevehicle_code" label="载具号" />
|
||||
<el-table-column show-overflow-tooltip prop="material_code" label="物料编码" width="120" align="center" />
|
||||
<el-table-column prop="material_name" label="物料名称" align="center" min-width="120" show-overflow-tooltip />
|
||||
<el-table-column prop="base_qty" label="桶数" align="center" :formatter="crud.formatNum0" />
|
||||
<el-table-column prop="fac_qty" label="盘点桶数" align="center" :formatter="crud.formatNum0" />
|
||||
<el-table-column prop="qty_unit_name" label="计量单位" align="center" />
|
||||
<el-table-column type="index" label="序号" width="50" align="center"/>
|
||||
<el-table-column prop="sect_name" label="盘点库区" align="center"/>
|
||||
<el-table-column prop="struct_name" label="盘点货位" align="center"/>
|
||||
<el-table-column show-overflow-tooltip prop="material_code" label="物料编码" width="120" align="center"/>
|
||||
<el-table-column prop="material_name" label="物料名称" align="center" min-width="120" show-overflow-tooltip/>
|
||||
<el-table-column prop="base_qty" label="重量" align="center" :formatter="crud.formatNum0"/>
|
||||
<el-table-column v-if="crud.status.view > 0" prop="fac_qty" label="盘点重量" align="center" :formatter="crud.formatNum0"/>
|
||||
<el-table-column prop="qty_unit_name" label="计量单位" align="center"/>
|
||||
<el-table-column prop="storagevehicle_code" label="载具号" align="center"/>
|
||||
<el-table-column v-if="crud.status.cu > 0" align="center" label="操作" width="160" fixed="right">
|
||||
<template scope="scope">
|
||||
<el-button type="danger" class="filter-item" size="mini" icon="el-icon-delete" @click.native.prevent="deleteRow(scope.$index, form.tableData)" />
|
||||
<el-button type="danger" class="filter-item" size="mini" icon="el-icon-delete"
|
||||
@click.native.prevent="deleteRow(scope.$index, form.tableData)"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<AddDtl :dialog-show.sync="dtlShow" @tableChanged="tableChanged" />
|
||||
<AddDtl :dialog-show.sync="dtlShow" @tableChanged="tableChanged"/>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import CRUD, { crud, form } from '@crud/crud'
|
||||
import AddDtl from '@/views/wms/storage_manage/product/productCheck/AddDtl'
|
||||
import CRUD, {crud, form} from '@crud/crud'
|
||||
import AddDtl from '@/views/wms/storage_manage/product/productCheck/StructIvt'
|
||||
import check from '@/views/wms/storage_manage/product/productCheck/check'
|
||||
import crudStorattr from '@/api/wms/basedata/st/storattr'
|
||||
import crudStorattr from "@/views/wms/storage_manage/basedata/basedata";
|
||||
|
||||
const defaultForm = {
|
||||
check_code: '',
|
||||
@@ -154,7 +157,7 @@ const defaultForm = {
|
||||
}
|
||||
export default {
|
||||
name: 'AddDialog',
|
||||
components: { AddDtl },
|
||||
components: {AddDtl},
|
||||
mixins: [crud(), form(defaultForm)],
|
||||
props: {
|
||||
dialogShow: {
|
||||
@@ -162,7 +165,7 @@ export default {
|
||||
default: false
|
||||
}
|
||||
},
|
||||
dicts: ['check_bill_status', 'ST_INV_TYPE_CK', 'check_dtl_status'],
|
||||
dicts: ['CHECK_BILL_STATUS', 'ST_INV_CK_TYPE', 'check_dtl_status', 'product_area'],
|
||||
data() {
|
||||
return {
|
||||
dialogVisible: false,
|
||||
@@ -173,10 +176,10 @@ export default {
|
||||
storlist: [],
|
||||
rules: {
|
||||
stor_id: [
|
||||
{ required: true, message: '仓库不能为空', trigger: 'blur' }
|
||||
{required: true, message: '仓库不能为空', trigger: 'blur'}
|
||||
],
|
||||
check_type: [
|
||||
{ required: true, message: '业务类型不能为空', trigger: 'blur' }
|
||||
{required: true, message: '业务类型不能为空', trigger: 'blur'}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -191,7 +194,7 @@ export default {
|
||||
methods: {
|
||||
open() {
|
||||
// 查询原材料库的仓库
|
||||
crudStorattr.getStor({ 'is_materialstore': '1' }).then(res => {
|
||||
crudStorattr.getStor({'stor_type': '4'}).then(res => {
|
||||
this.storlist = res.content
|
||||
})
|
||||
},
|
||||
@@ -199,7 +202,7 @@ export default {
|
||||
this.$emit('AddChanged')
|
||||
},
|
||||
[CRUD.HOOK.afterToEdit]() {
|
||||
check.getOutBillDtl({ 'check_id': this.form.check_id }).then(res => {
|
||||
check.getCheckDtl({'check_id': this.form.check_id}).then(res => {
|
||||
this.form.tableData = res
|
||||
// 将明细变成不可编辑
|
||||
for (let i = 0; i < this.form.tableData.length; i++) {
|
||||
@@ -210,7 +213,7 @@ export default {
|
||||
})
|
||||
},
|
||||
[CRUD.HOOK.afterToView]() {
|
||||
check.getOutBillDtl({ 'check_id': this.form.check_id }).then(res => {
|
||||
check.getCheckDtl({'check_id': this.form.check_id}).then(res => {
|
||||
this.form.tableData = res
|
||||
// 将明细变成不可编辑
|
||||
for (let i = 0; i < this.form.tableData.length; i++) {
|
||||
@@ -220,9 +223,6 @@ export default {
|
||||
}
|
||||
})
|
||||
},
|
||||
bill_statusFormat(row) {
|
||||
return this.dict.label.check_dtl_status[row.status]
|
||||
},
|
||||
storChange(row) {
|
||||
this.storlist.forEach((item) => {
|
||||
if (item.stor_id === row) {
|
||||
@@ -249,17 +249,16 @@ export default {
|
||||
}
|
||||
}
|
||||
if (!this.flagnow) {
|
||||
item.edit = false
|
||||
item.status = '01'
|
||||
tablemap.set(item.struct_code + '间隔' + item.material_code, item)
|
||||
}
|
||||
} else {
|
||||
item.edit = false
|
||||
item.status = '01'
|
||||
tablemap.set(item.struct_code + '间隔' + item.material_code, item)
|
||||
}
|
||||
})
|
||||
for (const value of tablemap.values()) {
|
||||
value.base_qty = value.canuse_qty
|
||||
this.form.tableData.push(value)
|
||||
}
|
||||
this.form.dtl_num = this.form.tableData.length
|
||||
@@ -287,6 +286,7 @@ export default {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.crud-opts2 .crud-opts-right2 {
|
||||
margin-left: auto;
|
||||
padding: 4px 4px;
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
class="filter-item"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in dict.ST_INV_TYPE_CK"
|
||||
v-for="item in dict.ST_INV_CK_TYPE"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
@@ -53,7 +53,7 @@
|
||||
:disabled="true"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in dict.check_bill_status"
|
||||
v-for="item in dict.CHECK_BILL_STATUS"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
@@ -73,6 +73,16 @@
|
||||
<span class="crud-opts-right2">
|
||||
<!--左侧插槽-->
|
||||
<slot name="left" />
|
||||
<el-button
|
||||
slot="left"
|
||||
class="filter-item"
|
||||
type="primary"
|
||||
icon="el-icon-plus"
|
||||
size="mini"
|
||||
@click="addrow"
|
||||
>
|
||||
下发任务
|
||||
</el-button>
|
||||
<el-button
|
||||
slot="left"
|
||||
class="filter-item"
|
||||
@@ -101,8 +111,8 @@
|
||||
<el-table-column type="index" label="序号" width="50" align="center" />
|
||||
<el-table-column prop="sect_name" label="盘点库区" align="center" />
|
||||
<el-table-column prop="struct_name" label="盘点货位" align="center" />
|
||||
<el-table-column show-overflow-tooltip prop="storagevehicle_code" label="载具号" />
|
||||
<el-table-column show-overflow-tooltip prop="material_code" label="物料编码" width="190" align="center">
|
||||
<el-table-column prop="storagevehicle_code" label="载具号" align="center" />
|
||||
<el-table-column show-overflow-tooltip prop="material_code" label="物料编码" width="150" align="center">
|
||||
<template scope="scope">
|
||||
<el-input v-show="isShow(scope.$index, scope.row,1)" v-model="scope.row.material_code" disabled class="input-with-select">
|
||||
<el-button slot="append" icon="el-icon-search" @click="queryMater(scope.$index, scope.row)" />
|
||||
@@ -110,17 +120,19 @@
|
||||
<span v-show="isShow(scope.$index, scope.row,3)">{{ scope.row.material_code }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="material_name" label="物料名称" align="center" />
|
||||
<el-table-column prop="base_qty" label="桶数" :formatter="crud.formatNum0" align="center" />
|
||||
<el-table-column show-overflow-tooltip prop="fac_qty" label="盘点桶数" width="160" align="center">
|
||||
<el-table-column prop="material_name" label="物料名称" align="center" show-overflow-tooltip />
|
||||
<el-table-column prop="base_qty" label="重量" :formatter="crud.formatNum0" align="center" />
|
||||
<el-table-column show-overflow-tooltip prop="fac_qty" label="盘点重量" width="160" align="center">
|
||||
<template scope="scope">
|
||||
<el-input-number v-show="isShow(scope.$index, scope.row,2)" v-model="scope.row.fac_qty" :precision="0" :min="0" />
|
||||
<el-input-number v-show="isShow(scope.$index, scope.row,2)" v-model="scope.row.fac_qty" :precision="3" :min="0" />
|
||||
<span v-show="isShow(scope.$index, scope.row,4)">{{ scope.row.fac_qty }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="qty_unit_name" label="计量单位" align="center" />
|
||||
<el-table-column prop="check_result" label="是否异常" align="center" :formatter="check_resultFormat" />
|
||||
<el-table-column prop="status" label="状态" align="center" :formatter="bill_statusFormat" />
|
||||
<el-table-column prop="status" label="盘点状态" align="center" :formatter="bill_statusFormat" />
|
||||
<el-table-column prop="" label="盘点站台" align="center" />
|
||||
<el-table-column prop="" label="任务状态" align="center" />
|
||||
<el-table-column align="center" label="操作" width="160" fixed="right">
|
||||
<template scope="scope">
|
||||
<el-button :disabled="isCanDel(scope.$index, scope.row,1)" type="danger" class="filter-item" size="mini" icon="el-icon-delete" @click.native.prevent="deleteRow(scope.$index, tableData)" />
|
||||
@@ -135,14 +147,14 @@
|
||||
<el-button type="primary" @click="saveCheck">保存</el-button>
|
||||
<el-button type="primary" @click="submitCheck">确认</el-button>
|
||||
</span>
|
||||
<MaterDialog :dialog-show.sync="materShow" @tableChanged2="tableChanged2" />
|
||||
<MaterDialog :dialog-show.sync="materShow" @setMaterValue="tableChanged2" />
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import CRUD, { crud } from '@crud/crud'
|
||||
import check from '@/views/wms/storage_manage/product/productCheck/check'
|
||||
import crudStorattr from '@/api/wms/basedata/st/storattr'
|
||||
import crudStorattr from "@/views/wms/storage_manage/basedata/basedata";
|
||||
import MaterDialog from '@/views/wms/pub/MaterDialog'
|
||||
|
||||
export default {
|
||||
@@ -161,7 +173,7 @@ export default {
|
||||
type: Object
|
||||
}
|
||||
},
|
||||
dicts: ['check_bill_status', 'ST_INV_TYPE_CK', 'check_dtl_status', 'check_result'],
|
||||
dicts: ['CHECK_BILL_STATUS', 'ST_INV_CK_TYPE', 'CHECK_DTL_STATUS', 'check_result'],
|
||||
data() {
|
||||
return {
|
||||
dialogVisible: false,
|
||||
@@ -197,15 +209,15 @@ export default {
|
||||
methods: {
|
||||
open() {
|
||||
// 查询原材料库的仓库
|
||||
crudStorattr.getStor({ 'is_materialstore': '1' }).then(res => {
|
||||
crudStorattr.getStor({ 'stor_type': '4' }).then(res => {
|
||||
this.storlist = res.content
|
||||
})
|
||||
check.getOutBillDtl2({ 'check_id': this.form.check_id }).then(res => {
|
||||
check.getCheckDtl({ 'check_id': this.form.check_id }).then(res => {
|
||||
this.tableData = res
|
||||
// 将明细变成不可编辑
|
||||
for (let i = 0; i < this.tableData.length; i++) {
|
||||
const row = this.tableData[i]
|
||||
row.edit = false
|
||||
this.$set(row,'edit',false)
|
||||
if (row.status > '04') {
|
||||
row.edit = true
|
||||
}
|
||||
@@ -303,7 +315,7 @@ export default {
|
||||
this.form = row
|
||||
},
|
||||
bill_statusFormat(row, column) {
|
||||
return this.dict.label.check_dtl_status[row.status]
|
||||
return this.dict.label.CHECK_DTL_STATUS[row.status]
|
||||
},
|
||||
check_resultFormat(row, column) {
|
||||
return this.dict.label.check_result[row.check_result]
|
||||
@@ -313,7 +325,7 @@ export default {
|
||||
this.crud.notify('请先选中一条已存在的库存明细!', CRUD.NOTIFICATION_TYPE.INFO)
|
||||
return false
|
||||
}
|
||||
this.tableData.push({ check_id: this.form.check_id, check_code: this.form.check_code, checkdtl_id: '', sect_id: this.nowrow.sect_id, sect_name: this.nowrow.sect_name, struct_id: this.nowrow.struct_id, struct_name: this.nowrow.struct_name, storagevehicle_id: this.nowrow.storagevehicle_id, storagevehicle_code: this.nowrow.storagevehicle_code, status: '01', material_id: '', material_name: '', base_qty: '0', qty_unit_id: '42', qty_unit_name: '桶', is_down: '0', fac_qty: '', check_result: '0', edit: false })
|
||||
this.tableData.push({ check_id: this.form.check_id, check_code: this.form.check_code, checkdtl_id: '', sect_id: this.nowrow.sect_id, sect_name: this.nowrow.sect_name, struct_id: this.nowrow.struct_id, struct_name: this.nowrow.struct_name, storagevehicle_id: this.nowrow.storagevehicle_id, storagevehicle_code: this.nowrow.storagevehicle_code, status: '01', material_id: '', material_name: '', base_qty: '0', qty_unit_id: '1', qty_unit_name: 'KG', is_down: '0', fac_qty: '', check_result: '0', edit: false })
|
||||
this.form.dtl_num = this.tableData.length
|
||||
},
|
||||
async queryMater(index, row) {
|
||||
@@ -323,7 +335,7 @@ export default {
|
||||
},
|
||||
tableChanged2(row) {
|
||||
for (let i = 0; i < this.tableData.length; i++) {
|
||||
if ((this.tableData[i].material_id === row.material_id) && (this.tableData[i].storagevehicle_code === this.nowrow.storagevehicle_code) && (this.tableData[i].struct_id === this.nowrow.struct_id)) {
|
||||
if ((this.tableData[i].material_id === row.material_id) && (this.tableData[i].struct_id === this.nowrow.struct_id)) {
|
||||
this.crud.notify('不允许货位、载具、物料同时相同!', CRUD.NOTIFICATION_TYPE.INFO)
|
||||
return false
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
class="filter-item"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in dict.ST_INV_TYPE_CK"
|
||||
v-for="item in dict.ST_INV_CK_TYPE"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
@@ -53,7 +53,7 @@
|
||||
:disabled="true"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in dict.check_bill_status"
|
||||
v-for="item in dict.CHECK_BILL_STATUS"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
@@ -72,7 +72,6 @@
|
||||
<span class="role-span">盘点单明细</span>
|
||||
<span class="crud-opts-right2">
|
||||
<!--左侧插槽-->
|
||||
<slot name="left" />
|
||||
<el-button
|
||||
slot="left"
|
||||
class="filter-item"
|
||||
@@ -80,11 +79,10 @@
|
||||
icon="el-icon-plus"
|
||||
size="mini"
|
||||
:disabled="process1_flag"
|
||||
@click="process1"
|
||||
@click="openReCheck"
|
||||
>
|
||||
重新盘点
|
||||
</el-button>
|
||||
</span>
|
||||
拆箱盘点
|
||||
</el-button>
|
||||
|
||||
<el-button
|
||||
slot="left"
|
||||
@@ -97,6 +95,8 @@
|
||||
>
|
||||
账务为准
|
||||
</el-button>
|
||||
<slot name="left" />
|
||||
</span>
|
||||
|
||||
</div>
|
||||
<!--表格渲染-->
|
||||
@@ -115,21 +115,22 @@
|
||||
<el-table-column prop="struct_name" label="盘点货位" align="center" />
|
||||
<el-table-column show-overflow-tooltip prop="storagevehicle_code" label="载具号" />
|
||||
<el-table-column show-overflow-tooltip prop="material_code" label="物料编码" width="190" align="center" />
|
||||
<el-table-column prop="material_name" label="物料名称" align="center" />
|
||||
<el-table-column prop="base_qty" label="桶数" align="center" />
|
||||
<el-table-column show-overflow-tooltip prop="fac_qty" label="盘点桶数" :formatter="crud.formatNum0" width="160" align="center" />
|
||||
<el-table-column prop="material_name" label="物料名称" align="center" show-overflow-tooltip />
|
||||
<el-table-column prop="base_qty" label="重量/数量" align="center" />
|
||||
<el-table-column show-overflow-tooltip prop="fac_qty" label="盘点重量/数量" :formatter="crud.formatNum0" width="160" align="center" />
|
||||
<el-table-column prop="qty_unit_name" label="计量单位" align="center" />
|
||||
<el-table-column prop="storagevehicle_code" label="载具号" align="center" />
|
||||
<el-table-column prop="check_result" label="盘点结果" align="center" :formatter="check_resultFormat" />
|
||||
<el-table-column prop="status" label="状态" align="center" :formatter="bill_statusFormat" />
|
||||
</el-table>
|
||||
<ReCheckDialog ref="child3" @ReCheckChanged="getOutBillDtl" />
|
||||
<ReCheckDialog ref="child4" @ReCheckChanged="getOutBillDtl" />
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { crud } from '@crud/crud'
|
||||
import CRUD, { crud } from '@crud/crud'
|
||||
import check from '@/views/wms/storage_manage/product/productCheck/check'
|
||||
import crudStorattr from '@/api/wms/basedata/st/storattr'
|
||||
import crudStorattr from "@/views/wms/storage_manage/basedata/basedata";
|
||||
import ReCheckDialog from '@/views/wms/storage_manage/product/productCheck/ReCheckDialog'
|
||||
|
||||
export default {
|
||||
@@ -148,7 +149,7 @@ export default {
|
||||
type: Object
|
||||
}
|
||||
},
|
||||
dicts: ['check_bill_status', 'ST_INV_TYPE_CK', 'check_dtl_status', 'check_result'],
|
||||
dicts: ['CHECK_BILL_STATUS', 'ST_INV_CK_TYPE', 'CHECK_DTL_STATUS', 'check_result'],
|
||||
data() {
|
||||
return {
|
||||
dialogVisible: false,
|
||||
@@ -185,7 +186,7 @@ export default {
|
||||
methods: {
|
||||
open() {
|
||||
// 查询原材料库的仓库
|
||||
crudStorattr.getStor({ 'is_materialstore': '1' }).then(res => {
|
||||
crudStorattr.getStor({ 'stor_type': '4' }).then(res => {
|
||||
this.storlist = res.content
|
||||
})
|
||||
this.getOutBillDtl()
|
||||
@@ -214,25 +215,33 @@ export default {
|
||||
this.form = row
|
||||
},
|
||||
bill_statusFormat(row, column) {
|
||||
return this.dict.label.check_dtl_status[row.status]
|
||||
return this.dict.label.CHECK_DTL_STATUS[row.status]
|
||||
},
|
||||
check_resultFormat(row, column) {
|
||||
return this.dict.label.check_result[row.check_result]
|
||||
},
|
||||
process0() {
|
||||
check.process0({ 'form': this.form, 'row': this.nowrow }).then(res => {
|
||||
this.crud.notify('操作完成!', CRUD.NOTIFICATION_TYPE.SUCCESS)
|
||||
this.getOutBillDtl()
|
||||
})
|
||||
},
|
||||
process1() {
|
||||
if (this.nowrow !== null) {
|
||||
this.$refs.child3.setReForm(this.nowrow)
|
||||
}
|
||||
check.process1({ 'form': this.form, 'row': this.nowrow }).then(res => {
|
||||
this.crud.notify('操作完成!', CRUD.NOTIFICATION_TYPE.SUCCESS)
|
||||
this.getOutBillDtl()
|
||||
})
|
||||
},
|
||||
getOutBillDtl() {
|
||||
check.getOutBillDtl({ 'check_id': this.form.check_id }).then(res => {
|
||||
check.getCheckDtl({ 'check_id': this.form.check_id,'check_result': '-1'}).then(res => {
|
||||
this.tableData = res
|
||||
})
|
||||
},
|
||||
openReCheck() {
|
||||
if (!this.nowrow) {
|
||||
this.crud.notify('请选择一条明细!', CRUD.NOTIFICATION_TYPE.INFO)
|
||||
}
|
||||
this.$refs.child4.setReFormCheck(this.nowrow)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
<!--suppress ALL -->
|
||||
<template>
|
||||
<el-dialog
|
||||
title="重新盘点"
|
||||
title="拆箱盘点"
|
||||
append-to-body
|
||||
fullscreen
|
||||
:visible.sync="dialogVisible"
|
||||
@@ -22,6 +21,9 @@
|
||||
<el-form-item label="明细数" prop="dtl_num">
|
||||
<el-input v-model.trim="form.dtl_num" style="width: 200px" :disabled="true" />
|
||||
</el-form-item>
|
||||
<el-form-item label="盘点重量" prop="dtl_num">
|
||||
<el-input v-model.trim="form.fac_qty" style="width: 200px" :disabled="true" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
<div class="crud-opts2">
|
||||
@@ -56,67 +58,17 @@
|
||||
>
|
||||
<el-table-column type="index" label="序号" width="50" align="center" />
|
||||
<el-table-column show-overflow-tooltip prop="storagevehicle_code" label="载具号" />
|
||||
<el-table-column show-overflow-tooltip prop="bucketunique" label="桶号" width="190" align="center">
|
||||
<el-table-column show-overflow-tooltip prop="bucketunique" label="箱号" width="190" align="center">
|
||||
<template scope="scope">
|
||||
<el-input v-show="isCanDel(scope.$index, scope.row,'3')" v-model="scope.row.bucketunique" disabled class="input-with-select">
|
||||
<el-button slot="append" icon="el-icon-search" @click="queryBucket(scope.$index, scope.row)" />
|
||||
<el-input v-show="isCanDel(scope.$index, scope.row,'3')" v-model="scope.row.bucketunique" class="input-with-select">
|
||||
<!-- <el-button slot="append" icon="el-icon-search" @click="queryBucket(scope.$index, scope.row)" />-->
|
||||
</el-input>
|
||||
<span v-show="isCanDel(scope.$index, scope.row,'2')">{{ scope.row.bucketunique }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="material_code" label="物料编码" align="center" />
|
||||
<el-table-column prop="material_name" label="物料名称" align="center" />
|
||||
<el-table-column prop="quality_scode" label="品质类型" align="center" width="110px">
|
||||
<template slot-scope="scope">
|
||||
<el-select
|
||||
v-model="scope.row.quality_scode"
|
||||
class="filter-item"
|
||||
disabled
|
||||
>
|
||||
<el-option
|
||||
v-for="item in dict.ST_QUALITY_SCODE"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="ivt_level" label="库存等级" align="center" width="100px">
|
||||
<template slot-scope="scope">
|
||||
<el-select
|
||||
v-model="scope.row.ivt_level"
|
||||
class="filter-item"
|
||||
disabled
|
||||
>
|
||||
<el-option
|
||||
v-for="item in dict.ST_IVT_LEVEL"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="is_active" label="是否可用" align="center" width="110px">
|
||||
<template slot-scope="scope">
|
||||
<el-select
|
||||
v-model="scope.row.is_active"
|
||||
class="filter-item"
|
||||
disabled
|
||||
>
|
||||
<el-option
|
||||
v-for="item in dict.is_used"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="pcsn" label="批次" align="center" />
|
||||
<el-table-column prop="ivt_qty" label="库存重量" :formatter="crud.formatNum3" align="center" />
|
||||
<el-table-column prop="material_name" label="物料名称" align="center" show-overflow-tooltip />
|
||||
<el-table-column prop="storage_qty" label="库存重量" :formatter="crud.formatNum3" align="center" />
|
||||
<el-table-column show-overflow-tooltip prop="ivt_qty_ck" label="盘点重量" width="160" align="center">
|
||||
<template scope="scope">
|
||||
<el-input-number v-show="!scope.row.edit" v-model="scope.row.ivt_qty_ck" :precision="3" :min="0" />
|
||||
@@ -126,7 +78,7 @@
|
||||
<el-table-column prop="qty_unit_name" label="计量单位" align="center" />
|
||||
<el-table-column align="center" label="操作" width="160" fixed="right">
|
||||
<template scope="scope">
|
||||
<el-button :disabled="scope.row.new_edit" type="danger" class="filter-item" size="mini" icon="el-icon-delete" @click.native.prevent="deleteRow(scope.$index, tableData)" />
|
||||
<el-button :disabled="scope.row.edit" type="danger" class="filter-item" size="mini" icon="el-icon-delete" @click.native.prevent="deleteRow(scope.$index, tableData)" />
|
||||
<el-button v-show="!scope.row.edit" type="primary" class="filter-item" size="mini" icon="el-icon-edit" @click="handleEdit(scope.$index, scope.row)">编辑</el-button>
|
||||
<el-button v-show="scope.row.edit" type="success" class="filter-item" size="mini" icon="el-icon-check" @click="handleEdit(scope.$index, scope.row)">完成</el-button>
|
||||
</template>
|
||||
@@ -138,7 +90,7 @@
|
||||
<el-button type="primary" @click="process1">确认</el-button>
|
||||
</span>
|
||||
<MaterDialog :dialog-show.sync="materShow" @tableChanged2="tableChanged2" />
|
||||
<BucketDialog :dialog-show.sync="bucketShow" @bucketChange="tableChanged2" />
|
||||
<!-- <BucketDialog :dialog-show.sync="bucketShow" @bucketChange="tableChanged2" />-->
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
@@ -150,7 +102,7 @@ import MaterDialog from '@/views/wms/pub/MaterDialog'
|
||||
|
||||
export default {
|
||||
name: 'ReCheckDialog',
|
||||
components: { MaterDialog, BucketDialog },
|
||||
components: { MaterDialog },
|
||||
mixins: [crud()],
|
||||
props: {
|
||||
dialogShow: {
|
||||
@@ -188,12 +140,13 @@ export default {
|
||||
},
|
||||
methods: {
|
||||
open() {
|
||||
check.getOutBillDis({ 'storagevehicle_code': this.form.storagevehicle_code }).then(res => {
|
||||
check.getBucketrecord({ 'storagevehicle_code': this.form.storagevehicle_code, 'status': '3' }).then(res => {
|
||||
this.tableData = res
|
||||
// 将明细变成不可编辑
|
||||
for (let i = 0; i < this.tableData.length; i++) {
|
||||
const row = this.tableData[i]
|
||||
row.new_edit = true
|
||||
this.$set(row,'edit',false)
|
||||
row.new_edit = false
|
||||
this.tableData.splice(i, 1, row)
|
||||
}
|
||||
this.form.dtl_num = this.tableData.length
|
||||
@@ -205,13 +158,15 @@ export default {
|
||||
handleCurrentChange(current) {
|
||||
if (current !== null) {
|
||||
this.nowrow = current
|
||||
this.add_flag = false
|
||||
if (this.form.check_result !== '1') {
|
||||
this.add_flag = false
|
||||
}
|
||||
} else {
|
||||
this.nowrow = null
|
||||
this.add_flag = true
|
||||
}
|
||||
},
|
||||
setReForm(row) {
|
||||
setReFormCheck(row) {
|
||||
this.dialogVisible = true
|
||||
this.form = row
|
||||
},
|
||||
@@ -220,7 +175,7 @@ export default {
|
||||
this.crud.notify('请先选中一条已存在的盘点明细!', CRUD.NOTIFICATION_TYPE.INFO)
|
||||
return false
|
||||
}
|
||||
this.tableData.push({ bucketunique: '', storagevehicle_id: this.nowrow.storagevehicle_id, storagevehicle_type: this.nowrow.storagevehicle_type, storagevehicle_code: this.nowrow.storagevehicle_code, material_id: '', material_name: '', ivt_qty: '0', qty_unit_id: '', qty_unit_name: '', pcsn: '', quality_scode: '00', ivt_level: '01', is_active: '1', ivt_qty_ck: '0', edit: false, new_edit: false })
|
||||
this.tableData.push({ bucketunique: '', storagevehicle_id: this.nowrow.storagevehicle_id, storagevehicle_type: this.nowrow.storagevehicle_type, storagevehicle_code: this.nowrow.storagevehicle_code, material_id: this.nowrow.material_id, material_name: this.nowrow.material_name,material_code: this.nowrow.material_code, ivt_qty: '0', qty_unit_id: '', qty_unit_name: '', pcsn: '', quality_scode: '00', ivt_level: '01', is_active: '1', ivt_qty_ck: '0', edit: false, new_edit: false })
|
||||
this.form.dtl_num = this.tableData.length
|
||||
},
|
||||
async queryMater(index, row) {
|
||||
@@ -283,8 +238,8 @@ export default {
|
||||
handleEdit(index, row) {
|
||||
// 判断是否可以关闭编辑状态
|
||||
if (!row.edit) {
|
||||
const num = parseFloat(row.ivt_qty)
|
||||
const fac_qty = parseFloat(row.ivt_qty_ck)
|
||||
const num = parseFloat(row.storage_qty)
|
||||
const fac_qty = parseFloat(row.storage_qty)
|
||||
if (num <= 0 && fac_qty <= 0) {
|
||||
this.crud.notify('不允许新增明细,盘点数量为0!', CRUD.NOTIFICATION_TYPE.INFO)
|
||||
return false
|
||||
@@ -293,19 +248,22 @@ export default {
|
||||
this.crud.notify('物料不可为空!', CRUD.NOTIFICATION_TYPE.INFO)
|
||||
return false
|
||||
}
|
||||
if (!row.pcsn) {
|
||||
this.crud.notify('物料批次不可为空!', CRUD.NOTIFICATION_TYPE.INFO)
|
||||
return false
|
||||
}
|
||||
if (!row.bucketunique) {
|
||||
this.crud.notify('桶号不可为空!', CRUD.NOTIFICATION_TYPE.INFO)
|
||||
return false
|
||||
}
|
||||
let qty = 0
|
||||
for (let i = 0; i < this.tableData.length; i++) {
|
||||
if ((this.tableData[i].bucketunique === row.bucketunique) && (index !== i)) {
|
||||
this.crud.notify('不允许桶号同时相同!', CRUD.NOTIFICATION_TYPE.INFO)
|
||||
return false
|
||||
}
|
||||
qty = parseFloat(this.tableData[i].ivt_qty_ck) + parseFloat(qty)
|
||||
}
|
||||
|
||||
if (qty > parseFloat(this.form.fac_qty) ) {
|
||||
this.crud.notify('不允许大于盘点重量!', CRUD.NOTIFICATION_TYPE.INFO)
|
||||
return false
|
||||
}
|
||||
}
|
||||
row.edit = !row.edit
|
||||
@@ -315,7 +273,7 @@ export default {
|
||||
rows.splice(index, 1)
|
||||
this.nowindex = ''
|
||||
this.nowrow = null
|
||||
this.form.detail_count = this.tableData.length
|
||||
this.form.dtl_num = this.tableData.length
|
||||
},
|
||||
process1() {
|
||||
if (this.tableData.length === 0) {
|
||||
@@ -328,7 +286,8 @@ export default {
|
||||
return false
|
||||
}
|
||||
}
|
||||
check.process1({ 'row': this.form, 'rows': this.tableData }).then(res => {
|
||||
check.processBox({ 'form': this.form, 'row': this.tableData }).then(res => {
|
||||
this.crud.notify('操作成功', CRUD.NOTIFICATION_TYPE.SUCCESS)
|
||||
this.dialogVisible = false
|
||||
})
|
||||
}
|
||||
|
||||
@@ -19,12 +19,15 @@
|
||||
label-width="80px"
|
||||
label-suffix=":"
|
||||
>
|
||||
<el-form-item label="日期">
|
||||
<date-range-picker v-model="query.createTime" class="date-item" value-format="yyyy-MM-dd"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="库区/货位">
|
||||
<el-input
|
||||
v-model="query.bill_code"
|
||||
clearable
|
||||
size="mini"
|
||||
placeholder="库区/货位"
|
||||
placeholder="单据号"
|
||||
style="width: 200px;"
|
||||
class="filter-item"
|
||||
@keyup.enter.native="crud.toQuery"
|
||||
@@ -42,11 +45,11 @@
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<rrOperation />
|
||||
<rrOperation/>
|
||||
</el-form>
|
||||
</div>
|
||||
<!--如果想在工具栏加入更多按钮,可以使用插槽方式, slot = 'left' or 'right'-->
|
||||
<crudOperation />
|
||||
<crudOperation/>
|
||||
<!--表格渲染-->
|
||||
<el-table
|
||||
ref="multipleTable"
|
||||
@@ -55,17 +58,18 @@
|
||||
style="width: 100%;"
|
||||
@selection-change="crud.selectionChangeHandler"
|
||||
>
|
||||
<el-table-column type="selection" width="55" />
|
||||
<el-table-column show-overflow-tooltip width="100" prop="sect_code" label="库区" />
|
||||
<el-table-column show-overflow-tooltip width="150" prop="struct_name" label="货位" />
|
||||
<el-table-column show-overflow-tooltip prop="material_code" width="100" label="物料编号" />
|
||||
<el-table-column show-overflow-tooltip width="300" prop="material_name" label="物料名称" />
|
||||
<el-table-column show-overflow-tooltip width="150" prop="canuse_qty" label="数量(个)" />
|
||||
<el-table-column show-overflow-tooltip width="100" prop="unit_weight" label="单重" />
|
||||
<el-table-column show-overflow-tooltip prop="storagevehicle_code" label="载具号" />
|
||||
<el-table-column type="selection" width="55"/>
|
||||
<el-table-column show-overflow-tooltip width="150" prop="sect_code" label="库区"/>
|
||||
<el-table-column show-overflow-tooltip width="150" prop="struct_name" label="货位"/>
|
||||
<el-table-column show-overflow-tooltip prop="material_code" width="250" label="物料编号"/>
|
||||
<el-table-column show-overflow-tooltip width="100" prop="material_name" label="物料名称"/>
|
||||
<el-table-column show-overflow-tooltip width="150" prop="class_name" label="物料类别"/>
|
||||
<el-table-column show-overflow-tooltip width="150" prop="canuse_qty" label="重量"/>
|
||||
<el-table-column show-overflow-tooltip prop="qty_unit_name" label="重量单位"/>
|
||||
<el-table-column show-overflow-tooltip prop="storagevehicle_code" label="载具号"/>
|
||||
</el-table>
|
||||
<!--分页组件-->
|
||||
<pagination />
|
||||
<pagination/>
|
||||
</div>
|
||||
|
||||
<span slot="footer" class="dialog-footer">
|
||||
@@ -77,21 +81,20 @@
|
||||
|
||||
<script>
|
||||
|
||||
import CRUD, { crud, header, presenter } from '@crud/crud'
|
||||
import CRUD, {crud, header, presenter} from '@crud/crud'
|
||||
import rrOperation from '@crud/RR.operation'
|
||||
import crudOperation from '@crud/CRUD.operation'
|
||||
import pagination from '@crud/Pagination'
|
||||
import DateRangePicker from '@/components/DateRangePicker/index'
|
||||
import crudProductIn from '@/views/wms/storage_manage/rawproduct/rawProductIn/rawproductin'
|
||||
|
||||
const start = new Date()
|
||||
export default {
|
||||
name: 'AddDtl',
|
||||
components: { crudOperation, rrOperation, pagination, DateRangePicker },
|
||||
components: {crudOperation, rrOperation, pagination, DateRangePicker},
|
||||
cruds() {
|
||||
return CRUD({
|
||||
title: '半成品可用库存',
|
||||
url: '/api/bcp/getBcpIvt',
|
||||
title: '成品可用库存',
|
||||
url: '/api/stIvtStructivtYl/getProductIvt',
|
||||
crudMethod: {},
|
||||
optShow: {
|
||||
reset: true
|
||||
@@ -120,7 +123,7 @@ export default {
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
objectSpanMethod({ row, column, rowIndex, columnIndex }) {
|
||||
objectSpanMethod({row, column, rowIndex, columnIndex}) {
|
||||
if (columnIndex === 0) {
|
||||
if (rowIndex % 2 === 0) {
|
||||
return {
|
||||
@@ -2,7 +2,7 @@ import request from '@/utils/request'
|
||||
|
||||
export function add(data) {
|
||||
return request({
|
||||
url: 'api/check',
|
||||
url: 'api/stIvtCheckmstCp',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
@@ -10,57 +10,62 @@ export function add(data) {
|
||||
|
||||
export function del(ids) {
|
||||
return request({
|
||||
url: 'api/check/',
|
||||
method: 'delete',
|
||||
url: 'api/stIvtCheckmstCp/delete',
|
||||
method: 'post',
|
||||
data: ids
|
||||
})
|
||||
}
|
||||
|
||||
export function edit(data) {
|
||||
return request({
|
||||
url: 'api/check',
|
||||
method: 'put',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export function getOutBillDtl(params) {
|
||||
return request({
|
||||
url: '/api/check/getOutBillDtl',
|
||||
method: 'get',
|
||||
params
|
||||
})
|
||||
}
|
||||
export function getOutBillDtl2(params) {
|
||||
return request({
|
||||
url: '/api/check/getOutBillDtl2',
|
||||
method: 'get',
|
||||
params
|
||||
})
|
||||
}
|
||||
export function getOutBillDis(params) {
|
||||
return request({
|
||||
url: '/api/check/getOutBillDis',
|
||||
method: 'get',
|
||||
params
|
||||
})
|
||||
}
|
||||
export function getInvTypes() {
|
||||
return request({
|
||||
url: '/api/check/getInvTypes',
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
export function insertDtl(data) {
|
||||
return request({
|
||||
url: '/api/check/insertDtl',
|
||||
url: 'api/stIvtCheckmstCp/update',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export function getCheckDtl(data) {
|
||||
return request({
|
||||
url: '/api/stIvtCheckmstCp/getCheckDtl',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export function getOutBillDtl2(params) {
|
||||
return request({
|
||||
url: '/api/stIvtCheckmstCp/getOutBillDtl2',
|
||||
method: 'get',
|
||||
params
|
||||
})
|
||||
}
|
||||
|
||||
export function getOutBillDis(params) {
|
||||
return request({
|
||||
url: '/api/stIvtCheckmstCp/getOutBillDis',
|
||||
method: 'get',
|
||||
params
|
||||
})
|
||||
}
|
||||
|
||||
export function getInvTypes() {
|
||||
return request({
|
||||
url: '/api/stIvtCheckmstCp/getInvTypes',
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
|
||||
export function insertDtl(data) {
|
||||
return request({
|
||||
url: '/api/stIvtCheckmstCp/insertDtl',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export function getStructIvt(params) {
|
||||
return request({
|
||||
url: '/api/check/getStructIvt',
|
||||
url: '/api/stIvtCheckmstCp/getStructIvt',
|
||||
method: 'get',
|
||||
params
|
||||
})
|
||||
@@ -68,37 +73,73 @@ export function getStructIvt(params) {
|
||||
|
||||
export function confirm(data) {
|
||||
return request({
|
||||
url: '/api/check/confirm',
|
||||
url: '/api/stIvtCheckmstCp/confirm',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export function handdown(data) {
|
||||
return request({
|
||||
url: '/api/check/handdown',
|
||||
url: '/api/stIvtCheckmstCp/handdown',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export function saveCheck(data) {
|
||||
return request({
|
||||
url: '/api/check/saveCheck',
|
||||
url: '/api/stIvtCheckmstCp/saveCheck',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export function process0(data) {
|
||||
return request({
|
||||
url: '/api/check/process0',
|
||||
url: '/api/stIvtCheckmstCp/process0',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export function process1(data) {
|
||||
return request({
|
||||
url: '/api/check/process1',
|
||||
url: '/api/stIvtCheckmstCp/process1',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
export default { add, edit, del, getOutBillDtl, getStructIvt, getOutBillDtl2, confirm, getInvTypes, saveCheck, process0, getOutBillDis, process1 }
|
||||
|
||||
export function getBucketrecord(data) {
|
||||
return request({
|
||||
url: '/api/stIvtCheckmstCp/getBucketrecord',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export function processBox(data) {
|
||||
return request({
|
||||
url: '/api/stIvtCheckmstCp/processBox',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export default {
|
||||
add,
|
||||
edit,
|
||||
del,
|
||||
getCheckDtl,
|
||||
getStructIvt,
|
||||
getOutBillDtl2,
|
||||
confirm,
|
||||
getInvTypes,
|
||||
saveCheck,
|
||||
process0,
|
||||
getOutBillDis,
|
||||
process1,
|
||||
getBucketrecord,
|
||||
processBox
|
||||
}
|
||||
|
||||
@@ -78,7 +78,7 @@
|
||||
@change="crud.toQuery"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in dict.check_bill_status"
|
||||
v-for="item in dict.CHECK_BILL_STATUS"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
@@ -97,14 +97,14 @@
|
||||
@change="crud.toQuery"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in dict.ST_INV_TYPE_CK"
|
||||
v-for="item in dict.ST_INV_CK_TYPE"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<rrOperation />
|
||||
<rrOperation/>
|
||||
</el-form>
|
||||
</div>
|
||||
<!--如果想在工具栏加入更多按钮,可以使用插槽方式, slot = 'left' or 'right'-->
|
||||
@@ -173,32 +173,32 @@
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column :selectable="checkboxT" type="selection" width="55" />
|
||||
<el-table-column prop="check_code" min-width="130" label="订单编码">
|
||||
<el-table-column :selectable="checkboxT" type="selection" width="55"/>
|
||||
<el-table-column prop="check_code" min-width="130" label="单据号">
|
||||
<template slot-scope="scope">
|
||||
<el-link type="warning" @click="crud.toView(scope.row)">{{ scope.row.check_code }}</el-link>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column :formatter="stateFormat" min-width="100" prop="status" label="单据状态" />
|
||||
<el-table-column prop="stor_name" label="仓库" min-width="100" />
|
||||
<el-table-column prop="check_type" :formatter="bill_typeFormat" min-width="100" label="业务类型" />
|
||||
<el-table-column prop="is_nok" :formatter="is_nokFormat" min-width="100" label="盘点状态" />
|
||||
<el-table-column :formatter="create_modeFormat" prop="create_mode" label="生成方式" min-width="100" />
|
||||
<el-table-column label="明细数" align="center" prop="dtl_num" min-width="100" />
|
||||
<el-table-column prop="input_time" min-width="135" label="创建日期" />
|
||||
<el-table-column :formatter="stateFormat" min-width="100" prop="status" label="单据状态"/>
|
||||
<el-table-column prop="stor_name" label="仓库" min-width="100"/>
|
||||
<el-table-column prop="check_type" :formatter="bill_typeFormat" min-width="100" label="业务类型"/>
|
||||
<el-table-column prop="is_nok" :formatter="is_nokFormat" min-width="100" label="盘点状态"/>
|
||||
<el-table-column :formatter="create_modeFormat" prop="create_mode" label="生成方式" min-width="100"/>
|
||||
<el-table-column label="明细数" align="center" prop="dtl_num" min-width="100"/>
|
||||
<el-table-column prop="create_time" min-width="135" label="创建日期"/>
|
||||
</el-table>
|
||||
<!--分页组件-->
|
||||
<pagination />
|
||||
<pagination/>
|
||||
</div>
|
||||
<AddDialog @AddChanged="querytable" />
|
||||
<CheckDialog ref="child" @AddChanged="querytable" />
|
||||
<ProcessDialog ref="child2" @AddChanged="querytable" />
|
||||
<AddDialog @AddChanged="querytable"/>
|
||||
<CheckDialog ref="child" @AddChanged="querytable"/>
|
||||
<ProcessDialog ref="child2" @AddChanged="querytable"/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import check from '@/views/wms/storage_manage/product/productCheck/check'
|
||||
import CRUD, { crud, header, presenter } from '@crud/crud'
|
||||
import CRUD, {crud, header, presenter} from '@crud/crud'
|
||||
import rrOperation from '@crud/RR.operation'
|
||||
import crudOperation from '@crud/CRUD.operation'
|
||||
import udOperation from '@crud/UD.operation'
|
||||
@@ -206,31 +206,33 @@ import pagination from '@crud/Pagination'
|
||||
import AddDialog from '@/views/wms/storage_manage/product/productCheck/AddDialog'
|
||||
import CheckDialog from '@/views/wms/storage_manage/product/productCheck/CheckDialog'
|
||||
import ProcessDialog from '@/views/wms/storage_manage/product/productCheck/ProcessDialog'
|
||||
import crudStorattr from '@/api/wms/basedata/st/storattr'
|
||||
import { download } from '@/api/data'
|
||||
import { downloadFile } from '@/utils'
|
||||
import crudStorattr from "@/views/wms/storage_manage/basedata/basedata";
|
||||
import {download} from '@/api/data'
|
||||
import {downloadFile} from '@/utils'
|
||||
|
||||
export default {
|
||||
name: 'Check',
|
||||
components: { CheckDialog, AddDialog, crudOperation, rrOperation, udOperation, pagination, ProcessDialog },
|
||||
components: {CheckDialog, AddDialog, crudOperation, rrOperation, udOperation, pagination, ProcessDialog},
|
||||
cruds() {
|
||||
return CRUD({ title: '用户',
|
||||
return CRUD({
|
||||
title: '用户',
|
||||
props: {
|
||||
// 每页数据条数
|
||||
size: 20
|
||||
},
|
||||
idField: 'check_id', url: 'api/check', crudMethod: { ...check },
|
||||
idField: 'check_id', url: 'api/stIvtCheckmstCp', crudMethod: {...check},
|
||||
optShow: {
|
||||
add: true,
|
||||
edit: false,
|
||||
del: false,
|
||||
reset: true,
|
||||
download: false
|
||||
}})
|
||||
}
|
||||
})
|
||||
},
|
||||
mixins: [presenter(), header(), crud()],
|
||||
// 数据字典
|
||||
dicts: ['check_bill_status', 'ST_CREATE_MODE', 'ST_INV_TYPE_CK'],
|
||||
dicts: ['CHECK_BILL_STATUS', 'ST_CREATE_MODE', 'ST_INV_CK_TYPE'],
|
||||
data() {
|
||||
return {
|
||||
height: document.documentElement.clientHeight - 180 + 'px;',
|
||||
@@ -246,14 +248,14 @@ export default {
|
||||
storlist: []
|
||||
}
|
||||
},
|
||||
mounted: function() {
|
||||
mounted: function () {
|
||||
const that = this
|
||||
window.onresize = function temp() {
|
||||
that.height = document.documentElement.clientHeight - 180 + 'px;'
|
||||
}
|
||||
},
|
||||
created() {
|
||||
crudStorattr.getStor({ 'is_materialstore': '1' }).then(res => {
|
||||
crudStorattr.getStor({'stor_type': '4'}).then(res => {
|
||||
this.storlist = res.content
|
||||
})
|
||||
},
|
||||
@@ -272,7 +274,7 @@ export default {
|
||||
this.buttonChange(row)
|
||||
} else if (val.length === 1) {
|
||||
this.buttonChange(row)
|
||||
}else{
|
||||
} else {
|
||||
this.handleCurrentChange(null)
|
||||
}
|
||||
},
|
||||
@@ -289,7 +291,7 @@ export default {
|
||||
} else {
|
||||
this.check_flag = true
|
||||
}
|
||||
if (current.status === '30' && current.is_nok === '1') {
|
||||
if (current.status === '30' && current.is_nok) {
|
||||
this.confirm_flag = false
|
||||
} else {
|
||||
this.confirm_flag = true
|
||||
@@ -297,16 +299,16 @@ export default {
|
||||
}
|
||||
},
|
||||
stateFormat(row) {
|
||||
return this.dict.label.check_bill_status[row.status]
|
||||
return this.dict.label.CHECK_BILL_STATUS[row.status]
|
||||
},
|
||||
bill_typeFormat(row) {
|
||||
return this.dict.label.ST_INV_TYPE_CK[row.check_type]
|
||||
return this.dict.label.ST_INV_CK_TYPE[row.check_type]
|
||||
},
|
||||
create_modeFormat(row) {
|
||||
return this.dict.label.ST_CREATE_MODE[row.create_mode]
|
||||
},
|
||||
is_nokFormat(row) {
|
||||
if (row.is_nok === '1') {
|
||||
if (row.is_nok) {
|
||||
return '异常'
|
||||
} else {
|
||||
return '正常'
|
||||
@@ -336,7 +338,7 @@ export default {
|
||||
downdtl() {
|
||||
if (this.currentRow !== null) {
|
||||
crud.downloadLoading = true
|
||||
download('/api/check/download', { check_id: this.currentRow.check_id }).then(result => {
|
||||
download('/api/check/download', {check_id: this.currentRow.check_id}).then(result => {
|
||||
downloadFile(result, this.currentRow.check_code + '盘点数据', 'xlsx')
|
||||
crud.downloadLoading = false
|
||||
}).catch(() => {
|
||||
|
||||
@@ -147,7 +147,7 @@
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column :formatter="stateFormat" min-width="100" prop="status" label="单据状态" />
|
||||
<el-table-column label="备注" align="center" min-width="100" prop="remark" />
|
||||
<el-table-column label="备注" show-overflow-tooltip align="center" min-width="100" prop="remark" />
|
||||
<el-table-column prop="create_mode" min-width="100" :formatter="create_modeFormat" label="生成方式" />
|
||||
<el-table-column label="制单人" align="center" min-width="100" prop="create_name" />
|
||||
<el-table-column label="制单时间" align="center" prop="create_time" min-width="150" />
|
||||
|
||||
Reference in New Issue
Block a user