Commit cbcf213d20c3474fda535d6e77d76ae940cd9fce

Authored by pengcheng
2 parents 4535bb1a 2d5ea1e8

Merge branch 'develop' of http://172.16.29.40:8010/wms/wms2 into develop

src/main/java/com/huaheng/api/wcs/service/overrideHandle/OverrideHandleServiceImpl.java
@@ -4,10 +4,13 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -4,10 +4,13 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
4 import com.baomidou.mybatisplus.core.toolkit.Wrappers; 4 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
5 import com.huaheng.api.wcs.domain.TaskFinishDomain; 5 import com.huaheng.api.wcs.domain.TaskFinishDomain;
6 import com.huaheng.api.wcs.domain.WcsTask; 6 import com.huaheng.api.wcs.domain.WcsTask;
  7 +import com.huaheng.api.wcs.service.warecellAllocation.WarecellAllocationService;
7 import com.huaheng.common.exception.service.ServiceException; 8 import com.huaheng.common.exception.service.ServiceException;
8 import com.huaheng.common.utils.StringUtils; 9 import com.huaheng.common.utils.StringUtils;
9 import com.huaheng.common.utils.security.ShiroUtils; 10 import com.huaheng.common.utils.security.ShiroUtils;
10 import com.huaheng.framework.web.domain.AjaxResult; 11 import com.huaheng.framework.web.domain.AjaxResult;
  12 +import com.huaheng.pc.config.FilterConfigDetail.domain.FilterConfigDetail;
  13 +import com.huaheng.pc.config.FilterConfigDetail.service.FilterConfigDetailService;
11 import com.huaheng.pc.config.location.domain.Location; 14 import com.huaheng.pc.config.location.domain.Location;
12 import com.huaheng.pc.config.location.service.LocationService; 15 import com.huaheng.pc.config.location.service.LocationService;
13 import com.huaheng.pc.receipt.receiptContainerDetail.domain.ReceiptContainerDetail; 16 import com.huaheng.pc.receipt.receiptContainerDetail.domain.ReceiptContainerDetail;
@@ -22,6 +25,7 @@ import org.springframework.beans.factory.annotation.Autowired; @@ -22,6 +25,7 @@ import org.springframework.beans.factory.annotation.Autowired;
22 import org.springframework.stereotype.Service; 25 import org.springframework.stereotype.Service;
23 import org.springframework.transaction.annotation.Transactional; 26 import org.springframework.transaction.annotation.Transactional;
24 27
  28 +import javax.annotation.Resource;
25 import java.util.ArrayList; 29 import java.util.ArrayList;
26 import java.util.List; 30 import java.util.List;
27 31
@@ -39,6 +43,10 @@ public class OverrideHandleServiceImpl implements OverrideHandleService { @@ -39,6 +43,10 @@ public class OverrideHandleServiceImpl implements OverrideHandleService {
39 private ReceiptContainerHeaderService receiptContainerHeaderService; 43 private ReceiptContainerHeaderService receiptContainerHeaderService;
40 @Autowired 44 @Autowired
41 private ReceiptContainerDetailService receiptContainerDetailService; 45 private ReceiptContainerDetailService receiptContainerDetailService;
  46 + @Resource
  47 + private WarecellAllocationService warecellAllocationService;
  48 + @Resource
  49 + private FilterConfigDetailService filterConfigDetailService;
42 50
43 /** 51 /**
44 * 重入处理 52 * 重入处理
@@ -60,7 +68,7 @@ public class OverrideHandleServiceImpl implements OverrideHandleService { @@ -60,7 +68,7 @@ public class OverrideHandleServiceImpl implements OverrideHandleService {
60 return AjaxResult.error("目的库位为空"); 68 return AjaxResult.error("目的库位为空");
61 } 69 }
62 if(StringUtils.isEmpty(taskFinishDomain.getRedirectionLocationCode())){ 70 if(StringUtils.isEmpty(taskFinishDomain.getRedirectionLocationCode())){
63 - return AjaxResult.error("目的库位为空"); 71 + return AjaxResult.error("重入的库位编码为空");
64 } 72 }
65 73
66 74
@@ -105,7 +113,26 @@ public class OverrideHandleServiceImpl implements OverrideHandleService { @@ -105,7 +113,26 @@ public class OverrideHandleServiceImpl implements OverrideHandleService {
105 } 113 }
106 }else { 114 }else {
107 //重入的库位由wms提供 115 //重入的库位由wms提供
  116 + //查询任务明细
  117 + LambdaQueryWrapper<TaskDetail> taskDetailLambda = Wrappers.lambdaQuery();
  118 + taskDetailLambda.eq(TaskDetail::getTaskId, taskFinishDomain.getTaskNo());
  119 + List<TaskDetail> taskDetailList = taskDetailService.list(taskDetailLambda);
  120 + //查询入库组盘明细
  121 + List<ReceiptContainerDetail> receiptContainerDetailList = new ArrayList<>();
  122 + for (TaskDetail taskDetail : taskDetailList) {
  123 + receiptContainerDetailList.add(receiptContainerDetailService.getById(taskDetail.getAllocationId()));
  124 + }
  125 + ReceiptContainerHeader receiptContainerHeader = receiptContainerHeaderService.getById(receiptContainerDetailList.get(0).getReceiptContainerId());
  126 + String locatingRule = warecellAllocationService.taskPositioning(receiptContainerDetailList.get(0));
  127 +
  128 + LambdaQueryWrapper<FilterConfigDetail> filterConfigDetailLambda = Wrappers.lambdaQuery();
  129 + filterConfigDetailLambda.eq(FilterConfigDetail::getCode, locatingRule);
  130 + FilterConfigDetail filterConfigDetail = filterConfigDetailService.getOne(filterConfigDetailLambda);
108 131
  132 + //根据定位规则查询库位编码
  133 + LambdaQueryWrapper<Location> locationLambda = Wrappers.lambdaQuery();
  134 + locationLambda.last(filterConfigDetail.getStatement());
  135 + newlocation = locationService.getOne(locationLambda);
109 } 136 }
110 137
111 //修改任务 138 //修改任务
src/main/java/com/huaheng/api/wcs/service/warecellAllocation/WarecellAllocationService.java
@@ -2,9 +2,12 @@ package com.huaheng.api.wcs.service.warecellAllocation; @@ -2,9 +2,12 @@ package com.huaheng.api.wcs.service.warecellAllocation;
2 2
3 import com.huaheng.api.wcs.domain.WcsTask; 3 import com.huaheng.api.wcs.domain.WcsTask;
4 import com.huaheng.framework.web.domain.AjaxResult; 4 import com.huaheng.framework.web.domain.AjaxResult;
  5 +import com.huaheng.pc.receipt.receiptContainerDetail.domain.ReceiptContainerDetail;
5 6
6 public interface WarecellAllocationService { 7 public interface WarecellAllocationService {
7 8
8 //仓位分配 9 //仓位分配
9 AjaxResult WarecellAllocation(WcsTask wcsTask); 10 AjaxResult WarecellAllocation(WcsTask wcsTask);
  11 +
  12 + String taskPositioning(ReceiptContainerDetail receiptContainerDetail);
10 } 13 }
src/main/java/com/huaheng/api/wcs/service/warecellAllocation/WarecellAllocationServiceImpl.java
@@ -35,6 +35,7 @@ import com.huaheng.pc.task.taskDetail.service.TaskDetailService; @@ -35,6 +35,7 @@ import com.huaheng.pc.task.taskDetail.service.TaskDetailService;
35 import com.huaheng.pc.task.taskHeader.domain.TaskHeader; 35 import com.huaheng.pc.task.taskHeader.domain.TaskHeader;
36 import com.huaheng.pc.task.taskHeader.service.TaskHeaderService; 36 import com.huaheng.pc.task.taskHeader.service.TaskHeaderService;
37 import com.jhlabs.image.LightFilter; 37 import com.jhlabs.image.LightFilter;
  38 +import com.mchange.v1.util.Sublist;
38 import io.swagger.annotations.ResponseHeader; 39 import io.swagger.annotations.ResponseHeader;
39 import org.springframework.stereotype.Service; 40 import org.springframework.stereotype.Service;
40 41
@@ -129,48 +130,12 @@ public class WarecellAllocationServiceImpl implements WarecellAllocationService @@ -129,48 +130,12 @@ public class WarecellAllocationServiceImpl implements WarecellAllocationService
129 130
130 for (ReceiptContainerDetail receiptContainerDetail : receiptContainerDetailList) { 131 for (ReceiptContainerDetail receiptContainerDetail : receiptContainerDetailList) {
131 ReceiptContainerHeader receiptContainerHeader = receiptContainerHeaderService.getById(receiptContainerDetail.getReceiptContainerId()); 132 ReceiptContainerHeader receiptContainerHeader = receiptContainerHeaderService.getById(receiptContainerDetail.getReceiptContainerId());
132 - String locatingRule = receiptContainerHeader.getLocatingRule(); //定位规则  
133 - if (StringUtils.isEmpty(locatingRule)){  
134 - locatingRule = receiptDetailService.getById(receiptContainerDetail.getReceiptDetailId()).getLocatingRule();  
135 - //入库单明细定位规则不为空时执行  
136 - if (StringUtils.isEmpty(locatingRule)){  
137 - //入库单明细为空时,查询物料表中是否含有定位规则  
138 - LambdaQueryWrapper<Material> materialLambda = Wrappers.lambdaQuery();  
139 - materialLambda.eq(Material::getCode, receiptContainerDetail.getMaterialCode());  
140 - Material material = materialService.getOne(materialLambda);  
141 - locatingRule = material.getLocatingRule();  
142 133
143 - if (StringUtils.isEmpty(locatingRule)){  
144 - //物料表中定位规则为空时,查询物料类别  
145 - LambdaQueryWrapper<MaterialType> materialTypeLambda = Wrappers.lambdaQuery();  
146 - materialTypeLambda.eq(MaterialType::getCode, material.getType());  
147 - MaterialType materialType = materialTypeService.getOne(materialTypeLambda);  
148 - locatingRule = materialType.getLocatingRule();  
149 - if (StringUtils.isEmpty(locatingRule)){  
150 - //物料类别中定位规则为空时,查询入库首选项  
151 - LambdaQueryWrapper<ConfigValue> configValueLambda = Wrappers.lambdaQuery();  
152 - configValueLambda.eq(ConfigValue::getWarehouseCode, ShiroUtils.getWarehouseCode())  
153 - .eq(ConfigValue::getModuleType, "receipt")  
154 - .eq(ConfigValue::getRecordType, "入库首选项");  
155 - ConfigValue configValue = configValueService.getOne(configValueLambda);  
156 - LambdaQueryWrapper<ReceiptPreference> receiptPreferenceLambda = Wrappers.lambdaQuery();  
157 - receiptPreferenceLambda.eq(ReceiptPreference::getCode, configValue.getValue());  
158 - ReceiptPreference receiptPreference = receiptPreferenceService.getOne(receiptPreferenceLambda);  
159 - locatingRule = receiptPreferenceService.getOne(receiptPreferenceLambda).getLocationRule();  
160 - }  
161 - }  
162 - }  
163 -  
164 - }  
165 - //通过定位规则查找自定义sql  
166 - if (StringUtils.isEmpty(locatingRule)){  
167 - throw new ServiceException("未绑定定位规则");  
168 - } 134 + String locatingRule = this.taskPositioning(receiptContainerDetail);
169 135
170 LambdaQueryWrapper<FilterConfigDetail> filterConfigDetailLambda = Wrappers.lambdaQuery(); 136 LambdaQueryWrapper<FilterConfigDetail> filterConfigDetailLambda = Wrappers.lambdaQuery();
171 filterConfigDetailLambda.eq(FilterConfigDetail::getCode, locatingRule); 137 filterConfigDetailLambda.eq(FilterConfigDetail::getCode, locatingRule);
172 FilterConfigDetail filterConfigDetail = filterConfigDetailService.getOne(filterConfigDetailLambda); 138 FilterConfigDetail filterConfigDetail = filterConfigDetailService.getOne(filterConfigDetailLambda);
173 -  
174 String[] locatingRules = filterConfigDetail.getStatement().split("limit"); 139 String[] locatingRules = filterConfigDetail.getStatement().split("limit");
175 140
176 //根据定位规则查询库位编码 141 //根据定位规则查询库位编码
@@ -178,7 +143,7 @@ public class WarecellAllocationServiceImpl implements WarecellAllocationService @@ -178,7 +143,7 @@ public class WarecellAllocationServiceImpl implements WarecellAllocationService
178 locationLambda.last(locatingRules[0]); 143 locationLambda.last(locatingRules[0]);
179 List<Location> locationList = locationService.list(locationLambda); 144 List<Location> locationList = locationService.list(locationLambda);
180 // locationList.stream().filter(location -> location.getLocationType().equals(locationTypeList.get(0))); 145 // locationList.stream().filter(location -> location.getLocationType().equals(locationTypeList.get(0)));
181 - locationCode = filter(locationList, locationTypeList); 146 + locationCode = filter(locationList, locationTypeList, wcsTask.getRoadWay());
182 if (StringUtils.isEmpty(locationCode)){ 147 if (StringUtils.isEmpty(locationCode)){
183 throw new ServiceException("没有库位可分配"); 148 throw new ServiceException("没有库位可分配");
184 } 149 }
@@ -205,6 +170,7 @@ public class WarecellAllocationServiceImpl implements WarecellAllocationService @@ -205,6 +170,7 @@ public class WarecellAllocationServiceImpl implements WarecellAllocationService
205 } 170 }
206 171
207 } 172 }
  173 +
208 if (StringUtils.isNotEmpty(locationCode)){ 174 if (StringUtils.isNotEmpty(locationCode)){
209 //修改任务明细目标库位 175 //修改任务明细目标库位
210 for (TaskDetail taskDetail : taskDetailList) { 176 for (TaskDetail taskDetail : taskDetailList) {
@@ -226,20 +192,65 @@ public class WarecellAllocationServiceImpl implements WarecellAllocationService @@ -226,20 +192,65 @@ public class WarecellAllocationServiceImpl implements WarecellAllocationService
226 192
227 /** 193 /**
228 * 库位筛选 194 * 库位筛选
229 - * @param locationList  
230 - * @param locationTypeList 195 + * @param locationList 库位列表
  196 + * @param locationTypeList 库位类型列表
  197 + * @param roadway 巷道
231 * @return 198 * @return
232 */ 199 */
233 - public String filter(List<Location> locationList, List<LocationType> locationTypeList){  
234 - String locationCode = null;  
235 - for (Location location: locationList){  
236 - for (LocationType locationType: locationTypeList) {  
237 - if (location.getLocationType().equals(locationType.getCode())){  
238 - locationCode = location.getCode();  
239 - return locationCode; 200 + public String filter(List<Location> locationList, List<LocationType> locationTypeList, String roadway){
  201 + List<String> codeList = locationTypeList.stream().map(t-> t.getCode()).collect(Collectors.toList());
  202 + List<Location> newLocation = locationList.stream().filter(t-> codeList.contains(t.getLocationType()) && t.getRoadway().equals(roadway)).collect(Collectors.toList());
  203 + if (newLocation.isEmpty()){
  204 + return null;
  205 + } else{
  206 + return newLocation.get(0).getCode();
  207 + }
  208 + }
  209 +
  210 + /**
  211 + * 定位
  212 + * @param receiptContainerDetail
  213 + * @return
  214 + */
  215 + public String taskPositioning(ReceiptContainerDetail receiptContainerDetail){
  216 + ReceiptContainerHeader receiptContainerHeader = receiptContainerHeaderService.getById(receiptContainerDetail.getReceiptContainerId());
  217 + String locatingRule = receiptContainerHeader.getLocatingRule(); //定位规则
  218 + if (StringUtils.isEmpty(locatingRule)){
  219 + locatingRule = receiptDetailService.getById(receiptContainerDetail.getReceiptDetailId()).getLocatingRule();
  220 + //入库单明细定位规则不为空时执行
  221 + if (StringUtils.isEmpty(locatingRule)){
  222 + //入库单明细为空时,查询物料表中是否含有定位规则
  223 + LambdaQueryWrapper<Material> materialLambda = Wrappers.lambdaQuery();
  224 + materialLambda.eq(Material::getCode, receiptContainerDetail.getMaterialCode());
  225 + Material material = materialService.getOne(materialLambda);
  226 + locatingRule = material.getLocatingRule();
  227 +
  228 + if (StringUtils.isEmpty(locatingRule)){
  229 + //物料表中定位规则为空时,查询物料类别
  230 + LambdaQueryWrapper<MaterialType> materialTypeLambda = Wrappers.lambdaQuery();
  231 + materialTypeLambda.eq(MaterialType::getCode, material.getType());
  232 + MaterialType materialType = materialTypeService.getOne(materialTypeLambda);
  233 + locatingRule = materialType.getLocatingRule();
  234 + if (StringUtils.isEmpty(locatingRule)){
  235 + //物料类别中定位规则为空时,查询入库首选项
  236 + LambdaQueryWrapper<ConfigValue> configValueLambda = Wrappers.lambdaQuery();
  237 + configValueLambda.eq(ConfigValue::getWarehouseCode, ShiroUtils.getWarehouseCode())
  238 + .eq(ConfigValue::getModuleType, "receipt")
  239 + .eq(ConfigValue::getRecordType, "入库首选项");
  240 + ConfigValue configValue = configValueService.getOne(configValueLambda);
  241 + LambdaQueryWrapper<ReceiptPreference> receiptPreferenceLambda = Wrappers.lambdaQuery();
  242 + receiptPreferenceLambda.eq(ReceiptPreference::getCode, configValue.getValue());
  243 + ReceiptPreference receiptPreference = receiptPreferenceService.getOne(receiptPreferenceLambda);
  244 + locatingRule = receiptPreferenceService.getOne(receiptPreferenceLambda).getLocationRule();
  245 + }
240 } 246 }
241 } 247 }
242 } 248 }
243 - return null; 249 + //通过定位规则查找自定义sql
  250 + if (StringUtils.isEmpty(locatingRule)){
  251 + throw new ServiceException("未绑定定位规则");
  252 + }
  253 +
  254 + return locatingRule;
244 } 255 }
245 } 256 }
src/main/java/com/huaheng/pc/config/location/controller/LocationController.java
@@ -123,7 +123,7 @@ public class LocationController extends BaseController { @@ -123,7 +123,7 @@ public class LocationController extends BaseController {
123 /** 123 /**
124 * 批量新增保存库位 124 * 批量新增保存库位
125 */ 125 */
126 - @RequiresPermissions("config:location:add") 126 + @RequiresPermissions("config:location:addBatch")
127 @ApiOperation(value="新增库位", notes="批量新增库位", httpMethod = "POST") 127 @ApiOperation(value="新增库位", notes="批量新增库位", httpMethod = "POST")
128 @Log(title = "通用-库位管理", operating = "新增库位", action = BusinessType.INSERT) 128 @Log(title = "通用-库位管理", operating = "新增库位", action = BusinessType.INSERT)
129 @PostMapping("/addBatchSave") 129 @PostMapping("/addBatchSave")
src/main/java/com/huaheng/pc/config/location/domain/Location.java
@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.annotation.TableName; @@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.annotation.TableName;
7 import java.io.Serializable; 7 import java.io.Serializable;
8 import java.util.Date; 8 import java.util.Date;
9 import lombok.Data; 9 import lombok.Data;
  10 +import org.springframework.transaction.annotation.Transactional;
10 11
11 @Data 12 @Data
12 @TableName(value = "location") 13 @TableName(value = "location")
@@ -72,6 +73,12 @@ public class Location implements Serializable { @@ -72,6 +73,12 @@ public class Location implements Serializable {
72 private Integer iGrid; 73 private Integer iGrid;
73 74
74 /** 75 /**
  76 + * 巷道
  77 + */
  78 + @TableField(value = "roadway")
  79 + private String roadway;
  80 +
  81 + /**
75 * 名称 82 * 名称
76 */ 83 */
77 @TableField(value = "name") 84 @TableField(value = "name")
@@ -174,56 +181,4 @@ public class Location implements Serializable { @@ -174,56 +181,4 @@ public class Location implements Serializable {
174 private Boolean deleted; 181 private Boolean deleted;
175 182
176 private static final long serialVersionUID = 1L; 183 private static final long serialVersionUID = 1L;
177 -  
178 - public static final String COL_CODE = "code";  
179 -  
180 - public static final String COL_WAREHOUSECODE = "warehouseCode";  
181 -  
182 - public static final String COL_ZONECODE = "zoneCode";  
183 -  
184 - public static final String COL_LOCATIONTYPE = "locationType";  
185 -  
186 - public static final String COL_CONTAINERCODE = "containerCode";  
187 -  
188 - public static final String COL_IROW = "iRow";  
189 -  
190 - public static final String COL_ICOLUMN = "iColumn";  
191 -  
192 - public static final String COL_ILAYER = "iLayer";  
193 -  
194 - public static final String COL_IGRID = "iGrid";  
195 -  
196 - public static final String COL_NAME = "name";  
197 -  
198 - public static final String COL_ENABLE = "enable";  
199 -  
200 - public static final String COL_LASTCYCLECOUNTDATE = "lastCycleCountDate";  
201 -  
202 - public static final String COL_CREATED = "created";  
203 -  
204 - public static final String COL_CREATEDBY = "createdBy";  
205 -  
206 - public static final String COL_LASTUPDATED = "lastUpdated";  
207 -  
208 - public static final String COL_LASTUPDATEDBY = "lastUpdatedBy";  
209 -  
210 - public static final String COL_VERSION = "version";  
211 -  
212 - public static final String COL_USERDEF1 = "userDef1";  
213 -  
214 - public static final String COL_USERDEF2 = "userDef2";  
215 -  
216 - public static final String COL_USERDEF3 = "userDef3";  
217 -  
218 - public static final String COL_USERDEF4 = "userDef4";  
219 -  
220 - public static final String COL_USERDEF5 = "userDef5";  
221 -  
222 - public static final String COL_USERDEF6 = "userDef6";  
223 -  
224 - public static final String COL_USERDEF7 = "userDef7";  
225 -  
226 - public static final String COL_USERDEF8 = "userDef8";  
227 -  
228 - public static final String COL_SYSTEMCREATED = "systemCreated";  
229 } 184 }
230 \ No newline at end of file 185 \ No newline at end of file
src/main/java/com/huaheng/pc/config/location/service/LocationServiceImpl.java
@@ -73,13 +73,18 @@ public class LocationServiceImpl extends ServiceImpl&lt;LocationMapper, Location&gt; i @@ -73,13 +73,18 @@ public class LocationServiceImpl extends ServiceImpl&lt;LocationMapper, Location&gt; i
73 return AjaxResult.success("新增库位成功"); 73 return AjaxResult.success("新增库位成功");
74 } 74 }
75 75
  76 + /**
  77 + * 批量新增库位
  78 + * @param location
  79 + * @return boolean
  80 + */
76 @Override 81 @Override
77 public boolean insertLocation(Location location) { 82 public boolean insertLocation(Location location) {
78 /* 判断库位类型编码是否存在*/ 83 /* 判断库位类型编码是否存在*/
79 - LambdaQueryWrapper<LocationType> typelambda = Wrappers.lambdaQuery();  
80 - typelambda.eq(LocationType::getCode,location.getLocationType()) 84 + LambdaQueryWrapper<LocationType> typeLambda = Wrappers.lambdaQuery();
  85 + typeLambda.eq(LocationType::getCode,location.getLocationType())
81 .select(LocationType::getCode); 86 .select(LocationType::getCode);
82 - List<Map<String, Object>> list = locationTypeService.listMaps(typelambda); 87 + List<Map<String, Object>> list = locationTypeService.listMaps(typeLambda);
83 if (list.size() < 1){ 88 if (list.size() < 1){
84 throw new ServiceException("库位类型编码不存在"); 89 throw new ServiceException("库位类型编码不存在");
85 } 90 }
@@ -97,6 +102,7 @@ public class LocationServiceImpl extends ServiceImpl&lt;LocationMapper, Location&gt; i @@ -97,6 +102,7 @@ public class LocationServiceImpl extends ServiceImpl&lt;LocationMapper, Location&gt; i
97 if(!location.getZoneCode().equals(location.getLocationType())){ 102 if(!location.getZoneCode().equals(location.getLocationType())){
98 throw new ServiceException(location.getLocationType()+"的库位类型与"+location.getZoneCode()+"库区不匹配"); 103 throw new ServiceException(location.getLocationType()+"的库位类型与"+location.getZoneCode()+"库区不匹配");
99 } 104 }
  105 +
100 String prefix = location.getLocationType().substring(1); 106 String prefix = location.getLocationType().substring(1);
101 List<Location> locations = new ArrayList<>(); 107 List<Location> locations = new ArrayList<>();
102 for (int i=1; i<=location.getIRow().intValue(); i++) { 108 for (int i=1; i<=location.getIRow().intValue(); i++) {
@@ -109,6 +115,7 @@ public class LocationServiceImpl extends ServiceImpl&lt;LocationMapper, Location&gt; i @@ -109,6 +115,7 @@ public class LocationServiceImpl extends ServiceImpl&lt;LocationMapper, Location&gt; i
109 param.setIColumn(j); 115 param.setIColumn(j);
110 param.setILayer(k); 116 param.setILayer(k);
111 param.setIGrid(m); 117 param.setIGrid(m);
  118 + param.setRoadway(location.getRoadway());
112 param.setZoneCode(location.getZoneCode()); 119 param.setZoneCode(location.getZoneCode());
113 param.setLocationType(location.getLocationType()); 120 param.setLocationType(location.getLocationType());
114 param.setStatus(location.getStatus()); 121 param.setStatus(location.getStatus());
@@ -121,6 +128,7 @@ public class LocationServiceImpl extends ServiceImpl&lt;LocationMapper, Location&gt; i @@ -121,6 +128,7 @@ public class LocationServiceImpl extends ServiceImpl&lt;LocationMapper, Location&gt; i
121 String.format("%02d", j), 128 String.format("%02d", j),
122 String.format("%02d", k), 129 String.format("%02d", k),
123 String.format("%02d", m)); 130 String.format("%02d", m));
  131 + //查询该库位编码是否存在
124 LambdaQueryWrapper<Location> queryWrapper = Wrappers.lambdaQuery(); 132 LambdaQueryWrapper<Location> queryWrapper = Wrappers.lambdaQuery();
125 queryWrapper.eq(Location::getCode,code) 133 queryWrapper.eq(Location::getCode,code)
126 .eq(Location::getWarehouseCode,ShiroUtils.getWarehouseCode()); 134 .eq(Location::getWarehouseCode,ShiroUtils.getWarehouseCode());
@@ -133,8 +141,7 @@ public class LocationServiceImpl extends ServiceImpl&lt;LocationMapper, Location&gt; i @@ -133,8 +141,7 @@ public class LocationServiceImpl extends ServiceImpl&lt;LocationMapper, Location&gt; i
133 } 141 }
134 } 142 }
135 } 143 }
136 - Boolean result = locationService.saveBatch(locations);  
137 - return result; 144 + return locationService.saveBatch(locations);
138 } 145 }
139 146
140 @Override 147 @Override
src/main/java/com/huaheng/pc/inventory/cycleCountDetail/controller/CycleCountDetailController.java
@@ -109,10 +109,14 @@ public class CycleCountDetailController extends BaseController { @@ -109,10 +109,14 @@ public class CycleCountDetailController extends BaseController {
109 //分页查询 109 //分页查询
110 Page<CycleCountDetail> page = new Page<>(pageNum, pageSize); 110 Page<CycleCountDetail> page = new Page<>(pageNum, pageSize);
111 IPage<CycleCountDetail> iPage = cycleCountDetailService.page(page, lambdaQueryWrapper); 111 IPage<CycleCountDetail> iPage = cycleCountDetailService.page(page, lambdaQueryWrapper);
112 - return getMpDataTable(iPage.getRecords(), iPage.getTotal()); 112 + //根据盘点首选项确定显示字段
  113 + List<CycleCountDetail> ipages = cycleCountDetailService.preferenceRealize(iPage.getRecords()) ;
  114 + return getMpDataTable(ipages, iPage.getTotal());
113 } else { 115 } else {
114 List<CycleCountDetail> list = cycleCountDetailService.list(lambdaQueryWrapper); 116 List<CycleCountDetail> list = cycleCountDetailService.list(lambdaQueryWrapper);
115 - return getDataTable(list); 117 + //根据盘点首选项确定显示字段
  118 + List<CycleCountDetail> cycleCountDetails = cycleCountDetailService.preferenceRealize(list) ;
  119 + return getDataTable(cycleCountDetails);
116 } 120 }
117 } 121 }
118 //空List 122 //空List
src/main/java/com/huaheng/pc/inventory/cycleCountDetail/service/CycleCountDetailService.java
@@ -3,8 +3,10 @@ package com.huaheng.pc.inventory.cycleCountDetail.service; @@ -3,8 +3,10 @@ package com.huaheng.pc.inventory.cycleCountDetail.service;
3 import com.baomidou.mybatisplus.extension.service.IService; 3 import com.baomidou.mybatisplus.extension.service.IService;
4 import com.huaheng.framework.web.domain.AjaxResult; 4 import com.huaheng.framework.web.domain.AjaxResult;
5 import com.huaheng.pc.inventory.cycleCountDetail.domain.CycleCountDetail; 5 import com.huaheng.pc.inventory.cycleCountDetail.domain.CycleCountDetail;
  6 +import org.apache.poi.ss.formula.functions.T;
6 7
7 import java.math.BigDecimal; 8 import java.math.BigDecimal;
  9 +import java.util.List;
8 10
9 11
10 public interface CycleCountDetailService extends IService<CycleCountDetail> { 12 public interface CycleCountDetailService extends IService<CycleCountDetail> {
@@ -14,7 +16,7 @@ public interface CycleCountDetailService extends IService&lt;CycleCountDetail&gt; { @@ -14,7 +16,7 @@ public interface CycleCountDetailService extends IService&lt;CycleCountDetail&gt; {
14 16
15 AjaxResult createCycleCountTaskByHeadId(String cycleCountHeadCode); 17 AjaxResult createCycleCountTaskByHeadId(String cycleCountHeadCode);
16 18
17 - AjaxResult createCycleCoutTaskByDetailId(Integer cycleCoutdetailId); 19 + AjaxResult createCycleCoutTaskByDetailId(Integer cycleCoutDetailId);
18 20
19 AjaxResult confirmGapQty(Integer detailId, BigDecimal qty); 21 AjaxResult confirmGapQty(Integer detailId, BigDecimal qty);
20 22
@@ -22,7 +24,7 @@ public interface CycleCountDetailService extends IService&lt;CycleCountDetail&gt; { @@ -22,7 +24,7 @@ public interface CycleCountDetailService extends IService&lt;CycleCountDetail&gt; {
22 24
23 AjaxResult createCyclecountWithGapQty(String cycleCountHeadCode); 25 AjaxResult createCyclecountWithGapQty(String cycleCountHeadCode);
24 26
25 - 27 + List<CycleCountDetail> preferenceRealize (List<CycleCountDetail> cycleCoutDetailList);
26 28
27 } 29 }
28 30
src/main/java/com/huaheng/pc/inventory/cycleCountDetail/service/CycleCountDetailServiceImpl.java
@@ -7,6 +7,10 @@ import com.huaheng.common.exception.service.ServiceException; @@ -7,6 +7,10 @@ import com.huaheng.common.exception.service.ServiceException;
7 import com.huaheng.common.utils.StringUtils; 7 import com.huaheng.common.utils.StringUtils;
8 import com.huaheng.common.utils.security.ShiroUtils; 8 import com.huaheng.common.utils.security.ShiroUtils;
9 import com.huaheng.framework.web.domain.AjaxResult; 9 import com.huaheng.framework.web.domain.AjaxResult;
  10 +import com.huaheng.pc.config.configValue.domain.ConfigValue;
  11 +import com.huaheng.pc.config.configValue.service.ConfigValueService;
  12 +import com.huaheng.pc.config.cycleCountPreference.domain.CycleCountPreference;
  13 +import com.huaheng.pc.config.cycleCountPreference.service.CycleCountPreferenceService;
10 import com.huaheng.pc.config.location.domain.Location; 14 import com.huaheng.pc.config.location.domain.Location;
11 import com.huaheng.pc.config.location.service.LocationService; 15 import com.huaheng.pc.config.location.service.LocationService;
12 import com.huaheng.pc.inventory.cycleCountDetail.domain.CycleCountDetail; 16 import com.huaheng.pc.inventory.cycleCountDetail.domain.CycleCountDetail;
@@ -43,9 +47,10 @@ public class CycleCountDetailServiceImpl extends ServiceImpl&lt;CycleCountDetailMap @@ -43,9 +47,10 @@ public class CycleCountDetailServiceImpl extends ServiceImpl&lt;CycleCountDetailMap
43 private TaskHeaderService taskHeaderService; 47 private TaskHeaderService taskHeaderService;
44 @Resource 48 @Resource
45 private TaskDetailService taskDetailService; 49 private TaskDetailService taskDetailService;
46 -  
47 -  
48 - 50 + @Resource
  51 + private ConfigValueService configValueService;
  52 + @Resource
  53 + private CycleCountPreferenceService cycleCountPreferenceService;
49 54
50 55
51 /** 56 /**
@@ -101,6 +106,16 @@ public class CycleCountDetailServiceImpl extends ServiceImpl&lt;CycleCountDetailMap @@ -101,6 +106,16 @@ public class CycleCountDetailServiceImpl extends ServiceImpl&lt;CycleCountDetailMap
101 if(cyclecountHeader.getStatusCyc() > 1){ 106 if(cyclecountHeader.getStatusCyc() > 1){
102 return AjaxResult.error("盘点单非新建状态,无法再添加明细"); 107 return AjaxResult.error("盘点单非新建状态,无法再添加明细");
103 } 108 }
  109 + //默认盘点配置,首选项
  110 + ConfigValue configValue = new ConfigValue();
  111 + configValue.setModuleType("cyclecount");
  112 + configValue.setWarehouseCode(ShiroUtils.getWarehouseCode());
  113 + LambdaQueryWrapper<ConfigValue> configValueLambdaQueryWrapper = Wrappers.lambdaQuery(configValue);
  114 + configValue = configValueService.getOne(configValueLambdaQueryWrapper);
  115 + if(configValue == null){
  116 + throw new SecurityException("请先在配置中添加盘点配置");
  117 + }
  118 + String preferenceCode = configValue.getIdentifier();
104 //获取已经存在的明细 119 //获取已经存在的明细
105 CycleCountDetail cycleCountDetail = new CycleCountDetail(); 120 CycleCountDetail cycleCountDetail = new CycleCountDetail();
106 cycleCountDetail.setWarehouseCode(cyclecountHeader.getWarehouseCode()); 121 cycleCountDetail.setWarehouseCode(cyclecountHeader.getWarehouseCode());
@@ -118,9 +133,9 @@ public class CycleCountDetailServiceImpl extends ServiceImpl&lt;CycleCountDetailMap @@ -118,9 +133,9 @@ public class CycleCountDetailServiceImpl extends ServiceImpl&lt;CycleCountDetailMap
118 } 133 }
119 //查询该条库存明细 134 //查询该条库存明细
120 InventoryDetail inventoryDetail = inventoryDetailService.getById(inventoryDetailId); 135 InventoryDetail inventoryDetail = inventoryDetailService.getById(inventoryDetailId);
121 -  
122 //写入盘点明细 136 //写入盘点明细
123 CycleCountDetail ccd = new CycleCountDetail(); 137 CycleCountDetail ccd = new CycleCountDetail();
  138 + ccd.setPreferenceCode(preferenceCode);
124 ccd.setCycleCountHeadCode(cyclecountHeader.getCode()); 139 ccd.setCycleCountHeadCode(cyclecountHeader.getCode());
125 ccd.setInventoryDetailId(inventoryDetailId); 140 ccd.setInventoryDetailId(inventoryDetailId);
126 ccd.setWarehouseCode(inventoryDetail.getWarehouseCode()); 141 ccd.setWarehouseCode(inventoryDetail.getWarehouseCode());
@@ -189,7 +204,7 @@ public class CycleCountDetailServiceImpl extends ServiceImpl&lt;CycleCountDetailMap @@ -189,7 +204,7 @@ public class CycleCountDetailServiceImpl extends ServiceImpl&lt;CycleCountDetailMap
189 } 204 }
190 } 205 }
191 } 206 }
192 - String msg = ""; 207 + String msg = null;
193 if(count==list.size()){ 208 if(count==list.size()){
194 msg="全部生成成功"; 209 msg="全部生成成功";
195 } else if (count <= 0 && countErr <= 0){ 210 } else if (count <= 0 && countErr <= 0){
@@ -202,17 +217,17 @@ public class CycleCountDetailServiceImpl extends ServiceImpl&lt;CycleCountDetailMap @@ -202,17 +217,17 @@ public class CycleCountDetailServiceImpl extends ServiceImpl&lt;CycleCountDetailMap
202 217
203 /** 218 /**
204 * 生成单条盘点任务 219 * 生成单条盘点任务
205 - * @param cycleCoutdetailId 220 + * @param cycleCoutDetailId
206 * @return 221 * @return
207 */ 222 */
208 @Override 223 @Override
209 @Transactional 224 @Transactional
210 - public AjaxResult createCycleCoutTaskByDetailId(Integer cycleCoutdetailId) { 225 + public AjaxResult createCycleCoutTaskByDetailId(Integer cycleCoutDetailId) {
211 /*任务主表中存在库位,在盘点明细中生成任务时,不同的容器生成不同的主任务*/ 226 /*任务主表中存在库位,在盘点明细中生成任务时,不同的容器生成不同的主任务*/
212 //在盘点单生成任务并执行后,同一容器的物料仍然可以生成任务,否则任务已完成则无法添加任务100 227 //在盘点单生成任务并执行后,同一容器的物料仍然可以生成任务,否则任务已完成则无法添加任务100
213 //检查状态不为100的任务,在有和下发的盘点单容器相同的任务时,把该条明细的任务写入到当前相同容器的任务里 228 //检查状态不为100的任务,在有和下发的盘点单容器相同的任务时,把该条明细的任务写入到当前相同容器的任务里
214 229
215 - CycleCountDetail cycleCountDetail = this.getById(cycleCoutdetailId); 230 + CycleCountDetail cycleCountDetail = this.getById(cycleCoutDetailId);
216 if(cycleCountDetail == null ){ 231 if(cycleCountDetail == null ){
217 return AjaxResult.error("盘点明细ID错误,没有该条明细"); 232 return AjaxResult.error("盘点明细ID错误,没有该条明细");
218 } 233 }
@@ -456,11 +471,65 @@ public class CycleCountDetailServiceImpl extends ServiceImpl&lt;CycleCountDetailMap @@ -456,11 +471,65 @@ public class CycleCountDetailServiceImpl extends ServiceImpl&lt;CycleCountDetailMap
456 return AjaxResult.success("生成复盘单成功!"); 471 return AjaxResult.success("生成复盘单成功!");
457 } 472 }
458 473
  474 + /**
  475 + * 盘点首选项实现
  476 + * @param cycleCoutDetailList
  477 + * @return
  478 + */
  479 + @Transactional
  480 + @Override
  481 + public List<CycleCountDetail> preferenceRealize(List<CycleCountDetail> cycleCoutDetailList) {
  482 + List<CycleCountDetail> cycs = new ArrayList<>();
  483 + /*
  484 + 根据当前明细条目的盘点首选Code,取出显示要求,再根据显示要求隐藏或显示字段*/
  485 + /*//配置表
  486 + ConfigValue configValue = new ConfigValue();
  487 + configValue.setModuleType("cyclecount");
  488 + configValue.setWarehouseCode(ShiroUtils.getWarehouseCode());
  489 + LambdaQueryWrapper<ConfigValue> configValueLambdaQueryWrapper = Wrappers.lambdaQuery(configValue);
  490 + ConfigValue value = configValueService.getOne(configValueLambdaQueryWrapper);
  491 + if(value == null){
  492 + throw new SecurityException("请先在配置中添加盘点配置");
  493 + }*/
459 494
  495 + //取出preference的数据来判断字段
  496 + for(CycleCountDetail item:cycleCoutDetailList){
  497 + //盘点首选项
  498 + CycleCountPreference temp = new CycleCountPreference();
  499 + temp.setCode(item.getPreferenceCode());
  500 + temp.setWarehouseCode(item.getWarehouseCode());
  501 + LambdaQueryWrapper<CycleCountPreference> cycleCountPreferenceLambdaQuery = Wrappers.lambdaQuery(temp);
  502 + CycleCountPreference cycleCountPreference = cycleCountPreferenceService.getOne(cycleCountPreferenceLambdaQuery);
  503 + if(cycleCountPreference == null){
  504 + throw new SecurityException("没有对应的盘点首选项!");
  505 + }
  506 + if(cycleCountPreference.getEnable() == false){
  507 + throw new SecurityException("当前默认选中盘点首选项已停用!");
  508 + }
  509 + //判断字段
  510 + if(cycleCountPreference.getPromptLocation() == false){
  511 + //库位
  512 + item.setLocationCode("");
  513 + }
  514 + if(cycleCountPreference.getPromptLpn() == false){
  515 + //容器
  516 + item.setContainerCode("");
  517 + }
  518 + if(cycleCountPreference.getPromptItem() == false){
  519 + //物料
  520 + item.setMaterialCode("");
  521 + item.setMaterialName("");
  522 + item.setMaterialUnit("");
  523 + }
  524 + if(cycleCountPreference.getPromptQuantity() == false){
  525 + //系统数量
  526 + item.setSystemQty(null);
  527 + }
  528 + cycs.add(item);
  529 + }
460 530
461 -  
462 -  
463 - 531 + return cycs;
  532 + }
464 533
465 534
466 } 535 }
src/main/resources/mybatis/config/LocationMapper.xml
@@ -13,6 +13,7 @@ @@ -13,6 +13,7 @@
13 <result column="iColumn" jdbcType="INTEGER" property="iColumn" /> 13 <result column="iColumn" jdbcType="INTEGER" property="iColumn" />
14 <result column="iLayer" jdbcType="INTEGER" property="iLayer" /> 14 <result column="iLayer" jdbcType="INTEGER" property="iLayer" />
15 <result column="iGrid" jdbcType="INTEGER" property="iGrid" /> 15 <result column="iGrid" jdbcType="INTEGER" property="iGrid" />
  16 + <result column="roadway" jdbcType="VARCHAR" property="roadway" />
16 <result column="name" jdbcType="VARCHAR" property="name" /> 17 <result column="name" jdbcType="VARCHAR" property="name" />
17 <result column="lastCycleCountDate" jdbcType="TIMESTAMP" property="lastCycleCountDate" /> 18 <result column="lastCycleCountDate" jdbcType="TIMESTAMP" property="lastCycleCountDate" />
18 <result column="created" jdbcType="TIMESTAMP" property="created" /> 19 <result column="created" jdbcType="TIMESTAMP" property="created" />
@@ -33,7 +34,7 @@ @@ -33,7 +34,7 @@
33 <sql id="Base_Column_List"> 34 <sql id="Base_Column_List">
34 <!--@mbg.generated--> 35 <!--@mbg.generated-->
35 id, code, warehouseCode, zoneCode, locationType, containerCode, iRow, iColumn, iLayer, 36 id, code, warehouseCode, zoneCode, locationType, containerCode, iRow, iColumn, iLayer,
36 - iGrid, `name`, `enable`, lastCycleCountDate, created, createdBy, lastUpdated, lastUpdatedBy, 37 + iGrid, roadway, `name`, `enable`, lastCycleCountDate, created, createdBy, lastUpdated, lastUpdatedBy,
37 version, userDef1, userDef2, userDef3, userDef4, userDef5, userDef6, userDef7, userDef8, 38 version, userDef1, userDef2, userDef3, userDef4, userDef5, userDef6, userDef7, userDef8,
38 systemCreated 39 systemCreated
39 </sql> 40 </sql>
src/main/resources/templates/config/configValue/configValue.html
@@ -48,6 +48,8 @@ @@ -48,6 +48,8 @@
48 var prefix = ctx + "config/configValue"; 48 var prefix = ctx + "config/configValue";
49 var editFlag = [[${@permission.hasPermi('config:configValue:edit')}]]; 49 var editFlag = [[${@permission.hasPermi('config:configValue:edit')}]];
50 var removeFlag = [[${@permission.hasPermi('config:configValue:remove')}]]; 50 var removeFlag = [[${@permission.hasPermi('config:configValue:remove')}]];
  51 + var recordType=[[${@dict.getType('recordType')}]];
  52 +
51 $(function() { 53 $(function() {
52 var options = { 54 var options = {
53 url: prefix + "/list", 55 url: prefix + "/list",
@@ -74,8 +76,12 @@ @@ -74,8 +76,12 @@
74 title : '模块' 76 title : '模块'
75 }, 77 },
76 { 78 {
77 - field : 'recordType',  
78 - title : '类型' 79 + field: 'recordType',
  80 + title: '类型',
  81 + formatter: function(value, row, index) {
  82 + return $.table.selectDictLabel(recordType, value);
  83 + },
  84 +
79 }, 85 },
80 { 86 {
81 field : 'identifier', 87 field : 'identifier',
src/main/resources/templates/config/cycleCountPreference/edit.html
@@ -164,13 +164,14 @@ @@ -164,13 +164,14 @@
164 promptQuantity: { 164 promptQuantity: {
165 required: true, 165 required: true,
166 }, 166 },
167 - allowAddNewInventory: {  
168 - required: true,  
169 - }  
170 }, 167 },
171 submitHandler: function(form) { 168 submitHandler: function(form) {
172 var tableValue = $.common.getTableValue("#form-cycleCountPreference-edit"); 169 var tableValue = $.common.getTableValue("#form-cycleCountPreference-edit");
173 - /*tableValue = formValueReplace(tableValue, "id", $("input[name='id']").is(':checked'));*/ 170 + tableValue = formValueReplace(tableValue, "promptLocation", $("input[name='promptLocation']").is(':checked'));
  171 + tableValue = formValueReplace(tableValue, "promptLpn", $("input[name='promptLpn']").is(':checked'));
  172 + tableValue = formValueReplace(tableValue, "promptItem", $("input[name='promptItem']").is(':checked'));
  173 + tableValue = formValueReplace(tableValue, "promptQuantity", $("input[name='promptQuantity']").is(':checked'));
  174 + tableValue = formValueReplace(tableValue, "enable", $("input[name='enable']").is(':checked'));
174 $.operate.save(prefix + "/edit", tableValue); 175 $.operate.save(prefix + "/edit", tableValue);
175 } 176 }
176 }); 177 });
src/main/resources/templates/config/location/addBatch.html
@@ -30,6 +30,12 @@ @@ -30,6 +30,12 @@
30 </div> 30 </div>
31 </div> 31 </div>
32 <div class="form-group"> 32 <div class="form-group">
  33 + <label class="col-sm-3 control-label">巷道:</label>
  34 + <div class="col-sm-8">
  35 + <input id="roadway" name="roadway" class="form-control" type="text">
  36 + </div>
  37 + </div>
  38 + <div class="form-group">
33 <label class="col-sm-3 control-label">库位类型:</label> 39 <label class="col-sm-3 control-label">库位类型:</label>
34 <div class="col-sm-8"> 40 <div class="col-sm-8">
35 <select id="locationType" name="locationType" class="form-control" th:with="locationType=${@locationType.getLocationPrefix()}"> 41 <select id="locationType" name="locationType" class="form-control" th:with="locationType=${@locationType.getLocationPrefix()}">
@@ -104,6 +110,7 @@ @@ -104,6 +110,7 @@
104 "iColumn": $("input[name='iColumn']").val(), 110 "iColumn": $("input[name='iColumn']").val(),
105 "iLayer": $("input[name='iLayer']").val(), 111 "iLayer": $("input[name='iLayer']").val(),
106 "iGrid": $("input[name='iGrid']").val(), 112 "iGrid": $("input[name='iGrid']").val(),
  113 + "roadway": $("input[name='roadway']").val(),
107 "locationType": $("#locationType option:selected").val(), 114 "locationType": $("#locationType option:selected").val(),
108 "zoneCode": $("#zone option:selected").attr("code"), 115 "zoneCode": $("#zone option:selected").attr("code"),
109 "status" : $("#status option:selected").val(), 116 "status" : $("#status option:selected").val(),
src/main/resources/templates/config/location/location.html
@@ -68,7 +68,7 @@ @@ -68,7 +68,7 @@
68 <a class="btn btn-outline btn-success btn-rounded" onclick="$.operate.add()" shiro:hasPermission="config:location:add"> 68 <a class="btn btn-outline btn-success btn-rounded" onclick="$.operate.add()" shiro:hasPermission="config:location:add">
69 <i class="fa fa-plus"></i> 新增 69 <i class="fa fa-plus"></i> 新增
70 </a> 70 </a>
71 - <a class="btn btn-outline btn-primary btn-rounded" onclick="addBatch()" shiro:hasPermission="config:location:add"> 71 + <a class="btn btn-outline btn-primary btn-rounded" onclick="addBatch()" shiro:hasPermission="config:location:addBatch">
72 <i class="fa fa-plus-square-o"></i> 批量新增 72 <i class="fa fa-plus-square-o"></i> 批量新增
73 </a> 73 </a>
74 <a class="btn btn-outline btn-danger btn-rounded" onclick="$.operate.batRemove()" shiro:hasPermission="config:location:remove"> 74 <a class="btn btn-outline btn-danger btn-rounded" onclick="$.operate.batRemove()" shiro:hasPermission="config:location:remove">
@@ -133,6 +133,10 @@ @@ -133,6 +133,10 @@
133 title : '格' 133 title : '格'
134 }, 134 },
135 { 135 {
  136 + field : 'roadway',
  137 + title : '巷道'
  138 + },
  139 + {
136 field : 'name', 140 field : 'name',
137 title : '名称', 141 title : '名称',
138 visible : false 142 visible : false
src/main/resources/templates/inventory/cycleCountDetail/cycleCountDetail.html
@@ -155,6 +155,10 @@ @@ -155,6 +155,10 @@
155 title: '仓库', 155 title: '仓库',
156 }, 156 },
157 { 157 {
  158 + field: 'preferenceCode',
  159 + title: '盘点首选项编码',
  160 + },
  161 + {
158 field: 'countId', 162 field: 'countId',
159 title: '盘点内部号', 163 title: '盘点内部号',
160 visible: false 164 visible: false