Commit 3525ac22d984fcd073d979e4fb5ef211470add42
Merge branch 'develop' of http://www.huahengrobot.com:90/wms/wms2 into develop
Showing
27 changed files
with
858 additions
and
260 deletions
src/main/java/com/huaheng/common/utils/file/FileUploadUtils.java
... | ... | @@ -7,6 +7,7 @@ import org.apache.shiro.crypto.hash.Md5Hash; |
7 | 7 | import org.springframework.web.multipart.MultipartFile; |
8 | 8 | |
9 | 9 | import java.io.File; |
10 | +import java.io.FileNotFoundException; | |
10 | 11 | import java.io.IOException; |
11 | 12 | |
12 | 13 | /** |
... | ... | @@ -37,6 +38,16 @@ public class FileUploadUtils |
37 | 38 | */ |
38 | 39 | public static final String IMAGE_JPG_EXTENSION = ".jpg"; |
39 | 40 | |
41 | + /** | |
42 | + * 图片类型png | |
43 | + */ | |
44 | + public static final String IMAGE_PNG_EXTENSION = ".png"; | |
45 | + | |
46 | + /** | |
47 | + * 图片类型ico | |
48 | + */ | |
49 | + public static final String IMAGE_ICO_EXTENSION = ".ico"; | |
50 | + | |
40 | 51 | private static int counter = 0; |
41 | 52 | |
42 | 53 | public static void setDefaultBaseDir(String defaultBaseDir) |
... | ... | @@ -130,7 +141,7 @@ public class FileUploadUtils |
130 | 141 | } |
131 | 142 | if (!desc.exists()) |
132 | 143 | { |
133 | - desc.createNewFile(); | |
144 | +// desc.createNewFile(); | |
134 | 145 | } |
135 | 146 | return desc; |
136 | 147 | } |
... | ... | @@ -161,4 +172,16 @@ public class FileUploadUtils |
161 | 172 | } |
162 | 173 | } |
163 | 174 | |
175 | + /** | |
176 | + * 公司logo,icon图片上传路径 | |
177 | + * @return | |
178 | + * @throws FileNotFoundException | |
179 | + */ | |
180 | + public static String getCorporationUploadPath() throws FileNotFoundException { | |
181 | + //上传到resource/static/corporation目录下,jar包布署时无法实现 | |
182 | +// String path = ResourceUtils.getURL("classpath:").getPath()+"static/"; | |
183 | + //上传到huangheng.profile配置的目录下 | |
184 | + String path = getDefaultBaseDir(); | |
185 | + return path; | |
186 | + } | |
164 | 187 | } |
... | ... |
src/main/java/com/huaheng/framework/config/ShiroConfig.java
... | ... | @@ -254,6 +254,7 @@ public class ShiroConfig { |
254 | 254 | filterChainDefinitionMap.put("/login", "anon"); |
255 | 255 | filterChainDefinitionMap.put("/api/login", "anon"); |
256 | 256 | filterChainDefinitionMap.put("/mobile/login", "anon"); |
257 | + filterChainDefinitionMap.put("/api/getTokenForMobile", "anon"); | |
257 | 258 | filterChainDefinitionMap.put("/getWarehouseByUserCode", "anon"); |
258 | 259 | filterChainDefinitionMap.put("/API/WMS/v2/login", "anon"); |
259 | 260 | filterChainDefinitionMap.put("/api/**", "anon"); |
... | ... |
src/main/java/com/huaheng/framework/token/TokenController.java
... | ... | @@ -3,16 +3,16 @@ package com.huaheng.framework.token; |
3 | 3 | import com.huaheng.common.utils.StringUtils; |
4 | 4 | import com.huaheng.framework.shiro.service.PasswordService; |
5 | 5 | import com.huaheng.framework.web.controller.BaseController; |
6 | +import com.huaheng.framework.web.domain.AjaxResult; | |
6 | 7 | import com.huaheng.framework.web.domain.Result; |
7 | 8 | import com.huaheng.pc.system.user.domain.User; |
8 | 9 | import com.huaheng.pc.system.user.service.IUserService; |
9 | -import org.springframework.web.bind.annotation.PostMapping; | |
10 | -import org.springframework.web.bind.annotation.RequestMapping; | |
11 | -import org.springframework.web.bind.annotation.ResponseBody; | |
12 | -import org.springframework.web.bind.annotation.RestController; | |
10 | +import io.swagger.annotations.ApiParam; | |
11 | +import org.springframework.web.bind.annotation.*; | |
13 | 12 | |
14 | 13 | import javax.annotation.Resource; |
15 | 14 | import java.util.Calendar; |
15 | +import java.util.Map; | |
16 | 16 | |
17 | 17 | /** |
18 | 18 | * Created by Enzo Cotter on 2020/6/11. |
... | ... | @@ -53,4 +53,23 @@ public class TokenController extends BaseController { |
53 | 53 | } |
54 | 54 | |
55 | 55 | } |
56 | + | |
57 | + @PostMapping("/getTokenForMobile") | |
58 | + @ResponseBody | |
59 | + public AjaxResult getTokenForMobile(@RequestBody @ApiParam(value="code和password的Map集合") Map<String, String> param) { | |
60 | + String userName = param.get("userName"); | |
61 | + String password = param.get("password"); | |
62 | + if (StringUtils.isEmpty(userName) || StringUtils.isEmpty(password)) { | |
63 | + return AjaxResult.error("用户名和密码不能为空"); | |
64 | + } | |
65 | + User user = userService.selectUserByLoginName(userName); | |
66 | + | |
67 | + if (user.getPassword().equals(passwordService.encryptPassword(user.getLoginName(), password, user.getSalt()))) { | |
68 | + String token = tokenService.createTokenForMobile(user); | |
69 | + return AjaxResult.success("获取token成功").setData(token); | |
70 | + } else { | |
71 | + return AjaxResult.error("密码错误"); | |
72 | + } | |
73 | + | |
74 | + } | |
56 | 75 | } |
... | ... |
src/main/java/com/huaheng/framework/token/TokenService.java
... | ... | @@ -68,6 +68,30 @@ public class TokenService { |
68 | 68 | } |
69 | 69 | |
70 | 70 | /** |
71 | + * 创建token | |
72 | + * @param user 用户 | |
73 | + * @return | |
74 | + */ | |
75 | + public String createTokenForMobile(User user){ | |
76 | + //签发时间 | |
77 | + Date iatTime = new Date(); | |
78 | + //expire time | |
79 | + Calendar nowTime = Calendar.getInstance(); | |
80 | + nowTime.add(Calendar.DATE, EXPIRE_TIME); | |
81 | + Date expireTime = nowTime.getTime(); | |
82 | + | |
83 | + Claims claims = Jwts.claims(); | |
84 | + claims.put("user", user); | |
85 | + claims.setIssuedAt(iatTime); | |
86 | + String token = Jwts.builder().setClaims(claims) | |
87 | + .signWith(SignatureAlgorithm.HS512,signingKey).compact(); | |
88 | +// if (redisCache.setCacheObject(token, user.toString(), EXPIRE_TIME, TimeUnit.DAYS) == null) { | |
89 | +// throw new ServiceException("redis异常"); | |
90 | +// } | |
91 | + return token; | |
92 | + } | |
93 | + | |
94 | + /** | |
71 | 95 | * 解析token |
72 | 96 | * @param token |
73 | 97 | */ |
... | ... |
src/main/java/com/huaheng/framework/token/WebAppConfigurer.java
... | ... | @@ -18,6 +18,7 @@ public class WebAppConfigurer implements WebMvcConfigurer { |
18 | 18 | public void addInterceptors(InterceptorRegistry interceptorRegistry) { |
19 | 19 | interceptorRegistry.addInterceptor(apiInterceptor()) |
20 | 20 | .addPathPatterns("/api/**") |
21 | - .excludePathPatterns("/api/getToken"); | |
21 | + .excludePathPatterns("/api/getToken") | |
22 | + .excludePathPatterns("/api/getTokenForMobile"); | |
22 | 23 | } |
23 | 24 | } |
... | ... |
src/main/java/com/huaheng/mobile/download/DownloadController.java
0 → 100644
1 | +package com.huaheng.mobile.download; | |
2 | + | |
3 | +import com.huaheng.framework.web.domain.AjaxResult; | |
4 | +import com.huaheng.pc.config.sendMail.service.MailServiceImpl; | |
5 | +import org.apache.commons.fileupload.util.Streams; | |
6 | +import org.apache.commons.io.IOUtils; | |
7 | +import org.apache.commons.lang.exception.ExceptionUtils; | |
8 | +import org.slf4j.Logger; | |
9 | +import org.slf4j.LoggerFactory; | |
10 | +import org.springframework.web.bind.annotation.RequestMapping; | |
11 | +import org.springframework.web.bind.annotation.RequestParam; | |
12 | +import org.springframework.web.bind.annotation.RestController; | |
13 | +import org.springframework.web.multipart.MultipartFile; | |
14 | + | |
15 | +import javax.servlet.http.HttpServletRequest; | |
16 | +import javax.servlet.http.HttpServletResponse; | |
17 | +import java.io.*; | |
18 | + | |
19 | +@RestController | |
20 | +@RequestMapping("/mobile/download") | |
21 | +public class DownloadController { | |
22 | + | |
23 | + private final static String fileDir="files"; | |
24 | + private final static String rootPath = System.getProperty("user.home")+File.separator+fileDir+File.separator; | |
25 | + private final Logger logger = LoggerFactory.getLogger(DownloadController.class); | |
26 | + @RequestMapping("/upload") | |
27 | + public Object uploadFile(@RequestParam("file") MultipartFile[] multipartFiles, final HttpServletResponse response, final HttpServletRequest request){ | |
28 | + File fileDir = new File(rootPath); | |
29 | + if (!fileDir.exists() && !fileDir.isDirectory()) { | |
30 | + fileDir.mkdirs(); | |
31 | + } | |
32 | + try { | |
33 | + if (multipartFiles != null && multipartFiles.length > 0) { | |
34 | + for(int i = 0;i<multipartFiles.length;i++){ | |
35 | + try { | |
36 | + //以原来的名称命名,覆盖掉旧的 | |
37 | + String storagePath = rootPath+multipartFiles[i].getOriginalFilename(); | |
38 | + logger.info("上传的文件:" + multipartFiles[i].getName() + "," + multipartFiles[i].getContentType() + "," + multipartFiles[i].getOriginalFilename() | |
39 | + +",保存的路径为:" + storagePath); | |
40 | + Streams.copy(multipartFiles[i].getInputStream(), new FileOutputStream(storagePath), true); | |
41 | + //或者下面的 | |
42 | + // Path path = Paths.get(storagePath); | |
43 | + //Files.write(path,multipartFiles[i].getBytes()); | |
44 | + } catch (IOException e) { | |
45 | + logger.error(ExceptionUtils.getFullStackTrace(e)); | |
46 | + } | |
47 | + } | |
48 | + } | |
49 | + | |
50 | + } catch (Exception e) { | |
51 | + return AjaxResult.error(e.getMessage()); | |
52 | + } | |
53 | + return AjaxResult.success("上传成功!"); | |
54 | + } | |
55 | + | |
56 | + @RequestMapping("/download") | |
57 | + public Object downloadFile(@RequestParam String fileName, final HttpServletResponse response, final HttpServletRequest request){ | |
58 | + OutputStream os = null; | |
59 | + InputStream is= null; | |
60 | + try { | |
61 | + // 取得输出流 | |
62 | + os = response.getOutputStream(); | |
63 | + // 清空输出流 | |
64 | + response.reset(); | |
65 | + response.setContentType("application/x-download;charset=GBK"); | |
66 | + response.setHeader("Content-Disposition", "attachment;filename="+ new String(fileName.getBytes("utf-8"), "iso-8859-1")); | |
67 | + //读取流 | |
68 | + File f = new File(rootPath+fileName); | |
69 | + is = new FileInputStream(f); | |
70 | + if (is == null) { | |
71 | + logger.error("下载附件失败,请检查文件“" + fileName + "”是否存在"); | |
72 | + return AjaxResult.error("下载附件失败,请检查文件“" + fileName + "”是否存在"); | |
73 | + } | |
74 | + //复制 | |
75 | + IOUtils.copy(is, response.getOutputStream()); | |
76 | + response.getOutputStream().flush(); | |
77 | + } catch (IOException e) { | |
78 | + return AjaxResult.error("下载附件失败,error:"+e.getMessage()); | |
79 | + } | |
80 | + //文件的关闭放在finally中 | |
81 | + finally | |
82 | + { | |
83 | + try { | |
84 | + if (is != null) { | |
85 | + is.close(); | |
86 | + } | |
87 | + } catch (IOException e) { | |
88 | + logger.error(ExceptionUtils.getFullStackTrace(e)); | |
89 | + } | |
90 | + try { | |
91 | + if (os != null) { | |
92 | + os.close(); | |
93 | + } | |
94 | + } catch (IOException e) { | |
95 | + logger.error(ExceptionUtils.getFullStackTrace(e)); | |
96 | + } | |
97 | + } | |
98 | + return null; | |
99 | + } | |
100 | + | |
101 | +} | |
... | ... |
src/main/java/com/huaheng/mobile/receipt/MobileBatchReceiptController.java
src/main/java/com/huaheng/pc/config/corporation/controller/CorporationController.java
... | ... | @@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
6 | 6 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
7 | 7 | import com.huaheng.common.support.Convert; |
8 | 8 | import com.huaheng.common.utils.StringUtils; |
9 | +import com.huaheng.common.utils.file.FileUploadUtils; | |
9 | 10 | import com.huaheng.common.utils.security.ShiroUtils; |
10 | 11 | import com.huaheng.framework.aspectj.lang.annotation.Log; |
11 | 12 | import com.huaheng.framework.aspectj.lang.constant.BusinessType; |
... | ... | @@ -16,13 +17,18 @@ import com.huaheng.framework.web.page.TableDataInfo; |
16 | 17 | import com.huaheng.framework.web.page.TableSupport; |
17 | 18 | import com.huaheng.pc.config.corporation.domain.Corporation; |
18 | 19 | import com.huaheng.pc.config.corporation.service.CorporationService; |
20 | +import org.apache.commons.io.FileUtils; | |
19 | 21 | import org.apache.shiro.authz.annotation.RequiresPermissions; |
20 | 22 | import org.springframework.stereotype.Controller; |
21 | 23 | import org.springframework.ui.ModelMap; |
22 | 24 | import org.springframework.web.bind.annotation.*; |
25 | +import org.springframework.web.multipart.MultipartFile; | |
23 | 26 | |
24 | 27 | import javax.annotation.Resource; |
28 | +import java.io.File; | |
29 | +import java.io.IOException; | |
25 | 30 | import java.util.Arrays; |
31 | +import java.util.Date; | |
26 | 32 | import java.util.List; |
27 | 33 | |
28 | 34 | /** |
... | ... | @@ -38,7 +44,7 @@ public class CorporationController extends BaseController { |
38 | 44 | @Resource |
39 | 45 | private CorporationService corporationService; |
40 | 46 | |
41 | - private String prefix = "/config/corporation"; | |
47 | + private String prefix = "config/corporation"; | |
42 | 48 | |
43 | 49 | @RequiresPermissions("config:corporation:view") |
44 | 50 | @GetMapping() |
... | ... | @@ -61,7 +67,6 @@ public class CorporationController extends BaseController { |
61 | 67 | |
62 | 68 | lambdaQueryWrapper.ge(StringUtils.isNotEmpty(createdBegin), Corporation::getCreated, createdBegin) |
63 | 69 | .le(StringUtils.isNotEmpty(createdEnd), Corporation::getCreated, createdEnd) |
64 | - .like(StringUtils.isNotEmpty(corporation.getAddress()), Corporation::getAddress, corporation.getAddress()) | |
65 | 70 | .like(StringUtils.isNotEmpty(corporation.getName()), Corporation::getName, corporation.getName()); |
66 | 71 | |
67 | 72 | if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize)) { |
... | ... | @@ -77,6 +82,12 @@ public class CorporationController extends BaseController { |
77 | 82 | } |
78 | 83 | } |
79 | 84 | |
85 | +// @GetMapping("/show") | |
86 | +// @ResponseBody | |
87 | +// public Corporation show(){ | |
88 | +// return corporationService.getEnableCorporation(); | |
89 | +// } | |
90 | + | |
80 | 91 | /** |
81 | 92 | * 新增公司 |
82 | 93 | */ |
... | ... | @@ -86,16 +97,45 @@ public class CorporationController extends BaseController { |
86 | 97 | } |
87 | 98 | |
88 | 99 | /** |
89 | - * 新增保存公司 | |
100 | + * 新增公司配置 | |
90 | 101 | */ |
91 | 102 | @RequiresPermissions("config:corporation:add") |
92 | - @Log(title = "配置-容器类型设置", operating = "新增容器类型", action = BusinessType.INSERT) | |
103 | + @Log(title = "通用-公司配置", operating = "新增公司配置", action = BusinessType.INSERT) | |
93 | 104 | @PostMapping("/add") |
94 | 105 | @ResponseBody |
95 | - public AjaxResult addSave(Corporation corporation) { | |
96 | - corporation.setCreateBy(ShiroUtils.getLoginName()); | |
97 | - corporation.setCreateBy(ShiroUtils.getLoginName()); | |
98 | - return toAjax(corporationService.save(corporation)); | |
106 | + public AjaxResult addSave(Corporation corporation, @RequestParam("pLogoBigFile") MultipartFile pLogoBigFile, | |
107 | + @RequestParam("pLogoSmallFile") MultipartFile pLogoSmallFile, | |
108 | + @RequestParam("pIconFile") MultipartFile pIconFile) { | |
109 | + corporation.setCreatedBy(ShiroUtils.getLoginName()); | |
110 | + corporation.setCreated(new Date()); | |
111 | + boolean isEnable = corporation.isEnable(); | |
112 | + corporation.setEnable(false); | |
113 | + String baseAddress = null; | |
114 | + | |
115 | + try { | |
116 | + corporationService.save(corporation); | |
117 | + baseAddress = FileUploadUtils.getCorporationUploadPath(); | |
118 | + corporation.setBaseAddress(baseAddress); | |
119 | + | |
120 | + String subPath = corporation.getSubPath(); | |
121 | + String savePath = corporation.getSavePath(); | |
122 | + | |
123 | + String pIconName = FileUploadUtils.upload(savePath, pIconFile, FileUploadUtils.IMAGE_ICO_EXTENSION); | |
124 | + String pLogoBigName = FileUploadUtils.upload(savePath, pLogoBigFile, FileUploadUtils.IMAGE_PNG_EXTENSION); | |
125 | + String pLogoSmallName = FileUploadUtils.upload(savePath, pLogoSmallFile, FileUploadUtils.IMAGE_PNG_EXTENSION); | |
126 | + | |
127 | + corporation.setPIcon(subPath + pIconName); | |
128 | + corporation.setPLogoBig(subPath + pLogoBigName); | |
129 | + corporation.setPLogoSmall(subPath + pLogoSmallName); | |
130 | + corporationService.updateById(corporation); | |
131 | + if(isEnable) { | |
132 | + corporationService.enableCorporationById(corporation.getId()); | |
133 | + } | |
134 | + } catch (Exception e) { | |
135 | + return error("图片上传失败:" + e.getMessage()); | |
136 | + } | |
137 | + | |
138 | + return toAjax(true); | |
99 | 139 | } |
100 | 140 | |
101 | 141 | /** |
... | ... | @@ -114,7 +154,44 @@ public class CorporationController extends BaseController { |
114 | 154 | @Log(title = "配置-公司", operating = "修改公司", action = BusinessType.UPDATE) |
115 | 155 | @PostMapping("/edit") |
116 | 156 | @ResponseBody |
117 | - public AjaxResult editSave(Corporation corporation) { | |
157 | + public AjaxResult editSave(Corporation corporation, @RequestParam(value = "pLogoBigFile", required = false) MultipartFile pLogoBigFile, | |
158 | + @RequestParam(value = "pLogoSmallFile", required = false) MultipartFile pLogoSmallFile, | |
159 | + @RequestParam(value = "pIconFile", required = false) MultipartFile pIconFile) { | |
160 | + | |
161 | + String baseAddress = null; | |
162 | + try { | |
163 | + baseAddress = FileUploadUtils.getCorporationUploadPath(); | |
164 | + corporation.setBaseAddress(baseAddress); | |
165 | + String subPath = corporation.getSubPath(); | |
166 | + String savePath = corporation.getSavePath(); | |
167 | + Corporation oldCorp = corporationService.getById(corporation.getId()); | |
168 | + if(pLogoBigFile != null){ | |
169 | + String pLogoBigName = FileUploadUtils.upload(savePath, pLogoBigFile, FileUploadUtils.IMAGE_PNG_EXTENSION); | |
170 | + FileUtils.deleteQuietly(new File(oldCorp.getPLogoBigPath())); | |
171 | + corporation.setPLogoBig(subPath + pLogoBigName); | |
172 | + } | |
173 | + | |
174 | + if(pLogoSmallFile != null){ | |
175 | + String pLogoSmallName = FileUploadUtils.upload(savePath, pLogoSmallFile, FileUploadUtils.IMAGE_PNG_EXTENSION); | |
176 | + FileUtils.deleteQuietly(new File(oldCorp.getPLogoSmallPath())); | |
177 | + corporation.setPLogoSmall(subPath + pLogoSmallName); | |
178 | + } | |
179 | + | |
180 | + if(pIconFile != null){ | |
181 | + String pIconName = FileUploadUtils.upload(savePath, pIconFile, FileUploadUtils.IMAGE_ICO_EXTENSION); | |
182 | + FileUtils.deleteQuietly(new File(oldCorp.getPIconPath())); | |
183 | + corporation.setPIcon(subPath + pIconName); | |
184 | + } | |
185 | + | |
186 | + if(corporation.isEnable()){ | |
187 | + corporationService.enableCorporationById(corporation.getId()); | |
188 | + } | |
189 | + } catch (Exception e) { | |
190 | + return error("图片上传失败:" + e.getMessage()); | |
191 | + } | |
192 | + | |
193 | + corporation.setLastUpdatedBy(ShiroUtils.getLoginName()); | |
194 | + corporation.setLastUpdated(new Date()); | |
118 | 195 | return toAjax(corporationService.saveOrUpdate(corporation)); |
119 | 196 | } |
120 | 197 | |
... | ... | @@ -129,6 +206,16 @@ public class CorporationController extends BaseController { |
129 | 206 | if (StringUtils.isEmpty(ids)) { |
130 | 207 | return AjaxResult.error("id不能为空"); |
131 | 208 | } |
132 | - return toAjax(corporationService.removeByIds(Arrays.asList(Convert.toIntArray(ids)))); | |
209 | + Corporation corporation = corporationService.getById(ids); | |
210 | + boolean ret = false; | |
211 | + try { | |
212 | + String subPath = "img/corporation/" + corporation.getId() + "/"; | |
213 | + String savePath = corporation.getBaseAddress() + subPath; | |
214 | + FileUtils.deleteDirectory(new File(savePath)); | |
215 | + ret = corporationService.removeByIds(Arrays.asList(Convert.toIntArray(ids))); | |
216 | + }catch (IOException e){ | |
217 | + error("文件删除失败:" + e.getMessage()); | |
218 | + } | |
219 | + return toAjax(ret); | |
133 | 220 | } |
134 | 221 | } |
... | ... |
src/main/java/com/huaheng/pc/config/corporation/domain/Corporation.java
... | ... | @@ -16,7 +16,7 @@ import lombok.Data; |
16 | 16 | @TableName(value = "corporation") |
17 | 17 | public class Corporation implements Serializable { |
18 | 18 | @TableId(value = "id", type = IdType.AUTO) |
19 | - private Long id; | |
19 | + private Integer id; | |
20 | 20 | |
21 | 21 | /** |
22 | 22 | * 公司名称 |
... | ... | @@ -25,16 +25,59 @@ public class Corporation implements Serializable { |
25 | 25 | private String name; |
26 | 26 | |
27 | 27 | /** |
28 | - * logo | |
28 | + * pLogoBig | |
29 | 29 | */ |
30 | - @TableField(value = "logo") | |
31 | - private String logo; | |
30 | + @TableField(value = "pLogoBig") | |
31 | + private String pLogoBig; | |
32 | 32 | |
33 | 33 | /** |
34 | - * 地址 | |
34 | + * pLogoSmall | |
35 | 35 | */ |
36 | - @TableField(value = "address") | |
37 | - private String address; | |
36 | + @TableField(value = "pLogoSmall") | |
37 | + private String pLogoSmall; | |
38 | + | |
39 | + /** | |
40 | + * pIcon | |
41 | + */ | |
42 | + @TableField(value = "pIcon") | |
43 | + private String pIcon; | |
44 | + | |
45 | + /** | |
46 | + * versionInfo | |
47 | + */ | |
48 | + @TableField(value = "versionInfo") | |
49 | + private String versionInfo; | |
50 | + | |
51 | + /** | |
52 | + * baseAddress | |
53 | + */ | |
54 | + @TableField(value = "baseAddress") | |
55 | + private String baseAddress; | |
56 | + | |
57 | + /** | |
58 | + * enable | |
59 | + */ | |
60 | + @TableField(value = "enable") | |
61 | + private boolean enable; | |
62 | + | |
63 | + /** | |
64 | + * userDef1 | |
65 | + */ | |
66 | + @TableField(value = "userDef1") | |
67 | + private String userDef1; | |
68 | + | |
69 | + /** | |
70 | + * userDef2 | |
71 | + */ | |
72 | + @TableField(value = "userDef2") | |
73 | + private String userDef2; | |
74 | + | |
75 | + /** | |
76 | + * userDef3 | |
77 | + */ | |
78 | + @TableField(value = "userDef3") | |
79 | + private String userDef3; | |
80 | + | |
38 | 81 | |
39 | 82 | /** |
40 | 83 | * 创建时间 |
... | ... | @@ -43,10 +86,61 @@ public class Corporation implements Serializable { |
43 | 86 | private Date created; |
44 | 87 | |
45 | 88 | /** |
46 | - * 创建人 | |
89 | + * 创建者 | |
47 | 90 | */ |
48 | - @TableField(value = "create_by") | |
49 | - private String createBy; | |
91 | + @TableField(value = "createdBy") | |
92 | + private String createdBy; | |
50 | 93 | |
94 | + /** | |
95 | + * 更新时间 | |
96 | + */ | |
97 | + @TableField(value = "lastUpdated") | |
98 | + private Date lastUpdated; | |
99 | + | |
100 | + /** | |
101 | + * 更新者 | |
102 | + */ | |
103 | + @TableField(value = "lastUpdatedBy") | |
104 | + private String lastUpdatedBy; | |
51 | 105 | private static final long serialVersionUID = 1L; |
106 | + | |
107 | + /** | |
108 | + * 拼装图片存储 | |
109 | + * @return | |
110 | + */ | |
111 | + public String getSavePath(){ | |
112 | + return this.getBaseAddress() + this.getSubPath(); | |
113 | + } | |
114 | + | |
115 | + /*** | |
116 | + * 拼装图片相对路径 | |
117 | + * @return | |
118 | + */ | |
119 | + public String getSubPath(){ | |
120 | + return "img/corporation/" + this.getId() + "/"; | |
121 | + } | |
122 | + | |
123 | + /** | |
124 | + * 取pLogoBig的存储路径 | |
125 | + * @return | |
126 | + */ | |
127 | + public String getPLogoBigPath(){ | |
128 | + return this.getBaseAddress() + this.getPLogoBig(); | |
129 | + } | |
130 | + | |
131 | + /** | |
132 | + * 取pLogoSmall的存储路径 | |
133 | + * @return | |
134 | + */ | |
135 | + public String getPLogoSmallPath(){ | |
136 | + return this.getBaseAddress() + this.getPLogoSmall(); | |
137 | + } | |
138 | + | |
139 | + /** | |
140 | + * 取pIcon的存储路径 | |
141 | + * @return | |
142 | + */ | |
143 | + public String getPIconPath(){ | |
144 | + return this.getBaseAddress() + this.getPIcon(); | |
145 | + } | |
52 | 146 | } |
53 | 147 | \ No newline at end of file |
... | ... |
src/main/java/com/huaheng/pc/config/corporation/mapper/CorporationMapper.java
... | ... | @@ -2,10 +2,17 @@ package com.huaheng.pc.config.corporation.mapper; |
2 | 2 | |
3 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
4 | 4 | import com.huaheng.pc.config.corporation.domain.Corporation; |
5 | +import org.apache.ibatis.annotations.Param; | |
5 | 6 | |
6 | 7 | /** |
7 | 8 | * Created by Enzo Cotter on 2020/3/20. |
8 | 9 | */ |
9 | 10 | |
10 | 11 | public interface CorporationMapper extends BaseMapper<Corporation> { |
12 | + | |
13 | + Corporation getEnableCorporation(); | |
14 | + | |
15 | + int enableCorporationById(@Param("id") Integer id); | |
16 | + | |
17 | + int disableAllCorporation(); | |
11 | 18 | } |
12 | 19 | \ No newline at end of file |
... | ... |
src/main/java/com/huaheng/pc/config/corporation/service/CorporationService.java
1 | 1 | package com.huaheng.pc.config.corporation.service; |
2 | 2 | |
3 | +import com.huaheng.framework.web.domain.AjaxResult; | |
3 | 4 | import com.huaheng.pc.config.corporation.domain.Corporation; |
4 | 5 | import com.baomidou.mybatisplus.extension.service.IService; |
5 | - /** | |
6 | + | |
7 | +import java.util.List; | |
8 | + | |
9 | +/** | |
6 | 10 | * Created by Enzo Cotter on 2020/3/20. |
7 | 11 | */ |
8 | 12 | |
9 | 13 | public interface CorporationService extends IService<Corporation>{ |
10 | 14 | |
15 | + public Corporation getEnableCorporation(); | |
11 | 16 | |
17 | + public int enableCorporationById(Integer id); | |
12 | 18 | } |
... | ... |
src/main/java/com/huaheng/pc/config/corporation/service/impl/CorporationServiceImpl.java
1 | 1 | package com.huaheng.pc.config.corporation.service.impl; |
2 | 2 | |
3 | 3 | import org.springframework.stereotype.Service; |
4 | -import javax.annotation.Resource; | |
5 | -import java.util.List; | |
6 | 4 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
7 | 5 | import com.huaheng.pc.config.corporation.mapper.CorporationMapper; |
8 | 6 | import com.huaheng.pc.config.corporation.domain.Corporation; |
9 | 7 | import com.huaheng.pc.config.corporation.service.CorporationService; |
8 | +import org.springframework.transaction.annotation.Transactional; | |
9 | + | |
10 | +import javax.annotation.Resource; | |
11 | + | |
10 | 12 | /** |
11 | 13 | * Created by Enzo Cotter on 2020/3/20. |
12 | 14 | */ |
13 | 15 | |
14 | -@Service | |
16 | +@Service("corporationService") | |
15 | 17 | public class CorporationServiceImpl extends ServiceImpl<CorporationMapper, Corporation> implements CorporationService{ |
16 | 18 | |
19 | + @Resource | |
20 | + private CorporationMapper corporationMapper; | |
21 | + | |
22 | + @Override | |
23 | + public Corporation getEnableCorporation() { | |
24 | + try { | |
25 | + return corporationMapper.getEnableCorporation(); | |
26 | + }catch (Exception e){ | |
27 | + //页面判断corporation为空时,会用默认配置,避免页面崩溃 | |
28 | + return null; | |
29 | + } | |
30 | + } | |
31 | + | |
32 | + @Override | |
33 | + @Transactional(rollbackFor = Exception.class) | |
34 | + public int enableCorporationById(Integer id) { | |
35 | + corporationMapper.disableAllCorporation(); | |
36 | + return corporationMapper.enableCorporationById(id); | |
37 | + } | |
17 | 38 | } |
... | ... |
src/main/java/com/huaheng/pc/system/user/controller/ProfileController.java
... | ... | @@ -83,7 +83,7 @@ public class ProfileController extends BaseController |
83 | 83 | int rows = userService.resetUserPwd(user); |
84 | 84 | if (rows > 0) |
85 | 85 | { |
86 | - setUser(userService.selectUserById(user.getId())); | |
86 | +// setUser(userService.selectUserById(user.getId())); | |
87 | 87 | return success(); |
88 | 88 | } |
89 | 89 | return error(); |
... | ... | @@ -119,7 +119,7 @@ public class ProfileController extends BaseController |
119 | 119 | { |
120 | 120 | if (userService.updateUserInfo(user) > 0) |
121 | 121 | { |
122 | - setUser(userService.selectUserById(user.getId())); | |
122 | +// setUser(userService.selectUserById(user.getId())); | |
123 | 123 | return success(); |
124 | 124 | } |
125 | 125 | return error(); |
... | ... | @@ -138,10 +138,13 @@ public class ProfileController extends BaseController |
138 | 138 | if (!file.isEmpty()) |
139 | 139 | { |
140 | 140 | String avatar = FileUploadUtils.upload(file); |
141 | + user.setId(getUser().getId()); | |
141 | 142 | user.setAvatar(avatar); |
142 | 143 | if (userService.updateUserInfo(user) > 0) |
143 | 144 | { |
144 | - setUser(userService.selectUserById(user.getId())); | |
145 | + User loginUser = getUser(); | |
146 | + loginUser.setAvatar(avatar); | |
147 | + setUser(loginUser); | |
145 | 148 | return success(); |
146 | 149 | } |
147 | 150 | } |
... | ... |
src/main/java/com/huaheng/pc/task/taskHeader/service/TaskHeaderServiceImpl.java
... | ... | @@ -628,7 +628,6 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea |
628 | 628 | } |
629 | 629 | |
630 | 630 | @Override |
631 | - @Transactional(rollbackFor = Exception.class) | |
632 | 631 | public AjaxResult completeTaskByWMS(Integer[] taskIds, String[] weightConvert) { |
633 | 632 | for (int i = 0;i<taskIds.length;i++) { |
634 | 633 | TaskHeader task = taskHeaderService.getById(taskIds[i]); |
... | ... | @@ -671,12 +670,12 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea |
671 | 670 | * |
672 | 671 | * @param task |
673 | 672 | */ |
674 | - @Transactional(rollbackFor = Exception.class) | |
675 | 673 | public void completeTask(TaskHeader task) { |
676 | 674 | //区分任务类型 |
677 | 675 | if (task.getInternalTaskType().equals(QuantityConstant.TASK_INTENERTYPE_SHELF) ) { |
678 | 676 | //入库任务 |
679 | 677 | this.completeReceiptTask(task); |
678 | +// combineInventory(task); | |
680 | 679 | } |
681 | 680 | if (task.getInternalTaskType().equals(QuantityConstant.TASK_INTENERTYPE_PICKING) && |
682 | 681 | (task.getTaskType().equals(QuantityConstant.TASK_TYPE_WHOLESHIPMENT) || task.getTaskType().equals(QuantityConstant.TASK_TYPE_SORTINGSHIPMENT))) { |
... | ... | @@ -716,35 +715,44 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea |
716 | 715 | if (taskReceiptContainerDetail.size() < 1) { |
717 | 716 | return AjaxResult.success("未找到对应任务的入库单号!!!"); |
718 | 717 | } |
718 | + LambdaQueryWrapper<InventoryHeader> inventoryHeaderErapper = Wrappers.lambdaQuery(); | |
719 | + inventoryHeaderErapper.eq(InventoryHeader::getWarehouseCode, ShiroUtils.getWarehouseCode()) | |
720 | + .eq(InventoryHeader::getLocationCode, task.getFromLocation()) | |
721 | + .eq(InventoryHeader::getContainerCode, task.getContainerCode()); | |
722 | + InventoryHeader header = inventoryHeaderService.getOne(inventoryHeaderErapper); | |
723 | + | |
724 | + if(header == null) { | |
725 | + //添加库存单 | |
726 | + header = new InventoryHeader(); | |
727 | + header.setWarehouseCode(task.getWarehouseCode()); | |
728 | + header.setCompanyCode(task.getCompanyCode());//货主 | |
729 | + header.setContainerCode(task.getContainerCode()); | |
730 | + header.setContainerStatus("some"); | |
731 | + header.setLocationCode(task.getToLocation()); | |
732 | + header.setLocking(1); | |
733 | + header.setEnable(1); | |
734 | + header.setTotalQty(new BigDecimal(0)); | |
735 | + header.setTotalWeight(task.getWeight()); | |
736 | + header.setCreatedBy(ShiroUtils.getLoginName()); | |
737 | + header.setCreated(new Date()); | |
738 | + header.setLastUpdatedBy(ShiroUtils.getLoginName()); | |
739 | + header.setLastUpdated(new Date()); | |
740 | + if (!inventoryHeaderService.save(header)) { | |
741 | + throw new ServiceException("添加库存单失败"); | |
742 | + } | |
743 | + } | |
719 | 744 | for (Map<String, Object> map : taskReceiptContainerDetail) { |
720 | 745 | //将未完成的任务数量更新到库存表 |
721 | 746 | if (DataUtils.getInteger(map.get("status")) < QuantityConstant.TASK_STATUS_COMPLETED) { |
747 | + | |
748 | + | |
722 | 749 | LambdaQueryWrapper<InventoryDetail> inventory = Wrappers.lambdaQuery(); |
723 | 750 | inventory.eq(InventoryDetail::getWarehouseCode, ShiroUtils.getWarehouseCode()) |
724 | 751 | .eq(InventoryDetail::getLocationCode, task.getFromLocation()) |
725 | -// .eq(InventoryDetail::getReceiptDetailId, DataUtils.getString(map.get("receiptDetailId"))) | |
752 | + .eq(InventoryDetail::getMaterialCode, DataUtils.getString(map.get("materialCode"))) | |
726 | 753 | .eq(InventoryDetail::getContainerCode, DataUtils.getString(map.get("containerCode"))); |
727 | 754 | InventoryDetail detail = inventoryDetailService.getOne(inventory); |
728 | 755 | if (detail == null) { |
729 | - //添加库存单 | |
730 | - InventoryHeader header = new InventoryHeader(); | |
731 | - header.setWarehouseCode(DataUtils.getString(map.get("warehouseCode")));//仓库 | |
732 | - header.setCompanyCode(task.getCompanyCode());//货主 | |
733 | - header.setContainerCode(DataUtils.getString(map.get("containerCode")));//容器号 | |
734 | - header.setContainerStatus("some"); | |
735 | - header.setLocationCode(task.getToLocation()); | |
736 | - header.setTotalQty(DataUtils.getBigDecimal(map.get("totalQty")));//总数量 | |
737 | - header.setLocking(1); | |
738 | - header.setEnable(1); | |
739 | - header.setTotalWeight(task.getWeight()); | |
740 | - header.setCreatedBy(ShiroUtils.getLoginName()); | |
741 | - header.setCreated(new Date()); | |
742 | - header.setLastUpdatedBy(ShiroUtils.getLoginName()); | |
743 | - header.setLastUpdated(new Date()); | |
744 | - if (!inventoryHeaderService.save(header)) { | |
745 | - throw new ServiceException("添加库存单失败"); | |
746 | - } | |
747 | - | |
748 | 756 | //库存明细添加 |
749 | 757 | detail = new InventoryDetail(); |
750 | 758 | detail.setInventoryHeaderId(header.getId());//库存头ID |
... | ... | @@ -775,9 +783,9 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea |
775 | 783 | detail.setQty(detail.getQty().add(DataUtils.getBigDecimal(map.get("qty")))); |
776 | 784 | detail.setLastUpdatedBy(ShiroUtils.getLoginName()); |
777 | 785 | LambdaUpdateWrapper<InventoryDetail> lambdaUpdateWrapper = Wrappers.lambdaUpdate(); |
778 | - lambdaUpdateWrapper.eq(InventoryDetail::getId, DataUtils.getInteger(map.get("receiptDetailId"))); | |
786 | + lambdaUpdateWrapper.eq(InventoryDetail::getId, detail.getId()); | |
779 | 787 | if (!inventoryDetailService.update(detail, lambdaUpdateWrapper)){ |
780 | - throw new ServiceException("更新入库单明细失败"); | |
788 | + throw new ServiceException("更新库存明细失败"); | |
781 | 789 | } |
782 | 790 | } |
783 | 791 | //记录库存交易记录 |
... | ... | @@ -815,73 +823,89 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea |
815 | 823 | throw new ServiceException("修改入库单明细失败"); |
816 | 824 | } |
817 | 825 | |
818 | - //修改任务主表状态,因为立库任务表单头只对应一个货箱,表单详情的任务会同时完成 | |
819 | - task.setStatus(QuantityConstant.TASK_STATUS_COMPLETED); | |
820 | - task.setLastUpdatedBy(ShiroUtils.getLoginName()); | |
821 | - task.setLastUpdated(new Date()); | |
822 | - LambdaUpdateWrapper<TaskHeader> taskHeaderLambdaUpdateWrapper = Wrappers.lambdaUpdate(); | |
823 | - taskHeaderLambdaUpdateWrapper.eq(TaskHeader::getId, task.getId()); | |
824 | - if (!taskHeaderService.update(task, taskHeaderLambdaUpdateWrapper)){ | |
825 | - throw new ServiceException("更新任务主表失败"); | |
826 | - } | |
827 | - //修改库位状态和对应的容器 | |
828 | - Location location = new Location(); | |
829 | - location.setContainerCode(task.getContainerCode()); | |
830 | - location.setStatus("empty"); | |
831 | - LambdaUpdateWrapper<Location> locationLambdaUpdateWrapper = Wrappers.lambdaUpdate(); | |
832 | - locationLambdaUpdateWrapper.eq(Location::getCode, task.getToLocation()); | |
833 | - if (!locationService.update(location, locationLambdaUpdateWrapper)){ | |
834 | - throw new ServiceException("更新库位失败"); | |
835 | - } | |
836 | - //修改容器状态和对应的库位 | |
837 | - Container container = new Container(); | |
838 | - container.setLocationCode(task.getToLocation()); | |
839 | - container.setStatus("some"); | |
840 | - LambdaUpdateWrapper<Container> containerLambdaUpdateWrapper = Wrappers.lambdaUpdate(); | |
841 | - containerLambdaUpdateWrapper.eq(Container::getCode, task.getContainerCode()); | |
842 | - if (!containerService.update(container, containerLambdaUpdateWrapper)) { | |
843 | - throw new ServiceException("更新容器失败"); | |
844 | - } | |
845 | - //修改组盘表状态为20 | |
846 | - ReceiptContainerDetail receiptContainerDetail = new ReceiptContainerDetail(); | |
847 | - receiptContainerDetail.setStatus(QuantityConstant.RECEIPT_CONTAINER_REVIEWSUCCESS); | |
848 | - receiptContainerDetail.setProcessStamp("0"); | |
849 | - receiptContainerDetail.setLastUpdated(new Date()); | |
850 | - receiptContainerDetail.setLastUpdatedBy(ShiroUtils.getLoginName()); | |
851 | - LambdaUpdateWrapper<ReceiptContainerDetail> receiptContainerDetailLambdaUpdateWrapper = Wrappers.lambdaUpdate(); | |
852 | - receiptContainerDetailLambdaUpdateWrapper.eq(ReceiptContainerDetail::getReceiptId, DataUtils.getInteger(map.get("receiptId"))); | |
853 | - if (!receiptContainerDetailService.update(receiptContainerDetail, receiptContainerDetailLambdaUpdateWrapper)){ | |
854 | - throw new ServiceException("更新组盘状态失败"); | |
855 | - } | |
856 | - | |
857 | - //修改入库组盘头表状态 | |
826 | + } | |
858 | 827 | |
859 | - ReceiptContainerHeader receiptContainerHeader = new ReceiptContainerHeader(); | |
860 | - receiptContainerHeader.setId(task.getAllocationHeadId()); | |
861 | - receiptContainerHeader.setLastUpdated(new Date()); | |
862 | - receiptContainerHeader.setLastUpdatedBy(ShiroUtils.getLoginName()); | |
863 | - receiptContainerHeader.setStatus((short) QuantityConstant.RECEIPT_CONTAINER_FINISHED.intValue()); | |
864 | - if (!receiptContainerHeaderService.updateById(receiptContainerHeader)) { | |
865 | - throw new ServiceException("更新入库组盘头表状态失败"); | |
866 | - } | |
828 | + } | |
829 | + //修改任务主表状态,因为立库任务表单头只对应一个货箱,表单详情的任务会同时完成 | |
830 | + task.setStatus(QuantityConstant.TASK_STATUS_COMPLETED); | |
831 | + task.setLastUpdatedBy(ShiroUtils.getLoginName()); | |
832 | + task.setLastUpdated(new Date()); | |
833 | + LambdaUpdateWrapper<TaskHeader> taskHeaderLambdaUpdateWrapper = Wrappers.lambdaUpdate(); | |
834 | + taskHeaderLambdaUpdateWrapper.eq(TaskHeader::getId, task.getId()); | |
835 | + if (!taskHeaderService.update(task, taskHeaderLambdaUpdateWrapper)){ | |
836 | + throw new ServiceException("更新任务主表失败"); | |
837 | + } | |
838 | + //修改库位状态和对应的容器 | |
839 | + Location location = new Location(); | |
840 | + location.setContainerCode(task.getContainerCode()); | |
841 | + location.setStatus("empty"); | |
842 | + LambdaUpdateWrapper<Location> locationLambdaUpdateWrapper = Wrappers.lambdaUpdate(); | |
843 | + locationLambdaUpdateWrapper.eq(Location::getCode, task.getToLocation()); | |
844 | + if (!locationService.update(location, locationLambdaUpdateWrapper)){ | |
845 | + throw new ServiceException("更新库位失败"); | |
846 | + } | |
847 | + //修改容器状态和对应的库位 | |
848 | + Container container = new Container(); | |
849 | + container.setLocationCode(task.getToLocation()); | |
850 | + container.setStatus("some"); | |
851 | + LambdaUpdateWrapper<Container> containerLambdaUpdateWrapper = Wrappers.lambdaUpdate(); | |
852 | + containerLambdaUpdateWrapper.eq(Container::getCode, task.getContainerCode()); | |
853 | + if (!containerService.update(container, containerLambdaUpdateWrapper)) { | |
854 | + throw new ServiceException("更新容器失败"); | |
855 | + } | |
856 | + //修改组盘表状态为20 | |
857 | + ReceiptContainerDetail receiptContainerDetail = new ReceiptContainerDetail(); | |
858 | + receiptContainerDetail.setStatus(QuantityConstant.RECEIPT_CONTAINER_REVIEWSUCCESS); | |
859 | + receiptContainerDetail.setProcessStamp("0"); | |
860 | + receiptContainerDetail.setLastUpdated(new Date()); | |
861 | + receiptContainerDetail.setLastUpdatedBy(ShiroUtils.getLoginName()); | |
862 | + LambdaUpdateWrapper<ReceiptContainerDetail> receiptContainerDetailLambdaUpdateWrapper = Wrappers.lambdaUpdate(); | |
863 | + receiptContainerDetailLambdaUpdateWrapper.eq(ReceiptContainerDetail::getReceiptId, DataUtils.getInteger(taskReceiptContainerDetail.get(0).get("receiptId"))); | |
864 | + if (!receiptContainerDetailService.update(receiptContainerDetail, receiptContainerDetailLambdaUpdateWrapper)){ | |
865 | + throw new ServiceException("更新组盘状态失败"); | |
866 | + } | |
867 | 867 | |
868 | - //修改入库单状态 | |
869 | - ReceiptHeader receiptHeader = new ReceiptHeader(); | |
870 | - receiptHeader.setFirstStatus(QuantityConstant.RECEIPT_HEADER_POSTING); | |
871 | - receiptHeader.setLastStatus(QuantityConstant.RECEIPT_HEADER_POSTING); | |
872 | - receiptHeader.setLastUpdatedBy(ShiroUtils.getLoginName()); | |
873 | - receiptHeader.setLastUpdated(new Date()); | |
874 | - LambdaUpdateWrapper<ReceiptHeader> receiptHeaderLambdaUpdateWrapper = Wrappers.lambdaUpdate(); | |
875 | - receiptHeaderLambdaUpdateWrapper.eq(ReceiptHeader::getId, DataUtils.getInteger(map.get("receiptId"))); | |
876 | - if (!receiptHeaderService.update(receiptHeader, receiptHeaderLambdaUpdateWrapper)) { | |
877 | - throw new ServiceException("更新入库头表状态失败"); | |
878 | - } | |
879 | - } | |
868 | + //修改入库组盘头表状态 | |
880 | 869 | |
870 | + ReceiptContainerHeader receiptContainerHeader = new ReceiptContainerHeader(); | |
871 | + receiptContainerHeader.setId(task.getAllocationHeadId()); | |
872 | + receiptContainerHeader.setLastUpdated(new Date()); | |
873 | + receiptContainerHeader.setLastUpdatedBy(ShiroUtils.getLoginName()); | |
874 | + receiptContainerHeader.setStatus((short) QuantityConstant.RECEIPT_CONTAINER_FINISHED.intValue()); | |
875 | + if (!receiptContainerHeaderService.updateById(receiptContainerHeader)) { | |
876 | + throw new ServiceException("更新入库组盘头表状态失败"); | |
877 | + } | |
878 | + | |
879 | + //修改入库单状态 | |
880 | + ReceiptHeader receiptHeader = new ReceiptHeader(); | |
881 | + receiptHeader.setFirstStatus(QuantityConstant.RECEIPT_HEADER_POSTING); | |
882 | + receiptHeader.setLastStatus(QuantityConstant.RECEIPT_HEADER_POSTING); | |
883 | + receiptHeader.setLastUpdatedBy(ShiroUtils.getLoginName()); | |
884 | + receiptHeader.setLastUpdated(new Date()); | |
885 | + LambdaUpdateWrapper<ReceiptHeader> receiptHeaderLambdaUpdateWrapper = Wrappers.lambdaUpdate(); | |
886 | + receiptHeaderLambdaUpdateWrapper.eq(ReceiptHeader::getId, DataUtils.getInteger(taskReceiptContainerDetail.get(0).get("receiptId"))); | |
887 | + if (!receiptHeaderService.update(receiptHeader, receiptHeaderLambdaUpdateWrapper)) { | |
888 | + throw new ServiceException("更新入库头表状态失败"); | |
881 | 889 | } |
882 | 890 | return AjaxResult.success("完成入库任务"); |
883 | 891 | } |
884 | 892 | |
893 | +// private void combineInventory(TaskHeader task) { | |
894 | +// LambdaQueryWrapper<InventoryHeader> inventoryHeaderErapper = Wrappers.lambdaQuery(); | |
895 | +// inventoryHeaderErapper.eq(InventoryHeader::getWarehouseCode, ShiroUtils.getWarehouseCode()) | |
896 | +// .eq(InventoryHeader::getLocationCode, task.getFromLocation()) | |
897 | +// .eq(InventoryHeader::getContainerCode, task.getContainerCode()); | |
898 | +// InventoryHeader header = inventoryHeaderService.getOne(inventoryHeaderErapper); | |
899 | +// if(header != null) { | |
900 | +// LambdaQueryWrapper<InventoryDetail> inventory = Wrappers.lambdaQuery(); | |
901 | +// inventory.eq(InventoryDetail::getWarehouseCode, ShiroUtils.getWarehouseCode()) | |
902 | +// .eq(InventoryDetail::getLocationCode, task.getFromLocation()) | |
903 | +// .eq(InventoryDetail::getMaterialCode, DataUtils.getString(map.get("materialCode"))) | |
904 | +// .eq(InventoryDetail::getContainerCode, DataUtils.getString(map.get("containerCode"))); | |
905 | +// List<InventoryDetail> detail = inventoryDetailService.list(inventory); | |
906 | +// } | |
907 | +// } | |
908 | + | |
885 | 909 | /** |
886 | 910 | * 移动端创建入库任务 |
887 | 911 | * |
... | ... |
src/main/resources/application-druid.properties
... | ... | @@ -4,12 +4,12 @@ spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver |
4 | 4 | # ���� |
5 | 5 | #spring.datasource.druid.master.url=jdbc:mysql://172.16.29.45:3306/wms_v2?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2b8 |
6 | 6 | #spring.datasource.druid.master.url=jdbc:mysql://172.16.29.45:3306/huahengExample?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false |
7 | -spring.datasource.druid.master.url=jdbc:mysql://localhost:3306/wms_v2?characterEncoding=utf8&serverTimezone=GMT%2b8 | |
7 | +spring.datasource.druid.master.url=jdbc:mysql://172.16.29.45:3306/wms_v2?characterEncoding=utf8&serverTimezone=GMT%2b8 | |
8 | 8 | |
9 | -#spring.datasource.druid.master.username=softhuaheng | |
10 | -#spring.datasource.druid.master.password=HHrobot123. | |
11 | -spring.datasource.druid.master.username=root | |
12 | -spring.datasource.druid.master.password=123456 | |
9 | +spring.datasource.druid.master.username=softhuaheng | |
10 | +spring.datasource.druid.master.password=HHrobot123. | |
11 | +#spring.datasource.druid.master.username=root | |
12 | +#spring.datasource.druid.master.password=123456 | |
13 | 13 | # �ӿ� |
14 | 14 | spring.datasource.druid.slave.open = false |
15 | 15 | spring.datasource.druid.slave.url=jdbc:mysql://199.19.109.117:3306/wms_v2?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false |
... | ... | @@ -48,4 +48,4 @@ logging.level.org.springframework=warn |
48 | 48 | logging.level.spring.springboot.dao=DEBUG |
49 | 49 | |
50 | 50 | #���Է���˿ڡ�������ĿcontextPath |
51 | - | |
51 | +server.servlet.context-path= /wms | |
... | ... |
src/main/resources/application.yml
... | ... | @@ -11,7 +11,7 @@ huaheng: |
11 | 11 | #版权年份 |
12 | 12 | copyrightYear: 2018 |
13 | 13 | # 文件路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath) |
14 | - profile: D:/Huaheng/uploadPath | |
14 | + profile: D:/Huaheng/uploadPath/ | |
15 | 15 | # 获取ip地址开关 |
16 | 16 | addressEnabled: false |
17 | 17 | |
... | ... | @@ -42,6 +42,10 @@ user: |
42 | 42 | |
43 | 43 | # Spring配置 |
44 | 44 | spring: |
45 | + mvc: | |
46 | + static-path-pattern: /** | |
47 | + resources: | |
48 | + static-locations: classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/,file:${huaheng.profile} | |
45 | 49 | http: |
46 | 50 | encoding: |
47 | 51 | charset: utf-8 |
... | ... |
src/main/resources/mybatis/config/CorporationMapper.xml
... | ... | @@ -6,13 +6,33 @@ |
6 | 6 | <!--@Table corporation--> |
7 | 7 | <id column="id" jdbcType="BIGINT" property="id" /> |
8 | 8 | <result column="name" jdbcType="VARCHAR" property="name" /> |
9 | - <result column="logo" jdbcType="VARCHAR" property="logo" /> | |
10 | - <result column="address" jdbcType="VARCHAR" property="address" /> | |
9 | + <result column="pLogoBig" jdbcType="VARCHAR" property="column" /> | |
10 | + <result column="pLogoSmall" jdbcType="VARCHAR" property="column" /> | |
11 | + <result column="pIcon" jdbcType="VARCHAR" property="pIcon" /> | |
12 | + <result column="versionInfo" jdbcType="VARCHAR" property="versionInfo" /> | |
13 | + <result column="baseAddress" jdbcType="VARCHAR" property="baseAddress" /> | |
14 | + <result column="enable" jdbcType="VARCHAR" property="enable" /> | |
15 | + <result column="userDef1" jdbcType="VARCHAR" property="userDef1" /> | |
16 | + <result column="userDef2" jdbcType="VARCHAR" property="userDef2" /> | |
17 | + <result column="userDef3" jdbcType="VARCHAR" property="userDef3" /> | |
18 | + <result column="lastUpdated" jdbcType="TIMESTAMP" property="lastUpdated" /> | |
19 | + <result column="lastUpdatedBy" jdbcType="VARCHAR" property="lastUpdatedBy" /> | |
11 | 20 | <result column="created" jdbcType="TIMESTAMP" property="created" /> |
12 | - <result column="create_by" jdbcType="VARCHAR" property="createBy" /> | |
21 | + <result column="createdBy" jdbcType="VARCHAR" property="createdBy" /> | |
13 | 22 | </resultMap> |
14 | 23 | <sql id="Base_Column_List"> |
15 | 24 | <!--@mbg.generated--> |
16 | - id, `name`, logo, address, created, create_by | |
25 | + id, `name`, pLogoBig, pLogoSmall, pIcon, versionInfo, baseAddress, enable, userDef1, userDef2, userDef3, lastUpdated, lastUpdatedBy, created, createdBy | |
17 | 26 | </sql> |
27 | + <select id="getEnableCorporation" resultType="com.huaheng.pc.config.corporation.domain.Corporation"> | |
28 | + select * from corporation where enable = 1 | |
29 | + </select> | |
30 | + | |
31 | + <update id="disableAllCorporation"> | |
32 | + update corporation set enable = 0 | |
33 | + </update> | |
34 | + | |
35 | + <update id="enableCorporationById"> | |
36 | + update corporation set enable = 1 where id=#{id} | |
37 | + </update> | |
18 | 38 | </mapper> |
19 | 39 | \ No newline at end of file |
... | ... |
src/main/resources/static/huaheng/js/huahengUI.js
... | ... | @@ -110,7 +110,11 @@ var table = { |
110 | 110 | clickToSelect: options.clickToSelect, // 是否启用点击选中行 |
111 | 111 | mobileResponsive: options.mobileResponsive, // 是否支持移动端适配 |
112 | 112 | onClickRow: options.onClickRow, // 点击某行触发的事件 |
113 | - onDblClickRow: options.onDblClickRow, // 双击某行触发的事件 | |
113 | + onDblClickRow:function(row){ | |
114 | + if (typeof detail != 'undefined') { | |
115 | + detail(row.id, row.code) | |
116 | + } | |
117 | + }, // 双击某行触发的事件 | |
114 | 118 | onClickCell: options.onClickCell, // 单击某格触发的事件 |
115 | 119 | onDblClickCell: options.onDblClickCell, // 双击某格触发的事件 |
116 | 120 | onEditableSave: options.onEditableSave, // 行内编辑保存的事件 |
... | ... | @@ -139,6 +143,7 @@ var table = { |
139 | 143 | }); |
140 | 144 | return optionsIds.substring(0, optionsIds.length - 1); |
141 | 145 | }, |
146 | + | |
142 | 147 | // 查询条件 |
143 | 148 | queryParams: function(params) { |
144 | 149 | var curParams = { |
... | ... | @@ -901,21 +906,23 @@ var table = { |
901 | 906 | }, |
902 | 907 | // 删除信息 |
903 | 908 | remove: function(id) { |
904 | - $.modal.confirm("确定删除该条" + $.table.options.modalName + "信息吗?", function() { | |
905 | - var url = $.common.isEmpty(id) ? $.table.options.removeUrl : $.table.options.removeUrl.replace("{id}", id); | |
909 | + table.set(); | |
910 | + $.modal.confirm("确定删除该条" + table.options.modalName + "信息吗?", function() { | |
911 | + var url = $.common.isEmpty(id) ? table.options.removeUrl : table.options.removeUrl.replace("{id}", id); | |
906 | 912 | var data = { "ids": id }; |
907 | 913 | $.operate.submit(url, "post", "json", data); |
908 | 914 | }); |
909 | 915 | }, |
910 | 916 | // 批量删除信息 |
911 | 917 | batRemove: function() { |
912 | - var rows = $.common.isEmpty($.table.options.id) ? $.table.selectFirstColumns() : $.table.selectColumns($.table.options.id); | |
918 | + table.set(); | |
919 | + var rows = $.common.isEmpty(table.options.id) ? $.table.selectFirstColumns() : $.table.selectColumns(table.options.id); | |
913 | 920 | if (rows.length == 0) { |
914 | 921 | $.modal.alertWarning("请至少选择一条记录"); |
915 | 922 | return; |
916 | 923 | } |
917 | 924 | $.modal.confirm("确认要删除选中的" + rows.length + "条数据吗?", function() { |
918 | - var url = $.table.options.removeUrl; | |
925 | + var url = table.options.removeUrl; | |
919 | 926 | var data = { "ids": rows.join() }; |
920 | 927 | $.operate.submit(url, "post", "json", data); |
921 | 928 | }); |
... | ... | @@ -923,7 +930,7 @@ var table = { |
923 | 930 | // 添加信息 |
924 | 931 | add: function(id) { |
925 | 932 | table.set(); |
926 | - var url = $.common.isEmpty(id) ? table.options.createUrl : $.table.options.createUrl.replace("{id}", id); | |
933 | + var url = $.common.isEmpty(id) ? table.options.createUrl : table.options.createUrl.replace("{id}", id); | |
927 | 934 | $.modal.open("添加" + table.options.modalName, url); |
928 | 935 | }, |
929 | 936 | // 修改信息 |
... | ... |
src/main/resources/templates/config/corporation/add.html
1 | -<!DOCTYPE html> | |
2 | -<html lang="en"> | |
3 | -<head> | |
4 | - <meta charset="UTF-8"> | |
5 | - <title>Title</title> | |
6 | -</head> | |
7 | -<body> | |
1 | +<!DOCTYPE HTML> | |
2 | +<html lang="zh" xmlns:th="http://www.thymeleaf.org"> | |
3 | +<meta charset="utf-8"> | |
4 | +<head th:include="include :: header"></head> | |
5 | +<body class="white-bg"> | |
6 | +<div class="wrapper wrapper-content animated fadeInRight ibox-content"> | |
7 | + <form class="form-horizontal m" id="form-corporation-add"> | |
8 | + <div class="form-group"> | |
9 | + <label class="col-sm-3 control-label">公司名称:</label> | |
10 | + <div class="col-sm-6"> | |
11 | + <input id="name" name="name" class="form-control" type="text"> | |
12 | + </div> | |
13 | + </div> | |
14 | + <div class="form-group"> | |
15 | + <label class="col-sm-3 control-label">公司Logo(大):</label> | |
16 | + <div class="col-sm-6"> | |
17 | + <input id="pLogoBig" name="pLogoBig" class="form-control" type="file" > | |
18 | + </div> | |
19 | + <div class="col-sm-3" id="pLogoBigPreview" name="pLogoBigPreview"></div> | |
20 | +</div> | |
21 | + <div class="form-group"> | |
22 | + <label class="col-sm-3 control-label">公司Logo(小):</label> | |
23 | + <div class="col-sm-6"> | |
24 | + <input id="pLogoSmall" name="pLogoSmall" class="form-control" type="file" > | |
25 | + </div> | |
26 | + <div class="col-sm-3" id="pLogoSmallPreview" name="pLogoBigPreview"></div> | |
27 | + </div> | |
28 | + <div class="form-group"> | |
29 | + <label class="col-sm-3 control-label">网站图标:</label> | |
30 | + <div class="col-sm-6"> | |
31 | + <input id="pIcon" name="pIcon" class="form-control" type="file" > | |
32 | + </div> | |
33 | + <div class="col-sm-3" id="pIconPreview" name="pLogoBigPreview"></div> | |
34 | + </div> | |
35 | + <div class="form-group"> | |
36 | + <label class="col-sm-3 control-label">版本信息:</label> | |
37 | + <div class="col-sm-6"> | |
38 | + <input id="versionInfo" name="versionInfo" class="form-control" type="text" > | |
39 | + </div> | |
40 | + </div> | |
8 | 41 | |
42 | + <div class="form-group"> | |
43 | + <label class="col-sm-3 control-label">启用:</label> | |
44 | + <div class="col-sm-6"> | |
45 | + <div class="onoffswitch"> | |
46 | + <input type="checkbox" class="onoffswitch-checkbox" id="enable" name="enable" checked="checked"> | |
47 | + <label class="onoffswitch-label" for="enable"> | |
48 | + <span class="onoffswitch-inner"></span> | |
49 | + <span class="onoffswitch-switch"></span> | |
50 | + </label> | |
51 | + </div> | |
52 | + </div> | |
53 | + </div> | |
54 | + | |
55 | + <div class="form-group"> | |
56 | + <div class="form-control-static col-sm-offset-9"> | |
57 | + <button id="blobSubmit" class="btn btn-primary" type="button">提交</button> | |
58 | + <!--<button type="botton" class="btn btn-primary">提交</button>--> | |
59 | + <button onclick="$.modal.close()" class="btn btn-danger" type="button">关闭</button> | |
60 | + </div> | |
61 | + </div> | |
62 | + </form> | |
63 | +</div> | |
64 | +<div th:include="include::footer"></div> | |
65 | +<script type="text/javascript"> | |
66 | + | |
67 | + $('#blobSubmit').on('click', function(){ | |
68 | + var formdata = new FormData(); | |
69 | + formdata.append("pLogoBigFile", $('#pLogoBig')[0].files[0]); | |
70 | + formdata.append("pLogoSmallFile", $('#pLogoSmall')[0].files[0]); | |
71 | + formdata.append("pIconFile", $('#pIcon')[0].files[0]); | |
72 | + formdata.append("name", $("#name").val()); | |
73 | + formdata.append("versionInfo", $("#versionInfo").val()); | |
74 | + formdata.append("enable", $("#enable").is(':checked')); | |
75 | + $.ajax({ | |
76 | + url: ctx + "config/corporation/add", | |
77 | + data: formdata, | |
78 | + type: "post", | |
79 | + processData: false, | |
80 | + contentType: false, | |
81 | + success: function(result) { | |
82 | + $.operate.saveSuccess(result); | |
83 | + } | |
84 | + }) | |
85 | + }) | |
86 | + | |
87 | + function preview(id){ | |
88 | + $('#'+id).on('change',function () { | |
89 | + var reader = new FileReader(); | |
90 | + reader.onload = function(e) { | |
91 | + var img = "<img src='"+e.target.result+"' height=\"40\" title='预览图'/>"; | |
92 | + var obj = document.getElementById(id + "Preview") | |
93 | + obj.innerHTML = img; | |
94 | + } | |
95 | + reader.readAsDataURL(this.files[0]); | |
96 | + }) | |
97 | + } | |
98 | + preview("pLogoBig") | |
99 | + preview("pLogoSmall") | |
100 | + preview("pIcon") | |
101 | +</script> | |
9 | 102 | </body> |
10 | -</html> | |
11 | 103 | \ No newline at end of file |
104 | +</html> | |
... | ... |
src/main/resources/templates/config/corporation/corporation.html
... | ... | @@ -6,18 +6,15 @@ |
6 | 6 | <div class="container-div"> |
7 | 7 | <div class="row"> |
8 | 8 | <div class="col-sm-12 select-info"> |
9 | - <form id="customer-form"> | |
9 | + <form id="corporation-form"> | |
10 | 10 | <div class="select-list"> |
11 | 11 | <ul> |
12 | 12 | <li> |
13 | - 编码:<input type="text" name="code"/> | |
14 | - </li> | |
15 | - <li> | |
16 | - 名称:<input type="text" name="name"/> | |
13 | + 公司名称:<input type="text" name="name"/> | |
17 | 14 | </li> |
18 | 15 | <li> |
19 | 16 | <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i> 搜索</a> |
20 | - <a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset('customer-form')"><i class="fa fa-refresh"></i> 重置</a> | |
17 | + <a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset('corporation-form')"><i class="fa fa-refresh"></i> 重置</a> | |
21 | 18 | </li> |
22 | 19 | </ul> |
23 | 20 | </div> |
... | ... | @@ -25,10 +22,10 @@ |
25 | 22 | </div> |
26 | 23 | |
27 | 24 | <div class="btn-group hidden-xs" id="toolbar" role="group"> |
28 | - <a class="btn btn-outline btn-success btn-rounded" onclick="$.operate.add()" shiro:hasPermission="config:customer:add"> | |
25 | + <a class="btn btn-outline btn-success btn-rounded" onclick="$.operate.add()" shiro:hasPermission="config:corporation:add"> | |
29 | 26 | <i class="fa fa-plus"></i> 新增 |
30 | 27 | </a> |
31 | - <a class="btn btn-outline btn-danger btn-rounded" onclick="$.operate.batRemove()" shiro:hasPermission="config:customer:remove"> | |
28 | + <a class="btn btn-outline btn-danger btn-rounded" onclick="$.operate.batRemove()" shiro:hasPermission="config:corporation:remove"> | |
32 | 29 | <i class="fa fa-trash-o"></i> 删除 |
33 | 30 | </a> |
34 | 31 | </div> |
... | ... | @@ -40,9 +37,9 @@ |
40 | 37 | </div> |
41 | 38 | <div th:include="include :: footer"></div> |
42 | 39 | <script th:inline="javascript"> |
43 | - var editFlag = [[${@permission.hasPermi('config:customer:edit')}]]; | |
44 | - var removeFlag = [[${@permission.hasPermi('config:customer:remove')}]]; | |
45 | - var prefix = ctx + "config/customer" | |
40 | + var editFlag = [[${@permission.hasPermi('config:corporation:edit')}]]; | |
41 | + var removeFlag = [[${@permission.hasPermi('config:corporation:remove')}]]; | |
42 | + var prefix = ctx + "config/corporation" | |
46 | 43 | var datas = [[${@dict.getType('sys_normal_disable')}]]; |
47 | 44 | |
48 | 45 | $(function() { |
... | ... | @@ -51,7 +48,7 @@ |
51 | 48 | createUrl: prefix + "/add", |
52 | 49 | updateUrl: prefix + "/edit/{id}", |
53 | 50 | removeUrl: prefix + "/remove", |
54 | - modalName: "客户", | |
51 | + modalName: "公司配置", | |
55 | 52 | search: false, |
56 | 53 | sortName: "id", |
57 | 54 | sortOrder: "desc", |
... | ... | @@ -63,80 +60,51 @@ |
63 | 60 | title : 'id' |
64 | 61 | }, |
65 | 62 | { |
66 | - field : 'code', | |
67 | - title : '编码' | |
63 | + field : 'name', | |
64 | + title : '公司名称' | |
68 | 65 | }, |
69 | 66 | { |
70 | - field : 'shipToCode', | |
71 | - title : '配送点代码' | |
67 | + field : 'pLogoBig', | |
68 | + title : '公司logo(大)', | |
69 | + formatter: function(value, row, index) { | |
70 | + var actions = []; | |
71 | + actions.push('<img src="' + ctx + value +'" height="40" title="'+ value +'"/>') | |
72 | + return actions.join(" ") | |
73 | + } | |
72 | 74 | }, |
73 | 75 | { |
74 | - field : 'warehouseCode', | |
75 | - title : '仓库编码', | |
76 | - visible : false | |
76 | + field : 'pLogoSmall', | |
77 | + title : '公司logo(小)', | |
78 | + formatter: function(value, row, index) { | |
79 | + var actions = []; | |
80 | + actions.push('<img src="' + ctx + value +'" height="40" title="'+ value +'"/>') | |
81 | + return actions.join(" ") | |
82 | + } | |
77 | 83 | }, |
78 | 84 | { |
79 | - field : 'companyCode', | |
80 | - title : '货主代码' | |
85 | + field : 'pIcon', | |
86 | + title : '网站图标', | |
87 | + formatter: function(value, row, index) { | |
88 | + var actions = []; | |
89 | + actions.push('<img src="' + ctx + value +'" height="40" title="'+ value +'"/>') | |
90 | + return actions.join(" ") | |
91 | + } | |
81 | 92 | }, |
82 | 93 | { |
83 | - field : 'name', | |
84 | - title : '名称' | |
94 | + field : 'versionInfo', | |
95 | + title : '版本信息' | |
85 | 96 | }, |
86 | 97 | { |
87 | - field : 'address1', | |
88 | - title : '地址1' | |
98 | + field : 'baseAddress', | |
99 | + title : '存储路径' | |
89 | 100 | }, |
101 | + /** | |
90 | 102 | { |
91 | 103 | field : 'address2', |
92 | 104 | title : '地址2' , |
93 | 105 | visible:false |
94 | 106 | }, |
95 | - { | |
96 | - field : 'city', | |
97 | - title : '城市' | |
98 | - }, | |
99 | - { | |
100 | - field : 'province', | |
101 | - title : '省份' , | |
102 | - visible:false | |
103 | - }, | |
104 | - { | |
105 | - field : 'country', | |
106 | - title : '国家' , | |
107 | - visible:false | |
108 | - }, | |
109 | - { | |
110 | - field : 'postalCode', | |
111 | - title : '邮编' , | |
112 | - visible:false | |
113 | - }, | |
114 | - { | |
115 | - field : 'parent', | |
116 | - title : '父', | |
117 | - visible:false | |
118 | - }, | |
119 | - { | |
120 | - field : 'attentionTo', | |
121 | - title : '联系人' | |
122 | - }, | |
123 | - { | |
124 | - field : 'phoneNum', | |
125 | - title : '电话' | |
126 | - }, | |
127 | - { | |
128 | - field : 'mobile', | |
129 | - title : '手机' | |
130 | - }, | |
131 | - { | |
132 | - field : 'faxNum', | |
133 | - title : '传真' , | |
134 | - visible:false | |
135 | - }, | |
136 | - { | |
137 | - field : 'email', | |
138 | - title : 'E-mail' | |
139 | - }, | |
107 | + | |
140 | 108 | { |
141 | 109 | field : 'created', |
142 | 110 | title : '创建时间' |
... | ... | @@ -153,6 +121,7 @@ |
153 | 121 | field : 'lastUpdatedBy', |
154 | 122 | title : '更新用户' |
155 | 123 | }, |
124 | + **/ | |
156 | 125 | { |
157 | 126 | field : 'enable', |
158 | 127 | title : '是否有效' , |
... | ... | @@ -162,26 +131,6 @@ |
162 | 131 | } |
163 | 132 | }, |
164 | 133 | { |
165 | - field : 'deleted', | |
166 | - title : '是否删除' , | |
167 | - visible:false | |
168 | - }, | |
169 | - { | |
170 | - field : 'userDef1', | |
171 | - title : '自定义字段1' , | |
172 | - visible:false | |
173 | - }, | |
174 | - { | |
175 | - field : 'userDef2', | |
176 | - title : '自定义字段2' , | |
177 | - visible:false | |
178 | - }, | |
179 | - { | |
180 | - field : 'userDef3', | |
181 | - title : '自定义字段3' , | |
182 | - visible:false | |
183 | - }, | |
184 | - { | |
185 | 134 | title: '操作', |
186 | 135 | align: 'center', |
187 | 136 | formatter: function(value, row, index) { |
... | ... |
src/main/resources/templates/config/corporation/edit.html
1 | -<!DOCTYPE html> | |
2 | -<html lang="en"> | |
3 | -<head> | |
4 | - <meta charset="UTF-8"> | |
5 | - <title>Title</title> | |
6 | -</head> | |
7 | -<body> | |
1 | +<!DOCTYPE HTML> | |
2 | +<html lang="zh" xmlns:th="http://www.thymeleaf.org"> | |
3 | +<meta charset="utf-8"> | |
4 | +<head th:include="include :: header"></head> | |
5 | +<body class="white-bg"> | |
6 | +<div class="wrapper wrapper-content animated fadeInRight ibox-content"> | |
7 | + <form class="form-horizontal m" id="form-corporation-add" th:object="${corporation}"> | |
8 | + <input type="hidden" id="id" name="id" th:field="*{id}"/> | |
9 | + <div class="form-group"> | |
10 | + <label class="col-sm-3 control-label">公司名称1:</label> | |
11 | + <div class="col-sm-6"> | |
12 | + <input id="name" name="name" class="form-control" type="text" th:field="*{name}"> | |
13 | + </div> | |
14 | + </div> | |
15 | + <div class="form-group"> | |
16 | + <label class="col-sm-3 control-label">公司Logo(大):</label> | |
17 | + <div class="col-sm-6"> | |
18 | + <input id="pLogoBig" name="pLogoBig" class="form-control" type="file" > | |
19 | + </div> | |
20 | + <div class="col-sm-3" id="pLogoBigPreview" name="pLogoBigPreview"> | |
21 | + <img th:src="@{/}+*{pLogoBig}" height="40" title='预览图'/> | |
22 | + </div> | |
23 | + </div> | |
24 | + <div class="form-group"> | |
25 | + <label class="col-sm-3 control-label">公司Logo(小):</label> | |
26 | + <div class="col-sm-6"> | |
27 | + <input id="pLogoSmall" name="pLogoSmall" class="form-control" type="file" > | |
28 | + </div> | |
29 | + <div class="col-sm-3" id="pLogoSmallPreview" name="pLogoSmallPreview"> | |
30 | + <img th:src="@{/}+*{pLogoSmall}" height="40" title='预览图'/> | |
31 | + </div> | |
32 | + </div> | |
33 | + <div class="form-group"> | |
34 | + <label class="col-sm-3 control-label">网站图标:</label> | |
35 | + <div class="col-sm-6"> | |
36 | + <input id="pIcon" name="pIcon" class="form-control" type="file" > | |
37 | + </div> | |
38 | + <div class="col-sm-3" id="pIconPreview" name="pIconPreview"> | |
39 | + <img th:src="@{/}+*{pIcon}" height="40" title='预览图'/> | |
40 | + </div> | |
41 | + </div> | |
42 | + <div class="form-group"> | |
43 | + <label class="col-sm-3 control-label">版本信息:</label> | |
44 | + <div class="col-sm-6"> | |
45 | + <input id="versionInfo" name="versionInfo" class="form-control" type="text" th:field="*{versionInfo}"> | |
46 | + </div> | |
47 | + </div> | |
8 | 48 | |
49 | + <div class="form-group"> | |
50 | + <label class="col-sm-3 control-label">启用:</label> | |
51 | + <div class="col-sm-6"> | |
52 | + <div class="onoffswitch"> | |
53 | + <input type="checkbox" class="onoffswitch-checkbox" id="enable" name="enable" th:checked="*{enable}" onchange="alert(this.val())"> | |
54 | + <label class="onoffswitch-label" for="enable"> | |
55 | + <span class="onoffswitch-inner"></span> | |
56 | + <span class="onoffswitch-switch"></span> | |
57 | + </label> | |
58 | + </div> | |
59 | + </div> | |
60 | + </div> | |
61 | + | |
62 | + <div class="form-group"> | |
63 | + <div class="form-control-static col-sm-offset-9"> | |
64 | + <button id="blobSubmit" class="btn btn-primary" type="button">提交</button> | |
65 | + <!--<button type="botton" class="btn btn-primary">提交</button>--> | |
66 | + <button onclick="$.modal.close()" class="btn btn-danger" type="button">关闭</button> | |
67 | + </div> | |
68 | + </div> | |
69 | + </form> | |
70 | +</div> | |
71 | +<div th:include="include::footer"></div> | |
72 | +<script th:inline="javascript"> | |
73 | + | |
74 | + $('#blobSubmit').on('click', function(){ | |
75 | + var formdata = new FormData(); | |
76 | + if ($('#pLogoBig')[0].files[0] != undefined) | |
77 | + formdata.append("pLogoBigFile", $('#pLogoBig')[0].files[0]); | |
78 | + if ($('#pLogoSmall')[0].files[0] != undefined) | |
79 | + formdata.append("pLogoSmallFile", $('#pLogoSmall')[0].files[0]); | |
80 | + if ($('#pIcon')[0].files[0] != undefined) | |
81 | + formdata.append("pIconFile", $('#pIcon')[0].files[0]); | |
82 | + formdata.append("id", $("#id").val()); | |
83 | + formdata.append("name", $("#name").val()); | |
84 | + formdata.append("versionInfo", $("#versionInfo").val()); | |
85 | + formdata.append("enable", $("#enable").is(':checked')); | |
86 | + $.ajax({ | |
87 | + url: ctx + "config/corporation/edit", | |
88 | + data: formdata, | |
89 | + type: "post", | |
90 | + processData: false, | |
91 | + contentType: false, | |
92 | + success: function(result) { | |
93 | + $.operate.saveSuccess(result); | |
94 | + } | |
95 | + }) | |
96 | + }) | |
97 | + | |
98 | + function preview(id){ | |
99 | + $('#'+id).on('change',function () { | |
100 | + var reader = new FileReader(); | |
101 | + reader.onload = function(e) { | |
102 | + var img = "<img src='"+e.target.result+"' height=\"40\" title='预览图'/>"; | |
103 | + var obj = document.getElementById(id + "Preview") | |
104 | + obj.innerHTML = img; | |
105 | + } | |
106 | + reader.readAsDataURL(this.files[0]); | |
107 | + }) | |
108 | + } | |
109 | + preview("pLogoBig") | |
110 | + preview("pLogoSmall") | |
111 | + preview("pIcon") | |
112 | +</script> | |
9 | 113 | </body> |
10 | -</html> | |
11 | 114 | \ No newline at end of file |
115 | +</html> | |
... | ... |
src/main/resources/templates/index.html
1 | 1 | <!DOCTYPE html> |
2 | -<html lang="zh" xmlns:th="http://www.thymeleaf.org"> | |
2 | +<html lang="zh" xmlns:th="http://www.thymeleaf.org" th:with="corp = ${@corporationService.getEnableCorporation()}"> | |
3 | 3 | <head> |
4 | 4 | <meta charset="utf-8"> |
5 | 5 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
6 | 6 | <meta name="renderer" content="webkit"> |
7 | - <title>华恒WMS管理系统首页</title> | |
8 | - <meta name="keywords" content="华恒WMS管理系统首页"> | |
9 | - <meta name="description" content="华恒WMS管理系统首页"> | |
7 | + <title th:text="${corp}?${corp.getName()} + '- 首页 ':'华恒WMS仓库管理系统首页'"></title> | |
8 | + <meta name="keywords" th:attr="content=${corp}?${corp.getName()}"> | |
9 | + <meta name="description" th:attr="content=${corp}?${corp.getName()}"> | |
10 | + <meta name="description" th:attr="content=${corp}?${corp.getName()}"> | |
10 | 11 | <!--[if lt IE 9]> |
11 | 12 | <meta http-equiv="refresh" content="0;ie.html"/> |
12 | 13 | <![endif]--> |
13 | - <link rel="shortcut icon" href="../static/favicon.ico" th:href="@{favicon.ico}"/> | |
14 | + <link rel="shortcut icon" href="../static/favicon.ico" th:href="${corp}?${corp.getPIcon()}:@{favicon.ico}"/> | |
14 | 15 | <!--<link th:href="@{favicon.ico}" rel="shortcut icon"/>--> |
15 | 16 | <link th:href="@{/css/bootstrap.min.css}" rel="stylesheet"/> |
16 | 17 | <link th:href="@{/css/font-awesome.css}" rel="stylesheet"/> |
... | ... | @@ -31,7 +32,7 @@ |
31 | 32 | <li class="nav-header"> |
32 | 33 | <div class="dropdown profile-element"> |
33 | 34 | <span class="pull-left" style="padding-right: 10px;"> |
34 | - <img th:src="(${user.avatar} == '') ? 'img/profile.jpg' : 'profile/' + ${user.avatar}" alt="image" class="img-circle" height="45" width="45"/> | |
35 | + <img th:src="(${user.avatar} == '') ? (${corp}?${corp.getPLogoSmall()}:'img/profile.jpg') : 'profile/' + ${user.avatar}" alt="image" class="img-circle" height="45" width="45"/> | |
35 | 36 | </span> |
36 | 37 | <a href="#" class="dropdown-toggle" data-toggle="dropdown"> |
37 | 38 | <span class="pull-left clear"> |
... | ... |
src/main/resources/templates/login.html
1 | 1 | <!DOCTYPE html> |
2 | -<html lang="zh" xmlns:th="http://www.thymeleaf.org"> | |
2 | +<html lang="zh" xmlns:th="http://www.thymeleaf.org" th:with="corp = ${@corporationService.getEnableCorporation()}"> | |
3 | 3 | <head> |
4 | 4 | <meta charset="utf-8"> |
5 | 5 | <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0"> |
6 | 6 | |
7 | - <title>华恒WMS仓库管理系统 - 登录</title> | |
8 | - <meta name="keywords" content="华恒WMS管理系统"> | |
7 | + <title th:text="${corp}?${corp.getName()} + '- 登录 ':'华恒WMS仓库管理系统 - 登录'"></title> | |
8 | + <meta name="keywords" th:attr="content=${corp}?${corp.getName()}"> | |
9 | 9 | <meta name="description" content="huaheng"> |
10 | 10 | <link href="../static/css/bootstrap.min.css" th:href="@{css/bootstrap.min.css}" rel="stylesheet"/> |
11 | 11 | <link href="../static/css/font-awesome.css" th:href="@{css/font-awesome.css}" rel="stylesheet"/> |
... | ... | @@ -16,7 +16,7 @@ |
16 | 16 | <!--[if lt IE 9]> |
17 | 17 | <meta http-equiv="refresh" content="0;ie.html"/> |
18 | 18 | <![endif]--> |
19 | - <link rel="shortcut icon" href="../static/favicon.ico" th:href="@{favicon.ico}"/> | |
19 | + <link rel="shortcut icon" href="../static/favicon.ico" th:href="${corp}?${corp.getPIcon()}:@{favicon.ico}"/> | |
20 | 20 | <style type="text/css">label.error { |
21 | 21 | position: inherit; |
22 | 22 | }</style> |
... | ... | @@ -35,10 +35,12 @@ |
35 | 35 | <div class="col-sm-6"> |
36 | 36 | <div class="signin-info"> |
37 | 37 | <div class="logopanel m-b"> |
38 | - <h1><img alt="[ 华恒 ]" src="../static/huaheng.png" th:src="@{/huaheng.png}" style="max-height: 200px"></h1> | |
38 | + | |
39 | + <!-- @{/huaheng.png} --> | |
40 | + <h1><img alt="[ 华恒 ]" src="../static/huaheng.png" th:src="${corp}?${corp.getPLogoBig()}:@{/huaheng.png}" style="max-height: 200px"></h1> | |
39 | 41 | </div> |
40 | 42 | <div class="m-b"></div> |
41 | - <h4>欢迎使用华恒WMS仓库管理系统_v2.0</h4> | |
43 | + <h4 th:text="${corp}?${corp.getVersionInfo()}:'欢迎使用华恒WMS仓库管理系统_v2.0'"></h4> | |
42 | 44 | <!--<ul class="m-b">--> |
43 | 45 | <!--<li><i class="fa fa-arrow-circle-o-right m-r-xs"></i> SpringBoot</li>--> |
44 | 46 | <!--<li><i class="fa fa-arrow-circle-o-right m-r-xs"></i> Mybatis</li>--> |
... | ... |
src/main/resources/templates/receipt/receiptHeader/receiptHeader.html
... | ... | @@ -186,6 +186,9 @@ |
186 | 186 | <a class="btn btn-outline btn-success btn-rounded" onclick="receiptDetailPrint()" shiro:hasPermission="shipment:bill:report"> |
187 | 187 | <i class="fa fa-print"></i> 打印 |
188 | 188 | </a> |
189 | + <a class="btn btn-outline btn-primary btn-rounded" onclick="Toreceiving(receiptCode)"> | |
190 | + <i class="fa fa-cart-plus"></i> 收货 | |
191 | + </a> | |
189 | 192 | </div> |
190 | 193 | <table id="bootstrap-table1" data-mobile-responsive="true" class="table table-bordered table-hover"></table> |
191 | 194 | </div> |
... | ... |
src/main/resources/templates/system/user/profile/avatar.html
1 | 1 | <!DOCTYPE html> |
2 | -<html lang="zh" xmlns:th="http://www.thymeleaf.org" > | |
2 | +<html lang="zh" xmlns:th="http://www.thymeleaf.org" th:with="corp = ${@corporationService.getEnableCorporation()}"> | |
3 | 3 | <meta charset="utf-8"> |
4 | 4 | <title>用户头像修改</title> |
5 | 5 | <link href="/ajax/libs/cropbox/cropbox.css" th:href="@{/ajax/libs/cropbox/cropbox.css}" rel="stylesheet"/> |
... | ... | @@ -24,12 +24,12 @@ |
24 | 24 | </div> |
25 | 25 | <div th:include="include::footer"></div> |
26 | 26 | <script th:src="@{/ajax/libs/cropbox/cropbox.js}"></script> |
27 | -<script type="text/javascript"> | |
27 | + <script th:inline="javascript"> | |
28 | 28 | $(window).load(function() { |
29 | 29 | var options = { |
30 | 30 | thumbBox: '.thumbBox', |
31 | 31 | spinner: '.spinner', |
32 | - imgSrc: '/wms/img/profile.jpg' | |
32 | + imgSrc: ctx + [[${user.avatar}!=''?('profile/' + ${user.avatar}):(${corp}?${corp.getPLogoSmall()}:'img/profile.jpg')]] | |
33 | 33 | } |
34 | 34 | var cropper = $('.imageBox').cropbox(options); |
35 | 35 | $('#avatar').on('change', |
... | ... |
src/main/resources/templates/system/user/profile/edit.html
... | ... | @@ -81,7 +81,7 @@ |
81 | 81 | } |
82 | 82 | }, |
83 | 83 | dataFilter: function (data, type) { |
84 | - if (data == "0") return true; | |
84 | + if (data == "\"0\"") return true; | |
85 | 85 | else return false; |
86 | 86 | } |
87 | 87 | } |
... | ... | @@ -102,8 +102,10 @@ |
102 | 102 | } |
103 | 103 | }, |
104 | 104 | dataFilter: function (data, type) { |
105 | - if (data == "0") return true; | |
106 | - else return false; | |
105 | + if (data == "\"0\"") | |
106 | + return true; | |
107 | + else | |
108 | + return false; | |
107 | 109 | } |
108 | 110 | } |
109 | 111 | }, |
... | ... |
src/main/resources/templates/system/user/profile/profile.html
1 | 1 | <!DOCTYPE html> |
2 | -<html lang="zh" xmlns:th="http://www.thymeleaf.org" > | |
2 | +<html lang="zh" xmlns:th="http://www.thymeleaf.org" th:with="corp = ${@corporationService.getEnableCorporation()}"> | |
3 | 3 | <head> |
4 | 4 | <meta charset="utf-8"> |
5 | 5 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
... | ... | @@ -35,7 +35,7 @@ |
35 | 35 | <div class="contact-box"> |
36 | 36 | <div class="col-sm-4"> |
37 | 37 | <div class="text-center"> |
38 | - <img alt="image" class="img-circle m-t-xs img-responsive" th:src="(${user.avatar} == '') ? '../../img/profiles.jpg' : '/profile/' + ${user.avatar}"> | |
38 | + <img alt="image" class="img-circle m-t-xs img-responsive" th:src="(${user.avatar} == '') ?(${corp}?@{/}+${corp.getPLogoSmall()}:(@{/}+'img/profile.jpg')) : @{/}+ 'profile/' + ${user.avatar}"> | |
39 | 39 | <div class="m-t-xs font-bold">[[${user.loginIp}]]</div> |
40 | 40 | </div> |
41 | 41 | </div> |
... | ... |